技美 百人计划 (图形)

图形 1.1 渲染流水管线2.1数学基础

很早之前就有关注百人计划这个系列的课程,也跟着看到了2.几的教学但是一直没有写笔记,最近看到百人计划已经快更新完毕了,决定从头看一遍然后补补笔记和作业。

整体流程

1,应用阶段:粗粒度剔除,进行渲染设置,准备基本数据,输出到几何阶段(CPU)
2,几何阶段:顶点着色器,曲面细分,几何着色器,顶点裁剪,屏幕映射(GPU)
3,光栅化阶段:三角形(点/线)设置,三角形(点/线)遍历,片段着色器(GPU)
4,逐片源操作:裁剪测试,透明度测试,深度测试,模板测试,混合(常用的分法将逐片源操作分类到(3)光栅化阶段)(GPU)
5,后处理

一、应用阶段(CPU)

1.准备场景需要的数据

场景物体数据

  • 物体变换数据(位置,旋转,缩放)
  • 物体网格数据(顶点位置,UV贴图)

摄像机数据

  • 位置,方向,远近裁剪面
  • 正交/透视
  • 视口比列/尺寸

光源及阴影数据

设置光源
 - 方向光(颜色,方向)- 点光源(颜色,位置,范围)- 聚光源(颜色,位置,方向,内外圆锥角)
设置阴影
 - 是否需要阴影(判断该光源可见范围内是否有可投射阴影的物体)- 阴影参数- 对应的光源序号- 阴影强度- 级联参数- 深度偏移(优化相关)- 近平面偏移(优化相关)
逐光源绘制阴影贴图
    - 近平面偏移- 逐级联- 计算当前光源+级联对应的观察矩阵,投影矩阵,以及对应到阴影贴图里的视口区域- 绘制到阴影贴图

其他全局数据

2,加速算法,粗粒度剔除

  • 碰撞检测
  • 加速算法
  • 遮挡剔除
    • 可见光裁剪
    • 可见场景物体裁剪
      • 八叉树
      • BSP树
      • K-D树
      • BVH
      • 其他算法

渲染侧设置,准备渲染参数(多参考Unity)

绘制设置
  • 使用着色器
  • 合批方式
绘制物体的顺序
  • 相对相机的距离
  • 材质RenderQueue
  • UICanvas
  • 其他方式等
渲染目标(输出到哪)
  • Framebuffer
  • RenderTexture
渲染模式
  • 前向渲染
  • 延迟渲染

调用Drawcall 输出渲染图元到显存

顶点数据
  • 位置
  • 颜色
  • 法线
  • 纹理UV坐标
  • 其他顶点数据
其他数据
  • MVP变换矩阵
  • 纹理贴图
  • 其他数据

几何阶段(GPU)

顶点着色器

坐标系变换(视图变换)

  • 模型坐标系到世界坐标系(MVP(M))
  • 世界坐标系到观察坐标系(视锥)(MVP(V))
  • 投影变换得到投影坐标系(为2D3D投影做准备)(MVP(P))
  • 正交
  • 透视

顶点矩阵

曲面细分(可选)

  • 外壳着色器
  • 曲面细分
  • 域着色器

几何着色器

  • 基于图元操作

投影

将坐标的的xyz除w(NDC)

  • 正交(w始终为1)
  • 透视(w近小远大)

裁剪

将超出-1~到1的点丢掉(设备坐标系在OpenGL和D3D下面是不一样的,在open GL中,xyz三个维度都是-1到1而D3D中只有xy是-1到1而z是0-1)

  • CVV
  • 正面剔除或背面剔除(可配置)

屏幕映射

  • 从连续到离散
  • 坐标系差异(标准坐标系到屏幕坐标系从0-1到输出设备的长和宽)openGL原点在左下D3D在左上

光栅化阶段

三角形设置(计算图元边界信息)
  • 计算微分、边方程和其他三角形数据
三角形遍历(检查被三角形边界覆盖的像素对所有像素进行插值)
抗锯齿(MSAA)
SSAA
 - 渲染到一个分辨率放大n倍的buffer- 对放大n倍的buffer下采样
MSAA
  • 在光栅化阶段
  • 计算多个覆盖样本
FXAA/TXAA
  • 后处理阶段
逐片元操作(GPU)
  • 片元作色
  • 颜色混合
    • 透明度测试
    • 模板测试
    • 深度测试
    • 混合
  • 目标缓冲区

后处理

  • Bloom
  • HDR
  • FXAA
  • Deph of View
  • 边缘检测
  • 径向模糊

