图形学的基本要义
本文最后更新于 2026年7月8日 下午
看上去是对的,那就是对的
这句话其实就是实时图形学里很重要的一条工程原则。
图形学不是单纯追求物理正确,而是在性能、真实感、稳定性之间做取舍。尤其是在游戏里,最终目标不是还原每一条光线,而是在目标设备上稳定地渲染出可信的画面。
核心问题
- 画面是否符合直觉
- 性能是否能接受
- 方案是否稳定
- 美术是否容易调整
很多效果从物理上看并不严格正确,比如 Half Lambert、各种非真实的 Rim Light、手写的 Toon 阴影、后处理里的假光晕等。
但只要画面能表达需要的质感,并且不会引入明显的闪烁、穿帮和性能问题,那它就是一个可用方案。
工程里的取舍
实时渲染通常会遇到几个限制:
- GPU 时间有限
- 带宽有限
- 移动端精度有限
- 美术资源和参数不可能无限细
- 不同设备上的显示效果不完全一致
所以很多时候不是问“这个算法是不是最正确”,而是问“这个算法在当前项目里是不是够用”。
比如阴影可以用 ShadowMap,不一定要做全局光线追踪。环境光可以用 LightProbe 或 SH,不一定要实时 GI。皮肤、头发、水面这些材质,也经常会使用大量近似。
判断一个效果是否可用
通常可以从这几个角度看:
- 静态画面看起来是否正常
- 镜头运动时是否有闪烁
- 强光、暗部、极端角度下是否穿帮
- 在低端机上是否还能跑
- 参数是否足够直观,方便美术调
如果只是某个测试角度下数学上更准确,但实际项目里看不出区别,那就没有必要把复杂度加进去。
注意点
“看上去是对的”不是说可以随便写。
它的前提是要知道自己省略了什么,代价是什么,会在哪些场景下出问题。
如果这个近似方案会导致角色边缘闪烁、阴影断层、颜色空间错误、透明物排序异常,那就不能算对。图形学里的很多问题,最后还是要回到画面、性能和稳定性上判断。
图形学的基本要义
https://nicoier.github.io/2024/08/30/图形学/