Anfänger92
Erfahrenes Mitglied
Hallo,
mal wieder ein Problem im Bereich 3D-Grafik.
Also ich render die Scene einmal in eine Textur mit dem Format Float32.
Das Funktioniert auch noch alles ganz gut die Textur wird richtig erstellt.
Mein Problem entsteht anscheinend beim projezieren der Textur in das Kamera-Koordinaten system.
So sieht der Teil des Shaders aus ums den geht:
Weiß vll jemand was falsch ist? Leider findet man dazu nicht sehr viel im Internet.
Im Anhang nochmal das Ergebnis des ganzen.
mal wieder ein Problem im Bereich 3D-Grafik.
Also ich render die Scene einmal in eine Textur mit dem Format Float32.
Das Funktioniert auch noch alles ganz gut die Textur wird richtig erstellt.
Mein Problem entsteht anscheinend beim projezieren der Textur in das Kamera-Koordinaten system.
So sieht der Teil des Shaders aus ums den geht:
C++:
struct a2v_Shaded {
float4 Pos : POSITION;
float2 TexCoord : TEXCOORD0;
float2 DetailCoord : TEXCOORD1;
};
struct v2p_Shaded {
float4 Pos : SV_POSITION;
float2 TexCoord : TEXCOORD0;
float2 DetailCoord : TEXCOORD1;
float4 ShadowTexCoord : TEXCOORD2;
float fDepth : COLOR;
};
void VS_Shaded( in a2v_Shaded IN, out v2p_Shaded OUT) {
OUT.Pos = mul(IN.Pos,mWorldViewProj);
OUT.TexCoord = IN.TexCoord;
OUT.DetailCoord = IN.DetailCoord;
OUT.fDepth = mul(IN.Pos,mLightViewProj).z;
OUT.ShadowTexCoord = mul(IN.Pos,mLightViewProj);
}
float4 PS_Shaded( in v2p_Shaded IN): SV_Target
{
float2 ProjectedTexCoords;
ProjectedTexCoords[0] = IN.ShadowTexCoord.x/IN.ShadowTexCoord.w/2.0f + 0.5f;
ProjectedTexCoords[1] = -IN.ShadowTexCoord.y/IN.ShadowTexCoord.w/2.0f + 0.5f;
float fA = IN.fDepth;
float fB = ShadowTex.Sample(linearSampler,ProjectedTexCoords).r;
if( (fA-0.1f) < fB)
return ComputeColor(IN);
else
return float4(0.1f,0.1f,0.1f,1.0f);
}
Weiß vll jemand was falsch ist? Leider findet man dazu nicht sehr viel im Internet.
Im Anhang nochmal das Ergebnis des ganzen.
Anhänge
Zuletzt bearbeitet von einem Moderator: