--- title: GBuffer修改 date: 2026-05-03 00:00:00 excerpt: GBufferD 清除色、Specular 格式和法线 GBuffer 格式调整 tags: - ARC - Rendering - GBuffer rating: ⭐ --- # GBuffer 修改 返回 [[Rendering]] ## 概述 ARC 引擎对 GBuffer 进行了多处细节修改,主要围绕 CustomData 通道(GBufferD)的清除色、Specular GBuffer 格式和法线格式。 ## 修改内容 ### 1. GBufferD 清除色 将 GBufferD 的清除色从默认值改为 `(0, 0, 0, 0)`: ```cpp // SceneRenderTargets.cpp // GBufferD 清除为黑色,确保 OutlineID 和 PointLight 数据的默认值为 0 ClearColor = FLinearColor(0, 0, 0, 0); ``` 这确保未被写入 [[RED自定义数据通道]] 的像素不会产生错误的轮廓线 ID 或辉光遮罩。 ### 2. Specular GBuffer 格式 在非 PS5 平台上,Specular GBuffer 格式改为 `PF_A8`: ```cpp // 非 PS5 平台使用 8 位精度 SpecularGBufferFormat = PF_A8; ``` 降低 Specular 精度以节省带宽,对卡通渲染影响极小(Specular 在 Toon 着色中通常使用阶梯化而非平滑过渡)。 ### 3. PostProcessDownsample Alpha 在 `PostProcessDownsample.usf` 中强制 Alpha 为 1.0: ```hlsl OutColor.a = 1.f; ``` 防止降采样过程中 Alpha 通道携带的 CustomData 信息影响后续后处理。 ## 关联文档 - [[RED自定义数据通道]] — GBufferD 的数据写入方 - [[自定义后处理]] — 读取 GBufferD 数据 ## 修改文件列表 | 文件 | 修改类型 | |------|---------| | `Source/Runtime/Renderer/Private/SceneRenderTargets.cpp` | GBufferD 清除色、Specular 格式 | | `Shaders/Private/PostProcessDownsample.usf` | Alpha 强制为 1.0 |