可可西

三维图形渲染中常见的贴图

贴图(Map)是美术在ps等软件中制作产生的一张图片。

在三维图形渲染中,贴图与shader组合成材质,用来告诉gpu如何进行绘制,决定了三维模型表面最终呈现出来的颜色。

贴图作为材质中使用的图像。 将它们映射到应用这个材质的表面,然后直接应用到诸如漫反射贴图之类的地方,或者在材质中将贴图的贴图像素值作为蒙板使用,或用于其它计算。在作为HUD时,可直接进行绘制。

贴图格式

贴图有很多格式如:dds、tga、bmp、png、jpg等。

名称 详细说明
dds

使用DXTn算法来按照块(4x4)为单位来压缩存储,有效减少了纹理内存消耗,可被GPU硬件解压缩

支持mipmap层级数据存储,专门为纹理而设计的贴图

8位:R3G3B2

16位:A1R5G5B5、A4R4G4B4、R5G6B5、A8R3G3B2、X4R4G4B4

24位:R8G8B8

32位:A8R8G8B8、A2R10G10B10、X8R8G8B8

64位:A16B16G16R16

 

注:X表示未设置或通道不明(可能是R、G、B、A,或其他含义的数据)

 

一些工具:

① nVidia的Texture Tools for Adobe Photoshop 8.23.1101, 7.83.0628

② nVidia的Legacy Texture Tools

③ nVidia的DDS Thumbnail Viewer

④ nVidia的Windows Texture Viewer

⑤ nVidia的max dds Plugin

tga

非压缩的,支持透明,可用于存储8位、15位、16位、24位、32位图像数据

支持alpha通道、颜色索引、RGB颜色、灰度图

游戏中常常使用tga作为贴图的存储格式

bmp

非压缩的,格式有1位、4位、8位、16位、24位、32位

1位(单色位图): 一个像素只占一位,要么是0,要么是1,所以只能存储黑白信息

4位(16色位图):一个像素4位,有16种颜色可选

8位(256色位图):一个像素8位,有256种颜色可选

16位:X1R5G5B5、R5G6B5、X4R4G4B4

24位:R8G8B8

32位:X8R8G8B8

png

压缩的,格式有8位、24位、32位三种形式

其中8位PNG支持两种不同的透明形式(索引透明和alpha透明)

24位PNG不支持透明

32位PNG在24位基础上增加了8位透明通道

jpg

有损压缩,可按照图片质量来设定压缩比

支持的像素格式:R8G8B8

不支持透明

贴图类型

Diffuse Map(漫反射贴图,也称为颜色贴图;Base Color;Albedo Map -- 反照率贴图,固有色)

用于表现物体被光照射到而显出的颜色和强度   注:需要勾选sRGB,来指明该贴图被编码伽马,需要执行display gamma,将其转换到线性空间

Base Color; Albedo Map -- 反照率贴图,固有色:不要带有任何光照或阴影信息,它存储的是漫反射信息,也就是物体的固有颜色。

 

Bump Map(凹凸贴图)

1978年由Jim Blinn提出,计算顶点光强的时候,不是直接使用该顶点的原始法向量,而是在原始法向量上加上一个扰动得到修改后的法向量,经过光强计算,能够得到凹凸不平的表面效果。

                                           No self-occlusion(无自遮挡),  No self-shadow(无自阴影),No silhouettes(无轮廓)

Displacement Map(置换贴图、移位贴图)

1984年提出,直接作用于顶点,根据Distancement Map中对应顶点的像素值,使顶点沿着法向移动,产生真正的凹凸表面。

Normal Map(法线贴图)

1996年提出,贴图中的RGB表示法向量的xyz,利用此信息计算光强,产生凹凸阴影的效果。No self-occlusion(无自遮挡),  No self-shadow(无自阴影),No silhouettes(无轮廓)

有两种制作法线贴图的方法:

① 从三维的模型渲染出一张法线贴图 (用高模跟低模重叠在一起,把高模上的细节烘焙到低模的UV上,这里需要低模有一个不能重叠的UV)

② 在ps中转换一张高度贴图(height map)成为一个法线贴图。(使用NVIDIA Texture Tools ps插件)

 

Parallax Occlusion Mapping(Virtual Displacement Mapping,视差贴图)

2001年提出,没有修改vertex的位置,以视线和height map计算较陡峭的视角给vertex较少的位移,透过视差获得更强的立体感。

是一种改进的Bump Mapping技术,相较于普通的凹凸贴图,视差贴图技术得到凹凸效果得会更具真实感(如石墙的纹理将有更明显的深度)。

视差贴图是通过替换渲染多边形上的顶点处的纹理坐标来实现的,而这个替换依赖于一个关于切线空间中的视角(相对于表面法线的角度)和在该点上的高度图的方程。

简单来说,Parallax Occlusion Mapping (POM)利用Height Map进行了近似的Texture Offset。

No self-occlusion(无自遮挡),  No self-shadow(无自阴影) 

 

Relief Mapping(Steep Parallax Mapping,浮雕贴图)

2005年提出,有人把它誉为凹凸贴图的极致。更精确地找出观察者的视线与高度的交点,对应的texture坐标则是位移的距离,所以能更正确地模拟立体的效果。Relief Mapping实现了精确的Texture Offset。

