文章目录

  • 整体流程
    • 一、应用阶段
      • 1.基本场景数据
      • 2.光源和阴影
      • 3.加速算法 粗粒度剔除
      • 4.渲染设置
      • 5.输出到显存
    • 二、几何阶段
      • 1.顶点着色
      • 2.曲面细分
      • 3.投影
      • 4.裁剪
      • 5.屏幕映射
    • 三、光栅化阶段
      • 1.三角形设置
      • 2.三角形遍历
    • 四、逐片元操作
      • 1.片元着色
      • 2.颜色混合

整体流程

1.应用阶段->几何阶段->光栅化阶段->逐片元处理->后处理
·应用阶段:粗粒度剔除,进行渲染设置,准备基本数据,输出到几何阶段。
·几何阶段:顶点着色器,曲面积分,几何着色器,顶点裁剪,屏幕映射。
·光栅化阶段:三角形(点/线)设置,三角形(点/线)遍历,片段着色器。
·逐片元操作:裁剪测试,透明度测试,深度测试,模板测试,混合。
·后处理。

2.CPU–》--》–》--》–》--》–》--》–》--》–》--》–》--》–》--》–》GPU

应用阶段---------------几何阶段----------------光栅化------------------逐片元操作

准备基本- 顶点着色- 三角形设置 像素着色
场景数据 | Triangle Set Up Fragment Shader
| 可选顶点处理 | |
加速算法 | 三角形遍历 颜色混合
粗粒度剔除 投影 Triangle Traversal Color Blending
| | |
设置渲染状态 剪裁 目标缓冲区
准备渲染参数 Clipping FrameBuffer
| |
调用Draw Call 屏幕映射
输出渲染图元
到显存

一、应用阶段

·准备基本场景数据:场景物体数据,摄像机数据,光源及阴影数据,其他全局数据。
·加速算法粗粒度剔除:碰撞检测,加速算法,遮挡剔除,其他算法。
·设置渲染状态,准备渲染参数:绘制设置,绘制顺序,渲染目标,渲染模式
·调用Draw Call输出渲染图元到显存:顶点数据,其他数据。

1.基本场景数据

·场景物体数据:物体变换数据,位置,旋转,缩放等;物体网格数据,顶点位置,UV贴图。
·光源信息:光源类型,方向光,点光,聚光等。
·摄像机参数|:位置,方向,远近裁剪平面;正交/透视(FOV);视口比例/尺寸等。

2.光源和阴影

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

3.加速算法 粗粒度剔除

·可见光裁剪
·可见场景物体裁剪:八叉树,BSP树,KD树,BYH。

4.渲染设置

·绘制设置:使用着色器,合批方式
·绘制物体的顺序(可以有多种方式):相对摄像机的距离,材质RenderQueue,UICanvas,其他方式等。
·渲染目标:FrameBuffer,RenderTexture。
·渲染模式:前向渲染,延迟渲染。

5.输出到显存

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

二、几何阶段

1.顶点着色

顶点着色是完全可编程的,通常用于实现顶点的空间变换,顶点着色等功能。它的输入来自CPU,顶点着色器的处理单位是顶点,也就是说输入进来的每个顶点都会调用一次顶点着色器。顶点着色器不可以创建或销毁任何顶点,而且无法得到顶点之间的关系,正是因为这种独立性,GPU可以利用本身的特性并行化处理每一个顶点,这意味着处理会比较快。可依据MVP变换矩阵,完成三位转二维屏幕映射的转换。

2.曲面细分

曲面细分着色器是一个可选着色器,可将模型顶点曲面细分,用于细分图元。

3.投影

根据相机的正交或透视,投影响应的顶点信息到标准画布。

4.裁剪

根据视口范围裁剪掉视口以外的模型和视口以外的点,裁剪物体时会自动给物体生成新的两个点。

5.屏幕映射

将投射到画布的画面缩放映射到显示屏幕上

三、光栅化阶段

三角形设置-三角形遍历

1.三角形设置

三角形设置将模型点点投射在画布的片元信息,进行顶点的渐变连线,绘制出三角形。

2.三角形遍历

三角形遍历,将三角形内部的点查找,遍历一个三角形面片(一个像素可能是多个片元的混合)
抗锯齿处理
·SSAA:对图像在原有像素的基础上,放大像素n倍,对放大的图像进行向下降级采样。
·MSAA:在光栅化阶段,把一个样本拆成4个进行精心的计算。
·FXAA:后期处理技术不在渲染阶段。

四、逐片元操作

1.片元着色

利用顶点映射的顶点信息中的顶点颜色,逐片元渐变内部顶点颜色,得到某个顶点颜色,这些颜色在和光照信息,透明信息等混合得到最终颜色。

2.颜色混合

·透明度混合:根据数值大小依次剔除
·颜色混合:记录第一个物体深度值放入深度缓存,然后依次记录下一个物体深度和深度缓存进行比较,最终决定片元呈现那个物体的颜色。

