rendering: formalize legacy shader pass fallback
This commit is contained in:
@@ -28,7 +28,18 @@ const Resources::ShaderPass* FindCompatibleSurfacePass(
|
||||
const Resources::Material* material,
|
||||
BuiltinMaterialPass pass,
|
||||
Resources::ShaderBackend backend) {
|
||||
if (material != nullptr && !material->GetShaderPass().Empty()) {
|
||||
const bool shaderHasExplicitBuiltinMetadata = ShaderHasExplicitBuiltinMetadata(shader);
|
||||
|
||||
for (const Resources::ShaderPass& shaderPass : shader.GetPasses()) {
|
||||
if (ShaderPassMatchesBuiltinPass(shaderPass, pass) &&
|
||||
::XCEngine::Rendering::Detail::ShaderPassHasGraphicsVariants(shader, shaderPass.name, backend)) {
|
||||
return &shaderPass;
|
||||
}
|
||||
}
|
||||
|
||||
if (!shaderHasExplicitBuiltinMetadata &&
|
||||
material != nullptr &&
|
||||
!material->GetShaderPass().Empty()) {
|
||||
const Resources::ShaderPass* explicitPass = shader.FindPass(material->GetShaderPass());
|
||||
if (explicitPass != nullptr &&
|
||||
::XCEngine::Rendering::Detail::ShaderPassHasGraphicsVariants(shader, explicitPass->name, backend)) {
|
||||
@@ -36,11 +47,8 @@ const Resources::ShaderPass* FindCompatibleSurfacePass(
|
||||
}
|
||||
}
|
||||
|
||||
for (const Resources::ShaderPass& shaderPass : shader.GetPasses()) {
|
||||
if (ShaderPassMatchesBuiltinPass(shaderPass, pass) &&
|
||||
::XCEngine::Rendering::Detail::ShaderPassHasGraphicsVariants(shader, shaderPass.name, backend)) {
|
||||
return &shaderPass;
|
||||
}
|
||||
if (shaderHasExplicitBuiltinMetadata) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (pass != BuiltinMaterialPass::ForwardLit) {
|
||||
|
||||
Reference in New Issue
Block a user