近几天啃各种新技术时又一个蛋疼的副产品...额,算是把AMD的Forward+ Sample抄了一遍吧。

其实个人感觉这个AMD大肆宣传的Forward+跟Intel很早之前提的Tiled-Based Deferred Rendering没多大区别,本质上应该就是后者的Forward实现而已。其基本流程可以如下描述:

1. Pre-Z Pass: 渲染物体深度信息到纹理。(很多Forward Pipeline也会做这一步,以提前剔除被遮挡的pixel, 减小shading时的计算量)

2. Tilling Pass: 将上一步的Z-Buffer划分为多个NxN (e.g. 8x8, 16x16)的Tile,使用Compute Shader算得每个Tile的Z值范围,以求出该Tile的View Frustum,然后对每个光源与该Frustum求交,求得对该Tile有贡献的光源Index List。

3. Forward Rendering Pass: 正常绘制物体,在Pixel Shader中对每个像素找到其对应的Tile,从而得到对应的光源List,只用这部分光源算shading。

(把第一步替换成G-Buffer Pass,最后一步换成对G-Buffer中每个Pixel算shading就是Tiled-Based Deferred Rendering了,核心的Tiling完全没区别嘛... AMD你的创新点在哪?⊙﹏⊙b)

额,好吧,虽说核心基本一致,但Forward+还是有好处的:拿简单的Pre-Z Trade了很费带宽的G-Buffer,再比如硬件MSAA。

##############################################################

既然这货被说的这么NB,我也照着抄了一个自己的版本。下面的截图是跟AMD的Sample一样的Sponza场景,唯一不同的是多了块红布,以及做了简单的View Frustum Culling。当然最大的悲剧是即使做了Culling,我的版本似乎还是比AMD Sample慢了20%多- -...或许是因为我用的Model是直接从Crytek网站上拽下来的,没有Optimize吧。

(800X600, 4xMSAA 16x AF, GTX 680)

惯例附带AMD Sample的链接:

Forward+: http://developer.amd.com/wordpress/media/2013/01/ForwardPlus11_v1.0.zip

以及一个AMD最新的TBDR和Forward+的合集:http://developer.amd.com/wordpress/media/2013/06/TiledLighting11_v1.0.zip

Forward+ Rendering Framework的更多相关文章

  1. Unity shader学习之Forward Rendering Path

    Forward rendering path shader如下: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObje ...

  2. 前向渲染路径细节 Forward Rendering Path Details

    正向渲染路径细节 Forward Rendering Path Details Forward Rendering path renders each object in one or more pa ...

  3. Forward Rendering 正向渲染

    Forward Rendering 正向渲染        正向渲染一个基于着色器的渲染路径.它支持逐像素计算光照(包括法线贴图和灯光Cookies)和来自一个平行光的实时阴影.在默认设置中,少数最亮 ...

  4. 正向渲染路径细节 Forward Rendering Path Details

    http://www.ceeger.com/Components/RenderTech-ForwardRendering.html This page describes details of For ...

  5. Forward Rendering VS Deferred Rendering

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

  6. 2012 Theory for Forward Rendering

    http://miss-cache.blogspot.com/2012/08/lighting-transparent-surfaces-with_26.html http://aras-p.info ...

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

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

  8. Thinking in Unity3D:渲染管线中的Rendering Path

      关于<Thinking in Unity3D> 笔者在研究和使用Unity3D的过程中,获得了一些Unity3D方面的信息,同时也感叹Unity3D设计之精妙.不得不说,笔者最近几年的 ...

  9. Rendering Paths

    渲染路径 Rendering Paths http://game.ceeger.com/Manual/RenderingPaths.html 延迟光照渲染路径的细节 Deferred Lighting ...

随机推荐

  1. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  2. Apache Ignite之集群应用测试

    集群发现机制 在Ignite中的集群号称是无中心的,而且支持命令行启动和嵌入应用启动,所以按理说很简单.而且集群有自动发现机制感觉对于懒人开发来说太好了,抱着试一试的心态测试一下吧. 在Apache ...

  3. Web性能优化:What? Why? How?

    为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...

  4. Android 获取系统相册中的所有图片

    Android 提供了API可获取到系统相册中的一些信息,主要还是通过ContentProvider 来获取想要的内容. 代码很简单,只要熟悉ContentProvider 就可以了. public ...

  5. 云瓣影音网站&&微信端(已开源)

    随着该项目的发布到线上(小打小闹),即将又要开启另一段崭新的旅程.强迫自己停下来写写所学所得,个人认为总结和分享是一种很棒的学习方式.那让我们先来瞧瞧项目长的什么样.如果着急要源码的朋友,可以下拉到最 ...

  6. Lind.DDD.LindMQ~关于持久化到Redis的消息格式

    回到目录 关于持久化到Redis的消息格式,主要是说在Broker上把消息持久化的过程中,需要存储哪些类型的消息,因为我们的消息是分topic的,而每个topic又有若干个queue组成,而我们的to ...

  7. NodeJs支付宝移动支付签名及验签

    非常感谢 :http://www.jianshu.com/p/8513e995ff3a?utm_campaign=hugo&utm_medium=reader_share&utm_co ...

  8. Function.prototype.toString 的使用技巧

    Function.prototype.toString这个原型方法可以帮助你获得函数的源代码, 比如: function hello ( msg ){ console.log("hello& ...

  9. 在 SharePoint Server 2016 本地环境中设置 OneDrive for Business

    建议补丁 建议在sharepoint2016打上KB3127940补丁,补丁下载地址 https://support.microsoft.com/zh-cn/kb/3127940 当然不打,也可以用O ...

  10. 利用PowerShell复制SQLServer账户的所有权限

    问题 对于DBA或者其他运维人员来说授权一个账户的相同权限给另一个账户是一个很普通的任务.但是随着服务器.数据库.应用.使用人员地增加就变得很枯燥乏味又耗时费力的工作.那么有什么容易的办法来实现这个任 ...