2013-06-24 57 views
4

你好,還有其他程序員,我發現在改善陰影映射方面還有其他障礙。 問題是我正在做一些陰影映射,並且找不到任何合適的深度偏差。前一段時間,在我第一次做XNA項目時,我可以在一個地形上很好地設置它,並且可以很快找到合適的偏差,因爲如果沒有設定偏差,就會發生這樣的痤瘡: Shadow acne 我正在調整偏見,直到陰影看起來很好,這是它的背後的基本理念,據我所知。這是我所追求的結果。 現在轉移到DirectX 11,稍後設置一個小場景,並完成一些PCF陰影映射。然後,當設置沒有偏見時,沒有這樣的粉刺,但陰影被斷開,例如(對於難看的紋理):Disconnected shadows 它應該在地上有痤瘡,並且盒子的陰影連接到盒子的邊緣,而是斷開連接。當降低偏差(負值)時,差距開始減小,但很快整個陰影圖會變暗,然後才達到最佳間隙距離。無法找到適當的陰影貼圖深度偏差?

我使用與XNA相同的着色器代碼(只通過pcf過濾擴展),所以我假設它更多的是與api有關。檢出xna代碼,我什至不能看到渲染到紋理格式,因爲它們是隱藏的(我猜)。

如果有人曾經有過這個問題,請幫助我以零偏見實現陰影痤瘡。

UPDATE:該圖顯示了一個普通的平面四邊形的凹凸的陰影(痤瘡應該甚至在整個四,因爲它是在XNA地形): uneven acne

UPDATE2:我嘗試切換剔除模式在深度渲染過程中挑選出面向前的人臉,這樣可以更好地調整陰影,因爲如果偏好被修改,沒有渲染的地板會變暗,但陰影仍然非常不均勻。單個網格的陰影可以調整爲看起來不錯,但其他人會搞砸。 individuals look good 不知何故,我認爲深度緩衝區分佈非常不均勻,因爲靠近遠平面的物體會得到更好的結果。我想,連裁剪距離都不好。陰影投影設置爲1-2000深度分佈(在我的場景中,1米大約爲200個單位),但不知何故,精確度是關閉的。 我已經試過了R32_FLOAT和D24_S8_UNORM的深度紋理格式。

+1

也許有一些有趣的東西給你:http://msdn.microsoft.com/en-us/library/windows/desktop/ee416324%28v=vs.85%29.aspx – Gnietschow

+0

是的,但我的問題是彼得平滑發生,沒有任何陰影偏見。沒有粉刺。 –

回答

1

好的,斜率比例偏差是一個自我陰影痤瘡的解決方案,但不是我的問題的正確解決方案。 我發現我的視口設置有問題。所有這一次,我已經將其深度的描述填充到0.1f接近深度和1.0f深度,因爲我不知道它是什麼原因並且工作正常,但深度緩衝區不均勻,在陰影附近獲得更高精度眼睛和精度進一步下降。 我將陰影貼圖渲染深度模板視圖的視口描述更改爲近平面上的0.0f,並最終生效,所以現在整個場景均勻地獲取深度信息,就像之前在XNA中一樣。

1

我沒有適當地設置'SlopeScaledDepthBias'屬性(也是D3D11_RASTERIZER_DESC的一部分),我見過類似的問題。

正如here所解釋的那樣,SlopeScaledDepthBias是深度偏差計算的重要組成部分,請確保將其初始化爲有意義的東西。

+0

是的,我一直在嘗試,但無法調整它以取得可接受的結果,因爲我不明白應該得到什麼樣的價值,但您的回答使我更加意識到它的重要性。 –