Class: SceneCapturePass
Defined in: src/gfx/renderJob/graph/passes/SceneCapturePass.ts:66
Renders every scene-registered SceneCaptureCameraComponent into its own render texture so other materials can sample the captured scene. Mirrors, security-camera screens, portals, and picture-in-picture mini-maps all sit on top of this pass.
Ordering
Runs after ShadowPass + PointShadowPass + ReflectionPass (so captures include directional + point shadows and the pre-filtered reflection cube), and before ColorPass (so captured textures are ready when main-pass materials sample them in the same frame). Shadow ordering is pinned by the b.read calls below; the ColorPass ordering is pinned by an explicit b.dependsOn('SceneCapturePass') in ColorPass.setup since this pass writes no graph-pool handle.
Reads
Declares read dependencies on MAIN_SHADOW_MAP and POINT_SHADOW_CUBE_ARRAY so the validator orders this pass after the shadow producers. The capture's lit shaders sample those textures via GlobalBindGroup, the same way the main color pass does.
Writes
Does NOT publish a single graph-pool handle. Each SceneCaptureCameraComponent owns its own RT (lazily allocated through GBufferFrame), and consumer materials bind those RTs directly via the component's SceneCaptureCameraComponent.getCaptureTexture. This matches the use case (one RT per off-screen camera, possibly many cameras) and avoids a name-collision when more than one capture exists.
Mask filtering
Per-component SceneCaptureCameraComponent.captureMask (allowlist) and SceneCaptureCameraComponent.excludeMask (denylist) are tested against each renderer's rendererMask before drawing. The default masks include every renderer.
Extends
Constructors
Constructor
new SceneCapturePass():
SceneCapturePass
Returns
SceneCapturePass
Inherited from
Properties
enabled
enabled:
boolean=true
Defined in: src/gfx/renderJob/graph/RenderGraphPass.ts:332
Runtime kill switch. graph.disablePass(name) flips this. A disabled pass is treated as if it weren't in the graph: it's filtered out before validation + topo sort, and skipped during execute. Disabling a producer whose output is read by another enabled pass makes the next compile() throw UnresolvedResourceError.
Inherited from
layerMask
layerMask:
number=VisibleLayer.All
Defined in: src/gfx/renderJob/graph/RenderGraphPass.ts:347
Which scene layers this pass consumes, as a bitmask. Default VisibleLayer.All reproduces the legacy "draw every collected node" behaviour. Custom passes (or custom RendererJobs wiring built-in passes) override this to restrict the pass to specific composition layers — combined with the active camera's cullingMask at execute time via bitwise AND, then matched against each node's visibleLayer:
(node.visibleLayer & pass.layerMask & camera.cullingMask) !== 0
Use collectLayered from inside execute() to fetch the filtered opaque/transparent lists; it threads layerMask and the camera mask through EntityCollect.getLayerLists.
Inherited from
reads
readonlyreads: readonlystring[]
Defined in: src/gfx/renderJob/graph/RenderGraphPass.ts:353
Names this pass reads. Populated on the first RenderGraph.compile() that processes this pass, from the b.read(...) calls inside its setup(). Empty frozen array before compile.
Inherited from
writes
readonlywrites: readonlystring[]
Defined in: src/gfx/renderJob/graph/RenderGraphPass.ts:358
Names this pass writes (creator + mutator combined). Populated on the first RenderGraph.compile() from the b.write(...) calls inside setup(). Empty frozen array before compile.
Inherited from
creates
readonlycreates: readonlystring[]
Defined in: src/gfx/renderJob/graph/RenderGraphPass.ts:363
Subset of writes for which this pass was the creator (called b.write(name, factory), not b.write(name)). The validator's single-creator rule operates on this set.
Inherited from
dependencies?
optionaldependencies?:ReadonlySet<string>
Defined in: src/gfx/renderJob/graph/RenderGraphPass.ts:377
Explicit ordering dependencies on other pass names, set either from setup() via b.dependsOn(name) or by direct assignment before the next compile. Each entry adds a topo-sort edge <name> → this, independent of any resource edge. Use for side-effect dependencies the graph can't see (indirect buffers, off-screen RTs consumed via materials, etc.).
Beyond the edge, an entry here also positions this pass in the compiled schedule: the effective scheduling key collapses to "just after the latest dep", so a late-added pass with explicit dependencies runs next to its dep instead of trailing at the end of the queue. See topoSort for the full rule.
Inherited from
name
readonlyname:"SceneCapturePass"='SceneCapturePass'
Defined in: src/gfx/renderJob/graph/passes/SceneCapturePass.ts:67
Unique pass identifier. Used as the graph-node key and in error messages — prefer PascalCase ending in Pass (e.g. ShadowPass, ColorPass).
Overrides
materialPasses
readonlymaterialPasses: readonlyPassType[]
Defined in: src/gfx/renderJob/graph/passes/SceneCapturePass.ts:68
Material-side pass types consumed. Optional; defaults to none for pure compute / copy passes.
Overrides
RenderGraphPass.materialPasses
Methods
dispatchEvent()
dispatchEvent(
event):void
Defined in: src/event/CEventDispatcher.ts:24
Dispatch an event to all registered objects with a specific type of listener.
Parameters
event
Returns
void
Inherited from
addEventListener()
addEventListener(
type,callback,thisObject,param?,priority?):number
Defined in: src/event/CEventDispatcher.ts:78
register an event listener to event distancher.
Parameters
type
string | number
{string} event type.
callback
Function
{Function} The callback function that handles events. This function must accept an Event3D object as its unique parameter and cannot return any result. for example: function(evt:Event3D):void.
thisObject
any
{any} Current registration object, it'll call callback function.
param?
any = null
{any} the data binded to registered event, the default value is null.
priority?
number = 0
{number} The priority of callback function execution, with a larger set value having priority to call
Returns
number
Returns register event id
Inherited from
RenderGraphPass.addEventListener
removeEventListener()
removeEventListener(
type,callback,thisObject):void
Defined in: src/event/CEventDispatcher.ts:112
Remove Event Listening
Parameters
type
string | number
{string} event type
callback
Function
{Function} callback function of event register
thisObject
any
{any} The current registered object.
Returns
void
Inherited from
RenderGraphPass.removeEventListener
removeEventListenerAt()
removeEventListenerAt(
id):boolean
Defined in: src/event/CEventDispatcher.ts:132
Remove an event Listening with id
Parameters
id
number
Returns
boolean
Inherited from
RenderGraphPass.removeEventListenerAt
removeAllEventListener()
removeAllEventListener(
eventType?):void
Defined in: src/event/CEventDispatcher.ts:152
Specify a event type to remove all related event listeners eventType event type, set null to remove all event listeners
Parameters
eventType?
string | number
Returns
void
Inherited from
RenderGraphPass.removeAllEventListener
containEventListener()
containEventListener(
type):boolean
Defined in: src/event/CEventDispatcher.ts:184
whether the target presence of a listener with event type.
Parameters
type
string
{string} event type.
Returns
boolean
Returns a boolean.
Inherited from
RenderGraphPass.containEventListener
hasEventListener()
hasEventListener(
type,callback?,thisObject?):boolean
Defined in: src/event/CEventDispatcher.ts:197
whether the target presence of a listener with event type. it associate more registration parameters.
Parameters
type
string | number
{string} event name.
callback?
Function = null
{Function} callback function of event register.
thisObject?
any = null
{any} The registered object.
Returns
boolean
Returns a boolean.
Inherited from
RenderGraphPass.hasEventListener
destroy()
destroy():
void
Defined in: src/gfx/renderJob/graph/RenderGraphPass.ts:397
Optional teardown hook called from graph.destroy() — release orphan Object3Ds / view quads / device resources that the pass owns directly.
Returns
void
Inherited from
setup()
setup(
b):void
Defined in: src/gfx/renderJob/graph/passes/SceneCapturePass.ts:72
Allocate GPU resources, declare graph-level dependencies via b.read / b.write. Called from RenderGraph.compile() — setup is deferred from add() so add() call order doesn't constrain resource-dependency order. Forward references (reads to a resource a later-added pass creates) are resolved through a multi-round retry loop in compile().
Parameters
b
Returns
void
Overrides
execute()
execute(
ctx):void
Defined in: src/gfx/renderJob/graph/passes/SceneCapturePass.ts:84
Execute the pass for one frame. Implementations build command encoders via ctx.view.engine3D.context3D.gpuContext, read inputs via ctx.get('<name>'), and submit GPU work.
Parameters
ctx
Returns
void

