当单独按顺序渲染透明材质时,2个“最简单”选项是加法(GL_ONE,GL_ONE
;例如对于火花/火焰/其他发光粒子)和乘法(GL_ZERO,GL_SRC_COLOR
;例如相机过滤器/等)。
考虑从外面用一些窗户渲染的房屋的场景。 在使用这些技术时你通常会做的是:
问题在于,当混合乘法时,就不可能(据我所知)在玻璃上产生光反射,因为这需要增亮(= src颜色> 1.0)。
进行添加剂混合时,可以渲染光反射等物体,但不会过滤透射光(因为需要变暗(= src颜色<0.0))。
现在我的第一个想法是渲染透明材料两次,一次乘法和透射颜色属性,一次添加和具有反射颜色属性(和预乘照明/等)。但是后来我会反射到未经过近表面过滤的更远的表面。
那么,是否有任何(高效且不那么黑客)的方式来解决这个问题,不需要多次传递或排序一切?