其他分享
首页 > 其他分享> > 【游戏开发基础知识】渲染篇

【游戏开发基础知识】渲染篇

作者:互联网

什么是渲染管线?如何绘制3D物体?

https://www.bilibili.com/video/BV1qY4y1V79z/?spm_id_from=333.788&vd_source=61ce3b4e97cb6ce7f80ca3f58607b5fb

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