【Unity3D】3D渲染流水线总结

3D渲染流水线:

CPU阶段(应用阶段):

1、加载数据:硬盘->内存->显存

场景数据从硬盘HDD加载到内存RAM,网格和纹理等数据会再次加载到显存VRAM,显卡对显存访问速度更快。

2、设置渲染状态

渲染状态:材质、纹理、Shader等

3、调用Draw Call

CPU调用渲染命令Draw Call通知GPU进行渲染。

GPU会根据渲染状态和顶点数据进行计算,最终输出到屏幕显示出像素点。

几何阶段:

1、顶点着色器:能够对网格的单个订单进行操作,必须实现将顶点坐标从模型空间转换到齐次裁剪空间。

后续交由Unity将齐次裁剪空间由硬件做透视除法,得到归一化的设备坐标NDC -1,1

2、曲面细分着色器:细分图元。

3、几何着色器:执行逐图元操作,可产生更多图元。

4、裁剪:剔除不在摄像机视椎体内的顶点和三角图元面片。

5、屏幕映射:将每个图元的坐标转换到屏幕空间。(-1,1+2)/2转0,1 再乘以屏幕分辨率

光栅化阶段:

三角形顶点插值运算边界坐标点;

三角形设置:使用几何阶段输出的三角形顶点屏幕坐标进行插值运算得出三角边界坐标点。

扫描屏幕像素判断位于三角网格内就生成片元,

(扫描变换)三角形遍历:检查每个像素是否被三角网格覆盖,如果被覆盖就会生成一个片元。

片元着色器:

通过片元的纹理坐标对纹理进行采样得到颜色值,可以对这个颜色值进行修改输出。

逐片元操作(输出合并阶段)

①模板测试、深度测试,决定每个片元是否可见,通过测试才可见。

②通过测试的片元颜色值和颜色缓冲区的颜色进行合并(混合),再放回颜色缓冲区。

混合操作默认是 Blend One Zero 直接覆盖颜色缓冲区的,透明是Blend SrcAlpha OneMinusSrcAlpha

相关推荐
qq_2842740516 分钟前
机械设计基础·滚动轴承全解(类型·代号·选型·寿命)+轮系与蜗杆蜗轮传动
笔记·学习·自动化·制造
2603_965148115 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
kaixin_啊啊7 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习
xier_ran8 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
mxwin8 小时前
Unity Shader 光线追踪原理与实战案例
unity·游戏引擎
别动我齐刘海10 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
m4Rk_10 小时前
【论文阅读】Agent 记忆机制(99):PrisMem——从整体分数搜索走向能力驱动的记忆自进化
论文阅读·人工智能·学习·开源·github
PC2005-cloud12 小时前
Mysql学习笔记:InnoDB Cluster 集群从零搭建实战,基于 Docker 实现高可用读写分离架构
笔记·学习·mysql
小陈phd12 小时前
深入理解agent学习笔记(七)——动态提示词与Skills
笔记·学习
我命由我1234512 小时前
田野笔记极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法