技术美术百人计划学习笔记(1)--基础渲染管线

一、基础渲染管线

学习视频链接:https://www.bilibili.com/video/BV1L54y1s7xw?spm_id_from=333.337.search-card.all.click

开篇第一句先给自己打个气,希望自己可以坚持学习。
渲染管线的作用:就是通过一系列的处理,把场景的3D元素转化为屏幕的2D图像。

渲染流程主要分为以下阶段
1、应用阶段
2、几何阶段
3、光栅化阶段
4、逐片元操作
5、后处理

1、应用阶段

应用阶段主要是在CPU上完成的,

  • 准备基本场景数据
    包括场景数据。物体变化数据:位置旋转、缩放等;物体网格数据,顶点数据,UV贴图、法线等。
    摄像机数据,代表了观察视角。位置、方向、远近裁剪平面、摄像机模式正交或者透视等
    光源以及阴影数据。光源的类型,光源的位置,方向等参数
    其他全局数据

  • 加速算法,粗粒度剔除
    准备好上面的渲染的场景对象数据之后,我们还要做一些优化,比如算法上的加速,或者干掉一些看不见的不需要渲染的物体,做一些剔除。可见光的裁剪,可见场景物体的裁剪。
    碰撞检测
    加速算法
    遮挡剔除
    其他算法

  • 设置渲染状态,准备渲染参数
    就是采用什么样的方式去渲染物体
    绘制设置,不同的物体我们可能使用不同的shader去渲染,设置不同的合批次方式。
    绘制顺序,是由远及近渲染还是先渲染不透明物体,再渲染透明物体等绘制顺序
    渲染目标,渲染完成以后,我们要把渲染的结果输出到哪里,是RenderTexture 还是FrameBuffer
    渲染模式, 例如unity的前向渲染或者延迟渲染

  • 调用drawcall,输出渲染图片到显存
    设置好渲染状态以后,我们就会调用drawcall,把带有数据的图元输出到显存上,去交给GPU显示。
    顶点数据
    其他数据

2、几何阶段

几何阶段主要是对顶点进行一系列坐标变化,从模型空间到世界空间(M变化),再从世界空间到观察空间(V变换),最后到裁剪空间(p变换,裁剪变化或投影变换),然后通过齐次坐标除法得到NDC坐标,最后通过屏幕映射得到得到该顶点的像素坐标。

  • 顶点着色器(可编程)
    空间变换,通过MVP矩阵变换,把物体的顶点从模型空间–世界坐标系下–观察空间–齐次裁剪坐标
    顶点顶点着色
  • 曲面着色器/几何着色器
    可选步骤
    曲面着色器是按照一定的规则和算法来生成更多的顶点,将现有的图元和网格细分,变的更加平滑。
    几何着色器是基于图元操作的,这个图元可能是一个顶点,也可能是一个线段,也可能是一个三角形,或者其他,它是通过给定的图元去生成更多的图元。
  • 投影
    正交/ 透视
    从3D空间到2D空间的一个转换过程,会在裁剪空间进行一个xyzw的透视除法,对于正交的w=1,这样顶点的位置xyz除完w都不会有变化,就不会有近大远小,而透视w为近小远大。从而把投影坐标系转换到了标准坐标系NDC
  • 裁剪
    视椎体裁剪CVV
    正面或背面剔除(可配置)
    在裁剪空间以外的,都把他干掉。openGL维度xyz(-1,1)
  • 屏幕映射
    从连续到离散,从三维变到二维
    从标准坐标系映射到屏幕坐标系中

3、光栅化阶段

  • 三角形设置
    计算图元的边界信息
  • 三角形遍历
    遍历所有像素,检查是否被三角形所覆盖,如果被覆盖,这说明这个片元属于这个三角形,会根据被三角形顶点进行线性差值得到当前的片元数据。
  • 抗锯齿
    SSAA:渲染到一个分辨率大N倍的buffer,然后对放大N倍的Buffer进行采样
    MSAA:在光栅化阶段,计算多个覆盖样本
    FXAA/TAA:后处理技术

4、逐片元操作

  • 片元着色器
    输出片元颜色,根据三角形三个顶点的颜色进行线性插值,类似还可以得到法线,uv信息,深度信息等,然后利用片元数据和其他全局数据,比如光照阴影等等去计算,得到最终的片元颜色
  • 颜色混合
    透明度测试
    透明度小于给定阈值的片元就会被舍弃不渲染
    深度测试
    深度可以选择覆盖方式 大于小于等于等,也可以设置是否写入深度缓冲区
    模板测试
    模板测试是比较模板值,也是可以大于小于等于,也可以设置是否写入模板缓冲区
  • 混合
    同一像素可能有多个片元,对不同片元颜色进行混合,得到最终颜色
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值