目录
笔记导航:
LE7--渲染系统4:渲染管线,后处理:https://blog.csdn.net/m0_56399931/article/details/124790469
LE6--渲染系统3:游戏中的地形/天空/云渲染:LE6--渲染系统3:yo地形/天空/云渲染_This is MX的博客-CSDN博客
LE5--渲染系统2:光照、材质、Shadow:Games104笔记---LE5--渲染系统2:光照、材质、Shadow_This is MX的博客-CSDN博客
LE4--渲染系统1:渲染基础:Games104笔记---LE4--渲染系统1:渲染基础_This is MX的博客-CSDN博客_渲染系统
LE3--基础架构2:数据组织与管理:Games104笔记---LE3--基础架构2:数据组织与管理_This is MX的博客-CSDN博客
LE2--基础架构1:引擎架构分层整体Pipeline:Games104笔记---LE2--基础架构1:引擎架构分层整体Pipeline_This is MX的博客-CSDN博客
LE1--现代游戏引擎导论:Games104笔记---LE1--现代游戏引擎导论_This is MX的博客-CSDN博客
这个部分看一下games101和opengl会好很多
游戏引擎渲染的挑战:
(1)要做到数以万计的物体具有数十种效果
(2)需要了解CPU和GPU的复杂组合处理的现代计算机架构
(3)需要达到稳定的帧率
(4)限制CPU带宽和内存的占用
![](https://img-blog.csdnimg.cn/img_convert/8b69cc8d3ec98f3a4be45a3ecb316b77.png)
![](https://img-blog.csdnimg.cn/img_convert/d63bebdc079236da4297a65269920aef.png)
渲染流水线:
Shader预备知识一-------渲染的基本工作流程_This is MX的博客-CSDN博客
这个其实很全了,但是比较简略,但是适合入门
![](https://img-blog.csdnimg.cn/img_convert/7dcb7bb314465a0e9e1905d94d1e6e45.png)
GPU架构:
指令:
SIMD:单指令多数据操作
SIMT:单指令多线程操作。并行计算中使用的一种执行模型,其中单指令、多数据(SIMD)与多线程相结合
![](https://img-blog.csdnimg.cn/img_convert/e04477d397eab30248beb11d5e4815a9.png)
GPU运算单元:
GPC:用于计算、光栅化、着色和纹理的专用硬件块
![](https://img-blog.csdnimg.cn/img_convert/6d15137a095032e44a61cb8160b590ad.png)
CPU向GPU传输数据:
![](https://img-blog.csdnimg.cn/img_convert/ae8130241caa975f7fffb2f5811d9cbc.png)
缓存效率:
我们要尽可能的提高缓存命中效率,因为如果不命中需要进内存里面进行获取,这个操作是非常消耗的。
![](https://img-blog.csdnimg.cn/img_convert/8a3d00bdb3f1ee8118ad7de240315e70.png)
GPU性能边界:
![](https://img-blog.csdnimg.cn/img_convert/fa67dbe513af374b65b3808feef20bdf.png)
手机渲染架构:
![](https://img-blog.csdnimg.cn/img_convert/2383cd81ff882abdabaab70e2fb187bb.png)
当代硬件渲染架构:
渲染数据组织:
mesh系统:
![](https://img-blog.csdnimg.cn/img_convert/788d5038b01213b245df0c3bf664ccf5.png)
我们可以需要分开存顶点数据和索引数据,并且每个顶点都要有法线数据。
![](https://img-blog.csdnimg.cn/img_convert/dcd0f7699f4d70b07e262912a61b9f42.png)
材质系统:
常见的光照模型 Phone,Bilin-Phone,PBR
![](https://img-blog.csdnimg.cn/img_convert/04a926bf5a49c3db4a0a33cedf4664e0.png)
光照模型也需要贴图控制
![](https://img-blog.csdnimg.cn/img_convert/84e76d830d5d9dda84084e0d21aa0437.png)
Shader用来表达这个光照模型
多材质系统
![](https://img-blog.csdnimg.cn/img_convert/2ec9b7892b4f72812650082f7dfa946d.png)
那我们怎么表现多材质呢,我们可以将各个部分的数据存储到同一个buffer的不同的连续位置,我们再用的时候就只需要offset就能够使用。
![](https://img-blog.csdnimg.cn/img_convert/cb7cb3110dfeeedb428d6d9934586eed.png)
实例化渲染:
相同的纹理、材质、网格渲染,对渲染命令进行合并提交
![](https://img-blog.csdnimg.cn/img_convert/ed67f879126dc5ed1130af30477e5639.png)
对材质进行排序对相同的材质只提交一次渲染命令
![](https://img-blog.csdnimg.cn/img_convert/d18461a8a135ee5ab597c7f94a5f9d9e.png)
裁剪:
我们会将不在摄像机视锥体的图元进行裁剪
![](https://img-blog.csdnimg.cn/img_convert/b847009119ef0b771eb940c428af1a42.png)
包围盒:
![](https://img-blog.csdnimg.cn/img_convert/e01fa068595e0df86909fd91c605ad4f.png)
空间划分:
我们如果使用空间划分,就可以减少很多的复杂度,不用每个都去问询。
PVS:
PVS可以大大的提高裁剪速度和资源加载的效率
![](https://img-blog.csdnimg.cn/img_convert/60ec3ff82b9b495baf082b5e54186e23.png)
![](https://img-blog.csdnimg.cn/img_convert/312d11e5f27a669f2cdf1a9ff81dd531.png)
GPU Culling:
![](https://img-blog.csdnimg.cn/img_convert/a5a9d2e46b77088d3414ff59d3bf066a.png)
Earlyz
就是将深度测试提前到光栅化的片元着色器之前,这样片元就会提前被舍弃,但是这个操作其实还是有一些问题的,比如说如果渲染的排序是从后往前渲染这个的优化效果就很拉,并且如果手动写入深度值或者开启了alphatest或者舍弃片元的操作,那么gpu就会关闭early-z直到下次clear z-buffer后才会重新开启
Hiz
全名Hierarchical Z,和z-perpass一样也是一种软件技术,据说这项技术最早是在《刺客信条:大革命》中使用的。其核心原理是利用上一帧的深度图和摄像机矩阵,来对当前帧的场景做剔除,对于剔除后的物体进行绘制新的深度图和GBuffer,然后再用新的深度图和当前摄像机矩阵再对当前帧的场景做剔除,对剔除后的物体进行绘制更新刚刚的深度图和GBuffer。之所这种看起来十分复杂的方法能提高效率,是因为每一帧的绘制都已上一帧的绘制结果为基础。我们假设相邻两针差距不会特别大,那么以上一帧的深度图作为结果来对当前帧可见的物体进行筛选,可以得到绝大部分。
纹理压缩:
这个可以看这个:
图形学入门---纹理压缩_This is MX的博客-CSDN博客
纹理压缩一般不能选择压缩得最小的方法,因为无法随机访问。
![](https://img-blog.csdnimg.cn/img_convert/398b8b4ae4909d76d7e5a0bac51f6734.png)
块压缩算法:
![](https://img-blog.csdnimg.cn/img_convert/1442a2b8d09e75cb34a9a628caba0774.png)
建模工具:
Maya,blender, Zbrush
程序化生成:
![](https://img-blog.csdnimg.cn/img_convert/b3f953d23b85e15aca978c7fd66654b8.png)
![](https://img-blog.csdnimg.cn/img_convert/ec8e6b47c6a2e411ef535c5a5717d77e.png)
Cluster Based 渲染:
将精细的模型分成多个多个mesh块,进行渲染。并且基于mesh块,我们以前只能对单个物体进行裁剪,但是现在我们也能够对单个物体的mesh块进行裁剪。
![](https://img-blog.csdnimg.cn/img_convert/65e96c6345387ad0dcd202cf943e039d.png)
![](https://img-blog.csdnimg.cn/img_convert/4f72112069ef6831e4bc7cdb073f37cb.png)
![](https://img-blog.csdnimg.cn/img_convert/3fcf29e4630863384488272a416a8bd3.png)
PILOT引擎:
https://github.com/BoomingTech/Pilot
![](https://img-blog.csdnimg.cn/img_convert/788f0af3f850406a4aa6d040638363c8.png)
![](https://img-blog.csdnimg.cn/img_convert/705976c892a2a4ecfae7825e1a822e32.png)
作业:
![](https://img-blog.csdnimg.cn/img_convert/d4494cbf410950b388d9e4abe2eb2cc4.png)
学习资料:
Games104