【游戏开发基础知识】渲染篇
作者:互联网
什么是渲染管线?如何绘制3D物体?
1、前期CPU需要为GPU准备的东西
比如一个正方体的3D模型,都是点组成 Vertex Buffer(顶点缓存)
Index Buffer,根据点的下标绘制三角形
摄像机的数据:位置,方向,FOV,
摄像机不能看的无限远和非常近:近平面(NearClipPlane),远平面(FarClipPlane)裁切、被裁切下来的地方:视锥(Frustum)
灯光数据:方向、颜色、强度等参数
材质球:Shader
准备好数据后交给GPU
2、GPU处理
顶点处理、顶点着色器 :把顶点装换到我们的裁切空间(Clip Space);将模型的顶点变换到世界空间(World Space)、摄像机空间(View Space)、裁切空间(Clip Space)
连接三角形,把三角形投影到我们的屏幕上
光栅化:把三角形变成屏幕上对应的像素,遍历完所有的像素后
像素着色器:可以根据灯光做出明暗变化的效果、根据贴图坐标采样贴图
后处理
什么是Shader
Shader是一堆代码,决定计算机如何渲染我们的模型,跟所有的编译型语言一样,都是要先编译成一个二进制的文件,才能被计算机使用
Shader的语言统称着色器语言(ShaderLanguage)
两种风格:PBR基于物理的渲染、ToonShading风格化渲染
法线贴图Normal Map
概念
笔记:法线的本质是xyz三轴向量,只是为了可读性,借用了RGB的外皮。相较于静态贴图,法线贴图的优势在于可以与光影产生互动。通过法线贴图,相当于把一个复杂模型平面化了,用贴图替换模型演算,减少计算量。
对颜色做一个简单的映射,坐标轴中X * 0.5 + 0.5
就可以表示颜色的RGB了
把法线信息变成颜色,然后把模型凸起的部分给弄回去,这时候模型的法线都是全部朝上的效果,但是我们这个时候不用模型表面的朝向了,而是用模型表面的颜色来跟灯光进行计算,颜色的三个通道,刚好能表示xyz,所以也能表示模型表面的朝向,即使我们现在的模型是一个平面,但是还是能有光影效果,并且随着灯光的转动,也会有一定的立体感
tip:透视效果就需要置换贴图了
法线贴图的存放
把法线朝向的信息变成颜色,想办法变成一张贴图,把这些原始的信息映射到0~1,而这个贴图也就是法线贴图
法线贴图根据API有所不同:G也就是绿通道是相反的,OpenG跟DirectX它们期望的第一个像素有所不同
其实我们真正看到的法线贴图的颜色,饱和度会更高一点,这是因为色彩空间的关系
标签:贴图,法线,颜色,游戏,裁切,渲染,模型,Shader,基础知识 来源: https://www.cnblogs.com/hellogiao1/p/16586164.html