我試着去理解一個片段着色器是如何多采樣渲染過程中調用,我已經仔細閱讀規格,但我是個有點糊塗..多重採樣和片段着色器330
我建立一個多重採樣FBO用顏色和深度/模板renderbuffers ..細
我設置一個簡單的1線的頂點着色器只是用於變換和另外1行片段着色器剛剛返回黑色..和其細
我畫一條線 - 行顯示平滑..罰款
現在,如果在片段着色器中,我不是一味地返回黑色,而是從多重採樣紋理中讀取紋理,總是讀取樣本編號0(即黑色),我得到一條鋸齒狀的線。
什麼是簡單的myoutcolor=vec4(0.0)
和myoutcolor=texelFetch(mysampler2DMS,...,0)
之間的區別?
一個片段着色器是在樣品級執行,只有當它使用靜態gl_SampleID
,gl_Samplemask[]
,或具有「樣品」的存儲限定符..(在所有這些情況下,這意味着GLSL #version 400
或以上)的規格的狀態,否則它在片段級別執行..
但是,這怎麼可能?在上面的例子中,即使我總是返回相同的顏色,我也得到了平滑的線條,所以我認爲片段着色器總是在多采樣幀緩衝區中以樣本級別執行。另一方面,如果不是這樣,我應該得到平滑的結果,即使總是從MS紋理返回相同的樣本..
有人可以幫我弄清楚這一點嗎?
PS:即時通訊目前使用的#Version 330,但我發現,每多級採樣感知語句ID需要正確處理MS(gl_SampleID
,gl_Samplemask[]
,樣品..)僅在GLSL 400或以上支持..所以,什麼GLSL 330正確支持多重採樣?我如何處理GLSL 330中的MS紋理?
你正在運行什麼顯卡和驅動程序版本? – 2012-01-12 20:24:52
OpenSUSE x64 12.1上的GT330M,驅動程序290.x – user815129 2012-01-13 05:29:24
驅動程序(剛選中)290.10,您是否懷疑驅動程序問題?無論如何,我想我應該得到平滑的結果,你同意嗎? – user815129 2012-01-13 06:45:25