Skip to content

@orillusion/core


Class: InstanceDrawComponent ​

Defined in: src/components/renderer/InstanceDrawComponent.ts:19

Batches child MeshRenderers that share the same geometry and materials into GPU instanced draw calls. On start it groups the renderers by a geometry+material key, uploads their world-matrix indices into a storage buffer, and issues one instanced draw per group.

Constructors ​

Constructor ​

new InstanceDrawComponent(): InstanceDrawComponent

Defined in: src/components/renderer/InstanceDrawComponent.ts:25

Returns ​

InstanceDrawComponent

Overrides ​

RenderNode.constructor

Properties ​

object3D ​

object3D: Object3D = null

Defined in: src/components/ComponentBase.ts:29

owner object3D

Inherited from ​

RenderNode.object3D


isDestroyed ​

isDestroyed: boolean = false

Defined in: src/components/ComponentBase.ts:77

Inherited from ​

RenderNode.isDestroyed


instanceCount ​

instanceCount: number = 0

Defined in: src/components/renderer/RenderNode.ts:35

Inherited from ​

RenderNode.instanceCount


lodLevel ​

lodLevel: number = 0

Defined in: src/components/renderer/RenderNode.ts:36

Inherited from ​

RenderNode.lodLevel


alwaysRender ​

alwaysRender: boolean = false

Defined in: src/components/renderer/RenderNode.ts:37

Inherited from ​

RenderNode.alwaysRender


instanceID ​

instanceID: string

Defined in: src/components/renderer/RenderNode.ts:38

Inherited from ​

RenderNode.instanceID


drawType ​

drawType: number = 0

Defined in: src/components/renderer/RenderNode.ts:39

Inherited from ​

RenderNode.drawType


isRenderOrderChange? ​

optional isRenderOrderChange?: boolean

Defined in: src/components/renderer/RenderNode.ts:55

Inherited from ​

RenderNode.isRenderOrderChange


needSortOnCameraZ? ​

optional needSortOnCameraZ?: boolean

Defined in: src/components/renderer/RenderNode.ts:56

Inherited from ​

RenderNode.needSortOnCameraZ


shadowCacheMode ​

shadowCacheMode: "auto" | "static" | "dynamic" = 'auto'

Defined in: src/components/renderer/RenderNode.ts:437

Shadow cache classification.

  • 'auto' (default): renderer is drawn to the shadow map every frame as part of the single-pass render — matches historical behaviour.
  • 'static': renderer is drawn only to the cached static depth layer, rebuilt lazily when the light moves or the scene explicitly marks the static cache dirty. Use for buildings, terrain, prop meshes that don't move.
  • 'dynamic': renderer is drawn every frame on top of the copied-in static layer. Use for characters, physics objects, anything that moves.

Only consulted when engine.setting.shadow.enableStaticCache === true; otherwise all renderers behave as 'auto'.

Inherited from ​

RenderNode.shadowCacheMode

Accessors ​

visibleLayer ​

Get Signature ​

get visibleLayer(): number

Defined in: src/components/ComponentBase.ts:46

Composition-layer membership bitmask. The pass / camera / collector filters via

(component.visibleLayer & pass.layerMask & camera.cullingMask) !== 0

Defaults to VisibleLayer.Default (bit 0) so a fresh subclass is visible to passes whose layerMask is VisibleLayer.All (which includes bit 0). Application code can assign project-specific bits (1..31) to organise the scene into composition layers.

Returns ​

number

Set Signature ​

set visibleLayer(value): void

Defined in: src/components/ComponentBase.ts:50

Parameters ​
value ​

number

Returns ​

void

Inherited from ​

RenderNode.visibleLayer


eventDispatcher ​

Get Signature ​

get eventDispatcher(): CEventDispatcher

Defined in: src/components/ComponentBase.ts:63

Returns ​

CEventDispatcher

Set Signature ​

set eventDispatcher(value): void

Defined in: src/components/ComponentBase.ts:68

Parameters ​
value ​

CEventDispatcher

Returns ​

void

Inherited from ​

RenderNode.eventDispatcher


isStart ​

Get Signature ​

get isStart(): boolean

Defined in: src/components/ComponentBase.ts:79

Returns ​

boolean

Inherited from ​

RenderNode.isStart


transform ​

Get Signature ​

get transform(): Transform

Defined in: src/components/ComponentBase.ts:89

