rendering: thread global shader keywords into builtin variants
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include <XCEngine/Rendering/RenderSurface.h>
|
||||
#include <XCEngine/Rendering/Execution/SceneRenderer.h>
|
||||
#include <XCEngine/Resources/Material/Material.h>
|
||||
#include <XCEngine/Resources/Shader/ShaderKeywordTypes.h>
|
||||
#include <XCEngine/Scene/Scene.h>
|
||||
|
||||
#include <memory>
|
||||
@@ -44,6 +45,7 @@ struct MockPipelineState {
|
||||
XCEngine::RHI::RHIResourceView* lastShadowMap = nullptr;
|
||||
XCEngine::Math::Matrix4x4 lastShadowViewProjection = XCEngine::Math::Matrix4x4::Identity();
|
||||
XCEngine::Math::Vector4 lastShadowParams = XCEngine::Math::Vector4::Zero();
|
||||
bool lastHasMainDirectionalShadowKeyword = false;
|
||||
RenderEnvironmentMode lastEnvironmentMode = RenderEnvironmentMode::None;
|
||||
bool lastHasSkybox = false;
|
||||
const XCEngine::Resources::Material* lastSkyboxMaterial = nullptr;
|
||||
@@ -320,6 +322,10 @@ public:
|
||||
m_state->lastShadowMap = sceneData.lighting.mainDirectionalShadow.shadowMap;
|
||||
m_state->lastShadowViewProjection = sceneData.lighting.mainDirectionalShadow.viewProjection;
|
||||
m_state->lastShadowParams = sceneData.lighting.mainDirectionalShadow.shadowParams;
|
||||
m_state->lastHasMainDirectionalShadowKeyword =
|
||||
XCEngine::Resources::ShaderKeywordSetContains(
|
||||
sceneData.globalShaderKeywords,
|
||||
"XC_MAIN_LIGHT_SHADOWS");
|
||||
m_state->lastEnvironmentMode = sceneData.environment.mode;
|
||||
m_state->lastHasSkybox = sceneData.environment.HasSkybox();
|
||||
m_state->lastSkyboxMaterial = sceneData.environment.materialSkybox.material;
|
||||
@@ -1281,6 +1287,7 @@ TEST(CameraRenderer_Test, AutoAllocatesDirectionalShadowSurfaceFromShadowPlan) {
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.y, 1.0f / 256.0f);
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.z, 1.0f / 128.0f);
|
||||
EXPECT_FLOAT_EQ(pipelineState->lastShadowParams.w, 0.85f);
|
||||
EXPECT_TRUE(pipelineState->lastHasMainDirectionalShadowKeyword);
|
||||
}
|
||||
|
||||
EXPECT_EQ(allocationState->shutdownDepthViewCalls, 1);
|
||||
|
||||
Reference in New Issue
Block a user