多通道
管线支持添加多个步骤,将按照 添加顺序 依次执行,以实现复杂的渲染效果。
p => { p.add({ /* ... */ }); p.add({ /* ... */ });};使用 regPipeline 函数,可以帮助我们快速创建一个即时渲染管线,以便产生更好的演出效果。
// 注册场景、相机、渲染目标export const stage = regScene("main");export const view = regCamera("main", c => {});export const screen = regRT("screen", r => {});
regPipeline("main", p => { p.add({ scene: stage, camera: view, output: screen, });});regPipeline 接受两个参数:
regPipeline( "main", // 第一个参数
p => {} // 第二个参数);main 是管线的名称,可以任意指定(但不能与其他管线重名)。p => { ... } 内部的内容;这里的 p 是一个构建器,可以任意指定其名称。regPipeline 的第二个参数是一个管线构建函数。引擎会将一个构建器实例(通常命名为 p)传递给该函数,用于定义每一帧的渲染流程。
p.add() 接受一个渲染步骤对象作为参数。
p => { p.add({ scene: stage, camera: view, output: screen, });};这个渲染步骤的具体含义是,使用 view 相机拍摄 stage 场景,将渲染结果输出到 screen。
scene, camera, output 分别接受一个对应的句柄(场景、相机、渲染目标)。多通道
管线支持添加多个步骤,将按照 添加顺序 依次执行,以实现复杂的渲染效果。
p => { p.add({ /* ... */ }); p.add({ /* ... */ });};viewport 定义视口变换的区域。
[0, 0, 1920, 1080]scissor 定义裁剪矩形的范围。
[0, 0, 1920, 1080]scissorTest 裁剪测试的开关。
true 时,scissor 属性才会生效;否则渲染将覆盖整个 Viewport。falsep => { p.add({ /* ... */ viewport: [0, 0, 1920, 1080], scissor: [0, 0, 1920, 1080], scissorTest: false, });};这些参数决定了在绘制当前步骤之前,是否需要“擦除”上一帧留下的内容。这对于多层渲染(例如:在渲染结果上叠加 2D UI)至关重要。
clear 是否在渲染前清除缓冲区。
false,则不会清除缓冲区,会保留上一帧的内容,直接在上面绘制。trueclearColor 清除后的背景颜色。
clear: true 时生效。支持十六进制颜色字符串。"#000000"clearAlpha 清除后的背景透明度 (0-1)。
clear: true 时生效。1p => { p.add({ /* ... */ clear: true, clearColor: "#000000", clearAlpha: 1, });};@TODO
@TODO
@TODO