技美 百人计划 (图形)1.1渲染流程相关推荐

  1. 技美 百人计划 2.1色彩空间

    技美 百人计划 2.1色彩空间 2.1色彩空间 色彩发送器 色彩的认知 光源是出生点,光源发射出光线,光线通过直射反射折射等路径最终进入人眼.但人眼接收到光线后,人眼的细胞产生了一系列化学反应,由此把 ...

  2. 【技美百人计划】图形 4.4 抗锯齿概论

    笔记 锯齿是怎么产生的 左图:想要的效果 右图:表现的效果 抗锯齿分类 ● 前向渲染: SSAA.MSAA.CSAA.RGSS等 ● 延迟渲染: FXAA.MLAA.SMAA等 ● 时域上的抗锯齿: ...

  3. 【技美百人计划】图形 4.2 SSAO算法 屏幕空间环境光遮蔽(&HBAO)

    笔记 SSAO介绍 AO 环境光遮蔽,AmbientOcclusion.一种模拟光线到达物体的能力和粗略的全局方法. SSAO 屏幕环境光遮蔽,Screen Space Ambient Occlusi ...

  4. 【技美百人计划】图形 4.5 Dof景深基础

    笔记 景深原理 ● 指相机对焦点前后相对清晰的成像范围,是一段三维空间. ● 针对相机成像产生的概念,肉眼也有类似的效果 景深遇到的问题 因为是基于深度图的实现,如果是半透明物体,则没有深度,要如何解 ...

  5. 【技美百人计划】图形 4.3 实时阴影介绍

    笔记 先讲两个概念 软阴影.硬阴影 硬阴影: ● 应用于点光源 ● 对于每一个像素,只需要检查该像素和光源之间是否有遮挡物存在即可,因此这种和像素一对一的可见性函数结果可以如同表面颜色一样,被存储在一 ...

  6. 【技美百人计划】美术 1.1.3 角色设计精要

    笔记 角色设计流程 设计流程: 角色设计流程: 确定角色关键词 ● 了解角色并找到那些让角色独一无二的关键词 ● 如这些角色的重要标识:世界观.背景.能力.职业.性格.喜好 EXP 小美: 设计之初: ...

  7. 【技美百人计划】美术 1.1 美术理论基础

    笔记 光影 光影:物体呈现在人们眼前的时候,不同的受光面其明暗变化以及物体的影子 黑白灰 & 明暗五调子 黑白灰: 受光面为亮形成白,背光面为暗形成黑,其他的过渡为灰色 明暗五调子: ● 高光 ...

  8. 【技美百人计划】美术 2.2 模型基础

    笔记 基本建模流程 贴图 SP:偏向于机械.金属,常用于游戏领域 mary:适合于人物.幻想生物,比如龙.人物皮肤.龙鳞,适用于影视领域 离线渲染: ● 阿诺德:无偏渲染器,较适合人物 ● vary: ...

  9. 【技美百人计划】美术 2.5 模型常见问题及规范

    笔记 布线的合理性(卡线优化) ● 在次世代流程中,对高模的布线没有那么严格.因为高模只是为了获得一张高精度的法线贴图,使低模能够有一个假的信息去做视觉欺骗 ● 为了方便低模去绑定动画.去蒙皮,所以需 ...

最新文章

  1. vmware网络模式设置(说的最简单的一篇文章)
  2. 图像的存储格式转化(python实现)
  3. java中io流如何创建一个文件_,Java中Io流操作-File类的常用操作-创建文件,创建文件夹...
  4. 梦幻群侠传5帮派修炼_梦幻群侠传5唯美版
  5. 【LeetCode】【数组】题号:*304,二维区域和检索
  6. 限制后的线性表--栈
  7. 如何修改云服务器连接密码错误,如何修改云服务器连接密码
  8. 神经网络——基础思想
  9. android矢量图 内存大,Android内存控制小技巧-使用矢量图来节省你的内存并简化你的开发。...
  10. 图片去底色功能怎么用?怎么把图片背景色变成透明的?
  11. 【线性代数】P8 逆矩阵矩阵方程以及逆矩阵的性质
  12. 015 PHP中的曲苑杂坛
  13. 缺陷检测End-to-end training of a two-stage neural networkfor defect detection(端到端的两步神经网络的缺陷检测)
  14. 利用Yocto构建嵌入式Linux教程01--第一个Yocto项目构建
  15. CSU-ACM2017暑期训练5-三分 D - Toxophily HDU - 2298
  16. win10便签常驻桌面_Win 10最好用的10个功能,第一个你就不知道!
  17. php 数字转大写人民币
  18. c语言图形学画扇形代码,利用CSS绘制任意角度的扇形示例代码
  19. 普林斯顿大学算法公开课笔记
  20. window环境下thrift Compiler 编译步骤

热门文章

  1. 蓝牙智能窗帘(天猫精灵生态)方案
  2. PADS的layout单个元器件删除时提示“复用元素无法修改,首先打散复用模块”
  3. 程序员一生必读的书籍
  4. 金融机构的反洗钱(AML)合规工作和系统建设
  5. 韵达上半年营收228亿:同比增25% 丰科与韵科减持套现8亿
  6. SaaS-HRM(3)企业部门管理前后台
  7. 2b青年快乐多啊,转的关于程序猿的笑话
  8. 关于ThinkPHP
  9. (转)我所经历的大数据平台发展史(四):互联网时代 • 下篇
  10. linux+4t分区+扩容lvm,Linux中利用LVM实现分区动态扩容