2.0 KiB
2.0 KiB
RenderPipeline::Render
执行一次主场景 runtime 绘制。
virtual bool Render(
const RenderContext& context,
const RenderSurface& surface,
const RenderSceneData& sceneData) = 0;
当前职责边界
这个接口只负责把已经提取好的主场景数据画到目标 RenderSurface:
- 消费
sceneData.cameraData - 遍历
sceneData.visibleItems - 读写
surface的颜色/深度附件与 render-area
它不负责:
- 多相机 request 规划与排序
- shadow-caster / depth-only scene pass
- object-id pass
preScenePasses/postScenePasses/overlayPasses编排
这些外层编排由 CameraRenderer 负责。
当前调用位置
按 engine/src/Rendering/Execution/CameraRenderer.cpp,当前主链路顺序是:
preScenePassesshadowCasterdepthOnlym_pipeline->Render(...)ObjectIdPasspostScenePassesoverlayPasses
因此这里代表的是“主场景绘制槽位”,不是整次相机提交的全部流程。
当前实现弹性
- 具体实现可以假定
sceneData已经由 RenderSceneExtractor 产出。 - 具体实现也可以在这里内部做惰性初始化,只要对调用方维持一致的成败语义。
参数
context- 当前帧的底层渲染上下文。surface- 本次主场景绘制的目标表面与 render-area。sceneData- 已提取好的相机、光照与可绘制项数据。
返回值
- 返回
true:主场景绘制成功。 - 返回
false:主场景绘制失败;外层CameraRenderer会终止这次提交并按已初始化阶段做清理。