Fix shadow again

This commit is contained in:
2025-01-17 19:50:50 +01:00
parent 1ee5dd4ad0
commit 75c719a66d
6 changed files with 65 additions and 15 deletions

View File

@@ -101,8 +101,6 @@ float ShadowCalculation(float4 shadowCoord, float3 normal) {
shadow /= 9.0f;
// float shadowDepth = gShadowMap.Sample(gShadowSampler2, UVCoords.xy).r;
if(projCoord.z > 1.0)
shadow = 0.0;
@@ -110,15 +108,38 @@ float ShadowCalculation(float4 shadowCoord, float3 normal) {
return shadow;
}
// Pixel shader
// float4 PS(VS_OUTPUT input) : SV_TARGET {
// float shadowFactor = ShadowCalculation(input.ShadowCoord, input.Normal);
//
// float3 diffuseColor = gDiffuseMap.Sample(gSampleState, input.TexCoord).rgb;
//
// float3 finalColor = diffuseColor * (1 - shadowFactor);
// finalColor += gAmbient;
//
// return float4(finalColor, 1.0f);
// }
float4 PS(VS_OUTPUT input) : SV_TARGET {
float shadowFactor = ShadowCalculation(input.ShadowCoord, input.Normal);
float3 color = gDiffuseMap.Sample(gSampleState, input.TexCoord).rgb;
float3 normal = normalize(input.Normal);
float3 diffuseColor = gDiffuseMap.Sample(gSampleState, input.TexCoord).rgb;
float3 lightDir = normalize(-gLightDirection);
float3 viewDir = normalize(gCameraPosition - input.WorldPosition.xyz);
float3 finalColor = diffuseColor * (1 - shadowFactor);
finalColor += gAmbient;
float3 ambient = gAmbient;
return float4(finalColor, 1.0f);
float diff = max(dot(normal, lightDir), 0.0);
float3 diffuse = gLightColor * diff * color;
float3 reflectDir = reflect(-lightDir, normal);
float spec = pow(max(dot(viewDir, reflectDir), 0.0), 32);
float3 specular = gLightColor * spec;
float shadow = ShadowCalculation(input.ShadowCoord, normal);
float3 lighting = (ambient + (1.0 - shadow) * (diffuse + specular)) * color;
return float4(lighting, 1.0f);
}
// DepthStencilState