Axmol v3 全面迈向 HLSL-first Shader 工作流
Axmol v3 的跨平台渲染工作流迎来了一次基础性升级引擎 Shader 已从以 GLSL 为源的旧流程迁移到HLSL-first。开发者现在可以维护一份 HLSL 源码再由全新的 Axmol 专用 Shader 编译器axslcc 3.99为 D3D11、D3D12、Vulkan、Metal、OpenGL 和 OpenGL ES 生成目标代码与运行时反射信息。这次迁移并不只是把.vert、.frag改写成.hlsl。它同时重新梳理了 Shader 编译、资源反射、顶点输入、采样器和各 RHI 后端之间的契约让跨平台 Shader 的行为更统一也让后续渲染功能能够建立在更清晰、可维护的基础之上。一份 HLSL覆盖全部 RHI新的 CMake Shader 流程会根据项目启用的 RHI 自动选择编译目标。顶点、像素与计算 Shader 使用_vs.hlsl、_fs.hlsl/_ps.hlsl和_cs.hlsl命名并由axslcc一次生成所需后端的代码包。构建系统还加入了 Shader variant 支持可为同一份源码组合不同的预处理定义。Axmol 内置 Shader、3D 渲染、VR以及 ImGui、Live2D、Spine、Box2D Testbed 和 cpp-tests 中的 Shader 已一并迁移。过去用于 GLSL 转换和生成静态 Shader 信息的旧流程也随之退出。顶点输入改用语义匹配旧工作流通常依赖a_position、a_texCoord这样的变量名。HLSL-first 工作流改为使用 HLSL semantic 的名称与索引匹配顶点数据例如struct VSInput { float3 position : POSITION; float2 uv : TEXCOORD0; float4 color : COLOR0; };变量可以叫position、pos或任何其他名字真正的绑定契约是POSITION0、TEXCOORD0和COLOR0。除了引擎内置语义新的运行时模型也支持自定义 semantic为扩展渲染路径和实例数据提供了更自然的表达方式。统一的采样器模型采样器是这次重构的另一项重点。base.hlsli提供 22 个稳定的内置 preset包括LinearClamp、PointWrap、AnisoClamp和阴影比较采样器等常用组合#include base.hlsli Texture2D u_tex0; float4 main(float2 uv : TEXCOORD0) : SV_Target0 { return u_tex0.Sample(LinearClamp, uv); }如果内置 preset 无法满足需求也可以声明具名的自定义SamplerState并在创建Program之前通过SamplerRegistry注册对应状态。Shader 反射记录的是稳定的逻辑绑定各后端再将其映射为 D3D sampler slot、D3D12 descriptor、Vulkan descriptor set、Metal sampler 或 GL/ES combined sampler。新的Program校验会在自定义采样器未注册或 Shader 模块编译失败时将程序标记为无效避免错误悄悄进入绘制阶段。新的反射与资源绑定契约axslcc 3.99的 Shader 包和反射 ABI 已针对 Axmol RHI 重新设计。运行时现在可以直接获得顶点输入的 semantic 名称、索引与后端位置texture、sampler、uniform buffer 和 storage resource 的最终绑定信息内置 sampler preset 与 Program-local 自定义 sampler 的明确区分各目标代码是文本还是原生字节码等必要元数据。Shader 作者无需手写register(...)。资源按统一规则声明由编译器分配确定性的逻辑绑定再由 RHI 完成后端翻译。D3D11、D3D12、Vulkan、Metal 与 OpenGL/ES 的实现均已适配这一模型其中也包括 Vulkan 的独立 image/sampler descriptor set以及 D3D12 的 descriptor heap 分配更新。迁移时需要注意什么新的 Shader 建议包含base.hlsli使用 HLSL semantic并让axslcc自动处理资源绑定。Uniform 与 texture 的名称仍是 C 侧查找契约因此不能随意修改。OpenGL/ES 最终使用 combined sampler。为了保持所有后端行为一致同一个 Shader 中不要让同一 texture 同时使用多个 sampler需要不同采样方式时应使用不同 texture binding。UV 的 Y 翻转也不应因为“从 GLSL 迁移到 HLSL”而机械添加。1.0 - uv.y表示数据空间转换AX_Y_UP()表示后端相关坐标转换应根据输入数据本身的含义选择。完整规则、常见问题与迁移指南可参考HLSL Shader 规范HLSL 常见问题Shaders in Axmol 3验证情况本次迁移已使用新的 HLSL Shader 集完成全部 RHI cpp-tests 验证。合并前依赖版本将从候选版切换为正式发布的axslcc 3.99.0。HLSL-first 让 Axmol 的 Shader 源码、编译器反射和多后端运行时第一次建立在同一套清晰契约上。它不仅减少了重复 Shader 与后端特例也为 Axmol v3 后续的渲染演进打下了更稳固的基础。

