rendering: tune main light shadow bias defaults
This commit is contained in:
@@ -6,14 +6,18 @@ namespace XCEngine {
|
||||
namespace Rendering {
|
||||
|
||||
struct DirectionalShadowSamplingSettings {
|
||||
float receiverDepthBias = 0.0015f;
|
||||
float normalBiasScale = 1.5f;
|
||||
// Keep receiver bias modest and rely more on caster / normal bias so
|
||||
// contact shadows do not detach too aggressively.
|
||||
float receiverDepthBias = 0.0010f;
|
||||
float normalBiasScale = 2.0f;
|
||||
float shadowStrength = 0.85f;
|
||||
};
|
||||
|
||||
struct DirectionalShadowCasterBiasSettings {
|
||||
float depthBiasFactor = 1.0f;
|
||||
int32_t depthBiasUnits = 2;
|
||||
// Single-map directional shadows need a stronger raster bias baseline than
|
||||
// the previous placeholder values to keep acne under control.
|
||||
float depthBiasFactor = 2.5f;
|
||||
int32_t depthBiasUnits = 4;
|
||||
};
|
||||
|
||||
} // namespace Rendering
|
||||
|
||||
@@ -1340,7 +1340,7 @@ TEST(CameraRenderer_Test, AutoAllocatesDirectionalShadowSurfaceFromShadowPlan) {
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowViewProjection.m[0][3], 11.0f);
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowViewProjection.m[1][3], 12.0f);
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowViewProjection.m[2][3], 13.0f);
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowSampling.settings.receiverDepthBias, 0.0015f);
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowSampling.settings.receiverDepthBias, 0.0010f);
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowMapMetrics.inverseMapSize.x, 1.0f / 256.0f);
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowMapMetrics.inverseMapSize.y, 1.0f / 128.0f);
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowSampling.settings.shadowStrength, 0.85f);
|
||||
|
||||
@@ -285,9 +285,9 @@ TEST(SceneRenderRequestPlanner_Test, SanitizesInvalidDirectionalShadowPlanningSe
|
||||
EXPECT_FLOAT_EQ(settings.minDepthRange, 20.0f);
|
||||
EXPECT_FLOAT_EQ(settings.boundsPadding, 1.0f);
|
||||
EXPECT_FLOAT_EQ(settings.minDepthPadding, 2.0f);
|
||||
EXPECT_FLOAT_EQ(settings.sampling.receiverDepthBias, 0.0015f);
|
||||
EXPECT_FLOAT_EQ(settings.sampling.normalBiasScale, 1.5f);
|
||||
EXPECT_FLOAT_EQ(settings.sampling.receiverDepthBias, 0.0010f);
|
||||
EXPECT_FLOAT_EQ(settings.sampling.normalBiasScale, 2.0f);
|
||||
EXPECT_FLOAT_EQ(settings.sampling.shadowStrength, 1.0f);
|
||||
EXPECT_FLOAT_EQ(settings.casterBias.depthBiasFactor, 1.0f);
|
||||
EXPECT_EQ(settings.casterBias.depthBiasUnits, 2);
|
||||
EXPECT_FLOAT_EQ(settings.casterBias.depthBiasFactor, 2.5f);
|
||||
EXPECT_EQ(settings.casterBias.depthBiasUnits, 4);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user