《Render Hell——GPU入门》学习笔记
系列原文:Render Hell —— 史上最通俗易懂的GPU入门教程(一)
第一部分 · 渲染基础
当 VRAM 显存中的纹理不再被需要时, RAM 内存中将其删除, 而顶点数据则仍然需要保留在 RAM 中,因为大多数情况下 CPU 仍需要访问这些数据(比如碰撞检测(Collision Detection))。
GPU中含一小片内存 片上缓存(on-chip Cache) 拷贝小部分数据到此缓存以加快效率;其中含 二级缓存(L2 Cache) 访问速度要比 VRAM 快很多 、一级缓存(L1 Cache)十分靠近 GPU 的 Core;GPU还有一块专用于 GPU Core 数据输入与输出的预留内存:寄存器 或 寄存器堆(register file)。
Draw Call (绘图调用)所谓 Draw Call 就是一条用来渲染网格的命令,它由 CPU 发出,并被 GPU 接收。该命令仅指向一个需要被渲染的网格,它不包含任何材质信息,因为这些信息早已在 Render State 中被设置。此时的网格正位于你的显卡中(VRAM) 。
Render State 是网格渲染方式的一种全局定义,它包含顶点、像素着色器、纹理、材质、光照、透明度等。
GPU 使用 Render State(材质、纹理、着色器)和所有顶点数据,通过代码魔法将这些信息转换为屏幕上的彩色像素,这个转换过程也被称为 Pipeline(流水线/管线)。 允许多条 Pipeline 同时运行。
渲染 说白了就是 在同一时刻做大量的简单小任务,比如:计算上千个顶点,或者在屏幕上绘制数百万个像素点,这些任务至少要满足 30fps 的要求。 如今的 CPU 已经有6-8个 Core 了,而 GPU 却有上千个 Core。
CPU将绘图指令放入 FIFO 先入先出的Command Buffer(命令缓冲区),其中含 Draw Call 命令和 修改 Render State 命令。</