我試圖深淺啓用多重採樣脫皮,而且具有不正確的數據在我的透明層,結束了一些問題。我用下面的檢查樣本(最初的片段),此證是有效的:在GLSL 4.1片段着色器使用「取消」與多重採樣
float depth = texelFetch(depthMinima, ivec2(gl_FragCoord.xy), gl_SampleID).r;
if (gl_FragCoord.z <= depth)
{
discard;
}
爲
uniform sampler2DMS depthMinima;
我已經啓用其中depthMinima
定義GL_SAMPLE_SHADING
,如果我理解正確的話,應該導致片段着色器以每個樣本爲基礎被調用。如果情況並非如此,是否有辦法讓這種情況發生?
其結果是,第一層或兩個看起來差不多的,但(和我做8層),我開始變得垃圾值之下 - 大多是普通的藍色,有時從前面的層值。
這工作正常單採樣緩衝區,而不是多重採樣緩衝區。 discard關鍵字是否仍然放棄整個片段?
謝謝,可惜這並沒有幫助(我有GL_MULTISAMPLE啓用,順便說一句)。應該在每個樣本的基礎上放棄工作,還是隻能按每個片段工作? –
看看我的編輯。 – Vallentin
@Vallentin:根據規範:「片段着色器中[gl_SampleID]的任何靜態使用都會導致整個着色器按每個樣本進行評估。」所以這些功能不應該是必需的。 –