【发布时间】:2011-03-11 03:51:21
【问题描述】:
我正在使用 Nvidia FX Composer 编写一个半透明的 CgFX 着色器。一切都很好,希望在我的渲染视图中,场景后面的对象被绘制在我的着色对象之上。
这是我的技巧:
技术主要{
通过 p0
{
深度测试启用 = 真;
深度掩码 = 假;
CullFaceEnable = 假;
混合启用 = 真;
BlendFunc = int2(SrcAlpha, OneMinusSrcAlpha);
DepthFunc = LEqual;
VertexProgram = 编译 vp40 std_VS();
FragmentProgram = 编译 gp4fp std_PS();
}
}
如果我打开 DepthMask,那么后面的对象会被完全掩盖,这违背了透明的目的。似乎对象没有被从后到前绘制。有没有办法确认这一点,我可以控制 FX Composer 的渲染器将项目绘制到屏幕上的顺序吗?
【问题讨论】:
-
没有深度掩码没有深度缓冲技术不起作用。事实上,似乎对象在渲染之前没有进行深度排序。我不知道这是否可以教给 FxComposer。但是您可以在您的程序中执行此操作。