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 会丢弃其命令。