Skip to content

@tmrw-realityos/charm


@tmrw-realityos/charm / WebGPUMeshPicker

Class: WebGPUMeshPicker

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:36

Class for picking a mesh on click events. Instantiated by Renderer.

Example

Setup

typescript
const node = await renderer.pickScene( x, y );

Constructors

Constructor

new WebGPUMeshPicker(renderContext, canvasElement?, skipBinding?): WebGPUMeshPicker

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:69

Parameters

renderContext

WebGPURenderContext

canvasElement?

HTMLCanvasElement

skipBinding?

boolean = false

Returns

WebGPUMeshPicker

Properties

lastViewRenderData?

optional lastViewRenderData: iViewRenderData

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:59


materialDoubleSided

materialDoubleSided: Material

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:62


materialSingleSided

materialSingleSided: Material

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:61


ready

ready: boolean = true

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:55


renderContext

renderContext: WebGPURenderContext

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:38


shaderBuilder

shaderBuilder: MeshIDShaderBuilder

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:40

Methods

addToGraph()

addToGraph(framegraph, viewRenderData): void

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:370

Parameters

framegraph

FrameGraph

viewRenderData

iViewRenderData

Returns

void


bindEvents()

bindEvents(target): void

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:111

Parameters

target

HTMLCanvasElement

Returns

void


computeValidRenderables()

computeValidRenderables(renderables, layers, rayOrigin, rayDir): RenderableDescriptor[]

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:277

checks which renderables would intersect the ray

Parameters

renderables

RenderableDescriptor[]

layers

number

rayOrigin

vec3

rayDir

vec3

Returns

RenderableDescriptor[]


decodeRenderableFromColor()

decodeRenderableFromColor(info, colorBytes, depthBytes, width, height): undefined | RenderableDescriptor

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:317

Parameters

info

iPickingRequestInfo

colorBytes

ArrayBuffer

depthBytes

ArrayBuffer

width

number

height

number

Returns

undefined | RenderableDescriptor


destroy()

destroy(): void

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:512

Remove event listeners and free GPU resources.

Returns

void


isWithinShortDistanceOfPointerDown()

isWithinShortDistanceOfPointerDown(ev): boolean

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:124

Parameters

ev

PointerEvent

Returns

boolean


pickRenderable()

pickRenderable(x, y, layers, pos?, clipPos?): Promise<undefined | RenderableDescriptor>

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:148

Pick mesh from screen pixel coordinates

Parameters

x

number

Pixel x CSS coordinate

y

number

Pixel y CSS coordinate

layers

number = 0xff

pos?

vec3

clipPos?

vec3

Returns

Promise<undefined | RenderableDescriptor>

Renderable ID: index inside the renderables array


renderRenderables()

renderRenderables(viewRenderData, renderPass, output): void

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:181

Parameters

viewRenderData

iViewRenderData

renderPass

GPURenderPassEncoder

output

GPUTexture

Returns

void


setObjectPickedCallback()

setObjectPickedCallback(callback): void

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:494

Parameters

callback

(renderable, clipPos) => void

Callback to be executed when a mesh was picked

Returns

void


setSelectionClearedCallback()

setSelectionClearedCallback(callback): void

Defined in: packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:505

Parameters

callback

() => void

Callback to be executed when the user clicked outside a mesh, clearing any prior selection

Returns

void