堆叠Cg着色器

时间:2009-05-21 21:08:21

标签: c++ graphics shader cg

在我的引擎中,我从成对的顶点/像素着色器文件中加载Cg着色器。我希望能够将着色器组合起来(照明+材料等)。如果没有将着色器分解为单独的函数,然后从这些函数创建单个着色器脚本字符串,您是否知道在Cg中堆叠不同着色器的任何好方法?

1 个答案:

答案 0 :(得分:2)

听起来有点类似于DirectX 11中的动态着色器链接功能? Cg的界面功能可以让你完成类似的事情。它允许您重新配置着色器,以便您可以轻松,干净地执行更改计算照明方式或更改材质类型等操作。

例如,假设您要编写着色器但需要能够更改照明的计算方式。您可以定义一个Light接口,它具有以某种方式计算光的功能。在其他地方,您可以实现Light接口,例如,CoolLight和UberLight。在运行时,您可以指定应该使用Light接口的哪个实现,这与指定其他参数的方式非常相似。

要查看这是否是您想要的,我建议您查看Cg用户手册(http://developer.download.nvidia.com/cg/Cg_2.2/CgUsersManual.pdf)。如果您搜索“共享参数和接口”,则有一个小例子。