Split builtin pass contract utilities

This commit is contained in:
2026-04-05 19:46:11 +08:00
parent 3c5529c4bc
commit 3dd8867a17
13 changed files with 651 additions and 620 deletions

View File

@@ -3,6 +3,7 @@
#include "Core/Asset/ResourceManager.h"
#include "Debug/Logger.h"
#include "RHI/RHICommandList.h"
#include "Rendering/BuiltinPassLayoutUtils.h"
#include "Rendering/RenderMaterialResolve.h"
#include "Rendering/Detail/ShaderVariantUtils.h"
#include "Rendering/RenderSceneExtractor.h"

View File

@@ -6,7 +6,7 @@
#include "RHI/RHICommandList.h"
#include "RHI/RHIPipelineLayout.h"
#include "RHI/RHIPipelineState.h"
#include "Rendering/BuiltinPassContract.h"
#include "Rendering/BuiltinPassLayoutUtils.h"
#include "Rendering/Detail/ShaderVariantUtils.h"
#include "Rendering/RenderSceneExtractor.h"
#include "Rendering/RenderSurface.h"

View File

@@ -4,7 +4,7 @@
#include "Debug/Logger.h"
#include "RHI/RHICommandList.h"
#include "RHI/RHIDevice.h"
#include "Rendering/BuiltinPassContract.h"
#include "Rendering/BuiltinPassLayoutUtils.h"
#include "Rendering/Detail/ShaderVariantUtils.h"
#include "Rendering/RenderMaterialResolve.h"
#include "Rendering/RenderMaterialStateUtils.h"
@@ -23,22 +23,6 @@ namespace {
constexpr float kForwardAmbientIntensity = 0.28f;
constexpr float kSpotInnerAngleRatio = 0.8f;
bool TryResolveSurfacePassType(
const Resources::Material* material,
BuiltinMaterialPass& outPass) {
if (MatchesBuiltinPass(material, BuiltinMaterialPass::Unlit)) {
outPass = BuiltinMaterialPass::Unlit;
return true;
}
if (MatchesBuiltinPass(material, BuiltinMaterialPass::ForwardLit)) {
outPass = BuiltinMaterialPass::ForwardLit;
return true;
}
return false;
}
const Resources::ShaderPass* FindCompatibleSurfacePass(
const Resources::Shader& shader,
const Resources::Material* material,
@@ -117,6 +101,22 @@ RHI::GraphicsPipelineDesc CreatePipelineDesc(
} // namespace
bool BuiltinForwardPipeline::TryResolveSurfacePassType(
const Resources::Material* material,
BuiltinMaterialPass& outPass) {
if (MatchesBuiltinPass(material, BuiltinMaterialPass::Unlit)) {
outPass = BuiltinMaterialPass::Unlit;
return true;
}
if (MatchesBuiltinPass(material, BuiltinMaterialPass::ForwardLit)) {
outPass = BuiltinMaterialPass::ForwardLit;
return true;
}
return false;
}
BuiltinForwardPipeline::ResolvedShaderPass BuiltinForwardPipeline::ResolveSurfaceShaderPass(
const Resources::Material* material) const {
ResolvedShaderPass resolved = {};