近几天啃各种新技术时又一个蛋疼的副产品...额,算是把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. JAVA回调机制(CallBack)详解

    序言 最近学习java,接触到了回调机制(CallBack).初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义.当然了,我在理解了回 ...

  2. Hyper-v 安装CentOS 7 (其他虚拟机一样参考)

    平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html hyper-v安装很多人没弄过,我这里介绍一下.(其他虚拟机参 ...

  3. Ubuntu 16.10 安装KolourPaint 4画图工具

    KolourPaint 4画图工具简单实用,可以绘画.视频处理和图标编辑: • 绘画:绘制图表和“手绘” • 视频处理:编辑截图和照片;应用特效 • 图标编辑:绘画剪贴和标识透明化 1.在Ubuntu ...

  4. svn 常用命令总结

    svn 命令篇 svn pget svn:ignore // 查看忽略项 svn commit -m "提交说明" // 提交修改 svn up(update) // 获取最新版本 ...

  5. 浅谈web攻防

    CSRF 跨站请求伪造(Cross-Site Request Forgery) -原理- 从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤: 1.登录受信任网站A,并在本地生成Coo ...

  6. mac下安装及配置tomcat

    mac下的软件不像windows下的程序那样写注册表,对于tomcat的安装来说,在mac下是名符其实的绿色软件,具体操作如下: 1.到 apache官方主页 下载完整 tar.gz文件包.(没有专门 ...

  7. C++随笔:从Hello World 探秘CoreCLR的内部(1)

    紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...

  8. 来自于微信小程序的一封简讯

    9月21晚间,微信向部分公众号发出公众平台-微信应用号(小程序)的内测邀请,向来较为低调的微信在这一晚没人再忽视它了. 来自个人博客:Damonare的个人博客 一夜之间火了的微信应用号你真的知道吗? ...

  9. SQLServer2005创建定时作业任务

    SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...

  10. 我的MYSQL学习心得(十一) 视图

    我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...