贴图、纹理、材质的区别是什么?
Shading和Shader又是什么?
那么 UV Mapping 又是什么?跟 Texture Mapping 有什么区别呢?
-
材质 Material包含贴图 Map,贴图包含纹理 Texture。
纹理是最基本的数据输入单位,游戏领域基本上都用的是位图。 -
贴图的英语 Map 其实包含了另一层含义就是“映射”。其功能就是把纹理通过 UV 坐标映射到3D 物体表面。贴图包含了除了纹理以外其他很多信息,比方说 UV 坐标、贴图输入输出控制等等。
-
材质是一个数据集,主要功能就是给渲染器提供数据和光照算法。Material 是表现 Shading 的数据集。其他几个概念都是生成这一数据集的资源或者工具。
贴图就是其中数据的一部分,根据用途不同,贴图也会被分成不同的类型,比方说 Diffuse Map,Specular Map,Normal Map 和 Gloss Map 等等。另外一个重要部分就是光照模型 Shader ,用以实现不同的渲染效果。
image.png
-
UV Mapping代表着映射规则,目标是将材质用这种规则映射到物体表面。
image.png -
什么是渲染?
渲染游戏模型、模拟波动的海面河流、实现各种屏幕效果。
- 什么是渲染流水线?
应用阶段->几何阶段->光栅化阶段
应用阶段:有CUP准备好所有的场景数据。
几何阶段:绘制的图元是什么,如何绘制,在哪里绘制,在GPU完成。
光栅化阶段:将几何阶段产生的数据填充到屏幕上的像素,最终渲染出最终的图像,也是在GPU上运行的。
-
GPU和CUP有哪些通信?
1、将场景数据加载到显存中。
2、设置渲染状态。
3、调用Draw Call。 -
GPU流水线
1、定点着色器,转换顶点坐标得到齐次裁剪坐标,再由硬件做透视除法后,最终得到归一化的设备坐标。
2、裁剪,裁剪掉摄像机视野范围很可能不会覆盖到的场景物体。
3、屏幕映射
4、三角形设置,检查每个像素是否被一个三角网络所覆盖,如果覆盖就会产生一个偏远。
5、三角形遍历,由三角形遍历阶段得出一个三角网格覆盖了哪些像素,并使用三角网络的3个顶点的顶点信息对这个覆盖区域进行插值。
6、片元着色器。
7、逐片元操作。会进行模板测试和深度测试。 -
Unity平台已经封装了很多功能,只需要在Unity Shader设置一些输入、编写顶点着色器和片元着色器,设合资一些状态就可以达到大部分常见的屏幕效果。
-
DrawCall,本身含义就是CPU调用图像编程接口,OpenGL或者DirectX中的命令,以命令GPU进行渲染的操作。GPU和CPU直接有一个命令缓冲区,但是GPU的执行命令效率往往比CPU要高。
如何减少Draw Call?
批处理是办法之一,原理是把很多小的DrawCall合并成一个大的DrawCall,批处理技术适合于哪些静态的物体。避免使用大量很小的网格。避免使用过多的材质,尽量在不同的网格之间共用一个材质。 -
Shader再定义:GPU流水线上一些可高度编程的阶段,依靠一些着色器控制流水线中的渲染细节。
-
Unity中Shader工作流程:
1、创建一个材质。
2、创建一个Unity Shader,并把它赋值给材质。
3、将材质赋给要渲染的对象。
4、在材质面板中调整Unity Shader的属性,得到满意的效果。 -
矢量的点积
两个矢量对应的分量相乘后再取和。
几何意义:投影,点积a.b可以理解为b在a方向上的投影值,再乘以a的长度。
数学上,两个单位矢量的点积等于它们之间夹角的余弦值。
游戏上,点乘得到你当前的面朝向的方向和你到敌人的方向的所成的角度大小。 -
矢量的叉积
根据叉乘大小,得到a,b向量所形成的平行四边形的面积大小,根据面积大小得到向量的相对大小。
游戏上,叉乘可以判断方向。
网友评论