混合使用 Cg 和 GLSL 着色器



我刚刚有一个旧的OpenGL(2.1)/Cg(3.1)代码,我应该改进它,特别是延迟着色渲染,我想更改其中一个通道的内核。

我正在添加 GLSL(3.30),因为我更习惯了。它似乎有效,但我想知道它是否会对两者(GLSL/Cg)造成一些性能影响。换句话说,生成的asm代码应该完全同构吗?

您不能在单个着色器中混合使用 GLSL 和 Cg,但在不同的着色器中,它应该可以正常工作。 无论如何,Cg 代码都会被翻译成 GLSL(除非您使用的是 Nvidia 驱动程序,在这种情况下,它可能会直接转换为着色器 asm 代码)。 如果你想看看它是否做了任何可能效率低下的奇怪事情,你可以看看 Cg 编译器生成的 GLSL 代码。

您应该能够在 Cg 代码上运行 cgc 作为预处理器,并让它在紧要关头输出 GLSL!使用 -profile 选项选择 GLSL。

最新更新