《real-time提炼总结 第三章》《unity shader 入门精要 第二章》
#CPU与GPU之间
渲染流水线的起点是CPU,即应用阶段
应用阶段大致分为三个阶段:
- 把数据加载到显存中
- 设置渲染状态
- 调用DrawCall
把数据加载到显存中
硬盘(HDD)----------------->内存(RAM)--------------->显存(VRAM)
|____________CPU____________| |_____GPU_____|
- 显卡对于显存的访问速度更快,而且大多数显卡对于RAM没有访问权
设置渲染状态
- 渲染状态:定义了场景网格是怎样被渲染的
- 通过对渲染状态的改变,可以得到诸如明暗处理的应用,雾化效果的使用等光栅化操作
- 渲染状态同时控制纹理的类型和纹理过滤器如何工作
调用DrawCall
- DrawCall:实际上就是一个命令,CPU发出,GPU接收,仅仅指向一个需要被渲染的图元列表
- 当给定了一个DrawCall,GPU就会根据渲染状态和所有输入的顶点数据来进行计算,最终输出成屏幕上的像素,这个计算过程就是GPU流水线
#GPU流水线
- NVIDIA提出了图形处理单元(Graphics Processing Unit,GPU)这一术语。
- GPU实现了几何和光栅化概念管线阶段
- GPU通过实现流水线化大大加快了渲染速度
绿色:完全可编程 黄色:可配置但不可编程 蓝色:由GPU固定实现
实线:该shader必须由开发者编程实现 虚线:该shader是可选的
^《Unity shader 入门精要》
^《Real-Time Rendering》
跟上一章的流水线略有不同……
顶点数据:
- 由应用阶段加载到显存中,再由DrawCall指定。随后被传递给顶点着色器。
顶点着色器:
- 在顶点着色器之前,发生了一些数据操作,在DirectX中叫输入装配(InputAssembler)的阶段 ,会将一些数据流组织在一起,以形成顶点和基元的集合,发送到管线
- 完全可编译,由开发者编程实现,
- Vertex Shade