rendering: formalize legacy material shader pass hints

This commit is contained in:
2026-04-07 09:49:21 +08:00
parent 7f4b647394
commit 558b6438cf
10 changed files with 216 additions and 48 deletions

View File

@@ -53,8 +53,8 @@ const Resources::ShaderPass* FindCompatibleSurfacePass(
if (!shaderHasExplicitBuiltinMetadata &&
material != nullptr &&
!material->GetShaderPass().Empty()) {
const Resources::ShaderPass* explicitPass = shader.FindPass(material->GetShaderPass());
material->HasLegacyShaderPassHint()) {
const Resources::ShaderPass* explicitPass = shader.FindPass(material->GetLegacyShaderPassHint());
if (explicitPass != nullptr &&
::XCEngine::Rendering::Detail::ShaderPassHasGraphicsVariants(
shader,
@@ -130,10 +130,18 @@ RHI::GraphicsPipelineDesc CreatePipelineDesc(
const Resources::ShaderStageVariant* fragmentVariant =
shader.FindVariant(passName, Resources::ShaderType::Fragment, backend, keywordSet);
if (vertexVariant != nullptr) {
::XCEngine::Rendering::Detail::ApplyShaderStageVariant(*vertexVariant, pipelineDesc.vertexShader);
::XCEngine::Rendering::Detail::ApplyShaderStageVariant(
shaderPass,
backend,
*vertexVariant,
pipelineDesc.vertexShader);
}
if (fragmentVariant != nullptr) {
::XCEngine::Rendering::Detail::ApplyShaderStageVariant(*fragmentVariant, pipelineDesc.fragmentShader);
::XCEngine::Rendering::Detail::ApplyShaderStageVariant(
shaderPass,
backend,
*fragmentVariant,
pipelineDesc.fragmentShader);
}
return pipelineDesc;