8.5 KiB
8.5 KiB
Passes
命名空间: XCEngine::Rendering::Passes
类型: submodule
描述: 承载 builtin object-id、selection mask / outline、volumetric、infinite grid、fullscreen post-process / final-color,以及 depth-only / shadow-caster 一类可复用渲染 pass 与配套参数类型。
概览
Rendering::Passes 不是用来替代 RenderPipeline 的第二套主渲染框架,而是承载几类被 CameraRenderer、editor 视口流程和 builtin pipeline 复用的 builtin pass:
- BuiltinObjectIdPass 把可见物体编码成 object-id 颜色,写到辅助渲染目标。
- BuiltinObjectIdOutlinePass 读取 object-id 纹理和选中对象列表,把轮廓或调试 mask 叠加回场景颜色。
- BuiltinSelectionMaskPass 重绘当前选中对象,生成 selection mask。
- BuiltinSelectionOutlinePass 读取 selection-mask 与 depth 纹理,在主颜色目标上合成轮廓。
- BuiltinInfiniteGridPass 给 Scene View 一类编辑器视口叠加无限网格。
- BuiltinVolumetricPass 消费
visibleVolumes与VolumeFieldGPU 资源,执行体渲染。 - BuiltinColorScalePostProcessPass 执行基于
sourceColorView的全屏颜色缩放后处理。 - BuiltinFinalColorPass 执行 exposure、tone mapping、output transfer 和 final color scale 的最终输出阶段。
- BuiltinDepthStylePassBase 为深度风格场景重绘 pass 提供共享执行骨架。
- BuiltinDepthOnlyPass 是
CameraRenderer默认depthOnlyrequest 的 builtin 实现。 - BuiltinShadowCasterPass 是
CameraRenderer默认shadowCasterrequest 的 builtin 实现。
典型链路
Scene View / editor 补充 pass
当前 Scene View 相关链路大致是:
- CameraRenderer 先执行主
RenderPipeline。 - 如果 CameraRenderRequest 里请求了
objectId.surface,则额外执行 BuiltinObjectIdPass。 - editor 侧的
SceneViewportRenderPlan再构建postScenePasses和overlayPasses。 - 其中
SceneViewportGridPass/SceneViewportSelectionOutlinePass当前分别调用 BuiltinInfiniteGridPass 与“BuiltinSelectionMaskPass + BuiltinSelectionOutlinePass”这一组 selection outline 组合。
Fullscreen post-process / final-color
SceneRenderer 当前会先在 planning 阶段把:
- 相机
postProcess描述栈 - pipeline 默认 final-color 设置
- 相机 final-color override
解析成 CameraRenderRequest::postProcess 与 CameraRenderRequest::finalOutput。
随后 CameraRenderer 在主场景之后依次执行:
postProcessfinalOutputobjectIdpostScenePassesoverlayPasses
Builtin volume scene pass
体渲染链路和前面两类流程不同,它不是 post-process,而是 builtin scene pass:
RenderSceneExtractor先把体积对象提取到visibleVolumes。- BuiltinForwardPipeline 把 BuiltinVolumetricPass 放进自己的 pass sequence。
BuiltinVolumetricPass再按材质 shader pass、volume-field 绑定和 lighting 常量逐项绘制。
当前公开概念
| 类型 / 页面 | 角色 |
|---|---|
| BuiltinObjectIdPass | 生成 object-id 颜色缓冲。 |
| BuiltinObjectIdOutlinePass | 在主颜色目标上合成选中轮廓。 |
| BuiltinSelectionMaskPass | 为选中轮廓链路生成 selection mask。 |
| BuiltinSelectionOutlinePass | 基于 selection-mask 与 depth 的全屏轮廓合成器。 |
| BuiltinInfiniteGridPass | Scene View 网格覆盖层的底层执行 pass。 |
| BuiltinVolumetricPass | builtin forward 链路中的体渲染 scene pass。 |
| BuiltinColorScalePostProcessPass | 相机 post-process 栈当前的颜色缩放全屏 pass。 |
| BuiltinFinalColorPass | final-color 阶段的最终合成 / 输出变换 pass。 |
| BuiltinDepthStylePassBase | depth-only / shadow-caster 场景重绘共享的执行骨架。 |
| BuiltinDepthOnlyPass | CameraRenderer 默认的 depth-only scene pass。 |
| BuiltinShadowCasterPass | CameraRenderer 默认的 shadow-caster scene pass。 |
测试与真实调用点
tests/Rendering/unit/test_camera_scene_renderer.cpp验证了CameraRenderer里 object-id、post-process、final-output 与可选 pass sequence 的接入时机。engine/src/Rendering/Execution/CameraRenderer.cpp当前把 BuiltinShadowCasterPass 与 BuiltinDepthOnlyPass 作为默认 scene pass 挂进shadowCaster/depthOnlyrequest。engine/src/Rendering/Execution/SceneRenderer.cpp当前负责把 fullscreen 阶段写进CameraRenderRequest。editor/src/Viewport/Passes/SceneViewportSelectionOutlinePass.h当前组合 BuiltinSelectionMaskPass 与 BuiltinSelectionOutlinePass。engine/src/Rendering/Pipelines/BuiltinForwardPipeline.cpp当前把 BuiltinVolumetricPass 挂进 builtin forward pass sequence。tests/Rendering/unit/test_builtin_forward_pipeline.cpp验证了VolumeField资源语义与布局元数据。tests/Editor/test_viewport_render_flow_utils.cpp验证了 Scene View render plan 如何组装 grid / selection outline / overlay pass。
当前实现边界
- 这一层目前是 builtin、轻量、偏 editor/工具链导向的 pass 集合,还不是通用 render graph。
- object-id 相关流程依赖单独的辅助 render target / shader resource view,而不是直接从主颜色结果反推。
- selection outline 当前已经拆成“mask 重绘 + fullscreen compositing”两层,而不是单个对象列表后处理。
- volumetric pass 当前依赖
visibleVolumes、VolumeField资源绑定和 builtin cube proxy,不是独立 volume framework。 - fullscreen pass 依赖调用方准备
sourceColorView和中间表面;单个 pass 本身不管理整条阶段链。
相关文档
- BuiltinObjectIdPass
- BuiltinObjectIdOutlinePass
- BuiltinSelectionMaskPass
- BuiltinSelectionOutlinePass
- BuiltinInfiniteGridPass
- BuiltinVolumetricPass
- BuiltinColorScalePostProcessPass
- BuiltinFinalColorPass
- BuiltinDepthStylePassBase
- BuiltinDepthOnlyPass
- BuiltinShadowCasterPass
- CameraRenderRequest
- CameraRenderer
- Rendering