Unity Rendering 是一份面向 Unity 渲染开发的技能资料,内容以速查表与代码片段为主,覆盖渲染管线选型、Shader Graph、Volume 框架、Renderer Features、GPU Resident Drawer、光照以及常见反模式。
一、渲染管线选型 资料给出三条管线的适用与不适用场景:URP 适合移动端、独立游戏、中等保真度、广泛平台覆盖以及自定义 Renderer Features,不适合电影级 AAA、体积效果和屏幕空间 GI;HDRP 适合高端 PC/主机、照片级真实感和高级光照,不适合移动端、WebGL 和低配硬件;Built-in 适合遗留项目以及无法移植的特定着色器,不适合新项目(新项目默认选 URP)。资料强调项目中途切换管线很痛苦,应在上手前一次性选定。
二、Shader Graph(URP/HDRP) 顶点阶段用于对象空间到世界空间的变换、顶点位移;片元阶段处理 albedo、法线、金属度、光滑度、自发光、AO;Custom Function 节点可内联编写 HLSL 实现无分支运算;Subgraph 用于可复用分组,可导出为 .shadersubgraph。资料建议默认用 Shader Graph 编写 URP 着色器,仅当 Shader Graph 无法表达所需数学(如计算、几何、自定义渲染纹理)时才退回到手写 ShaderLab/HLSL。
三、Volume 框架(URP/HDRP) 资料给出按相机覆盖配置文件的代码示例:通过 camera.GetComponent<Volume>() 获取 Volume,再用 profile.TryGet<Bloom> 读取并设置 bloom.intensity.value 与 bloom.threshold.value。使用方式为全局 Volume 加按触发器启用的局部 Volume,并用权重实现平滑过渡(例如进入室内时)。
四、Renderer Features(URP) 通过继承 ScriptableRendererFeature 与 ScriptableRenderPass 添加自定义 Pass(描边、雾、贴花等),可注入到 BeforeRenderingTransparents、AfterRenderingPostProcessing 等时机。资料给出 OutlineFeature 的示例代码,包含 Create() 与 AddRenderPasses() 的重写。
五、GPU Resident Drawer / BatchRendererGroup(Unity 6) 对静态对象和大量实例可显著减少绘制调用。在 Quality 设置中开启 GPU Resident Drawer;对象需标记为 Static 并共享材质/网格,系统会在 GPU 上自动实例化。
六、光照 资料按需求给出方案:静态场景(关卡几何)用烘焙全局光照(Progressive Lightmapper GPU)加 Light Probes 处理动态对象;户外昼夜循环用混合光照(Shadowmask)加动态天空盒;风格化卡通渲染用带 ramp 纹理的自定义 Shader Graph;HDRP 照片级真实感用体积光、屏幕空间 GI 和 Adaptive Probe Volumes。Reflection Probes 建议在关键视点烘焙,室内使用盒投影,纯实时探针仅用于主角对象。
七、反模式与修复 资料列出常见问题及修复:每个材质变体使用不同着色器,改用 Renderer.SetPropertyBlock 的 Material Property Block;运行时切换着色器,改用着色器变体集合资产预热;逐帧实例化材质,避免 renderer.material 克隆,读取用 sharedMaterial,逐实例覆盖用 MaterialPropertyBlock;在 Update 中调用 Camera.Render(),改用 Render Texture 加 Camera.targetTexture 只渲染一次;混用管线(在 Built-in 上用 URP 着色器),通过 Edit > Render Pipeline > Universal > Convert Selected Materials 转换。
八、生产检查清单 包括:在 Graphics 与 Quality 设置中指定管线资产;为全局与相关局部触发器配置 Volume 配置文件;为构建生成并预加载着色器变体集合;将静态对象标记为 Static 并烘焙光照;放置 Light Probes / Reflection Probes;用 Frame Debugger 检查,确保 UI 上没有意外的非透明绘制;仅 HDRP 时,若静态 GI 关键则配置 Adaptive Probe Volumes。
适用场景:Unity 项目的渲染管线决策、着色器编写、光照与后处理配置、绘制调用优化。限制:资料未提供具体版本兼容性、性能基准数据、收费或授权信息,也未给出完整项目示例。