Split builtin forward scene into opaque and transparent passes

This commit is contained in:
2026-04-05 23:00:33 +08:00
parent 58f97c416b
commit be2013f3c4
3 changed files with 111 additions and 25 deletions

View File

@@ -38,6 +38,7 @@ class RenderSurface;
namespace Pipelines {
namespace Detail {
class BuiltinForwardOpaquePass;
class BuiltinForwardTransparentPass;
} // namespace Detail
class BuiltinForwardPipeline : public RenderPipeline {
@@ -56,6 +57,7 @@ public:
private:
friend class Detail::BuiltinForwardOpaquePass;
friend class Detail::BuiltinForwardTransparentPass;
struct OwnedDescriptorSet {
RHI::RHIDescriptorPool* pool = nullptr;
@@ -233,7 +235,14 @@ private:
RHI::RHIResourceView* ResolveTextureView(const VisibleRenderItem& visibleItem);
static LightingConstants BuildLightingConstants(const RenderLightingData& lightingData);
static AdditionalLightConstants BuildAdditionalLightConstants(const RenderAdditionalLightData& lightData);
bool BeginForwardScenePass(const RenderPassContext& context);
void EndForwardScenePass(const RenderPassContext& context);
bool ExecuteForwardOpaquePass(const RenderPassContext& context);
bool ExecuteForwardTransparentPass(const RenderPassContext& context);
bool DrawVisibleItems(
const RenderContext& context,
const RenderSceneData& sceneData,
bool drawTransparentItems);
bool DrawVisibleItem(
const RenderContext& context,
const RenderSceneData& sceneData,