Skip to main content

Documentation Index

Fetch the complete documentation index at: https://rive-exporting-names.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

A GPU canvas — a 1× presentation target, same role as a WebGPU surface texture. Use .image with renderer:drawImage() to composite the result. Render to it via canvas:beginRenderPass({ color = {{ loadOp = 'clear', storeOp = 'store', ... }} }) — the color attachment’s view defaults to this canvas’s own colorView when omitted. MSAA requires a user-allocated GPUTexture.new({ sampleCount = N, renderTarget = true }) as the explicit color view, with the canvas’s colorView() as resolveTarget.

Fields

image

Backing image for renderer:drawImage().

width

Width in pixels.

height

Height in pixels.

format

Native pixel format of the canvas backing texture (‘bgra8unorm’ on D3D, ‘rgba8unorm’ elsewhere). MSAA resolve requires source and target to have identical formats — always derive GPUTexture and pipeline formats from this value:
  local fmt = canvas.format
  GPUPipeline.new({ colorTargets = {{ format = fmt }}, sampleCount = 4 })

Methods

resize

resize(width: number, height: number) -> ()
Resize the canvas. Recreates the 1× backing texture. Any user-allocated MSAA / depth textures must be recreated by the script to match the new dimensions.

colorView

colorView() -> GPUTextureView
View of the canvas backing texture. Use as a color attachment, an MSAA resolve target, or a sampler input in a subsequent pass.

beginRenderPass

beginRenderPass(desc: RenderPassDesc) -> GPURenderPass
Open a GPU render pass targeting this canvas. The descriptor must include at least one color attachment or a depthStencil attachment. Color attachment views default to this canvas’s colorView when omitted; provide them explicitly when rendering to a different target (e.g. MSAA). The pass’s sampleCount is derived from the attachments (WebGPU rule: all attachments share one sampleCount). Must be called inside a drawCanvas phase. Issue draw calls on the returned pass, then call :finish().