微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

百人计划1.1 渲染流水线

最近要做作品集了,再过一遍百人计划为自己的作品集提供一个思路。

渲染管线

0.整体流程
应用阶段–几何阶段–光栅化阶段–逐片元操作。

应用阶段:粗粒度提出,进行渲染设置,准备基本数据,输出到几何阶段。一般在cpu中完成的。
appdata一般要获得的数据有vertex,normal,tangent与模型姓关的基本数据。或者是与camera与light相关的数据,我们要在这个阶段得到一些矩阵数据以备于下一个阶段的空间坐标变换。
将以上数据设置好之后调用drawcall将所需的数据传到GPU。

几何阶段:顶点着色器,曲面细分着色器,几何着色器,顶点裁剪,屏幕映射等。
这一阶段的主要任务是对模型进行空间变换和处理,简化或者复杂化模型的点线面结构。
例如:顶点着色器,是将一些属性与顶点进行绑定,将颜色或者法线数据储存到顶点中。又例如曲面细分着色器,他可以在模型中间添加更多的点线面来丰富结构。几何着色器,可以对顶点进行操作,添加顶点来形成新的点线面。
而顶点裁剪和屏幕映射则是对之后流程进行的处理,他们负责将顶点进行MVP矩阵变换,然后将顶点映射到屏幕上,将模型顶点进行处理后得到图元(pixel)。
屏幕坐标中进行投影变换后,会缩放到[-1,1]。而在屏幕映射中会将[-1,1]映射到[0,1],OPENGL和DIRECTX中的屏幕原点不同。

光栅化阶段:三角形设置,三角形遍历,片段着色器
这一阶段中三角形设置和三角形遍历是不可编程和不可配置的。片段着色器是可编程的,会得到最终的着色结果。
三角形设置是将上一阶段中输出的屏幕空间顶点数据进行连线和组合形成三角形,这就是三角形设置。这一阶段的三角形被称为图元(pixel),与后边的片元不同。
三角形遍历是计算进行三角形设置后,顶点覆盖了屏幕的哪一些像素的过程。被覆盖的像素称之为片元(fragment)。这一阶段会根据三个顶点进行各种插值,比如颜色插值,法线插值,深度插值等。
这一阶段还可以进行抗锯齿处理,经典算法有SSAA和MSAA。

逐片元操作:裁剪测试,透明度测试,深度测试,模板测试,混合。
逐片元操作阶段分为三个阶段,片元着色,颜色混合和目标缓冲区。
片元着色是大名鼎鼎的fragment shader。他会最终得到屏幕上的显示结果,将这个结果存储到一个目标缓冲区当中。
透明度和深度测试都是对片元进行检测,大与某一个阈值的才能被渲染,否则则舍弃。

后处理,即图像处理。
这是对已经渲染到了屏幕上的图片进行处理,比如增加饱和度,添加屏幕特效等操作。

原文地址:https://www.jb51.cc/wenti/3282145.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