可以正确遮蔽和反射透明材料混合交换吗?

时间:2014-08-13 16:52:16

标签: opengl transparency blending

当单独按顺序渲染透明材质时,2个“最简单”选项是加法(GL_ONE,GL_ONE;例如对于火花/火焰/其他发光粒子)和乘法(GL_ZERO,GL_SRC_COLOR;例如相机过滤器/等)。

考虑从外面用一些窗户渲染的房屋的场景。 在使用这些技术时你通常会做的是:

  1. 使用深度书写和测试
  2. 渲染不透明材质(天空盒,墙壁等)
  3. 使用深度测试和混合渲染透明材质(窗口等)
  4. 问题在于,当混合乘法时,就不可能(据我所知)在玻璃上产生光反射,因为这需要增亮(= src颜色> 1.0)。

    进行添加剂混合时,可以渲染光反射等物体,但不会过滤透射光(因为需要变暗(= src颜色<0.0))。

    现在我的第一个想法是渲染透明材料两次,一次乘法和透射颜色属性,一次添加和具有反射颜色属性(和预乘照明/等)。但是后来我会反射到未经过近表面过滤的更远的表面。

    那么,是否有任何(高效且不那么黑客)的方式来解决这个问题,不需要多次传递或排序一切?

0 个答案:

没有答案