2014-01-08 84 views
-1

我使用sharpdx訪問的DirectX 11並運行這個非常簡單的位移渲染我在一個平面上寫上排量着色渲染問題(後得出的前頂部)

沒有多個地方,沒有其他對象場景,只是一個高聚平面的位移着色器在一個平局中調用

雖然它呈現罰款首先我旋轉它隨着時間的推移,我得到「真正奇怪」的人工製品X2超過一定的角度(這不是一個背面問題,我只旋轉它的上軸和它的角度,當問題出現時沒有背面可見)

  • 一些地區似乎拿得出了(在後面的多邊形拿得出在前面的),你可以看到這個樣子這裏:https://www.dropbox.com/s/hy4k20ay1g77rky/Drawing%20issue.png
  • 另一個完全說不出的事情發生了,不知道我是否可以用言語表達,但如果不清楚的話,讓我知道,我會嘗試捕捉視頻:經過某個旋轉點,就好像一束光線在屏幕上出現,並「逐步」地從左到右改造表面,在光線內留下奇怪的僞影,射線

我使用的着色器:

struct VS_IN 
{ 
    float4 pos : POSITION; 
    float2 tex : TEXCOORD; 
}; 

struct PS_IN 
{ 
    float4 pos : SV_POSITION; 
    float2 tex : TEXCOORD; 
}; 

float4x4 worldViewProj; 

Texture2D<float4> diffuse: register(t0); 
Texture2D<float4> height: register(t1); 
Texture2D<float4> lightmap: register(t2); 
SamplerState pictureSampler; 

PS_IN VS(VS_IN input) 
{ 
    PS_IN output = (PS_IN) 0; 
    input.pos.z += height.SampleLevel(pictureSampler, input.tex, 0).r /2; 
    output.pos = mul(input.pos, worldViewProj); 
    output.tex = input.tex; 
    return output; 
} 

float4 PS(PS_IN input) : SV_Target 
{ 
    return diffuse.Sample(pictureSampler, input.tex) * lightmap.Sample(pictureSampler, input.tex); 
} 

回答

1

看起來你沒有正確設置深度測試。這可以解釋爲什麼它從某些角度看起來是正確的,而不是來自其他角度,因爲它取決於三角形的出現順序。

您是否創建了深度緩衝區,設置它,清除它並設置DepthStencilState以匹配?

+0

我其實沒有做到這一點,但我很高興地看到它聽起來不像着色器問題,但有些術語完全明確定義問題,我可以谷歌了,謝謝指出我在正確的方向:) –

+0

確認:這解決了我的問題,謝謝! –