跳到主要内容

GPUTarget

渲染 pass 可以绘制到的目标。它不保证可采样,也不保证帧与帧之间保留内容;GPUCanvas 同时提供这两点。

字段​

width​

像素宽度。

height​

像素高度。

format​

目标的像素格式。MSAA 解析要求源和目标具有相同的格式——始终从此值派生 GPUTexture 和管线格式:

  local fmt = target.format
GPUPipeline.new({ colorTargets = {{ format = fmt }}, sampleCount = 4 })

sampleCount​

每像素采样数。画布始终为 1;在部分宿主上,context:gpuTarget() 可以大于 1。

view​

目标的视图,用作颜色附件或 MSAA 解析目标。在没有可绘制目标的帧上为 nil。每帧都要重新读取;跨 resize 保留的 view 在 pass 使用时会报错。

方法​

beginRenderPass​

beginRenderPass(desc: RenderPassDesc) -> GPURenderPass

开启一个以此目标为对象的 GPU 渲染 pass。描述符必须包含至少一个颜色附件或一个 depthStencil 附件。颜色附件的 view 在省略时默认使用此目标的 view;当渲染到不同目标(例如 MSAA)时,请显式提供 view。pass 的 sampleCount 从附件中推导(WebGPU 规则:所有附件共享同一个 sampleCount)。必须在 draw 期间调用。在返回的 pass 上发出绘制调用,然后调用 :finish()。一个 pass 可以在另一个 pass 尚未结束时开启——例如被绘制的画板自身的脚本在进行渲染时:它会先于包含它的 pass 运行,这样该 pass 就能采样它的输出。当没有可绘制目标时,该 pass 会丢弃其命令。

看完还有疑问?进群交流下!
与众多 Rive 创作者、开发者一起交流探讨与答疑解惑。
加入交流群