赛璐璐游戏美术技术专题进阶争议辩论3 / 5 已发布

赛璐璐渲染与 PBR 的边界战争:风格化与真实感的技术融合路径

米哈游风格化PBR · Lumen兼容策略 · Blender工具链 · 幽灵行者2方案 · 混合管线架构

· 28 分钟阅读·4.5k 阅读·360
赛璐璐渲染与 PBR 的边界战争:风格化与真实感的技术融合路径 — 赛璐璐游戏美术技术专题

赛璐璐渲染与 PBR 的边界战争:风格化与真实感的技术融合路径

两种渲染哲学的底层冲突

PBR(基于物理的渲染)与 NPR(非真实感渲染)代表了两种完全对立的技术哲学。PBR 的核心信条是「能量守恒」——光在物体表面的反射和折射必须遵循物理定律,渲染结果应该可以在现实世界中找到对应物。而 NPR 的核心信条是「视觉表达自由」——为了艺术目标,可以打破任何物理定律。

当代游戏工业正在见证一场「边界战争」:PBR 管线正在向风格化方向扩张(米哈游的风格化 PBR),而 NPR 管线也在吸收 PBR 的技术成果(高质量 GI、光照系统)。这场战争的最终结果不是谁取代谁,而是两者在同一管线中和谐共存的混合架构。

底层哲学分歧:七个核心对立点

在深入技术实现之前,先理解 PBR 与 NPR 在设计哲学上的七个根本差异。这些差异无法通过技术手段完全消除,只能在架构设计中进行权衡和妥协。

设计维度PBR 哲学NPR 哲学混合管线的妥协方案
光照响应连续、平滑、物理正确离散、阶梯、艺术化控制双轨光照系统:PBR 路径 + NPR 路径
阴影特性软阴影、PCF 滤波、自然衰减硬阴影、形状固定、无衰减距离自适应的阴影硬度
材质表达微表面理论、粗糙度/金属度材质 ID 系统、分类处理基于材质 ID 的混合权重
全局光照漫射反弹、能量衰减环境色、固定色阶GI 贡献的风格化映射
高光反射物理 BRDF、各向异性任意形状、固定位置可混合的双高光系统
雾与大气指数高度雾、光线散射分层纯色雾、无散射物理雾 + 风格化后处理
后处理校色、Bloom、景深边缘检测、色调分离分层后处理栈

风格化 PBR:米哈游技术路线的深度解析

米哈游在《原神》和《崩坏:星穹铁道》中探索的「风格化 PBR」路线,代表了当前工业界在 PBR 框架内实现赛璐璐效果的最高水准。其核心洞察是:保留 PBR 的材质参数接口,但替换光照计算函数。

技术架构三层设计

第一层:G-Buffer 完全兼容标准 PBR

米哈游的 G-Buffer 格式与标准 Unity/UE PBR 完全一致——Albedo、Normal、Metallic、Roughness、AO。这意味着所有标准 PBR 工具链(Substance Painter、Mixer 等)可以直接使用,美术工作流不需要大规模改动。

第二层:自定义光照函数替换 BRDF

关键的创新点在于:不使用标准的 Cook-Torrance BRDF,而是替换为自定义的风格化光照函数。这个函数接收标准的 PBR 材质参数,但输出的是风格化的光照结果。

// 风格化光照函数伪代码
float3 StylizedLighting(LightData light, MaterialData mat, float3 viewDir) {
    // 标准 PBR 计算中间量
    float NdotL = saturate(dot(mat.normal, light.dir));
    float NdotV = saturate(dot(mat.normal, viewDir));
    
    // 风格化改造:阶梯化 NdotL
    float toonNdotL = ramp_sample(_LightRampTex, NdotL);
    
    // 风格化改造:硬 cutoff 高光
    float spec = pow(NdotH, mat.roughness * 128);
    float toonSpec = step(_SpecThreshold, spec);
    
    // 混合返回
    return light.color * (mat.albedo * toonNdotL + toonSpec * mat.metallic);
}

第三层:逐材质的风格化权重

每个材质可以设置一个「风格化强度」参数,0 表示纯 PBR,1 表示完全风格化。Shader 在运行时根据这个参数在标准 BRDF 和风格化函数之间进行插值。这允许同一个场景中存在不同风格化程度的物体。

米哈游路线的优势与成本

优势:工具链兼容性好;可以利用引擎所有内置光照系统(GI、Lightmap、Probe);风格化程度可以精细控制。
成本:Shader 复杂度高,变体数量爆炸;需要经验丰富的 TA 维护光照系统;对移动端性能压力较大。

材质特殊处理策略:金属、皮革、布料在赛璐璐管线中的表达

