2011-05-09 84 views
0

我找到了這個鏈接,它解釋了一些關於pcf陰影貼圖。我查看了提供的代碼示例,並且無法確定偏移量數組是什麼。我假設它是一個float2數組,並且我知道它會將像素偏移給鄰居。我只是不知道應該設置偏移量。如何將pcf添加到陰影貼圖

鏈接:http://www.gamerendering.com/2008/11/15/percentage-closer-filtering-for-shadow-mapping/

下面是代碼

float result; 
result = shadow2DProj(shadowMap,texCoord+offset[0]); 
result += shadow2DProj(shadowMap,texCoord+offset[1]); 
result += shadow2DProj(shadowMap,texCoord+offset[2]); 
result += shadow2DProj(shadowMap,texCoord+offset[3]); 
result /= 4.0; // now result will hold the average shading 

我必須只是失去了一些東西簡單

任何幫助表示讚賞

謝謝

馬克

+0

如果你刪除偏移值會發生什麼? – Jay 2011-05-18 07:20:37

+0

您必須將陰影貼圖的紋理比較模式設置爲「GL_COMPARE_REF_TO_TEXTURE」。這會給你硬件PCF。這實際上是在你鏈接的文章中解釋的... – Tara 2015-12-15 11:43:38

回答

1

我注意到你正在使用shadow2DProj,據我所知這是一個GLSL函數,HLSL/CGSL中的等價物是tex2Dproj。如果你得到一個空白屏幕,那麼這可能導致你更接近你應該能夠臨時刪除偏移值。

祝你好運夥伴我在這也是新的,所以我知道這是如何:)

+0

我在那裏發佈的代碼不是我的,這是我在網上找到的示例代碼。我設法鍛鍊了它應該是1 /紋理寬度的偏移量。我現在明白pcf是如何工作的。基本上你所做的就是鍛鍊像素着色器中當前像素周圍區域的陰影中有多少像素。然後,將該數字除以您測試的像素數量,並將陰影衰減設置爲該值。我也在使用HLSL。 – MulletDevil 2011-05-28 15:17:05

+0

很高興爲你做伴侶:) – Jay 2011-06-29 05:10:40