透明顶点顺序
Transparency vertex order
在我写的这个游戏中,我尝试用透明渲染冰。冰下面有一个固体块(灰色的)。您可以看到的浅蓝色平面是您可以透过石头看到的天球。正如您还看到的那样,它仅在一个方向上不起作用。我的问题是为什么会出现这些飞机。我不会在那里画任何东西。我唯一画的(冰块)是面向空气的。和下面的石头。
我检查一张脸是否是这样绘制的:检查相邻的立方体是否透明并且与面应该自己绘制的立方体不同
最后的检查是为了防止冰块将彼此视为空气并在透明的地方绘制所有面。
我在 Internet 上阅读了一些有关透明度顺序的内容,但我不明白这里到底有什么问题。
如果您使用透明度,则必须注意绘图对象的顺序。如果您不关心顺序,可能会发生以下情况:
- 天空渲染得很远,缓冲区现在包含每个片段的天空深度信息
- 渲染透明冰,更新深度信息,因为冰比天空更靠近相机
- 尝试绘制岩石:深度信息在某些片段的冰后面。由于渲染器不知道透明度,因此 "assumes" 你无法透过冰看到。所以就不用渲染石头了
您可以通过对对象进行排序来避免在对象基础上出现这种情况。先从前向后画实心物体。之后画出透明的。但是,如果透明对象彼此靠近或堆叠在一起,则需要更复杂的算法(例如顺序独立透明度)来避免伪影。
在我写的这个游戏中,我尝试用透明渲染冰。冰下面有一个固体块(灰色的)。您可以看到的浅蓝色平面是您可以透过石头看到的天球。正如您还看到的那样,它仅在一个方向上不起作用。我的问题是为什么会出现这些飞机。我不会在那里画任何东西。我唯一画的(冰块)是面向空气的。和下面的石头。
我检查一张脸是否是这样绘制的:检查相邻的立方体是否透明并且与面应该自己绘制的立方体不同
最后的检查是为了防止冰块将彼此视为空气并在透明的地方绘制所有面。
我在 Internet 上阅读了一些有关透明度顺序的内容,但我不明白这里到底有什么问题。
如果您使用透明度,则必须注意绘图对象的顺序。如果您不关心顺序,可能会发生以下情况:
- 天空渲染得很远,缓冲区现在包含每个片段的天空深度信息
- 渲染透明冰,更新深度信息,因为冰比天空更靠近相机
- 尝试绘制岩石:深度信息在某些片段的冰后面。由于渲染器不知道透明度,因此 "assumes" 你无法透过冰看到。所以就不用渲染石头了
您可以通过对对象进行排序来避免在对象基础上出现这种情况。先从前向后画实心物体。之后画出透明的。但是,如果透明对象彼此靠近或堆叠在一起,则需要更复杂的算法(例如顺序独立透明度)来避免伪影。