在计算机图形学中,材质和纹理有什么区别?
这个问题表明了对各种计算机图形概念的普遍误解。这是源于传统着色器思维和编码方式。
纹理不过是一系列一个或多个图像的容器,其中每个图像都是一维、二维等维度值的数组,其中每个值可以是1到4个数字的向量。纹理还有一些特殊的访问值的技术,允许插值和最小化采样所产生的混叠伪影。
纹理可以包含颜色,但并不必须包含颜色。纹理可用于在对象表面上变化参数,但这并不是纹理可用于的全部。
纹理与“材质”没有直接关联;可以将它们用于各种各样的事情(或根本不用)。
材质是照明中的一个概念。给定特定的光源和表面上的一点,该点处反射的光照强度(即颜色)由一个照明方程控制。该方程是许多参数的函数。但这些参数分为两类。
一类光方程参数是光参数。它们描述光源的特性。点光源 vs. 定向光源 vs. 聚光灯。光强度(再次提醒:颜色)是另一个参数。由于强度本身可能根据表面点相对于光的方向而变化(想想手电筒或聚光灯),因此可以从纹理中访问该强度。这就是许多游戏在黑暗的房间中投射手电筒的方式。
光方程参数的另一类描述该点表面的特性。它们称为材质参数。材质参数,或简称材质,描述了该点表面的重要属性。该点法线是其中一个重要的属性。还有漫反射(颜色)、镜面反射、镜面光泽度(Phong/Blinn-Phong的指数)以及其他各种参数,具体取决于您的照明方程的综合程度。
这些值从哪里来?光参数通常在世界中是固定的。灯光不会随着每个物体移动(虽然如果您在物体空间中进行照明,则每个对象都将有自己的光源位置)。光强度可能会有所变化。但这基本上就是它了;任何其他变化都发生在帧之间,而不是在单个帧的渲染过程中。因此,大多数光参数都是着色器统一变量。我对这些术语的理解:
纹理是映射到3D物体上的图像。
材质模拟物理材质。以“玻璃”为例,您无法使用简单的纹理映射产生玻璃效果。它具有不同角度反射和折射光线的参数。材质也可以是简单的纹理映射,因此有时这些术语意味着相同的意思。