rendering: thread global shader keywords into builtin variants

This commit is contained in:
2026-04-06 20:30:25 +08:00
parent 0761079b4c
commit c318f34f07
14 changed files with 119 additions and 26 deletions

View File

@@ -45,6 +45,17 @@ std::unique_ptr<RenderPipeline> CreatePipelineFromAsset(
return std::make_unique<Pipelines::BuiltinForwardPipeline>();
}
Resources::ShaderKeywordSet BuildSceneGlobalShaderKeywords(
const RenderSceneData& sceneData) {
Resources::ShaderKeywordSet keywords = {};
if (sceneData.lighting.HasMainDirectionalShadow()) {
keywords.enabledKeywords.PushBack("XC_MAIN_LIGHT_SHADOWS");
}
Resources::NormalizeShaderKeywordSetInPlace(keywords);
return keywords;
}
bool InitializeStandalonePass(
RenderPass* pass,
const RenderContext& context) {
@@ -563,6 +574,7 @@ bool CameraRenderer::BuildSceneDataForRequest(
outSceneData.lighting.mainDirectionalShadow =
BuildDirectionalShadowData(request.directionalShadow, shadowMapView);
}
outSceneData.globalShaderKeywords = BuildSceneGlobalShaderKeywords(outSceneData);
outSceneData.cameraData.clearFlags = request.clearFlags;
outSceneData.environment = BuildEnvironmentData(request);