提要

渲染管线是实时渲染中最重要的部分,它的最主要的任务就是在给定一个虚拟的场景,包括相机,object,灯光,纹理等等,生成一副2D的图像。

最基础的渲染管线如下图所示:

主要的阶段包括三个:Application,Geometry,Rasterizer,每个阶段都可能分成更小的管线,有些小的阶段会并行执行。下面来一个个讨论。

The Application Stage

主要任务:碰撞检测,加速算法,变换动画,外部接口的输入等等。

它不能被细分成更小的阶段。

为了获得更好的表现,这个阶段通常会用多核执行的方式进行加速。

The Geometry Stage

主要任务:负责每个多边形,每个定点的操作。

可以对阶段进行细分,如下图:

每个小阶段的描述如下:

Model&View Thansform(模型变换和视口变换)

要获得三维时间坐标系场景的显示必须先建立观察用的坐标系,然后将对象描述转换到观察坐标系并投影到观察平面上。

模型转换相当与改变模型在世界坐标的位置,在Opengl中,主要有三个函数用于执行模型变换,它们是glTranslate*()、glRotate*()、glScale()。这些函数通过移动、旋转、拉伸或者反射,对物体进行变换,实质上是相当与产生一个适当的移动,旋转或缩放矩阵,然后以这个矩阵为参数调用glMultMatrix*(),也就是把当前矩阵与变换矩阵相乘,得到当前位置。

视口变换相用于修改观察点的位置和方向,opengl中用到的函数就是glLookAt().

Vertex Shading(定点着色)

为了产生真实可感的场景,不仅要渲染物体的形状和位置,它的appearance也要进行渲染。

生成材质的光照效果称为着色,在每个定点都存储着与着色相关的信息(颜色,法向量等),着色的结果计算好之后就会传递到Rasterizer Stage进行插值计算。

Projection(投影)

投影指的时将空间的场景投射到2D平面进行显示。

常见有两种投影方式,一种是平行投影(parallel projection),一种是透视投影(perspective projection)。

机械制图中的投影方式就是平行投影,投影的比例一定和原图一样。

照相机和人眼的观察方式属于透视投影,物体近大远小,符合素描中的透视关系。

Clipping(裁剪)

只有在视口空间的物体或物体的部分才需哟啊显示出来,当一些图元只是部分出现在视口中的时候,就需要对其进行裁剪。

Screen Mapping(屏幕映射)

只有在视口空间中的图元会到达这个阶段。

视口的坐标会被转换到screen的坐标。

ScreenMapping的阶段就负责将视口上坐标对应到屏幕坐标。

Rasterizer Stage(光栅化阶段)

目标:渲染每个像素的颜色。

可以分割成:

Triangle Stage ->Triangle Traversal -> Pixel Shading-> Merging

总结

这并不是渲染流水线的唯一组织形式,电影的渲染通常使用的时micro polygon pipelines, 学术研究和predictive rendering通常使用的光线追逐,现在一些渲染工具也使用了光线追踪渲染器,比如Blender。而OpenGL的渲染管线如下图所示:

通常硬件的渲染流水线都是确定的,比如任天堂的Wii,但如今可编程的GPU却给我们带来了另外的机会:在流水线的各个阶段去编写自己的代码,这也是现代GPU最大的优势。

有意思的视频

Crysis 2 - Behind The Scenes: Rendering Pipeline - 
http://www.youtube.com/watch?v=-JVWU3hTdIw


参考

Real-Time Rendering 3rd

OpenGLProgramming Guide 7th

Fundamentals of Computer Graphics 2rd

