渲染不透明,启用Alpha并混合启用的对象

时间:2011-07-18 03:17:41

标签: algorithm graphics directx rendering

在我的渲染中,有时候我的物体是完全不透明的,有时物体会有一些阿尔法。通过alpha,我的意思就像叶子纹理,其中只显示叶子部分而其他像素不显示(因此纹理的一部分是透明的)。对于混合,我的意思是设置目标混合和源混合。

但是,我需要两个渲染列表还是三个渲染列表?我首先有一个可以渲染的所有可能对象的渲染列表。从那里,我将它分成两个列表,Opaque和“Alpha Enabled”(将被渲染回前面)。但是,对于那些有混合的人,但是,没有alpha级别更改,这些是否应该在单独的列表中,还是应该在opaque或alpha列表中?

2 个答案:

答案 0 :(得分:1)

如果您使用alpha测试,那么您可以将alpha测试的部分推送到不透明的管道中。所以,只要我理解你,你只需要2个渲染列表。

答案 1 :(得分:1)

您需要两个列表,一个用于透明,一个用于透明。

任何与视觉上混合在其后面的几何形状的东西都应该在混合列表中,无论混合是基于alpha通道还是其他添加/订阅/乘法/任何混合状态。渲染回到前面,确保单个图元是凸的并且彼此不相交..

像Goz所说的那样,Alpha测试是例外,因为它基于alpha掩码执行z-writes。它进入不透明的堆。