你有没有这种体验:
同一个角色模型、同一张贴图,换个 Shader——哎哟,立马像换了一个人:
- 一秒变“金属盔甲”,再一秒变“塑料玩具”,再来个“玻璃雕像”
- 皮肤突然柔柔的、有点透光;头发的高光像打了发蜡
- 地面变水面,波光粼粼还会反射天空
- 火焰烧起来、冰面发亮、还带点“冷得发蓝”的质感
- 再一换:卡通描边,像动画片;像素风抖动,像老游戏;故障风闪烁,像信号坏掉
很多新手会觉得这像魔法:
“贴图没变,模型没变,怎么画出来差这么多?”
其实一点都不神秘。Shader 不是什么“换皮工具”,它更像一个像素加工厂的规章制度:
同样一块“原材料”(模型+贴图),你给工厂下不同的生产指令,它就能做出不同的成品。
这篇文章就用大白话,从底层逻辑上讲清楚:
Shader 到底改了什么,才让同样的模型贴图看起来像金属、像塑料、像玻璃、像皮肤、像火、像水、像卡通、像故障?
我们会按“从最底层到最表面”的顺序讲:
- GPU 在干什么(顶点→像素)
- Shader 最核心的三件事(怎么上色、怎么受光、怎么混合)
- 不同材质观感差别,究竟差在哪些参数/公式/步骤
- 各种效果的典型实现套路(你能直接拿去做)