第 4 章 · 效果路线与生态对照 章节摘要:有了通道和状态机,效果仍然不是单解。光照可以逐顶点也可以逐片元,阴影可以平面投影也可以阴影贴图,动画可以每帧改矩阵也可以 GPU 蒙皮。生态上,扩展补丁对 WebGL2 内置、引擎对裸 API、CPU 瓶颈对 GPU 瓶颈,同样要对照着选。本章把常见效果写成路线表,把案例收进性能对照里,不提供社区链接清单。读完你应能按产品约束选出一条主路,并说清另一条的代价。
章节摘要:有了通道和状态机,效果仍然不是单解。光照可以逐顶点也可以逐片元,阴影可以平面投影也可以阴影贴图,动画可以每帧改矩阵也可以 GPU 蒙皮。生态上,扩展补丁对 WebGL2 内置、引擎对裸 API、CPU 瓶颈对 GPU 瓶颈,同样要对照着选。本章把常见效果写成路线表,把案例收进性能对照里,不提供社区链接清单。读完你应能按产品约束选出一条主路,并说清另一条的代价。
阅读完本章,你应当能够:
金句:效果选型是在外观、版本合同、封装控制权、两端账单之间做减法,不是在论文里做加法。
| 主题 | 路线 A | 路线 B |
|---|---|---|
| 光照 | 逐顶点 | 逐片元或 PBR |
| 阴影 | 平面投影 | 阴影贴图 |
| 动画 | CPU 改矩阵 | GPU 蒙皮 |
| 瓶颈 | 减 draw 与上传 | 减片元与纹理 |
顶点处算光照再插值,还是片元处点积。低模高光差很大。PBR 是逐片元路线的延伸,不是另一种管线。
平面投影便宜、假。阴影贴图要离屏深度、采样比较、处理 acne。方向光正交、点光更贵。
环境反射、法线、金属粗糙度如何加通道。与第 2.6 节的过滤合同衔接。
物体级运动走 Uniform;骨骼应把权重当 Attribute、矩阵当纹理或 Uniform 数组。
把 1.0 扩展表映射到 2.0 核心,说明哪些补丁永远补不上。
Three、Babylon、2D 引擎、裸加加载器。glTF 相对自研二进制。
合批、overdraw、状态切换、案例里的典型误诊。
前四节是效果路线,后三节是约束与治理。先选怎么亮、怎么影、怎么动,再看版本和封装允不允许,最后用瓶颈表收口。案例不单独成节,以免变成无法引用外链的空列表。
4.1-4.4 效果怎么走 └► 4.5 版本允不允许 └► 4.6 谁来实现 └► 4.7 账单在哪端
效果路线一旦选定,不要在同一物体上叠两条互斥实现。平面影加阴影贴图通常不是更真,而是两份账单。PBR 加逐顶点烘焙光也容易能量重复。减法写在材质文档里:这个网格用哪条光、哪条影、几张贴图。
生态对照服务于约束。扩展检测失败要能指向 4.5 的降级表;引擎扛不住自定义时要能退回第 2 章的通道语言。第 4.7 节是收口,不是另起一本优化秘籍。
效果节与生态节要交叉读。选了阴影贴图却锁 WebGL1 且没有深度纹理扩展,路线不成立。选了 GPU 蒙皮却每帧 CPU 写回位置,路线名不副实。选了引擎却绕过渲染器改混合,封装合同撕裂。交叉检查比单节的表格更接近项目现场。
第 4.7 节不要当成附录技巧。它是把前六节的选择翻译成账单。账单大的那一端,才值得动刀。动刀前看档位表:低中高三档是否已经覆盖设备。没有档位,优化会在同一条路上反复微调,产品仍只有一档外观。
效果路线与档位一起发布。没有档位的路线会在最弱设备上按最强公式跑。把低中高三档写进第 4.7 节之前,先在本章各节的表格里标好“低档走哪一列”。表格是选型,档位是运营。两者缺一,优化会变成事后补锅。
发布前用第 4.7 节的档位机跑一遍三档。低档仍能看懂产品,高档才上贴图影与 IBL。低档崩了说明路线没有减法。减法是对比驱动的最后一刀:不是都能要。本章把能要的列成表,把不能同时要的留给档位。表和档位一起,文集才收得住。
效果与档位必须一起发布。没有低档的高档公式,会在渠道最弱设备上把填充率打满。把低中高三档提前写进需求,美术按档做槽,程序按档做 pass。事后优化补不出档位。档位是减法的制度化,也是对比驱动在产品上的落点。
七节里前四节选路线,后三节选约束。路线与约束打架时砍路线,不要砍约束去迁就一张效果图。效果图不会在低端机上替你付钱。付钱的是填充率与包体。把这两笔写进档位,再谈新效果。