Return the Transform component attached to the Object3D. Null before the component is attached — addComponent assigns object3D only after construction — so constructor-time callers can probe safely via this.transform?..

Returns ​

Transform

Inherited from ​

RenderNode.transform


enable ​

Get Signature ​

get enable(): boolean

Defined in: src/components/ComponentBase.ts:113

Enable/disable components. The enabled components can be updated, while the disabled components cannot be updated.

Returns ​

boolean

Set Signature ​

set enable(value): void

Defined in: src/components/ComponentBase.ts:96

Enable/disable components. The enabled components can be updated, while the disabled components cannot be updated.

Parameters ​
value ​

boolean

Returns ​

void

Inherited from ​

RenderNode.enable


batchMode ​

Get Signature ​

get batchMode(): BatchMode

Defined in: src/components/renderer/RenderNode.ts:118

Returns ​

BatchMode

Set Signature ​

set batchMode(value): void

Defined in: src/components/renderer/RenderNode.ts:122

Parameters ​
value ​

BatchMode

Returns ​

void

Inherited from ​

RenderNode.batchMode


geometry ​

Get Signature ​

get geometry(): GeometryBase

Defined in: src/components/renderer/RenderNode.ts:126

Returns ​

GeometryBase

Set Signature ​

set geometry(value): void

Defined in: src/components/renderer/RenderNode.ts:130

Parameters ​
value ​

GeometryBase

Returns ​

void

Inherited from ​

RenderNode.geometry


rendererMask ​

Get Signature ​

get rendererMask(): number

Defined in: src/components/renderer/RenderNode.ts:156

Returns ​

number

Set Signature ​

set rendererMask(value): void

Defined in: src/components/renderer/RenderNode.ts:160

Parameters ​
value ​

number

Returns ​

void

Inherited from ​

RenderNode.rendererMask


renderOrder ​

Get Signature ​

get renderOrder(): number

Defined in: src/components/renderer/RenderNode.ts:164

Returns ​

number

Set Signature ​

set renderOrder(value): void

Defined in: src/components/renderer/RenderNode.ts:168

Parameters ​
value ​

number

Returns ​

void

Inherited from ​

RenderNode.renderOrder


materials ​

Get Signature ​

get materials(): Material[]

Defined in: src/components/renderer/RenderNode.ts:177

Returns ​

Material[]

Set Signature ​

set materials(value): void

Defined in: src/components/renderer/RenderNode.ts:181

Parameters ​
value ​

Material[]

Returns ​

void

Inherited from ​

RenderNode.materials


castShadow ​

Get Signature ​

get castShadow(): boolean

Defined in: src/components/renderer/RenderNode.ts:413

Returns ​

boolean

Set Signature ​

set castShadow(value): void

Defined in: src/components/renderer/RenderNode.ts:417

Parameters ​
value ​

boolean

Returns ​

void

Inherited from ​

RenderNode.castShadow


castGI ​

Get Signature ​

get castGI(): boolean

Defined in: src/components/renderer/RenderNode.ts:440

Returns ​

boolean

Set Signature ​

set castGI(value): void

Defined in: src/components/renderer/RenderNode.ts:444

Parameters ​
value ​

boolean

Returns ​

void

Inherited from ​

RenderNode.castGI


castReflection ​

Get Signature ​

get castReflection(): boolean

Defined in: src/components/renderer/RenderNode.ts:448

Returns ​

boolean

Set Signature ​

set castReflection(value): void

Defined in: src/components/renderer/RenderNode.ts:452

Parameters ​
value ​

boolean

Returns ​

void

Inherited from ​

RenderNode.castReflection

Methods ​

stop() ​

stop(): void

Defined in: src/components/ComponentBase.ts:163

Returns ​

void

Inherited from ​

RenderNode.stop


onUpdate()? ​

optional onUpdate(view?): any

Defined in: src/components/ComponentBase.ts:166

Parameters ​

view? ​

View3D

Returns ​

any

Inherited from ​

RenderNode.onUpdate


onLateUpdate()? ​

optional onLateUpdate(view?): any

Defined in: src/components/ComponentBase.ts:167

Parameters ​

view? ​

View3D

Returns ​

any

Inherited from ​

RenderNode.onLateUpdate


onBeforeUpdate()? ​

optional onBeforeUpdate(view?): any

Defined in: src/components/ComponentBase.ts:168

Parameters ​

view? ​

View3D

Returns ​

any

Inherited from ​

