由于imageAtomicAdd(它似乎是唯一真正的原子"读取 - 修改 - 存储"对图像进行操作的功能)仅适用于32位整数,因此我没有看到任何明智的方法在一个像素中累积来自不同着色器调用的多个颜色值。
我能看到的唯一合理的方法是每个颜色使用32位(每个RGBA像素128位),增加8位颜色值,希望它不会溢出并在之后钳位到8位。 这似乎是浪费和限制性的(只有纯添加剂混合?)
累积其他数据结构也无法解决问题,因为共享变量和ssbos似乎只支持atomicAdd,也只支持整数。
有两个原因让我觉得我可能遗漏了一些东西: 1.允许并发交叉测试(例如阴影射线)的每个路径追踪器都必须解决这个问题,因此似乎必须有一个解决方案。 2.各种花式混合都可以在片段着色器中完成,因此硬件肯定能够做到这一点。
每个人都只是编写具有1:1着色器调用的路径追踪器:像素映射?