CPU和GPU区别{
GPU 具有高并行结构
GPU 在处理图形数据和复杂算法方面拥有比 CPU 更高的效率
CPU 大部分面积为控制器和寄存器
GPU 拥有更多的 ALU
CPU 执行计算任务时,一个时刻只处理一个数据,不存在真正意义上的并行
而 GPU 具有多个处理器核,在一个时刻可以并行处理多个数据。
}
CPU cache缓存一致性{
}
流水线{
}
GPU所需要做的是将三维的数据,绘制到二维屏幕上{
object space coordinate * world matrix(四阶矩阵 x,y,z,w) => world space coordinate
=> eye space(视锥体){
(超过的数据被裁减)
1. 用透视变换矩阵把顶点从视锥体中变换到裁剪空间的 CVV 中;(投影)
2. 在 CVV 进行图元裁剪;
3. 屏幕映射:将经过前述过程得到的坐标映射到屏幕坐标系上。
完全在外面的要剔除
一半在外面的要进行裁剪
还有三角形剔除操作(右手法则判断和视线方向点积为正正方向,否则为负){
减少了绘制的顶点数量
}
} => 光栅化{
决定哪些像素被图元覆盖(屏幕坐标浮点数,像素整数,四舍五入)
片段着色器{
消除遮挡面(深度测试)
查询纹理值
混色(颜色RGBA+Z)(使用over操作符进行混合cd =a*ca +(1−a)cs){
半透明渲染操作
}
Filtering,将正在算的颜色经过某种 Filtering(滤波或者滤镜)后输出
然后像素颜色被写入帧缓冲区
Z精度太小可能特别近的两个物体产生随机遮挡
模版缓冲区 和zbuffer绑定 用来标记 是否在阴影体中 1在
}