










可以把“材质、纹理、Shader”理解为决定物体“看起来什么样”的三层结构:
材质 = 配置文件,纹理 = 贴图数据,Shader = 计算规则。三者缺一不可,又各司其职。
纹理本质上是一张或多张图像(像素数组)。
它不关心“怎么用”,只负责存储颜色/数值信息,供 GPU 读取。
|
纹理类型 |
作用 |
|---|---|
|
漫反射纹理(Albedo/Base Color) |
表面基础颜色,如皮肤色、木头纹路 |
|
法线纹理(Normal Map) |
扰动法线方向,模拟凹凸细节 |
|
粗糙度 / 光泽度纹理 |
控制表面粗糙还是光滑 |
|
金属度纹理(Metallic) |
区分金属 / 非金属区域 |
|
AO 纹理(Ambient Occlusion) |
阴影遮蔽,增强缝隙暗部 |
|
高度 / 置换纹理 |
实际移动顶点,产生几何起伏 |
可以把纹理理解为:给 Shader 准备的“原材料”。
Shader 是运行在 GPU 上的小程序。
它定义了:
顶点如何变换(Vertex Shader)
每个像素最终颜色怎么算(Fragment/Pixel Shader)
读取纹理中的数值
结合光照模型(如 Blinn-Phong、PBR)
计算最终显示在屏幕上的颜色
示例简化逻辑:
Shader 不存“具体长什么样”,它只规定“如果有这些数据,该怎么算”。
材质是一个资源/参数集合。
它的作用是:
指定使用哪个 Shader
为这个 Shader 提供具体的纹理和参数值
Shader 引用(例如:PBRShader)
纹理赋值:
Albedo Map = “Wood.png”
Normal Map = “Wood_Normal.png”
标量参数:
金属度 = 0.2
粗糙度 = 0.6
自发光强度 = 1.5
材质相当于:“用这个 Shader + 这些贴图 + 这些数值,去画这个物体”。
四、三者关系总结(核心理解)
一句话概括:
Shader 决定“计算方法”,纹理提供“输入数据”,材质把两者绑定在一起并应用到具体物体。
工作流程示意
五、一个直观类比:画画
图形概念
现实类比
模型
画布形状(画在纸上还是木板上)
纹理
颜料、照片素材
Shader
绘画技法(水彩、油画、素描)
材质
整幅画的“配方”:用什么技法 + 什么颜料
六、常见误区澄清
“材质就是贴图?”
错。材质可能包含贴图,但也包含 Shader 和大量参数。
“Shader 里已经写了贴图,还要材质干嘛?”
Shader 只是声明“我需要一张贴图”,真正指定“用哪一张”的是材质。
“同一个 Shader,不同物体看起来不一样?”
因为材质不同(贴图或参数不同),Shader 是复用的。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。