相关新闻

让 AI 真正动手:Swees — 手机上的 AI Agent 架构全解析

让 AI 真正动手:Swees — 手机上的 AI Agent 架构全解析

本文深入剖析开源项目 Swees 的技术架构,探讨如何在无 root 的 Android 手机上构建一个真正能「动手」的 AI Agent。 一、引言:AI 只能说,不能做? 你大概有过这样的体验:在手机上问 AI「帮我写个 Python 脚本处理 CS…

2026/7/22 17:42:24 阅读更多 →
Android构建变体(Build Variants)配置与实战指南

Android构建变体(Build Variants)配置与实战指南

1. 理解构建变体的核心概念在Android开发中,构建变体(Build Variants)是Gradle和Android Gradle插件提供的一个强大功能,它允许开发者基于同一套代码库构建出不同版本的应用。每个构建变体都是构建类型(Build Type)和产品风味(Product Flavor)的组合产物…

2026/7/22 18:51:34 阅读更多 →
嵌入式C语言

嵌入式C语言

C语言数据类型在STM32中数据类型的关键字名字被换为:stdint关键字里对应的名称。使用新名称需要包含stdint.h头文件。C语言宏定义关键字:#define用途:用一个字符串代替一个数字,便于理解,防止出错;提取程序…

2026/7/22 23:40:26 阅读更多 →

最新新闻

聊聊空降管理者的landing(进阶版)

聊聊空降管理者的landing(进阶版)

这是鼎叔的第一百四十四篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本专栏《敏捷测试转型》,大量原创思考文章陆续推出。 空降者有关的landing实践技巧文章可以参考聊聊团队效能的自我诊断。通过团队代表访谈提炼基本判断&#xff…

2026/7/23 16:42:56 阅读更多 →
AI如何提升学术写作效率:智能文献与写作辅助工具解析

AI如何提升学术写作效率:智能文献与写作辅助工具解析

1. 项目概述:当学术写作遇上AI助手去年帮导师审稿时,我发现一个有趣现象:超过60%的退稿论文都存在相似的痛点——文献综述缺乏系统性、方法论描述不清晰、图表呈现不规范。这些本可以通过工具辅助避免的问题,却消耗着研究者们宝贵…

2026/7/23 16:42:56 阅读更多 →
2026年AI高薪岗位趋势与自学大模型避坑指南

2026年AI高薪岗位趋势与自学大模型避坑指南

1. 高薪AI岗位的市场现状分析2026年的AI人才市场正在经历一场前所未有的抢人大战。头部科技公司为具备大模型相关技能的人才开出了5万的月薪,这个数字还在持续攀升。我最近接触的几个猎头案例显示,某大厂为一位3年经验的LLM工程师开出了年薪80万股票期权…

2026/7/23 16:42:56 阅读更多 →
Unity动态扫光Shader:从原理到实现,打造全方位可调视觉引导效果

Unity动态扫光Shader:从原理到实现,打造全方位可调视觉引导效果

1. 项目概述:为什么我们需要一个动态扫光Shader? 在游戏和交互式应用开发中,视觉引导和氛围营造是提升沉浸感的关键。想象一下,在一个昏暗的遗迹场景里,玩家需要找到隐藏的开关,或者在一个科幻基地中&#…

2026/7/23 16:42:56 阅读更多 →
CNN-BiLSTM-KDE混合模型在时间序列预测中的应用

CNN-BiLSTM-KDE混合模型在时间序列预测中的应用

1. 项目概述 在工业预测、金融分析和环境监测等领域,多变量时间序列预测一直是个极具挑战性的课题。传统方法往往难以捕捉复杂数据中的时空依赖关系和非线性特征。最近我在一个风电功率预测项目中,尝试将CNN、BiLSTM和KDE三种技术融合,意外获…

2026/7/23 16:42:56 阅读更多 →
线索二叉树

线索二叉树

找到某个结点的前驱或后继 朴素思路: 从根节点出发,重新进行一次中序遍历,指针q记录当前访问的结点,指针pre记录上一个被访问的结点 ①当qp时,pre为前驱 ②当prep时,q为后继 构造(先序&#x…

2026/7/23 16:41:55 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