@tmrw-realityos/charm / Exports / WebGPUMeshPicker
Class: WebGPUMeshPicker
Class for picking a mesh on click events
Example
Setup
const renderer = new WebGPURenderer(device, canvas)
const picker = new WebGPUMeshPicker(renderer)
renderer.onRenderInFinalBuffer = (outputTexture: GPUTexture, encoder: GPUCommandEncoder) => {
picker.renderOutlineOverlay(outputTexture, encoder)
}Table of contents
Constructors
Accessors
Methods
- destroy
- isWithinShortDistanceOfPointerDown
- pickRenderable
- renderOutlineOverlay
- reset
- resize
- setObjectPickedCallback
- setSelectionClearedCallback
Constructors
constructor
• new WebGPUMeshPicker(renderer): WebGPUMeshPicker
Parameters
| Name | Type | Description |
|---|---|---|
renderer | WebGPURenderer | Rendering context containing renderables and camera uniforms |
Returns
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:72
Accessors
highlightColor
• set highlightColor(color): void
Parameters
| Name | Type |
|---|---|
color | ReadonlyVec4 |
Returns
void
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:347
outlineColor
• set outlineColor(color): void
Parameters
| Name | Type |
|---|---|
color | ReadonlyVec4 |
Returns
void
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:340
Methods
destroy
▸ destroy(): void
Remove event listeners and free GPU resources.
Returns
void
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:725
isWithinShortDistanceOfPointerDown
▸ isWithinShortDistanceOfPointerDown(ev): boolean
Parameters
| Name | Type |
|---|---|
ev | PointerEvent |
Returns
boolean
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:330
pickRenderable
▸ pickRenderable(x, y): Promise<number>
Pick mesh from screen pixel coordinates
Parameters
| Name | Type | Description |
|---|---|---|
x | number | Pixel x coordinate |
y | number | Pixel y coordinate |
Returns
Promise<number>
Renderable ID
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:474
renderOutlineOverlay
▸ renderOutlineOverlay(outputTexture, existingCommandEncoder?): void
Render outline of the selected mesh. By default a separate command encoder is created for recording draw commands.
Parameters
| Name | Type | Description |
|---|---|---|
outputTexture | GPUTexture | Texture to draw to. Must be view compatible with rgba8unorm-srgb. |
existingCommandEncoder? | GPUCommandEncoder | Optional existing command encoder to record to. |
Returns
void
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:642
reset
▸ reset(): void
Clear the current selection
Returns
void
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:599
resize
▸ resize(width, height): void
Resize picking framebuffers. Must be called whenever the canvas is resized.
Parameters
| Name | Type |
|---|---|
width | number |
height | number |
Returns
void
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:608
setObjectPickedCallback
▸ setObjectPickedCallback(callback): void
Parameters
| Name | Type | Description |
|---|---|---|
callback | (renderable: RenderableDescriptor, clipPos: vec3) => void | Callback to be executed when a mesh was picked |
Returns
void
Defined in
packages/charm/src/graphics/WebGPU/WebGPUMeshPicker.ts:581
setSelectionClearedCallback
▸ setSelectionClearedCallback(callback): void
Parameters
| Name | Type | Description |
|---|---|---|
callback | () => void | Callback to be executed when the user clicked outside a mesh, clearing any prior selection |
Returns
void