Skip to content

@orillusion/core


Class: DecalComponent

Defined in: src/components/DecalComponent.ts:44

Projected-decal volume component.

Attach to an Object3D whose localScale = (footprintX, depth, footprintZ) spans the volume that the decal projects through. The decal pass uses the host transform's world matrix as the volume's model matrix, then stencil-marks pixels of the opaque scene that fall inside that volume and composites the assigned texture into _ColorBuffer.

Pipeline integration: enable via Engine3D.setting.render.decals = true. When enabled, ForwardRendererJob inserts a DecalShadowVolumePass between the opaque/transmission passes and the transparent pass — decals draw on top of opaque terrain.

Occlusion is a composition concern, not a decal concern: if specific meshes (e.g. tall buildings standing in a decal footprint) should occlude the projection, the application controls that through the RenderGraph — exclude those meshes from ColorPass.layerMask and draw them in a user-defined pass after DecalShadowVolumePass. See samples/render/Sample_DecalShadowVolume.ts for the pattern.

Usage:

const obj = new Object3D();
obj.localPosition = ...;                          // volume center
obj.localScale = new Vector3(w, depth, w);        // xz = footprint, y = extrusion
DecalComponent.alignTopToward(obj, surfaceNormal); // local +Y → surface normal
obj.addComponent(DecalComponent, { texture, tint });
scene.addChild(obj);

Extends

Constructors

Constructor

new DecalComponent(): DecalComponent

Returns

DecalComponent

Inherited from

ComponentBase.constructor

Properties

object3D

object3D: Object3D = null

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

owner object3D

Inherited from

ComponentBase.object3D


isDestroyed

isDestroyed: boolean = false

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

Inherited from

ComponentBase.isDestroyed


texture

texture: Texture = null

Defined in: src/components/DecalComponent.ts:51

Decal texture sampled in the composite pass. Any engine Texture works — load images with Engine3D.res.loadTexture(url, …, 'srgb') for a pooled BitmapTexture2D, or feed a Canvas2D source via bitmapTexture.source = canvas. Swapping at runtime is allowed — the pass rebuilds the texture view on the next frame.


tint

tint: Color

Defined in: src/components/DecalComponent.ts:54

Tint multiplier (RGB) and alpha multiplier (A) applied in the FS.


maxAngleDeg

maxAngleDeg: number = 90

Defined in: src/components/DecalComponent.ts:61

Maximum angle (degrees) between the volume's local +Y and the receiving surface's normal for the decal to project onto it. 90 (the default) disables the filter entirely so the decal wraps every face it touches. Smaller values restrict the decal to faces roughly aligned with decal-up — closer to a rigid "stamp".

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

ComponentBase.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

ComponentBase.eventDispatcher


isStart

Get Signature

get isStart(): boolean

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

Returns

boolean

Inherited from

ComponentBase.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

ComponentBase.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

ComponentBase.enable

Methods

alignTopToward()

static alignTopToward(obj, normal): void

Defined in: src/components/DecalComponent.ts:65

Orient obj's local +Y to point along normal (world space). Convenience helper for placing a decal on a curved surface.

Parameters

obj

Object3D

normal

Vector3

Returns

void


start()

start(): void

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

Returns

void

Inherited from

ComponentBase.start


stop()

stop(): void

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

Returns

void

Inherited from

ComponentBase.stop


onEnable()?

optional onEnable(view?): any

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

Parameters

view?

View3D

Returns

any

Inherited from

ComponentBase.onEnable


onDisable()?

optional onDisable(view?): any

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

Parameters

view?

View3D

Returns

any

Inherited from

ComponentBase.onDisable


onUpdate()?

optional onUpdate(view?): any

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

Parameters

view?

View3D

Returns

any

Inherited from

ComponentBase.onUpdate


onLateUpdate()?

optional onLateUpdate(view?): any

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

Parameters

view?

View3D

Returns

any

Inherited from

ComponentBase.onLateUpdate


onBeforeUpdate()?

optional onBeforeUpdate(view?): any

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

Parameters

view?

View3D

Returns

any

Inherited from

ComponentBase.onBeforeUpdate


onCompute()?

optional onCompute(view?, command?): any

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

Parameters

view?

View3D

command?

GPUCommandEncoder

Returns

any

Inherited from

ComponentBase.onCompute


onGraphic()?

optional onGraphic(view?): any

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

Parameters

view?

View3D

Returns

any

Inherited from

ComponentBase.onGraphic


onParentChange()?

optional onParentChange(lastParent?, currentParent?): any

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

Parameters

lastParent?

Object3D

currentParent?

Object3D

Returns

any

Inherited from

ComponentBase.onParentChange


onAddChild()?

optional onAddChild(child): any

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

Parameters

child

Object3D

Returns

any

Inherited from

ComponentBase.onAddChild


onRemoveChild()?

optional onRemoveChild(child): any

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

Parameters

child

Object3D

Returns

any

Inherited from

ComponentBase.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

ComponentBase.cloneTo


copyComponent()

copyComponent(from): this

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

Parameters

from

this

Returns

this

Inherited from

ComponentBase.copyComponent


beforeDestroy()

beforeDestroy(force?): void

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

before release this component, object refrences are not be set null now.

Parameters

force?

boolean

Returns

void

Inherited from

ComponentBase.beforeDestroy


destroy()

destroy(force?): void

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

release this component

Parameters

force?

boolean

Returns

void

Inherited from

ComponentBase.destroy


init()

init(param?): void

Defined in: src/components/DecalComponent.ts:72

Parameters

param?
texture?

Texture

tint?

Color

maxAngleDeg?

number

Returns

void

Overrides

ComponentBase.init