浮雕贴图方法不仅更容易提供更深的深度,还可以做出自阴影和闭塞效果,当然算法也稍稍有点复杂,具体细节可以参考这篇中文文献:Relief mapping:凹凸贴图的极致

self-occlusion(自遮挡),  self-shadow(自阴影),view-motion parallax(视觉运动视差), silhouettes(轮廓)

 

Height Map(高度贴图)

灰度图,它通过像素来定义模型表面的高度。像素越白的地方越高,越黑的地方越低,灰色的在中间,从而表现不同的地形。

 

Specular Map(镜面光贴图,也称高光贴图)或Reflective Map或Gloss Map(光泽贴图)

灰度图,像素越白的地方镜面反射越强,越黑的地方镜面反射越弱,用来表现模型表面反光程度(塑料>木头>皮肤>布料),从而区分不同材质

 

Mask Map(Opacity Map,Opacity Mask Map,不透明贴图,遮罩贴图)

 

Emission Map(Emissive Map,Self-Illumination Map [自发光贴图])

仅仅是提高贴图本身的亮度,不受场景光源和摄像机位置影响,也不会照亮其他物体    注:需要勾选sRGB,来指明该贴图被编码伽马,需要执行display gamma,将其转换到线性空间

 

Glow Map(辉光贴图)

模拟闪耀的效果,它不会照亮环境,不受场景光源和摄像机位置影响。过分的辉光效果会使人眼花缭乱,因此常用于模型细小部位,例如机器人的眼睛,装备上的宝石挂饰等

a是没有辉光的效果,c是加了辉光的效果 ,b为通过辉光贴图抠出来的像素

对b抠出来的像素做模糊(blur)处理,模糊会导致向外扩展一些像素,形成辉光的效果,然后再与a图进行Alpha Blend即可

 

Light Map(光照贴图)

把物体光照信息预先烘焙保存到光照贴图中, 实时绘制时不再进行光照计算, 而是采用该贴图来表示明暗效果

 

Shadow Map阴影贴图

可预先烘焙或实时计算。

 

Ambient Occlusion(AO贴图,环境阻塞贴图,Occlusion贴图,也简称为OCC或白模)

使用一张灰度图来表示物体之间相互影响的效果,可以理解为明暗素描那样的一种表现形式,

主要用于改善阴影,贴图中越黑的地方,阴影就会加得越深(若输入一张纯白的AO贴图,相当于关掉了AO效果),给场景(模型)更多的深度,有助于更好的表现模型的细节。

 

Ambient Map(环境照明贴图,也可称为背光贴图)

这里的Ambient不同于AO贴图中的Ambient,它作为Diffuse的一部分,控制着物体背光的色彩变化,同时也对迎光面产生一些影响。

在现实中,物体的背光面仍会受到环境中各种光线反弹的照亮,也不会是纯黑的。环境照明贴图常用在场景灯光不足的情况,用于提高物体暗面的亮度。

 

Environment Map(环境贴图),也称为反射贴图Reflection Map

用一张贴图映射到反射对象上,使得在反射对象上看到场景的影像;这张图可以是一张做好的假的环境贴图,也可以实时生成(把反射对象当作一个虚拟眼睛,实时将场景生成一张虚拟的贴图)。

按照映射的方式又分为:球面环境映射贴图(标准环境映射贴图,Sphere Map)、立方体环境映射贴图(Cube Map)、双抛物面环境映射贴图(Parabola Map)  Spherical, Cubic, and Parabolic Environment Mappings.pdf

 

 

Glossiness Map(光泽度贴图)

PBR材质中用到的贴图,为一张灰度图,用于控制模型微表面粗糙程度。

图中像素越白的地方,微表面越光滑,单个像素的反射光线的方向范围就越集中,高光点就越小越亮,将周围环境映射到模型表面就显得越清晰

 

Roughness Map(粗糙度贴图)

灰度图,与Glossiness Map功能一样,只是图中存储的值是相反的:像素越白的地方,越粗糙

 

Metallic Map(金属度贴图)

PBR材质中用到的贴图,为一张灰度图

越白的地方,金属度越高;越黑的地方,非金属度越高。

对于纯表面,例如纯金属,此值为1;纯石头、 纯塑料等该值为0。

对受腐蚀、落满灰尘或生锈金属之类的混合表面时, 则需要介于0与1之间的值。

很少有金属与非金属之间的过渡物质的表现。因此,金属度贴图的制作要诀就是——高对比,不要画得太灰。

 

Phong贴图管线

 

PBR贴图管线

 

参考

UE3材质 & 贴图 

UE4纹理贴图

高中物理:图形编程

高中物理:Xna编程

polycount Wiki 

Shader中贴图知识汇总: 漫反射贴图、凹凸贴图、高光贴图、 AO贴图、环境贴图、 光照纹理及细节贴图 

(十一) Textures

(十四) Textures-BumpMap

(十五) Textures-DisplacementMap

简述47种Shader Map的渲染原理与制作方法 

游戏资源常见贴图类型

【《Real-Time Rendering 3rd》 提炼总结】(五) 第六章 · 纹理贴图及相关技术

 

posted on 2019-11-10 00:35  可可西  阅读(9044)  评论(0编辑  收藏  举报

导航