什么是仍然可以返回未被剪裁,剔除或遮挡的索引以及将要呈现的最终阶段?
答案 0 :(得分:3)
要回答问题,没有一个问题。所有vertex processing rendering stages在 triangle clipping之前发生。和transform feedback一样。碎片着色器不会获得顶点索引;它们仅在插值后从顶点处理阶段获得每顶点值。
理论上,你可以做这样的事情。你的VS输出一个顶点的整数索引,取自gl_VertexID
。您需要一个GS,它接受三个索引并将它们打包成flat uvec3
。每个输出顶点将被赋予相同的值。然后,片段着色器可以获取uvec3
并通过SSBO和atomic counter将每个索引写入缓冲区。
当然,您将多次获得相同的索引(假设三角形共享索引)。但你可以做到。
它没有多大意义。渲染网格的一部分比它的价值更麻烦。为了提高性能,最好根据其可见性渲染全部或全部渲染。并且检测最好通过occlusion tests在不同的,不太复杂的形状上进行检测。