1.1渲染流水线

https://docs.qq.com/slide/DUGZtZlVtQVBRaFli
https://www.bilibili.com/video/BV1L54y1s7xw?p=2&spm_id_from=pageDriver

应用阶段

1.准备基本的场景数据
2.加速算法,粗粒度剔除
3.设置渲染的模式和状态
4.调用DrawCall传送给GPU

  1. 准备基本的场景信息
    1. 场景物体信息
      1. 物体的网格信息
        物体的变换信息
    2. 光源信息
      1. 光源类型
        光源的位子 朝向 角度
    3. 摄像机的信息
      1. 摄像机的位子 朝向
      2. 摄像机的模式 正交或者投影
      3. 摄像机的大小宽度比例
    4. 光源和阴影
      1. 光源的种类
        1. 方向光源:颜色 朝向
        2. 点光源: 位子 范围 颜色
        3. 锥形光: 颜色 位子 朝向 锥角
      2. 阴影的信息
        1. 是否有可接受阴影的物体
        2. 阴影的信息 如强弱 以及一些优化算法
      3. 逐片元的构建一个阴影的贴图以备后用

粗粒度剔除与算法加速

  1. 可见光裁剪
  2. 可见物体裁剪

渲染设置

绘制设置
  • 使用不同着色器
  • 合批方式
绘制物体的顺序
  • 物体的先后顺序
  • UICanvas的顺序
  • Queue给定的顺序
渲染目标
  • framebuffeer
  • rendertexture
渲染模式
  • 前向渲染
  • 延迟渲染

输出到显存(交给GPU)

  • 顶点数据
  • 其他数据

##几何阶段

顶点着色

视图变换

MVP矩阵

顶点着色

可选顶点处理

曲面细分

如把一个六边形组成的球体分成更多的球体

几何着色器
  • 将线段 顶点 三角形等信息继续拆分

投影

正交

没有消失点前后大小相同

透视

有消失点

裁剪

CVV

剔除出在视口范围内的顶点

正面或背面剔除

可以实现是否保留被遮挡的部分

屏幕映射

从连续到离散

把连续分散到像素

坐标系差异

映射到想要的分辨率SSAA?

#光栅化阶段

三角形设置

取三角形的顶点

三角形遍历

对于每个三角形对应的图元进行线性插值保存相应的数据为后续阶段的操作进行铺垫 注意一个像素可能是多个图元的叠加

抗锯齿

SSAA 放大分辨率实现抗锯齿
MSAA 在当前阶段进行 采样多个点 覆盖测试判断该点是否被图元覆盖 遮挡测试就是计算各种深度并将数据保存起来
FSAA以及其他的方法是后处理

逐片元阶段

逐片元着色

-使用顶点的RGB色进行线性差值,或者使用法线信息进行差值
-注意差值后还要加上光照得到片元颜色

颜色混合

  • 透明度测试(小于阈值不显示 高于阈值才显示)
  • 深度测试=渲染前面的或者后面的
  • 模板测试=一个东西和另外一个在一块的时候决定渲染哪一个
  • 混合
  • 以上的测试都可以进行调节谁在先着色谁后着色的问题

目标缓冲区

帧缓冲区或者渲染贴图

后处理

额外进行的一个图像处理模式

  • Bloom炫光
  • HDR
  • FXAA
  • 景深 Depth of View
  • 边缘检测
  • 动态模糊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值