Skip to content

@orillusion/core


Class: GPUContextInstance

Defined in: src/gfx/renderJob/GPUContext.ts:18

Per-Context3D GPU command/pipeline state. Owned by exactly one Context3D via Context3D.gpuContext. Multi-engine isolation: no mutable state is shared across engines. Access via ctx.gpuContext.foo().

Constructors

Constructor

new GPUContextInstance(ctx): GPUContextInstance

Defined in: src/gfx/renderJob/GPUContext.ts:45

Parameters

ctx

Context3D

Returns

GPUContextInstance

Properties

ctx

readonly ctx: Context3D

Defined in: src/gfx/renderJob/GPUContext.ts:20

The Context3D (one engine) this instance is bound to.


lastGeometry

lastGeometry: GeometryBase = null

Defined in: src/gfx/renderJob/GPUContext.ts:23

Last geometry bound by bindGeometryBuffer; used to skip redundant vertex/index buffer rebinds.


lastPipeline

lastPipeline: GPURenderPipeline = null

Defined in: src/gfx/renderJob/GPUContext.ts:25

Last render pipeline set on the encoder; used to skip redundant setPipeline calls.


lastShader

lastShader: RenderShaderPass = null

Defined in: src/gfx/renderJob/GPUContext.ts:27

Last shader pass bound by bindPipeline; used to detect material switches.


drawCount

drawCount: number = 0

Defined in: src/gfx/renderJob/GPUContext.ts:29

Number of draw calls submitted since the last reset (profiling counter).


renderPassCount

renderPassCount: number = 0

Defined in: src/gfx/renderJob/GPUContext.ts:31

Number of render passes begun since the last reset (profiling counter).


geometryCount

geometryCount: number = 0

Defined in: src/gfx/renderJob/GPUContext.ts:33

Number of geometries processed since the last reset (profiling counter).


pipelineCount

pipelineCount: number = 0

Defined in: src/gfx/renderJob/GPUContext.ts:35

Number of pipelines created since the last reset (profiling counter).


matrixCount

matrixCount: number = 0

Defined in: src/gfx/renderJob/GPUContext.ts:37

Number of matrix uploads since the last reset (profiling counter).


lastRenderPassState

lastRenderPassState: RendererPassState = null

Defined in: src/gfx/renderJob/GPUContext.ts:39

Render-pass state of the most recently begun render pass.


LastCommand

LastCommand: GPUCommandEncoder = null

Defined in: src/gfx/renderJob/GPUContext.ts:41

Command encoder currently open via beginCommandEncoder, or null.


LastCommandDevice

LastCommandDevice: GPUDevice = null

Defined in: src/gfx/renderJob/GPUContext.ts:43

Device that owns LastCommand; used to submit on the matching queue.

Methods

bindPipeline()

bindPipeline(encoder, renderShader): boolean

Defined in: src/gfx/renderJob/GPUContext.ts:56

Bind a shader pass's pipeline and bind groups onto the encoder. Skips the work and returns false when renderShader matches the last bound shader; otherwise binds and returns true. Re-issues the stencil reference on every material switch since it is render-pass (not pipeline) state.

Parameters

encoder

GPURenderPassEncoder | GPURenderBundleEncoder

renderShader

RenderShaderPass

Returns

boolean


bindCamera()

bindCamera(encoder, camera): void

Defined in: src/gfx/renderJob/GPUContext.ts:90

Bind the camera's global bind group at slot 0.

Parameters

encoder

GPURenderPassEncoder | GPURenderBundleEncoder

camera

Camera3D

Returns

void


bindGeometryBuffer()

bindGeometryBuffer(encoder, geometry): void

Defined in: src/gfx/renderJob/GPUContext.ts:100

Bind a geometry's index and vertex buffers onto the encoder. Skips the rebind when geometry matches the last bound geometry. Lazily binds each GPU buffer to this context on first use.

Parameters

encoder

GPURenderPassEncoder | GPURenderBundleEncoder

geometry

GeometryBase

Returns

void


cleanCache()

cleanCache(): void

Defined in: src/gfx/renderJob/GPUContext.ts:121

