Opengl 可以正确着色&;反射透明材料是混合交换的吗?

Opengl 可以正确着色&;反射透明材料是混合交换的吗?,opengl,transparency,blending,Opengl,Transparency,Blending,单独渲染透明材质时,两个“最简单”的选项是加法(GL_ONE,GL_ONE;例如火花/火焰/其他发光粒子)和乘法(GL_ZERO,GL_SRC_COLOR;例如相机滤光片/等等) 考虑从外部渲染带有一些窗户的房子的场景。 在使用这些技术时,您通常会在那里执行以下操作: 使用深度书写和测试渲染不透明材料(天空盒、墙壁等) 使用深度测试和混合渲染透明材质(窗口等) 问题是,当混合乘法时,不可能(据我所知)在玻璃上有光反射,因为这需要增亮(=src color>1.0) 进行加法混合时,可以渲染灯光反

单独渲染透明材质时,两个“最简单”的选项是加法(
GL_ONE,GL_ONE
;例如火花/火焰/其他发光粒子)和乘法(
GL_ZERO,GL_SRC_COLOR
;例如相机滤光片/等等)

考虑从外部渲染带有一些窗户的房子的场景。 在使用这些技术时,您通常会在那里执行以下操作:

  • 使用深度书写和测试渲染不透明材料(天空盒、墙壁等)
  • 使用深度测试和混合渲染透明材质(窗口等)
  • 问题是,当混合乘法时,不可能(据我所知)在玻璃上有光反射,因为这需要增亮(=src color>1.0)


    进行加法混合时,可以渲染灯光反射之类的内容,但不能过滤透射光(因为这需要变暗)(=src color我担心您无法绕过某种排序透明对象。如果您有KD树或类似结构,这应该仍然足够快。如果您需要每个通道过滤,您还需要两次。如果简单的标量过滤器足够,您可以利用alpha通道(
    GL_ONE,GL_src_alpha
    )好吧,我的问题是我想要看起来逼真的透明对象,但我还不知道我的用户会想到什么关于“联锁”对象/等等