正式宣布DXBC2GLSL,HLSL字节码到GLSL的编译器
来源:互联网 发布:mysql my.cnf 路径 编辑:程序博客网 时间:2024/06/05 19:50
输入
类似的项目,比如hlsl2glsl fork和mojoshader,都只支持到了SM3。对于SM4+的shader,只能自己做一个编译器。DXBC2GLSL的输入是SM5的字节码(也兼容SM4),经过解析,得到输入变量、输出变量、资源声明和shader指令等。
由于调用的是d3dcompiler.dll,shader转换的工作变成平台相关了。如果需要在Linux上做这件事情,就得用Wine来执行d3dcompiler。
输出
DXBC2GLSL包含了一个库和两个工具。用户可以在自己的程序中使用DXBC2GLSL的库进行转换,也可以调用工具进行离线转换。输出的GLSL可以是OpenGL 2.0-4.4的VS/PS/GS。HS/DS/CS,以及OpenGL ES的版本也在开发中。
和Cg的对比
原先在KlayGE中的流水线是,带有#ifdef的HLSL经过一次token转换,得到Cg源代码。经过Cg编译器转换成GLSL。在经过一次token转换,得到“现代”的GLSL。通过这样多次转换,消除了Cg编译器产生的代码对硬件的依赖。这个过程相当繁复,带来的结果是虽然稳定性有所保证,但转换速度下降了。同时由于Cg和HLSL的区别,要保证源代码兼容,很多高级的HLSL功能也都被禁止了。
使用DXBC2GLSL之后,HLSL可以完全兼容。只需要一次转换就能得到最终的GLSL。
这里比较一下KlayGE中使用DXBC2GLSL和Cg流水线的区别。编译速度和Shader性能两项,测试的是DeferredRendering例子。
未来
目前的DXBC2GLSL只是打下了一个基础,以后还需要更多的测试、重构和优化。另外,这套框架在理论上甚至可以做到把compute shader转成OpenCL。
- 正式宣布DXBC2GLSL,HLSL字节码到GLSL的编译器
- HLSL bytecode to GLSL编译器的第一步
- HLSL bytecode to GLSL编译器的第一步
- GLSL 到 HLSL 参考
- GLSL 到 HLSL 参考
- GLSL 到 HLSL 参考(二)
- HLSL内置函数,及HLSL与GLSL的对应函数
- HLSL 、 GLSL 的 Atomic Counter 资源汇总
- HLSL/GLSL/Cg
- 配置 VIM 的 HLSL 、 GLSL 的语法高亮文件
- HLSL 与 GLSL 之间的映射关系参考
- GLSL vs HLSL vs Cg
- Visual Studio 2008/2010的一个GLSL, HLSL, Cg语法加亮插件-NShader
- OpenIndiana项目正式宣布
- HLSL GLSL CG着色语言比较
- GLSL/HLSL易犯错误和注意点
- GLSL/HLSL易犯错误和注意点
- HLSL GLSL CG着色语言比较
- 【poj2229】Sumsets
- UVa 12700 - Banglawash
- Jquery 中两个页面载入后执行的函数的分析区别
- maven TestNg 测试框架 not found
- 黑马程序员--线程
- 正式宣布DXBC2GLSL,HLSL字节码到GLSL的编译器
- metasploit渗透测试笔记(内网渗透篇)
- java面向对象
- hdu5481
- daemon.c
- java面向对象2
- Lesson16 Norm computations
- 黑马程序员——高新技术----枚举及部分JDK新特性
- java面向对象3