Reset the cached geometry/pipeline/shader so the next bind always issues.

Returns

void


createPipeline()

createPipeline(gpuRenderPipeline): GPURenderPipeline

Defined in: src/gfx/renderJob/GPUContext.ts:128

Create a render pipeline on this context's device.

Parameters

gpuRenderPipeline

GPURenderPipelineDescriptor

Returns

GPURenderPipeline


beginCommandEncoder()

beginCommandEncoder(): GPUCommandEncoder

Defined in: src/gfx/renderJob/GPUContext.ts:137

Open a new command encoder. Submits any previously open encoder first, so only one encoder is in flight at a time per context.

Returns

GPUCommandEncoder


endCommandEncoder()

endCommandEncoder(command): void

Defined in: src/gfx/renderJob/GPUContext.ts:148

Finish and submit command if it is the currently open encoder.

Parameters

command

GPUCommandEncoder

Returns

void


recordBundleEncoder()

recordBundleEncoder(des): GPURenderBundleEncoder

Defined in: src/gfx/renderJob/GPUContext.ts:158

Create a render bundle encoder on this context's device.

Parameters

des

GPURenderBundleEncoderDescriptor

Returns

GPURenderBundleEncoder


beginRenderPass()

beginRenderPass(command, renderPassState): GPURenderPassEncoder

Defined in: src/gfx/renderJob/GPUContext.ts:167

Begin a render pass from renderPassState. Resolves the attachment views (depth, color RTs, MSAA side-bands + resolve targets, or the swapchain present view when no RTs are set) before opening the pass.

Parameters

command

GPUCommandEncoder

renderPassState

RendererPassState

Returns

GPURenderPassEncoder


drawIndexedIndirect()

drawIndexedIndirect(encoder, indirectBuffer, indirectOffset): void

Defined in: src/gfx/renderJob/GPUContext.ts:255

Indirect indexed draw — the draw call counts (indexCount, instanceCount, firstIndex, baseVertex, firstInstance) come from a GPU buffer at the given offset. Companion of drawIndexed; used by GPU-driven culling so the visibility decision and the draw submission both live on the GPU.

The indirect-first-instance adapter feature must be enabled if the indirect buffer's firstInstance field is non-zero (Orillusion requests it in Context3D init).

Parameters

encoder

GPURenderPassEncoder

indirectBuffer

GPUBuffer

indirectOffset

number

Returns

void


drawIndexed()

drawIndexed(encoder, indexCount, instanceCount?, firstIndex?, baseVertex?, firstInstance?): void

Defined in: src/gfx/renderJob/GPUContext.ts:265

Indexed draw with CPU-provided counts. No-ops when indexCount or instanceCount is zero — WebGPU flags empty indexed draws as unusual, and dynamic geometry starts with empty buffers.

Parameters

encoder

GPURenderPassEncoder

indexCount

number

instanceCount?

number

firstIndex?

number

baseVertex?

number

firstInstance?

number

Returns

void


draw()

draw(encoder, vertexCount, instanceCount?, firstVertex?, firstInstance?): void

Defined in: src/gfx/renderJob/GPUContext.ts:280

Non-indexed draw. No-ops when vertexCount or instanceCount is zero.

Parameters

encoder

GPURenderPassEncoder

vertexCount

number

instanceCount?

number

firstVertex?

number

firstInstance?

number

Returns

void


endPass()

endPass(encoder): void

Defined in: src/gfx/renderJob/GPUContext.ts:290

End the given render pass.

Parameters

encoder

GPURenderPassEncoder

Returns

void


computeCommand()

computeCommand(command, computes): void

Defined in: src/gfx/renderJob/GPUContext.ts:296

Run a list of compute shaders inside a single compute pass on command.

Parameters

command

GPUCommandEncoder

computes

ComputeShader[]

Returns

void


copyTexture()

copyTexture(command, source, dest): void

Defined in: src/gfx/renderJob/GPUContext.ts:306

Copy mip 0 of source into mip 0 of dest, sized to dest.

Parameters

command

GPUCommandEncoder

source

Texture

dest

Texture

Returns

void