在 OpenGL 顶点着色器中,唯一被视为动态统一的内置输入是gl_DrawID
。我可以猜测,不进行动态统一的决定gl_InstanceID
是为了允许实现将来自不同实例的顶点分组到单个顶点着色器扭曲(/波前/其他)中。然而,众所周知,每个实例具有少量顶点的实例化绘制对性能不利,因为没有主要的桌面 GPU 供应商实际上将多个实例分组到单个扭曲中(这导致每个顶点很少的许多实例的扭曲占用率较低) )。这似乎意味着在实践中,gl_InstanceID
很可能会动态统一。不制作的理由是什么gl_InstanceID
(gl_BaseInstance
以及gl_BaseVertex
) 动态统一表达式?是否有任何 GPU 可以实际对每个波前的多个实例进行分组,或者在编写规范时是否存在?
主页
/
user-4395213