不同物理材质在赛璐璐风格化时需要完全不同的处理策略。「一刀切」的 Toon Shader 在处理复杂材质时总是看起来「假」。

金属材质:高光形状优先

金属的视觉识别特征是锐利的环境反射。在赛璐璐管线中,金属不应使用阶梯漫反射,而应保留各向异性高光,但将高光形状「硬截断」成清晰的色块。

// 风格化金属高光
float3 reflectDir = reflect(-viewDir, normalWS);
float envMip = lerp(0, 8, roughness); // 标准 PBR 环境贴图 Mip 选择
float3 envSample = SAMPLE_TEXTURECUBE_LOD(_EnvTex, sampler_EnvTex, reflectDir, envMip).rgb;

// 风格化改造:将环境采样结果色调分离
float3 stylizedEnv = posterize(envSample, _MetalPosterizeLevels);
float3 finalMetal = envSample * (1 - _StylizedWeight) + stylizedEnv * _StylizedWeight;

皮革材质:边缘高亮控制

皮革的视觉特征是「菲涅尔边缘高亮」。在 PBR 中这是自动的,但在赛璐璐中需要将菲涅尔效应阶梯化,产生硬边的边缘光。

布料材质:各向异性的风格化

布料的微表面结构有明显的各向异性(纤维方向)。赛璐璐布料不需要真实的各向异性 BRDF,而是用程序化的线条纹理模拟布料纤维的方向感。

材质分类系统的架构设计

在 Shader 中建立「材质类型枚举」:皮肤、头发、布料、金属、塑料、皮肤。每种材质类型对应独立的风格化函数。使用着色器关键字(Shader Keyword)在编译时分支,避免运行时的性能开销。

实时全局光照与赛璐璐的兼容性:Lumen、DDGI 的取舍策略

UE5 的 Lumen 和各种 DDGI(动态漫反射全局光照)系统正在成为次世代游戏的标准配置。但这些 GI 系统天然与赛璐璐的「平涂美学」存在冲突——柔和的间接光照会破坏赛璐璐的硬边色阶。

冲突的本质

实时 GI 的核心是「漫射反弹」——光线在物体表面之间多次反弹,产生平滑的颜色渐变和间接光照。而赛璐璐的核心是「消除渐变」——所有颜色变化都是硬边的阶跃。两者在数学上是相反的操作。

三种兼容策略

策略 A:GI 贡献的风格化映射

不关闭 GI,而是对 GI 的计算结果做「后处理风格化」——将平滑的 GI 结果通过 Ramp 贴图重新量化为色阶。这保留了 GI 的光照方向和颜色信息,同时消除了不想要的渐变。

// GI 风格化后处理
float3 indirectDiffuse = CalculateGI(normalWS, positionWS);
// 将连续的 GI 值映射到离散色阶
float3 stylizedGI = tex3D(_GIRamp3D, indirectDiffuse).rgb;
finalColor = directLighting + stylizedGI;

策略 B:分层 GI 系统

场景物体接受完整的 Lumen GI,角色物体只接受简化的光照探针(Light Probe)GI。角色是玩家注意力的焦点,角色的赛璐璐纯度比场景的光照真实性更重要。

策略 C:完全关闭 GI,改用烘焙风格化光照

对于风格极强的纯赛璐璐游戏(如《女神异闻录 5》),完全关闭实时 GI,使用烘焙的风格化光照贴图。光照贴图在烘焙后经过美术手工处理,确保所有光照都是硬边色阶。

编辑建议

对于大多数独立团队,我们推荐策略 B(分层 GI 系统)。场景使用完整的实时 GI 获得良好的环境氛围,角色使用简化 GI 保持赛璐璐纯度。这是视觉质量和开发成本的最优平衡点。

DCC 软件与游戏引擎的双管线协同:Blender、Maya、Substance 的赛璐璐工作流

混合渲染管线最大的痛点不在运行时 Shader,而在内容制作工具链。美术师需要在 DCC 软件中预览赛璐璐效果,而不是只能导入引擎后才能看到。

Blender 赛璐璐工作流配置

Blender 的 EEVEE 渲染器原生支持 NPR 效果,是赛璐璐资产制作的理想工具。建议配置:

1. 建立与引擎 Shader 节点图一一对应的 Blender 材质节点组
2. 使用 Freestyle 描边系统预览几何体描边效果
3. 编写 Python 脚本一键导出与引擎格式匹配的 Ramp 贴图
4. 使用自定义渲染通道输出材质 ID 贴图

Substance Painter 风格化导出插件

标准 Substance Painter 导出的 PBR 贴图在赛璐璐 Shader 中使用时会丢失大量细节。开发一个简单的导出插件:

