Skip to content

@orillusion/core


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 ​

RenderGraphPass.constructor

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 ​

RenderGraphPass.enabled


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 ​

RenderGraphPass.layerMask


reads ​

readonly reads: readonly string[]

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 ​

RenderGraphPass.reads


writes ​

readonly writes: readonly string[]

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 ​

RenderGraphPass.writes


creates ​

readonly creates: readonly string[]

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 ​

RenderGraphPass.creates


dependencies? ​

optional dependencies?: 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 ​

RenderGraphPass.dependencies


name ​

readonly name: "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 ​

RenderGraphPass.name


materialPasses ​

readonly materialPasses: readonly PassType[]

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 ​

CEvent

Returns ​

void

Inherited from ​

RenderGraphPass.dispatchEvent


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 ​

RenderGraphPass.destroy


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 ​

RenderGraphBuilder

Returns ​

void

Overrides ​

RenderGraphPass.setup


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 ​

RenderGraphPassContext

Returns ​

void

Overrides ​

RenderGraphPass.execute