2
잠시 동안은 깨닫지 못했지만 깊이 맵이 엉망입니다. 흑백 픽셀 = 가까운 클리핑면, 흰색 픽셀 = 원거리 클리핑면 - 기본적으로 바닥에서 100x1x100 정사각형으로 걷고 INTO로 들어가면 (99, 0 및 99 좌표에 도달 함) 전체 깊이 맵이 바뀝니다. 화이트. 이는 각 픽셀이 원거리 클리핑 평면에 있음을 나타내며, 원하지 않습니다.C#/XNA/HLSL - 깊이 맵이 엉망이 됨
GraphicsDevice.Clear(Color.White);
effect.MainEffect.CurrentTechnique = effect.MainEffect.Techniques["DepthProcess"];
GraphicsDevice.SetVertexBuffer(line);
effect.MainEffect.CurrentTechnique.Passes[0].Apply();
GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleStrip, 0, 2);
그리고 HLSL 코드 (정점 셰이더, 픽셀 셰이더) : example
이 는 깊이 맵 렌더링 처리 코드
DVOut DVShader(VIn _in)
{
DVOut o;
o.position = mul(_in.position, WorldViewProjection);
float a = o.position.z/o.position.w;
o.color = float4(a,a,a,1);
return o;
}
float4 DPShader(DVOut _in) : COLOR
{
return _in.color;
}
technique DepthProcess
{
pass Pass0
{
ZEnable = TRUE;
ZWriteEnable = TRUE;
AlphaBlendEnable = FALSE;
VertexShader = compile vs_2_0 DVShader();
PixelShader = compile ps_2_0 DPShader();
}
}
이 때문에이되는 1/0 오류? 또는 행렬 곱셈에 문제가 있습니까? 아니면 승/전자?