Real-Rime Rendering (1) - 渲染管线(Rendering Pipeline)的更多相关文章

  1. Forward Rendering VS Deferred Rendering

    http://gad.qq.com/article/detail/32731 Forward Rendering Deferred Rendering

  2. 【原】实时渲染中常用的几种Rendering Path

    [原]实时渲染中常用的几种Rendering Path 本文转载请注明出处 —— polobymulberry-博客园 本文为我的图形学大作业的论文部分,介绍了一些Rendering Path,比较简 ...

  3. 渲染路径-实时渲染中常用的几种Rendering Path

    http://www.cnblogs.com/polobymulberry/p/5126892.html?utm_source=tuicool&utm_medium=referral 回到顶部 ...

  4. Rendering in UE4(Gnomon School UE4 大师课笔记)

    Rendering in UE4 Presented at the Gnomon School of VFX in January 2018, part two of the class offers ...

  5. 39. Volume Rendering Techniques

    Milan Ikits University of Utah Joe Kniss University of Utah Aaron Lefohn University of California, D ...

  6. Unity5 的新旧延迟渲染Deferred Lighting Rendering Path

    unity5 的render path ,比4的区别就是使用的新的deferred rendering,之前的4的deferred rendering(其实是light prepass)也被保留了下来 ...

  7. Rendering on the Web

    转自: https://developers.google.com/web/updates/2019/02/rendering-on-the-web Rendering on the Web Goog ...

  8. Rendering with Replaced Shaders

    [Rendering with Replaced Shaders] 1.RenderType tag RenderType tag categorizes shaders into several p ...

  9. unity, 替换shader渲染(Rendering with Replaced Shaders)

    实现特效,尤其是一些后处理特效,经常需要将各物体的shader替换为另一套shader进行渲染到纹理,再后再进行合成或以某种叠加方式叠加到最后的画面上去. 再复杂一点儿的,可能不同的物体所用的替换sh ...

随机推荐

  1. CreateCompatibleDC工作原理

    WindowsGDI的接口没提供这种功能机制.仅仅能是先通过CreateCompatibleDC 创建一个与显示器设备内容兼容的内存设备内容.用SelectObject将位图选入内存设备内容,再用Bi ...

  2. RQNOJ PID4 / 数列(位运算)

    题目描述 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k=3时,这个序列是: 1,3,4,9,10,12,13,… (该序列实际上就是 ...

  3. [dp] hdu 4472 Count

    意甲冠军: 鉴于n节点,满足子节点的相同的树节点号的同一层较少不同的形式. 思考: dp[i][j] 代表i节点.最后,一个层j方法节点 由于满足同层节点,所以j一层又一层必须是j 整数倍 所以就能得 ...

  4. MAC使用小技巧(二)

    一.Safari-->广告数量不足 --原因:DNS被拦截,被恶意推送广告. ----------------------------- [ 思路 ] 修改hosts文件 $ cd /etc $ ...

  5. 【Hibernate步步为营】--映射合集汇总

    前几篇文章具体讨论了对象模型到关系模型的转化方法,对映射关系做了具体的了解,Hibernate将对象模型转化为对应的关系模型是通过使用对应的映射来完毕的(相同也能够使用注解),对于对象之间的关系的转化 ...

  6. 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

    原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...

  7. 关于Java的对象、数组、String类的具体用法

    对象的行为: 1.内存分配(栈和堆的区别) 栈:保存局部变量的值(用来保存基本数据类型的值:保存类的实例的引用) 对:用来存放动态产生的数据,比如new出来的对象 2.调用方法 方法返回一个值.方法不 ...

  8. 所谓策略,我站在旁边看今天 神刻的样子O2O

    雕爷.何许人也? 卖牛腩的大叔? 卖精油的大爷?还是卖烤肉的家伙? 事实上以上答案都是肯定的,他就是阿芙精油,雕爷牛腩创业神话的缔造者.那么雕爷是怎样取得这种创业成功的呢?前段时间我还不清楚雕爷的厉害 ...

  9. Font-Awesome 体验 鼠标进入图标变大

    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> &l ...

  10. 国籍控件(js源码)

    国籍控件(js源码) 一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家. 主要功能和界面介绍 国籍控件主要支持中文.英文过滤以及键盘上下事件. 源码介绍 国籍控件核心是两个文件, ...