博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Forward+ Shading架构
阅读量:6404 次
发布时间:2019-06-23

本文共 837 字,大约阅读时间需要 2 分钟。

Forward+ = Tile based Light Culling + Tile based Forward Rendering

整体渲染架构分为如下3大步骤:

1、PrePass

将场景的min z、max z渲染至z-buffer。

2、Tile based Light Culling

需要用到CS及其并行数据同步机制,是最复杂的一步。

  1. 将屏幕划分为8px x 8px的多个tile,每个tile对应一个thread group
  2. 针对每个thread group,结合其四个角与摄像机位置,并行计算其在viewer空间下的frustum多面体的4个面;每个group计算一次
  3. 针对每个thread group,发起8x8个thread,每个thread求得所在像素位置的max z与min z。然后利用group share数据同步机制,存储到group share data里。至此每个tile所对应的frustum构造完毕(共6个面)
  4. 针对每个thread group,利用其8x8个thread,每个thread承载一盏light的culling,可并行实现64盏灯的culling。Culling实现采用分离轴定律来判定tile frustum与light是否相交。并利用group share数据同步机制,将所有与tile frustum相交的light索引号存储到group share data中,形成tile所对应的light列表
  5. 针对每个thread group,发起1个thread,利用全局数据同步机制,将其tile所对应的light列表统一存入某全局数据区域。至此,所有tile所对应的light culling操作执行完毕。

3、Tile based Forward Shading

在ps中,根据像素位置判断出当前所属的tile,然后根据tile所对应的light列表,索引所有与tile相交的light,一次性进行所有光照与着色计算。

转载地址:http://jojea.baihongyu.com/

你可能感兴趣的文章
Mac使用ssh公钥登录Linux
查看>>
【366天】跃迁之路——程序员高效学习方法论探索系列(实验阶段124-2018.02.06)...
查看>>
POJ3070-Fibonacci(矩阵快速幂)
查看>>
[vue插件]基于vue2.x的电商图片放大镜插件
查看>>
标准的组件结构
查看>>
vue——一个页面实现音乐播放器
查看>>
SVG 扬帆起航
查看>>
NET Core-学习笔记(二)
查看>>
职业生涯上的点点滴滴
查看>>
Linux下添加新硬盘,分区及挂载
查看>>
一起来将vscode变成私人定制笔记本
查看>>
Flutter 云音乐
查看>>
RecyclerView实现多type页面
查看>>
个人的web商城网站
查看>>
debian fcitx
查看>>
排中律与实无穷问题的性质分析
查看>>
08/23 学习总结
查看>>
关于Ubuntu下安装phpmyadmin后mysqli丢失的解决
查看>>
物理层
查看>>
linux多网卡路由设置
查看>>