Skip to content

Commit ca0e31b

Browse files
committed
fix(rendering): add planar shadow rendering support for new render pipeline
The new render pipeline ForwardPass incorrectly used TRANSPARENT_OBJECT and RENDER_TRANSPARENT for the planar shadow queue, causing shadow casters to never match. scene-culling.ts also filtered out PLANAR_SHADOW via kDrawMask. This change: - Adds PLANAR_SHADOW to kDrawMask in scene-culling.ts - Fixes planar shadow queue in forward-pass.ts to use RENDER_OPAQUE with OPAQUE_OBJECT/CUTOUT_OBJECT - Adds PLANAR_SHADOW and SHADOW_CASTER flags for correct model filtering Fixes: #19158
1 parent 411f98d commit ca0e31b

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

cocos/rendering/custom/scene-culling.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ export class SceneCulling {
300300
enableLightCulling = true;
301301

302302
readonly kFilterMask = SceneFlags.SHADOW_CASTER | SceneFlags.REFLECTION_PROBE;
303-
readonly kDrawMask = SceneFlags.OPAQUE | SceneFlags.MASK | SceneFlags.BLEND;
303+
readonly kDrawMask = SceneFlags.OPAQUE | SceneFlags.MASK | SceneFlags.BLEND | SceneFlags.PLANAR_SHADOW;
304304
readonly kAllMask = this.kFilterMask | this.kDrawMask;
305305

306306
resetPool (): void {

cocos/rendering/post-process/passes/forward-pass.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ export class ForwardPass extends BasePass {
8181
passContext.addSceneLights(forwardAddQueue, camera);
8282
const shadowInfo = ppl.pipelineSceneData.shadows;
8383
if (camera.scene?.mainLight && shadowInfo.enabled && shadowInfo.type === ShadowType.Planar) {
84-
pass.addQueue(QueueHint.RENDER_TRANSPARENT, 'planar-shadow')
84+
pass.addQueue(QueueHint.RENDER_OPAQUE, 'planar-shadow')
8585
.addSceneOfCamera(
8686
camera,
8787
new LightInfo(camera.scene?.mainLight),
88-
SceneFlags.TRANSPARENT_OBJECT | SceneFlags.SHADOW_CASTER
89-
| SceneFlags.GEOMETRY,
88+
SceneFlags.SHADOW_CASTER | SceneFlags.PLANAR_SHADOW
89+
| SceneFlags.OPAQUE_OBJECT | SceneFlags.CUTOUT_OBJECT,
9090
);
9191
}
9292
passContext.forwardPass = this;

0 commit comments

Comments
 (0)