我正在寻找一种可以将 cg/hlsl 混合着色器转换为 glsl es 着色器的工具。我尝试了 hlsl2glsl,它不理解关键字“extern”,尽管它是一个可行的 hlsl 关键字并且已经查看了 cgc,但没有找到关于如何为 glsl es 编译的文档。
谢谢
老问题,我知道,但无论如何我都会提供这个答案。
我在 [合法地] 想要使用一些针对 Unity 的精细 CG 着色器代码时遇到了这个问题 ;-)
查看 Github 上的 CG-shader-to-GLSL-shader Python 转换脚本“ cg2glsl.py ”(它需要cgc
在包中找到的命令nvidia-cg-toolkit
,大多数操作系统都支持。
'从 cg 着色器转换'中简要概述了它的用法
引自 Tomaka17 的 CG-to-GLSL 相关博文“Turning Cg into GLSL, then using the code”
Cg 是 nVidia 开发的着色语言。基本上,你用 Cg 编写所有的着色器……事实上,Cg 会将你的代码编译成特定于 API 的语言。
在Tomaka17 的示例中,他使用 C++ 拦截 nVidia CG 库调用以提取编译后的 GLSL 代码,我认为这在概念上与cg2glsl.py将执行的操作相同(尽管不必通过其 Python 用法编译代码)。
cgc 文件名 -profile glslv/glslf
但是你必须为 glsl es 添加 presecion,cg 编译器不是这个