【发布时间】:2012-03-23 20:17:11
【问题描述】:
如何制作自己的 z 缓冲区以正确混合 Alpha 通道?我正在使用glsl。 我只有一个想法。这是使用 2 个“缓冲区”,其中一个存储深度分量和另一种颜色(带有 alpha 通道)。我不需要在我的程序中访问缓冲区。我不能使用统一数组,因为 glsl 对统一变量的数量有限制。我不能使用 FBO,因为没有定义有时写入和读取帧缓冲区的行为(并且不能在任何卡上工作)。
我该如何解决这个问题?!
或者如何从 glsl 读取实际的实时 z-buffer? (我的意思是每个片段着色器调用 z-buffer 都必须更新)
【问题讨论】:
-
“正确混合 Alpha 通道”是什么意思?你想解决什么问题?您是否正在尝试做一些与订单无关的事情?
-
除了 Nicol Bolas 所说的:对于 Order Independent Transparency,一些额外的深度缓冲区是不够的。什么方法可以将场景分层,这称为深度剥离。但是这个的实现并不是微不足道的。
-
@NicolBolas,是的。如果我可以从 glsl 读取 Z-Buffer,那么我有一个简单的方法来做到这一点!
标签: opengl glsl framebuffer fbo zbuffer