Forward+ Shading架构
Forward+ = Tile based Light Culling + Tile based Forward Rendering
整体渲染架构分为如下3大步骤:
1、PrePass
将场景的min z、max z渲染至z-buffer。
2、Tile based Light Culling
需要用到CS及其并行数据同步机制,是最复杂的一步。
- 将屏幕划分为8px x 8px的多个tile,每个tile对应一个thread group
- 针对每个thread group,结合其四个角与摄像机位置,并行计算其在viewer空间下的frustum多面体的4个面;每个group计算一次
- 针对每个thread group,发起8x8个thread,每个thread求得所在像素位置的max z与min z。然后利用group share数据同步机制,存储到group share data里。至此每个tile所对应的frustum构造完毕(共6个面)
- 针对每个thread group,利用其8x8个thread,每个thread承载一盏light的culling,可并行实现64盏灯的culling。Culling实现采用分离轴定律来判定tile frustum与light是否相交。并利用group share数据同步机制,将所有与tile frustum相交的light索引号存储到group share data中,形成tile所对应的light列表
- 针对每个thread group,发起1个thread,利用全局数据同步机制,将其tile所对应的light列表统一存入某全局数据区域。至此,所有tile所对应的light culling操作执行完毕。
3、Tile based Forward Shading
在ps中,根据像素位置判断出当前所属的tile,然后根据tile所对应的light列表,索引所有与tile相交的light,一次性进行所有光照与着色计算。
Forward+ Shading架构的更多相关文章
- Clustered Shading架构实现步骤
最终决定越过Forward+,一步到位,直接调整至更先进的Clustered架构.步骤如下: 里程碑1:以CPU方式实现Light Culling,旨在理念验证,并与D3D10兼容里程碑2:以GPU ...
- 引擎设计跟踪(九.14.3) deferred shading 准备
目前做的一些准备工作 1.depth prepass for forward shading. 做depth prepass的原因是为了完善渲染流程, 虽然架构上支持多个pass, 但实际上从来没有测 ...
- Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)【转】
Deferred Shading,看过<Gems2> 的应该都了解了.最近很火的星际2就是使用了Deferred Shading. 原帖位置: http://blog.csdn.net ...
- Deferred Shading(延迟渲染)
1.简介 在计算机图形学的词典里,Shading表示“对受光物体的渲染”,这个渲染过程包括下面几步[1]: 1) 计算几何多边形(也就是Mesh). 2) 决定表面材质特性,例如法 ...
- 引擎设计跟踪(九.14.3.3) Deferred shading的一些小细节
1.ambient light 之前的shader里面, 方向光会加上ambient 的计算. 但是如果没有方向光, 就没有ambient. 这是把全局方向光改为点光源之后发现的, 因为透明物体的fo ...
- 引擎设计跟踪(九.14.3.2) Deferred shading的后续实现和优化
最近完成了deferred shading和spot light的支持, 并作了一部分优化. 之前forward shading也只支持方向光, 现在也支持了点光源和探照光. 对于forward sh ...
- 引擎设计跟踪(九.14.3.1) deferred shading: Depthstencil as GBuffer depth
问题汇总 1.Light support for Editor编辑器加入了灯光工具, 可以添加和修改灯光. 问题1. light object的用户互交.point light可以把对应的volume ...
- Deferred Shading延迟渲染
Deferred Shading 传统的渲染过程通常为:1)绘制Mesh:2)指定材质:3)处理光照效果:4)输出.传统的过程Mesh越多,光照处理越费时,多光源时就更慢了. 延迟渲染的步骤:1)Pa ...
- jsp三层架构
学了.net了,它的三层架构很好用.现在学jsp,我们一样可以用三层架构来开发.下面详细介绍 1.创建数据库 drop table MyUser create table MyUser ( id ,1 ...
随机推荐
- Unity 中几点注意的地方
1.面板摆放的规范 2.project工程面板中 文件夹命名的规范,不同类型的东西要分类摆放,例如Script 3.不要留空函数体(系统自动生成Start, Uadate等),空函数体一样会执行,尤其 ...
- 《Gradle权威指南》--Gradle任务
No1: 多种方式创建任务 def Task ex41CreateTask1 = task(ex41CreateTask1) ex41CreateTask1.doLast{ println " ...
- 电商sku商品推荐
1.逻辑回归LR进行实时离线三级品类训练. 2.通过用户对于实时.离线三级品类的偏好进行召回. 3.通过人的特征.sku特征.人sku交互特征.以及位置手机特征通过gbdt模型进行点击量预估.
- Shiro笔记(二)身份验证
Shiro笔记(二)身份验证 一.核心代码 @Test public void helloWorldTest(){ IniSecurityManagerFactory factory = new In ...
- 最全的JS判断是否为中文的方法
第一种代码:EXFCODE:1 function isChinese(temp)2 {3 var re=/[^/u4e00-/u9fa5]/;4 if (re. ...
- git小笔记
git账号:eggsy.cao@pictureworks.biz eggsycao 1.新建文件夹,并进入,命令窗口:git init 2.提交文件 git add fileName(git add ...
- Linux知识(6)----卸载安装的包
命令步骤: sudo apt-get purge PACKAGE_NAME sudo apt-get autoremove 例如卸载ffmpeg包: sudo apt-get purge ffmpeg ...
- 深入浅出的理解框架(Struts2、Hibernate、Spring)与 MVC 设计模式
现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate.似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和 ...
- reveal 使用注意事项
**将libReveal.dylib 和 Reveal.framework 继承进项目后,一定要在 Build Phases->Link Binary With Libraries中将二者删除. ...
- ArcGIS Pro 中不可用的工具
有些可用于 ArcMap 之类的其他 ArcGIS Desktop 应用程序的地理处理工具在 ArcGIS Pro 中不可用.用于处理 ArcGIS Pro 所不支持的数据格式的地理处理工具已被移除, ...