Split builtin depth-style concrete passes

This commit is contained in:
2026-04-05 19:27:19 +08:00
parent 1de8091b77
commit 8904c3f5c6
4 changed files with 57 additions and 37 deletions

View File

@@ -456,6 +456,8 @@ add_library(XCEngine STATIC
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h ${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h
${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/CameraRenderer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/CameraRenderer.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinDepthStylePassBase.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinDepthOnlyPass.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinShadowCasterPass.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinObjectIdPass.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinObjectIdPass.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinInfiniteGridPass.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinInfiniteGridPass.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinObjectIdOutlinePass.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Rendering/Passes/BuiltinObjectIdOutlinePass.cpp

View File

@@ -0,0 +1,25 @@
#include "Rendering/Passes/BuiltinDepthOnlyPass.h"
#include "Resources/BuiltinResources.h"
namespace XCEngine {
namespace Rendering {
namespace Passes {
BuiltinDepthOnlyPass::BuiltinDepthOnlyPass()
: BuiltinDepthStylePassBase(
BuiltinMaterialPass::DepthOnly,
Resources::GetBuiltinDepthOnlyShaderPath()) {
}
RHI::InputLayoutDesc BuiltinDepthOnlyPass::BuildInputLayout() {
return BuildCommonInputLayout();
}
const char* BuiltinDepthOnlyPass::GetName() const {
return "BuiltinDepthOnlyPass";
}
} // namespace Passes
} // namespace Rendering
} // namespace XCEngine

View File

@@ -1,16 +1,11 @@
#include "Rendering/Passes/BuiltinDepthStylePassBase.h" #include "Rendering/Passes/BuiltinDepthStylePassBase.h"
#include "Rendering/Passes/BuiltinDepthOnlyPass.h"
#include "Rendering/Passes/BuiltinShadowCasterPass.h"
#include "Components/GameObject.h" #include "Components/GameObject.h"
#include "Components/MeshRendererComponent.h"
#include "Core/Asset/ResourceManager.h" #include "Core/Asset/ResourceManager.h"
#include "Debug/Logger.h" #include "Debug/Logger.h"
#include "RHI/RHICommandList.h" #include "RHI/RHICommandList.h"
#include "Rendering/Detail/ShaderVariantUtils.h" #include "Rendering/Detail/ShaderVariantUtils.h"
#include "Rendering/RenderSceneExtractor.h" #include "Rendering/RenderSceneExtractor.h"
#include "Rendering/RenderSurface.h" #include "Rendering/RenderSurface.h"
#include "Resources/BuiltinResources.h"
#include "Resources/Material/Material.h" #include "Resources/Material/Material.h"
#include "Resources/Mesh/Mesh.h" #include "Resources/Mesh/Mesh.h"
@@ -716,38 +711,6 @@ bool BuiltinDepthStylePassBase::DrawVisibleItem(
return true; return true;
} }
BuiltinDepthOnlyPass::BuiltinDepthOnlyPass()
: BuiltinDepthStylePassBase(
BuiltinMaterialPass::DepthOnly,
Resources::GetBuiltinDepthOnlyShaderPath()) {
}
RHI::InputLayoutDesc BuiltinDepthOnlyPass::BuildInputLayout() {
return BuildCommonInputLayout();
}
const char* BuiltinDepthOnlyPass::GetName() const {
return "BuiltinDepthOnlyPass";
}
BuiltinShadowCasterPass::BuiltinShadowCasterPass()
: BuiltinDepthStylePassBase(
BuiltinMaterialPass::ShadowCaster,
Resources::GetBuiltinShadowCasterShaderPath()) {
}
RHI::InputLayoutDesc BuiltinShadowCasterPass::BuildInputLayout() {
return BuildCommonInputLayout();
}
const char* BuiltinShadowCasterPass::GetName() const {
return "BuiltinShadowCasterPass";
}
bool BuiltinShadowCasterPass::ShouldRenderVisibleItem(const VisibleRenderItem& visibleItem) const {
return visibleItem.meshRenderer == nullptr || visibleItem.meshRenderer->GetCastShadows();
}
} // namespace Passes } // namespace Passes
} // namespace Rendering } // namespace Rendering
} // namespace XCEngine } // namespace XCEngine

View File

@@ -0,0 +1,30 @@
#include "Rendering/Passes/BuiltinShadowCasterPass.h"
#include "Components/MeshRendererComponent.h"
#include "Resources/BuiltinResources.h"
namespace XCEngine {
namespace Rendering {
namespace Passes {
BuiltinShadowCasterPass::BuiltinShadowCasterPass()
: BuiltinDepthStylePassBase(
BuiltinMaterialPass::ShadowCaster,
Resources::GetBuiltinShadowCasterShaderPath()) {
}
RHI::InputLayoutDesc BuiltinShadowCasterPass::BuildInputLayout() {
return BuildCommonInputLayout();
}
const char* BuiltinShadowCasterPass::GetName() const {
return "BuiltinShadowCasterPass";
}
bool BuiltinShadowCasterPass::ShouldRenderVisibleItem(const VisibleRenderItem& visibleItem) const {
return visibleItem.meshRenderer == nullptr || visibleItem.meshRenderer->GetCastShadows();
}
} // namespace Passes
} // namespace Rendering
} // namespace XCEngine