• 在 Painter 中实时预览赛璐璐风格化结果
• 导出时自动「色调分离」Albedo 贴图
• 将金属度/粗糙度图转换为赛璐璐的「高光形状图」
• 生成与引擎匹配的 Ramp 贴图预设

双管线资产规范

建立「赛璐璐友好资产规范」:
• 拓扑:硬边处必须拆分平滑组
• UV:避免 UV 拉伸,Ramp 采样区域 UV 必须均匀
• 法线:禁用 Mikktspace 法线切线,使用统一的法线计算标准
• 贴图:限制颜色数量,避免渐变,使用纯色块

案例深度解析:《幽灵行者 2》的赛璐璐滤镜如何叠加于成熟 PBR 管线

《幽灵行者 2》提供了一个教科书级的案例——在已经开发完成的 PBR 管线基础上,通过后处理滤镜「叠加」赛璐璐效果,几乎完全不需要修改基础材质和光照系统。

技术架构四层叠加

第一层:边缘检测描边(后处理)

标准的深度+法线后处理描边,覆盖全场景所有物体。这是最容易实现的一层,提供了基础的「赛璐璐感」。

第二层:全局色调分离

对最终渲染结果应用色调分离(Posterization),将连续的颜色量化为 8–16 个色阶。这一步将 PBR 的平滑渐变转换为类似赛璐璐的平涂效果。

第三层:选择性高光增强

基于亮度阈值提取画面中的高亮区域,硬截断并强化。这模拟了赛璐璐渲染中锐利的高光。

第四层:材质感知的风格化强度

通过材质 ID 通道,不同类型的材质应用不同强度的风格化滤镜。金属材质色调分离强度低(保留更多 PBR 质感),塑料和皮肤材质色调分离强度高(更强的赛璐璐感)。

这个方案的启示

「后处理滤镜叠加」策略的开发成本远低于「重写整个 Shader 管线」。如果你的项目已经使用标准 PBR 管线,想要加入赛璐璐视觉元素,先从后处理方向探索,不要一开始就重写所有 Shader。

初级用户路径:三步在现有 PBR 项目中加入赛璐璐元素

如果你已经有一个使用标准 PBR 的项目,想要加入赛璐璐视觉风格,但不想推翻现有管线,按照以下三步执行:

第一步:添加赛璐璐后处理滤镜(2 小时)

实现一个全屏后处理效果,包含:边缘检测描边 + 全局色调分离。这一步只需要修改后处理栈,完全不触碰现有材质,可以在一天内看到初步效果。根据反馈调整强度参数。

第二步:创建赛璐璐变体材质(4 小时)

在现有 PBR Shader 基础上创建一个「赛璐璐风格化」关键字变体,加入:NdotL 阶梯化 + 硬 cutoff 高光 + Ramp 贴图采样。为角色和关键物体启用这个变体,场景物体保持标准 PBR。

第三步:配置分层光照系统(8 小时)

为赛璐璐物体创建单独的光照通道:使用自定义的光照函数,关闭不必要的 GI 贡献,调整阴影参数。确保赛璐璐物体和 PBR 物体在同一光照环境下视觉和谐。

这三步总开发时间约 1–2 天,可以让你的项目获得「70% 的赛璐璐视觉效果」,同时保留 100% 的现有 PBR 工具链投资。

中级用户路径:混合渲染管线的架构设计决策框架

当你决定从零设计一个完整的混合渲染管线时,按照以下优先级做出架构决策:

决策一:混合粒度选择——逐物体、逐材质还是逐像素混合

「逐物体混合」(整个物体要么 PBR 要么 NPR)最简单,性能最好,但灵活性最低。「逐像素混合」(同一个物体的不同像素可以有不同的风格化程度)最灵活,但性能成本最高,艺术控制也最难。我们建议独立团队选择「逐材质混合」——每个材质有自己的风格化权重,Shader 在运行时插值。这是灵活性和复杂度的最优平衡点。

决策二:G-Buffer 扩展策略

标准 PBR 的 G-Buffer 没有足够信息存储赛璐璐参数。有三种扩展策略:①增加额外的 G-Buffer 通道(存储风格化权重、材质 ID、Ramp 索引);②复用现有 G-Buffer 的未使用位(如 Albedo 的 Alpha 通道);③在延迟管线的轻量级前向通道中计算赛璐璐效果。策略①最清晰但带宽成本高,策略②是独立团队的务实选择。

决策三:光照系统共用程度

完全共用光照系统(PBR 和 NPR 使用相同的光照数据)可以最小化开发成本,但 NPR 效果会受限。完全分离光照系统可以最大化 NPR 自由度,但需要维护两套光照管线。我们建议「数据共用、计算分离」——共用光照数据纹理,但 PBR 和 NPR 使用不同的光照计算函数。

