每帧统一生成图像。我希望它还会创建一个额外的int数组,每次它决定在生成的图像上写一个新颜色时,它会在int数组的对应位置写入对象的id。
在OpenGL中,我知道它很常见,我发现了很多关于这类内容的教程,基本上根据深度图确定应该在辅助数组的每个像素上写入哪个id。但在统一中,我使用了一个给定的Shader而我找不到合适的方法来做到这一点。我认为应该有这种常见问题的功能构建。
我的目标是知道屏幕上的每个像素它属于哪个对象。
谢谢。
在前向渲染中,如果您不将其用于其他目的,则可以将ID存储到后台缓冲区的Alpha通道中(并且它仅对不透明对象有效),最多256个ID而不使用HDR。在延迟中,您可以潜在地编辑gbuffer的未使用的通道。
这是你想要最小化开销,否则你可以有一个更通用的系统,将特定对象重新渲染到屏幕空间中的纹理中,这是一个非常简单的着色器,只需输出ID,就可以使用命令缓冲区。