Forwar Rendering vs. Deferred Rendering
来源:互联网 发布:传奇霸业宝石数据 编辑:程序博客网 时间:2024/05/22 14:25
译者:i_dovelemon
日期:2016 / 07 / 05
来源:http://gamedevelopment.tutsplus.com/articles/forward-rendering-vs-deferred-rendering--gamedev-12342
主题:fowward rendering, deferred rendering
如果你是一个3D游戏开发者,那么当你在探索游戏引擎的时候,你可能会遇到这两个名词:forward rendering和deferred rendering。同时,你也必须在你的游戏中选择一种来实现。但是,它们是什么意思了?它们之间又有什么不同了?在做选择的时候,我们又该选择哪一个了?
图1 Defered Rendering for many lights
现代图形渲染管线
在开始之前,我们先来了解下当前现代的渲染管线是什么样的。
在以前,由于显卡的限制,我们在渲染的时候能够做的东西少的可怜。我们不能够改变一个像素的绘制过程,只有通过传递不同的纹理来改变像素,一旦顶点数据到达显卡之后,我们就再也没有机会对它进行额外的修改。但是时代发生了改变,我们现在的渲染管线都是能够被我们通过编程来进行控制的。我们能够发送一些代码到显卡上,以此来控制一个像素最终的样子,通过为一个表面添加额外的法线贴图来实现表面的凹凸感,同时也能够增加物质表面的反射效果。
这个代码就是我们常常看到的geometry shader,vertex shader和fragment shader,通过他们我们能够很容易的控制显卡如何渲染我们的像素。
图2
Forward Rendering
Forward rendering是一种标准的,最常使用到的渲染方式,大部分的游戏引擎都支持这项功能。你将你的几何数据提交到显卡上去,它经过计算,将结果投影到投影平面,然后拆分成一个个单独的顶点,这些顶点再经过转换,裁剪,最终变成一个一个的像素,这个像素最终将被显示在我们的屏幕上去。
图3
从上面的图中可以看到,这个渲染的方式是一种线性的过程,一个阶段进行一样工作,一个阶段接着一个阶段,直到最后形成一个完整的图像。
Deferred Rendering
Light Performance
Deferred Rendering to the Rescue
The Guts of Deferred Rendering
Which to Pick?
- 这个渲染算法需要我们的显卡能够支持多渲染目标。老式的显卡可能不支持这个功能
- 需要更高的显卡带宽。从前面我们知道,需要对多个渲染目标传递信息,也就是说老的显卡可能承受不了这么大的带宽。
- 你不能够使用透明的物体。(除非你组合Forward rendering和Deferred rendering算法)
- 没办法实现抗锯齿。好吧,只有一些引擎可能不支持采样,你依然能够通过边缘检测,FXAA等算法来实现。
- 只支持一种材质,除非你使用的是Deferred Rendering算法的一种变体,Deferred Lighting.
- 阴影的产生依然依赖于光源的数量。
Conclusion
- Forwar Rendering vs. Deferred Rendering
- Forward Render VS Deferred Rendering
- Unity forward vs deferred rendering path
- Forward vs Deferred vs Forward+ Rendering with DirectX 11
- Forward vs Deferred vs Forward+ Rendering with DirectX 11
- Forward Rendering和Deferred Rendering的区别
- Tutorial - Deferred Rendering (Part 1)
- Tutorial - Deferred Rendering (Part 2)
- Tile-Based Deferred Rendering(TBDR)
- Rendering
- Rendering
- On-screen Rendering vs. Off-screen Rendering
- Deferred Rendering(一)原理概述
- Font Rendering: Gecko vs Chrome
- Deferred Rendering(二)G-Buffer的组织
- Deferred Rendering(三)反锯齿和半透明问题
- Unity5 的新旧延迟渲染Deferred Lighting Rendering Path
- Unity延迟渲染路径(Deferred shading rendering path)
- HDU 1269 迷宫城堡
- mitaka版本openstack虚拟化云桌面的实现(spice)
- Service
- C语言字符串查找替换
- 分数化小数(decimal)完整版
- Forwar Rendering vs. Deferred Rendering
- .NET c# EF DB first 连接mysql 实施
- 史上最详细Windows版本搭建安装React Native环境配置
- SQL镜像
- HDU 5575 Discover Water Tank
- filesystem-e2fsprog
- 并查集(删除节点,就是增加一个新的爹)
- poj2376
- 11g R2 节点系统重建后,删除节点及添加节点 过程和问题解决