RenderNode.onBeforeUpdate


onCompute()? ​

optional onCompute(view?, command?): any

Defined in: src/components/ComponentBase.ts:169

Parameters ​

view? ​

View3D

command? ​

GPUCommandEncoder

Returns ​

any

Inherited from ​

RenderNode.onCompute


onGraphic()? ​

optional onGraphic(view?): any

Defined in: src/components/ComponentBase.ts:170

Parameters ​

view? ​

View3D

Returns ​

any

Inherited from ​

RenderNode.onGraphic


onParentChange()? ​

optional onParentChange(lastParent?, currentParent?): any

Defined in: src/components/ComponentBase.ts:171

Parameters ​

lastParent? ​

Object3D

currentParent? ​

Object3D

Returns ​

any

Inherited from ​

RenderNode.onParentChange


onAddChild()? ​

optional onAddChild(child): any

Defined in: src/components/ComponentBase.ts:172

Parameters ​

child ​

Object3D

Returns ​

any

Inherited from ​

RenderNode.onAddChild


onRemoveChild()? ​

optional onRemoveChild(child): any

Defined in: src/components/ComponentBase.ts:173

Parameters ​

child ​

Object3D

Returns ​

any

Inherited from ​

RenderNode.onRemoveChild


cloneTo() ​

cloneTo(obj): void

Defined in: src/components/ComponentBase.ts:180

clone component data to target object3D

Parameters ​

obj ​

Object3D

target object3D

Returns ​

void

Inherited from ​

RenderNode.cloneTo


init() ​

init(param?): void

Defined in: src/components/renderer/InstanceDrawComponent.ts:30

Initialize the internal grouping maps.

Parameters ​

param? ​

any

Returns ​

void

Overrides ​

RenderNode.init


start() ​

start(): void

Defined in: src/components/renderer/InstanceDrawComponent.ts:41

Collect child mesh renderers, group them by geometry+material key, disable their individual rendering, and upload per-instance matrix index buffers.

Returns ​

void

Overrides ​

RenderNode.start


reset() ​

reset(): void

Defined in: src/components/renderer/InstanceDrawComponent.ts:80

Clear the current grouping and rebuild it from the child renderers.

Returns ​

void


nodeUpdate() ​

nodeUpdate(view, passType, renderPassState, clusterLightingBuffer?): void

Defined in: src/components/renderer/InstanceDrawComponent.ts:92

Per-pass update: enables the USE_INSTANCEDRAW shader define and binds the per-group instance matrix buffer for each material pass.

Parameters ​

view ​

View3D

passType ​

PassType

renderPassState ​

RendererPassState

clusterLightingBuffer? ​

ClusterLightingBuffer

Returns ​

void

Overrides ​

RenderNode.nodeUpdate


renderPass2() ​

renderPass2(view, passType, rendererPassState, clusterLightingBuffer, encoder, useBundle?): void

Defined in: src/components/renderer/InstanceDrawComponent.ts:124

Encoder-direct instanced draw for the modern frame-graph pipeline.

drawNodesEncoder (the main ColorPass draw path) calls renderPass2, not the legacy renderPass. The base RenderNode.renderPass2 early-returns on !_geometry, and this component owns no geometry of its own — so without this override the whole group is invisible (its child MeshRenderers were already disabled in start()). Here we issue one instanced draw per geometry+material group using the group's representative node, mirroring the legacy renderItem logic but writing straight to the pass encoder.

Parameters ​

view ​

View3D

passType ​

PassType

rendererPassState ​

RendererPassState

clusterLightingBuffer ​

ClusterLightingBuffer

encoder ​

GPURenderPassEncoder

useBundle? ​

boolean = false

Returns ​

void

Overrides ​

RenderNode.renderPass2


renderPass() ​

renderPass(view, passType, renderContext): void

Defined in: src/components/renderer/InstanceDrawComponent.ts:166

Issue one instanced draw per group, with instance count = group size.

Parameters ​

view ​

View3D

passType ​

PassType

renderContext ​

RenderContext

Returns ​

void

Overrides ​

RenderNode.renderPass


renderItem() ​

renderItem(view, passType, renderNode, renderContext): void

Defined in: src/components/renderer/InstanceDrawComponent.ts:175

Bind geometry/pipeline and emit the indexed (optionally instanced) draw for a render node.

Parameters ​

view ​

View3D

passType ​

PassType

renderNode ​

RenderNode

renderContext ​