决策四:后处理栈的分层设计

建立三层后处理栈:①PBR 专属后处理(Bloom、景深);②共用后处理(校色);③NPR 专属后处理(描边、色调分离)。每层后处理可以独立开关,不同类型的物体只经过对应的后处理层。

核心争议:风格化 PBR 是技术进步还是折中妥协

这是赛璐璐技术社区最有分歧的话题,双方都有非常强的论点支撑。

认为「是技术进步」的论点

风格化 PBR 代表了渲染技术的进化方向。它不是牺牲真实感去换取风格,而是扩展了渲染系统的表达空间——系统既可以渲染真实的画面,也可以渲染风格化的画面,还可以渲染两者之间的任意中间态。这种连续性本身就是技术进步。米哈游的商业成功证明了这条路线的可行性。

认为「是两头不讨好」的论点

风格化 PBR 是一种技术上的折中主义。为了保留 PBR 的兼容性,它在赛璐璐的纯度上做了太多妥协。最终结果是:既没有纯 PBR 的真实感,也没有纯 NPR 的艺术冲击力。它是「工业级的 mediocrity」——合格但平庸,永远无法产生《塞尔达传说:风之杖》或《罪恶装备》那样鲜明的视觉识别度。

编辑观点

这个争议本质上是「项目类型决定论」。对于开放世界游戏、需要大量环境资产的项目,风格化 PBR 是正确选择——它可以利用成熟的 PBR 工具链快速制作内容,同时获得足够的风格化效果。对于小体量、艺术导向、角色驱动的独立游戏,纯 NPR 管线可以获得更高的视觉识别度,开发成本反而更低。没有绝对正确的路线,只有适合项目的路线。

我的赛璐璐角色在 PBR 场景中看起来「浮在画面上」,如何解决?

这是混合渲染最常见的视觉问题。根源有三个:①光照不匹配——赛璐璐角色没有正确接受场景的间接光照;②阴影不匹配——角色阴影是硬边,场景阴影是软边;③后处理不匹配——角色没有经过与场景相同的大气和雾效。解决方案按优先级:①确保角色使用与场景相同的 Light Probe 或 GI 系统;②统一阴影参数,或为赛璐璐物体使用自定义阴影投射 Pass;③在赛璐璐渲染之后应用与场景相同的雾和大气效果。特别重要的是「接触阴影」——赛璐璐角色与地面接触的地方必须有细微的阴影,这是消除「浮空感」的关键。

混合管线的 Shader 变体爆炸怎么管理?

Shader 变体数量确实是混合管线最大的技术债务之一。三种管理策略:①使用「 Uber Shader + 运行时分支」而非着色器关键字——虽然有微小的性能开销,但变体数量减少一个数量级;②建立变体白名单,只编译实际使用的变体组合;③使用 Shader Variant Collection(Unity)或 Material Shader Permutation(UE)在项目层面管理。对于独立团队,我们推荐策略①——现代 GPU 的动态分支开销非常低,尤其是在分支条件统一的情况下(整个 Draw Call 走同一条分支),性能损失几乎可以忽略不计。

PC 主机效果很好,但移动端混合管线性能太差,怎么办?

移动端的性能特性决定了它无法承担完整的混合管线。我们建议的移动端降级策略:①在移动端完全弃用风格化 PBR,改用纯 NPR 管线;②使用「材质 LOD」机制——移动端自动切换到简化版 NPR Shader;③关闭移动端的实时 GI,改用烘焙光照贴图。最重要的是建立「跨平台渲染特性矩阵」,明确每个平台启用哪些特性。不要试图在所有平台上获得相同的视觉效果,而是在每个平台上获得该平台能承担的「最优视觉效果」。

关键词

风格化 PBR 技术NPR vs PBR 哲学米哈游渲染技术混合渲染管线架构 自定义 BRDF 函数逐材质风格化权重Lumen 赛璐璐兼容DDGI 风格化映射 GI 量化色阶分层 GI 系统Blender EEVEE NPRSubstance 赛璐璐导出 双管线资产规范幽灵行者 2 技术解析后处理滤镜叠加色调分离 Posterization G-Buffer 扩展策略Shader 变体管理移动端混合管线降级接触阴影消除浮空感
文章标签
赛璐璐渲染Cel-Shading 技术Toon Shader非真实感渲染 NPR米哈游渲染技术Arc System Works 赛璐璐蔚蓝档案美术技术SDF 面部阴影Ramp Texture 光照轮廓线渲染Unity URP Toon ShaderUE5 赛璐璐实践
更多专题全部专题
觉得有价值?点赞或收藏支持内容持续产出。
← 返回专题:赛璐璐游戏美术技术专题