在 PS_2_0 着色器中模拟 VFACE 语义
我正在对一些 HLSL 着色器进行一些工作,试图让它们在 SM2.0 中工作。我几乎成功了,但我们的一个着色器接受一个参数:
float alignment : VFACE
我从 MSDN 的理解是,这是一个自动计算的变量,以防我需要它,但 SM2.0 不支持它......那么,我如何重现这个?我不是着色器程序员,因此任何(伪)代码都会非常有帮助。我了解 VFACE 的作用,但不知道如何在像素着色器或 VS 中自行计算并将其传递到 PS 中。按像素计算听起来很昂贵,所以也许有人可以展示一个框架来在 VS 中计算它并在 PS 中使用它?
I am doing a bit of work on some of our HLSL shaders, trying to get them to work in SM2.0. I've nearly succeeded but one of our shaders accepts a parameter:
float alignment : VFACE
My understanding from MSDN is this is an automatic var calculated in case I need it, but it's not supported under SM2.0... so, how might I reproduce this? I'm not a shader programmer so any (pseudo) code would be really helpful. I understand what VFACE does, but not how I might calculate it myself in a pixel shader, or in a VS and pass it into the PS. Calculating it per-pixel sounds expensive so maybe someone can show a skeleton to calculate it in a VS and use it in a PS?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你不能。因为
VFACE
表示三角形的方向(后或前),并且 VS 或 PS 阶段无法访问整个基元(如 SM4/5 GS 阶段)。唯一的方法是分两次渲染几何体(一次使用背面剔除,另一次使用正面剔除),并将一个常量值传递给与
VFACE
含义匹配的着色器。You can't. Because
VFACE
means orientation of the triangle (back or front) and the VS or PS stages have not access to the whole primitive (like in SM4/5 GS stage).The only way is to render your geometry in two passes (one with back face culling, the other with front face culling) and pass a constant value to the shader matching
VFACE
meaning.