RenderContext

Returns ​

void


beforeDestroy() ​

beforeDestroy(force?): void

Defined in: src/components/renderer/InstanceDrawComponent.ts:216

Release the grouping maps and unregister from pending-start collection.

Parameters ​

force? ​

boolean

Returns ​

void

Overrides ​

RenderNode.beforeDestroy


attachSceneOctree() ​

attachSceneOctree(octree): void

Defined in: src/components/renderer/RenderNode.ts:87

Parameters ​

octree ​

Octree

Returns ​

void

Inherited from ​

RenderNode.attachSceneOctree


detachSceneOctree() ​

detachSceneOctree(): void

Defined in: src/components/renderer/RenderNode.ts:92

Returns ​

void

Inherited from ​

RenderNode.detachSceneOctree


copyComponent() ​

copyComponent(from): this

Defined in: src/components/renderer/RenderNode.ts:104

Parameters ​

from ​

this

Returns ​

this

Inherited from ​

RenderNode.copyComponent


addMask() ​

addMask(mask): void

Defined in: src/components/renderer/RenderNode.ts:144

Parameters ​

mask ​

RendererMask

Returns ​

void

Inherited from ​

RenderNode.addMask


removeMask() ​

removeMask(mask): void

Defined in: src/components/renderer/RenderNode.ts:148

Parameters ​

mask ​

RendererMask

Returns ​

void

Inherited from ​

RenderNode.removeMask


hasMask() ​

hasMask(mask): boolean

Defined in: src/components/renderer/RenderNode.ts:152

Parameters ​

mask ​

RendererMask

Returns ​

boolean

Inherited from ​

RenderNode.hasMask


addRendererMask() ​

addRendererMask(tag): void

Defined in: src/components/renderer/RenderNode.ts:232

Parameters ​

tag ​

RendererMask

Returns ​

void

Inherited from ​

RenderNode.addRendererMask


removeRendererMask() ​

removeRendererMask(tag): void

Defined in: src/components/renderer/RenderNode.ts:236

Parameters ​

tag ​

RendererMask

Returns ​

void

Inherited from ​

RenderNode.removeRendererMask


onEnable() ​

onEnable(): void

Defined in: src/components/renderer/RenderNode.ts:240

Returns ​

void

Inherited from ​

RenderNode.onEnable


onDisable() ​

onDisable(): void

Defined in: src/components/renderer/RenderNode.ts:250

Returns ​

void

Inherited from ​

RenderNode.onDisable


refreshRenderClassification() ​

refreshRenderClassification(): void

Defined in: src/components/renderer/RenderNode.ts:270

Recompute renderOrder from current pass states and re-bucket this renderer in EntityCollect (opaque vs transparent map).

Called when a material's alphaMode flips at runtime — the pass.renderOrder changes (3000 ↔ 0), but EntityCollect classifies once at addRenderNode time. Without this nudge the renderer stays in its old list and gets drawn through the wrong pipeline (e.g. WBOIT continues drawing a HASH-toggled material).

Materials hop into this via Reference.getReference(material) to find every renderer holding them; sample code can also call it directly after manual state changes.

Returns ​

void

Inherited from ​

RenderNode.refreshRenderClassification


selfCloneMaterials() ​

selfCloneMaterials(key): this

Defined in: src/components/renderer/RenderNode.ts:295

Parameters ​

key ​

string

Returns ​

this

Inherited from ​

RenderNode.selfCloneMaterials


recordRenderPass2() ​

recordRenderPass2(view, passType, rendererPassState, clusterLightingBuffer, encoder, useBundle?): void

Defined in: src/components/renderer/RenderNode.ts:586

Parameters ​

view ​

View3D

passType ​

PassType

rendererPassState ​

RendererPassState

clusterLightingBuffer ​

ClusterLightingBuffer

encoder ​

GPURenderPassEncoder

useBundle? ​

boolean = false

Returns ​

void

Inherited from ​

RenderNode.recordRenderPass2


preInit() ​

preInit(_rendererType): boolean

Defined in: src/components/renderer/RenderNode.ts:624

Parameters ​

_rendererType ​

PassType

Returns ​

boolean

Inherited from ​

RenderNode.preInit


destroy() ​

destroy(force?): void

Defined in: src/components/renderer/RenderNode.ts:762

release this component

Parameters ​

force? ​

boolean

Returns ​

void

Inherited from ​

RenderNode.destroy