Ue4----渲染流程相关推荐

  1. 【逆向】UE4 渲染流程分析

    UE4作为当今商业引擎界的大佬,渲染和图形质量一直是首屈一指的水准,但是相对于unity来说UE4基本上是一套完整方案提供,不通过源码修改对渲染进行定制的可能性比较小,而且同时UE4这方面的文档很少, ...

  2. react16 渲染流程

    前言 react升级到16之后,架构发生了比较大的变化,现在不看,以后怕是看不懂了,react源码看起来也很麻烦,也有很多不理解的地方. 大体看了一下渲染过程. react16架构的变化 react ...

  3. COCOS学习笔记--Cocos引擎渲染流程

    近期在研究Cocos引擎的渲染流程.在这里将其整个渲染流程进行一下梳理: 梳理之前我们要知道一些东西,就是我们的Cocos引擎是通过使用OpenGL的一些API来进行渲染绘制的,所以假设我们要彻底理解 ...

  4. cocos2d-x游戏引擎核心(3.x)----启动渲染流程

    (1) 首先,这里以win32平台下为例子.win32下游戏的启动都是从win32目录下main文件开始的,即是游戏的入口函数,如下: #include "main.h" #inc ...

  5. 【Android 应用开发】Paint 渲染 之 BitmapShader 位图渲染 ( 渲染流程 | CLAMP 拉伸最后像素 | REPEAT 重复绘制图片 | MIRROR 绘制反向图片 )

    文章目录 1. 位图渲染 BitmapShader 简介 ( 1 ) 位图渲染综述 ( ① 三种方式 : Shader.TileMode.CLAMP | Shader.TileMode.REPEAT ...

  6. html将页面分成三块_导航渲染流程你真的知道从输入URL到页面展示发生了什么吗?(内附思维导图)...

    导航渲染流程 通过这篇文章当你被问到从URL输入到页面展示都发生了什么的时候,基本都能对答如流,甚至可以一直深入的说,说到面试官闭麦哈哈哈~ 以下是本文的思维导图,直接拿图「点个赞」再走吧 ~ 求求了 ...

  7. 5渲染判断if_React 16 渲染流程

    学过微机的同学都应该很熟悉「中断」这个概念: CPU 正常运行程序时,内部事件或外设提出中断请求: CPU 予以响应,同时保护好 CPU 执行主程序的现场,转入调用中断服务程序: 调用完毕后恢复现场. ...

  8. OpenGL ES之基本简介和渲染流程

    简介 OpenGL ES (OpenGL for Embedded Systems) 是以⼿持和嵌入式为目标的高级3D图形应用程序编程接口(API). OpenGL ES是目前智能手机中占据统治地位的 ...

  9. [转贴]Cocos2d-x3.2与OpenGL渲染总结(一)Cocos2d-x3.2的渲染流程

    看了opengles有一段时间了,算是了解了一下下.然后,就在基本要决定还是回归cocos2dx 3.2的,看了这篇好文章,欣喜转之~ 推荐看原帖: Cocos2d-x3.2与OpenGL渲染总结(一 ...

  10. 【干货】十分钟读懂浏览器渲染流程

    在之前写过的一篇<"天龙八步"细说浏览器输入URL后发生了什么>一文中,和大家分享了从在浏览器中输入网址URL到最终页面展示的整个过程.部分读者向我反馈对于最后的浏览器 ...

最新文章

  1. Serverless特点及应用
  2. 自动驾驶定位技术-粒子滤波实践
  3. 正则 至少是数字加英文字符_正则表达式-入门
  4. 201506230818_《JavaScript权威指南(第六版)——callee和caller、对象属性用作实参、自定义函数属性》(P175-180)...
  5. win启动linux iso文件位置,安装Linux之后如何进入win系统?
  6. How to write a custom control with NSControl ...
  7. 当微信遇上 10 万战绩的「跳一跳」外挂,程序员还能“逍遥”多久?
  8. ml工程师_ML工程师正在失业。 仍然学习ML
  9. [图灵程序设计丛书].流畅的Python.revise11.pdf
  10. lambda表达式学习使用实例
  11. mysql创建视图演示_mysql怎么创建视图?(图文+视频)
  12. element ui表单必填_element-ui设置下拉选择切换必填和非必填
  13. 移植u-boot到树莓派
  14. 戴德金--连续性和无理数--我自己做的中文翻译第11页
  15. 抽象类是不是必须要有抽象方法
  16. 电商运营流程图模板分享
  17. 第11章 枚举与泛型
  18. vue使用高德地图关键字搜索功能的实例代码(踩坑经验)
  19. ubuntu壁纸自动切换
  20. 任务一 CC++文件实训

热门文章

  1. java 使用gdal_Java使用GDAL
  2. IDEA 如何进行分屏显示代码
  3. 如何关闭80端口,如何查找哪些端口在使用中
  4. 20万元启动资金,在通辽创业做什么比较好?
  5. Electron基础
  6. QT制作的软件全屏显示后最小化,点击任务栏图标打开时不是全屏
  7. SQL语句查询数据库某一张表的列名
  8. 本日14时《格子仙侠行》公测 仙界舆图年夜料想--国民网游戏
  9. Mifare One 非接触式IC卡介绍
  10. 旺旺机器人的快捷短语_千牛工作台设置快捷短语的详细操作方法