
微软
到2024年底的现在,情况大致如下:hlsl语言的支持正式被纳入clang,往后使用clang就能够编译hlsl了。hlsl编译后的中间语言DXIL和spir - v都属于llvm ir方言,所以不久前
微软决定从DXIL迁移到spir - v,这使得spir - v成为hlsl编译后的标准交换格式,hlsl编译完直接就是spir - v,无需再转换。如今的hlsl具备很多优势:它拥有完整的开源工具链llvm以及开源编译器clang的支持,其语言实现是开源的;它采用跨平台且被广泛应用的数据交换格式spir - v,这种交换格式也是开源的;由于使用了spir - v,hlsl实现了完全的跨平台以及跨图形引擎;它有比renderdoc强大许多的PIX作为调试工具,并且还兼容renderdoc;在语言特性方面,hlsl支持template、运算符重载等非常便利的特性;在功能上,hlsl更是直接与
NVIDIA、
AMD等GPU厂商合作开发新特性,像几年前的mesh shaders、硬件光追dxr,不久前又推出了无需CPU允许,GPU就能自行按需调度workload的work graph等,这些特性都是DirectX最先引入到hlsl中给予支持的,其他图形引擎往往要过一两年才会效仿。再看看其他的shader语言,不是缺这少那就是功能残缺,与hlsl相比完全是被降维打击。就这种情况而言,我完全看不出hlsl不能成为主流shader语言的理由,所以游戏引擎普遍选择hlsl也就理所当然了。