diff --git a/res/shaders/BasePass.slang b/res/shaders/BasePass.slang index d00ec01..2880da9 100644 --- a/res/shaders/BasePass.slang +++ b/res/shaders/BasePass.slang @@ -51,9 +51,9 @@ float4 fragmentMain(in FragmentParameter params) : SV_Target } } float4 lightSpacePos = mul(pShadowMapping.lightSpaceMatrices[cascadeIndex][i], float4(params.position_WS, 1)); - //lightSpacePos = mul(biasMat, lightSpacePos); + lightSpacePos = mul(biasMat, lightSpacePos); float4 shadowCoord = clipToScreen(lightSpacePos); - int3 texDim; + /*int3 texDim; pShadowMapping.shadowMaps[cascadeIndex].GetDimensions(texDim.x, texDim.y, texDim.z); float scale = 1.5f; float dx = scale * 1.0 / float(texDim.x); @@ -68,7 +68,7 @@ float4 fragmentMain(in FragmentParameter params) : SV_Target if (shadowCoord.z > 0.0 && shadowCoord.z < 1.0) { float dist = pShadowMapping.shadowMaps[cascadeIndex].Sample(pShadowMapping.shadowSampler, float3(shadowCoord.xy + float2(dx * x, dy * y), i)).r; - if (shadowCoord.w > 0 && dist > shadowCoord.z + 0.005f) + if (shadowCoord.w > 0 && dist < shadowCoord.z - 0.005f) { shadow = 0; } @@ -76,9 +76,9 @@ float4 fragmentMain(in FragmentParameter params) : SV_Target shadowFactor += shadow; count++; } - } + }*/ - result = float3(pShadowMapping.shadowMaps[cascadeIndex].Sample(pShadowMapping.shadowSampler, float3(shadowCoord.xy, i)).r, 0, 0);//(shadowFactor / count) * pLightEnv.directionalLights[i].illuminate(lightingParams, brdf); + result = 1 - float3(pShadowMapping.shadowMaps[cascadeIndex].Sample(pShadowMapping.shadowSampler, float3(shadowCoord.xy, i)).r, 0, 0);//(shadowFactor / count) * pLightEnv.directionalLights[i].illuminate(lightingParams, brdf); } for (uint i = 0; i < pLightEnv.numPointLights; ++i) { diff --git a/src/Engine/Graphics/RenderPass/ShadowPass.cpp b/src/Engine/Graphics/RenderPass/ShadowPass.cpp index d299c43..0616f45 100644 --- a/src/Engine/Graphics/RenderPass/ShadowPass.cpp +++ b/src/Engine/Graphics/RenderPass/ShadowPass.cpp @@ -125,6 +125,7 @@ void ShadowPass::beginFrame(const Component::Camera& camera, const Component::Tr viewParams.screenDimensions = Vector2(maxExtents.x - minExtents.x, maxExtents.y - minExtents.y); viewParams.invScreenDimensions = 1.0f / viewParams.screenDimensions; cascades[i].viewParams.add(createViewParamsSet()); + cascades[i].lightSpaceBuffer->updateContents(0, sizeof(Matrix4), &viewProjectionMatrix); lastSplitDist = cascadeSplits[i]; } diff --git a/src/Engine/Math/Matrix.h b/src/Engine/Math/Matrix.h index e2aada4..f8d5195 100644 --- a/src/Engine/Math/Matrix.h +++ b/src/Engine/Math/Matrix.h @@ -1,5 +1,4 @@ #pragma once - #include #include #include