2010-07-07 130 views
0

我正試圖在RenderMonkey中實現Light Prepass渲染。到目前爲止,在Normal + Depth中,看起來正常緩衝區正在得到正確的結果,但深度緩衝區只顯示一種顏色。我如何檢查我的深度緩衝區是否正確? 工作區下載鏈接:http://www.mediafire.com/?jq3jmantyxw深度緩衝區只顯示藍色

+1

我們可以看到所產生的深度緩衝的形象? – Goz 2010-07-07 10:29:17

+0

它只是淺藍色。沒有其他的。如果你想看,使用這個鏈接http://www.flickr.com/photos/[email protected]/4772680803/ 其實,你可以下載我上面上傳的工作區,並嘗試爲你的自己 – Ethan 2010-07-08 02:26:20

回答

0

淡藍色實際上是RGB值0.0, 1.0, 1.0。由於深度(通常)是代表Z的單個通道,因此從紋理採樣時,它會在第一個通道中返回紅色。缺少綠色,藍色和alpha通道將用硬件取代1.0。

您的下載鏈接不起作用,因爲我懷疑已經有2年了。

您應該確保您的像素着色器返回既COLOR0COLOR1語義(注意,深度是float4儘管輸出是一個單通道紋理):

struct PS_OUT { float4 color : COLOR0; float4 depth : COLOR1; }; 

PS_OUT ps_main(PS_INPUT Input) 
{ 
    PS_OUT Output; 
    // your color shader here 
    Output.color = myFinalColor; 
    Output.depth = myFinalDepth; // e.g. Input.posz/Input.posw from your vertex shader 
    return Output; 
} 

根據您的相機設置,你可以得到是這樣的:

enter image description here