我的片段着色器必须知道它所属的原语的世界空间大小。它仅用于渲染矩形(=三角形对)
当然,我可以在CPU上计算它的宽度和高度并将其作为统一值传递,但是使用这样的着色器从长远来看可能会让人感到不舒服 - 人们必须记住计算它或者如何计算它或搜索文档。 是否有找到原始尺寸的“自动”方式?
我有一个使用一种传递几何着色器来做这个的想法(因为它是我知道的管道的唯一部分,可以访问整个原语),但这是一个好主意吗?
答案 0 :(得分:1)
有没有"自动化"寻找原始大小的方法?
不,因为"原始大小的概念"完全取决于你,即你的着色器如何工作。就OpenGL而言,甚至没有世界空间这样的东西。只有剪辑空间和NDC空间,你的顶点着色器采用一组无形的数据,称为顶点属性,并将其抛出到剪辑空间。
由于顶点着色器在每个顶点基础上运行而且没有看到其他顶点(除非您将它们作为另一个顶点属性传递,具有移位索引;如果这样做,输出会变化每个顶点必须是平坦的并且对于三角形的0 != vertex_ID % 3
跳过计算,唯一可行的着色器阶段完全自动化这是使用几何或细分着色器,进行准备计算,将结果作为标量顶点属性发出