渲染管线流程
来源:互联网 发布:知乎 暗网体验 编辑:程序博客网 时间:2024/05/22 11:44
一、应用阶段:起点是CPU,把场景数据、摄像机位置、视椎体、模型、光源,设置材质(漫反射、高光反射颜色)、纹理、shader输出成渲染所需几何信息——渲染图元(点、线、三角面等)
1.把数据加载到显存中;硬盘->内存->显存
2.设置渲染状态;定义场景中的网格将被怎么渲染,使用了哪些顶点着色、片元着色、光源属性、材质等。
3.调用Draw Call;由CPU发起命令,通知GPU根据渲染状态在屏幕上绘制出图像的过程就叫一次Draw Call;
二、几何阶段:在GPU上进行,负责和每个渲染图元打交道,进行逐顶点、逐多边形的操作,决定需要绘制的图元是什么,怎么绘制它们,在哪绘制它们。
1.顶点着色器(Vertex Shader):完全可编程的,用于实现顶点的空间变换,逐顶点光照,计算顶点颜色等功能;
2.曲面细分着色器(Tessellation Shader):是一个可选的着色器,用于细分图元;
3.几何着色器(Geometry Shader):可选着色器,用于执行逐图元的着色操作或用于产生更多的图元;
4.裁剪(Clipping):不可编程,将不在摄像机视野内的顶点裁剪掉,并剔除某些三角图元的面片,这个阶段可配置;
5.屏幕映射(Screen Mapping):可配置可编程,此过程负责把每个图元的x,y坐标转换到屏幕坐标系(二维坐标系)下。
三、光栅化阶段:在GPU上执行,使用几何阶段传递来的数据产生屏幕上的像素,并渲染出最终的图像。主要决定每个渲染图元中的哪些像素应该被绘制在屏幕上,然后进行逐像素处理。两个目标,计算每个图元覆盖了哪些像素,计算这些像素的颜色。
1.三角形设置(Triangle Setup):计算光栅化一个三角网格所需的信息
2.三角形遍历(Triangle Traversal):检查每个像素是否被一个三角网格所覆盖,如果被覆盖就会产生一个片元(Fragment)
3.片元着色器(Fragment Shader):可编程,用于实现逐片元的着色操作,也叫像素着色器
4.逐片元操作(Per-Fragment Operations):可配置但不可编程,负责执行如修改颜色、深度缓存、进行混合等操作。对每一个片元进行一些操作,如:
(1)决定每个片元的可见性,这涉及了很多测试工作,如模板测试(Stencil Test)、深度测试(Depth Test)等;
(2)如果一个片元通过了所有测试,就需要把这个片元的颜色值和已经存储在颜色缓冲区的颜色进行混合(Blend);
- 渲染管线流程
- 渲染管线流程
- Unity3D 渲染管线流程
- 【图形学】渲染管道 渲染管线 渲染流程 渲染流水线
- 【图形学】渲染管道 渲染管线 渲染流程 渲染流水线
- 【图形学】渲染管道 渲染管线 渲染流程 渲染流水线
- OpenGL-渲染管线的流程(有图有真相)
- OpenGL-渲染管线的流程(有图有真相)
- OpenGL-渲染管线的流程(有图有真相)
- OpenGL-渲染管线的流程(有图有真相)
- 渲染管线
- 渲染管线
- 渲染管线
- 渲染管线
- 渲染管线
- 渲染管线
- 渲染管线
- 渲染管线
- 留作笔记,原文链接:https://www.2cto.com/kf/201607/529682.html
- 影音图教程网站
- (M)DFS:417. Pacific Atlantic Water Flow
- unix网络编程第三版环境配置
- 基于用户投票的排名算法(六):贝叶斯平均
- 渲染管线流程
- leetcode之数组类之数组的旋转与分治类-----OJ 189/33/81/153/154 数组旋转 旋转数组搜索 88 有序数组合并 4 两个有序数组寻找第K个元素/中位数 35 寻找插入位置
- linux
- 名称:二叉树及其基本操作
- TCP分片/IP分片区别
- Jdbcutil.java jdbc.properties
- mac os 10.8.5下 微信开发者工具安装问题
- 水平垂直居中的几种方法
- java中request常用方法小结