US3S2L11——遮罩纹理基本概念
US3S2L11——遮罩纹理基本概念
纹理图片存储的数据
纹理(图片)中可以存储的数据可以是
- 颜色(单张纹理)
- 法线、高度(凹凸纹理)
- 漫反射光的强度色(渐变纹理)
一张图片中主要存储的就是像素点数据,
常见情况下,一个像素点存储的 RGBA 值通常占据4个字节
每个颜色通道 R(红),G(绿),B(蓝),A(透明度)通常使用1个字节(8位)来表示
RGBA值中的每个通道通常使用 0~255 之间的整数表示
我们完全可以在图片数据中存储非颜色的数据
比如我们之前学习凹凸纹理时,在图片数据中我们实际上存储的是:
- 法线数据(RGBA中的 RGB 分别存储模型表面点的法线数据的 XYZ 分量,A 一般为1)
- 高度数据(RGBA中的 RGB 存储的值相同,为模型表面点的高度数据,A 一般为1 )
而 遮罩纹理 本质上就是在图片中的RGBA内存储各种数据,用于参与渲染相关的计算,从而达到我们的目标效果
遮罩纹理
遮罩纹理通常用于控制或限制某些效果的显示范围。它允许我们可以保护某些区域,使它们免于某些修改。
一般情况下,遮罩纹理也会是一张灰度图,其中的RGB值会是相同的
我们利用它存储的值参与到
- 光照(指定某些区域受光影响的程度)
- 透明度(指定某些区域透明的程度)
- 特效(指定某些区域出现特效)
等等相关的计算中,从而来让指定区域达到我们想要的效果
以高光遮罩纹理举例,下图三个胶囊体的对比就是高光遮罩纹理起到的效果
利用高光遮罩纹理,我们可以控制模型上的各个区域,受到高光影响的强弱
原本直接使用 BlinnPhong 光照模型的右侧模型高光较多,模型偏亮,反射偏多
而使用高光遮罩纹理后(中间纹理),胶囊体的高光被控制住了,使模型没有那么亮,但也不至于没有高光,砖石材质的显示效果更自然了
高光遮罩纹理的基本原理
高光遮罩纹理的基本原理是:
- 从纹理中取出对应的遮罩掩码值(颜色的RGB值都可以使用)
- 用该掩码值和遮罩系数(自己定义的)相乘得到遮罩值
- 用该遮罩值和高光反射计算出来的颜色相乘
最终呈现出来的高光反射表现就会受到 高光遮罩纹理 和 遮罩系数 的影响,从而表现出最终效果
遮罩纹理中的RGBA值
对于高光遮罩纹理中的RGBA值,从使用率上来讲是非常浪费的,因为我们只使用其中一个值就可以得到我们想要的数据
因此对于遮罩纹理来说,我们可以合理的利用其中的每一个值来存储我们想要的数据
随着以后的学习,我们可以在遮罩纹理当中存储更多信息,比如:
- R值代表高光遮罩数据
- G值代表透明遮罩数据
- B值代表特效遮罩数据
等等,甚至可以用 n 张遮挡纹理存储 4*n 个会参与 每个片元渲染计算的值