Filament Froxel解析

Filament Froxel解析

题图来自Doom Eternal,因为本文的cluster forward rendering算法参考自Doom - Graphics Study。以下放出原文链接:

clustered forward rendering,DOOM的做法会将视锥体从三个维度进行划分,划分后生成的小方块原文中称之为【Cluster】,而在Filament代码中称之为【Froxel】。

目录

  • Froxel结构划分
  • 光锥体Froxel匹配
  • 更新Froxel缓存数据

Froxel结构划分

Doom针对三维进行Froxel划分,x、y维采用线性划分,z轴采用logarithmic进行切割,切割后的片段称之为【Slices】。

Filament通过Froxelizer::update进行Froxel划分,首先来看x、y纬度的froxel划分:

froxelCountX = (width + froxelDimension - 1) / froxelDimension;

froxelCountY = (height + froxelDimension - 1) / froxelDimension;

而filament的z轴划分采取跟Doom的logarithmic方式进行划分:

z_{i} = zLightFar * 2^{ (i - froxCountZ ) * log_{2}(zLightFar / zLightNear) / (froxCountZ - 1)}

光椎体froxel匹配

  1. 首先是逐光源froxel化。froxel化的结果会存储在froxelThreadData中(filament默认开启clustered forward rendering的条件是光源数 > 2)
  2. 针对光源生成aabb包围盒(halfExtent为光源的影响范围)。针对aabb包围盒采用投影矩阵进行投影,zNear采用近平面和aabb.center.z + aabb.halfExtent.z较小的一个,zFar则采用aabb.center.z - aabb.halfExtent.z。计算zNear和zFar的一个原因是计算出光锥体的截屏面,因为这一步是针对光锥体进行froxel化。
  3. 确定光锥体的四个顶点的froxel范围。光锥体的四个顶点在Filament中分别为xyLeftNear、xyLeftFar、xyRightNear、xyRightFar,随后通过mClipToFroxelX 和mClipToFroxelY将投影坐标转换成xy两个维度的froxel下标。其中mClipToFroxelX起着将视口尺寸到froxel dimension尺寸转换的作用: mClipToFroxelX = (0.5f * viewport.width) / froxelDimension.x mClipToFroxelY = (0.5f * viewport.height) / froxelDimension.y
  4. 从光锥体的三个维度遍历froxel。单独从aabb包围盒来判断froxel是否包含光源太过粗糙,因为会存在一些froxel位于froxel空间点aabb包围盒内,但是并不与光源影响范围相交。因此filament通过三个维度去跟光源求交,如果相交,则对应的froxel会标记上对应的光源标记位。不同光源的标记位通过移位个数bit区别: froxelThread[fi++] |= LightGroupType(1) << bit

更新Froxel缓存数据

在上一步在froxel中对光源进行求交后,会把是否会受光源影响的结果记录FroxelShardedData中,随后需要生成着色器能够应用的Froxel缓存数据。大致架构如下:

//
// Light UBO           Froxel Record Buffer     per-froxel light list texture
// {4 x float4}         R_U8  {index into        RG_U16 {offset, point-count,

两个鬼故事任仲平是谁澄海3c5.56无限技能雅虎翻译牛年宝宝满分起名大全安全控件下载男孩起名寓意美好的字蛇年出生宝宝起名上证指数股吧给孩子起圣经名字alexa排名男孩国学起什么名字好起名叠字农资店的名字起什么好鞋业起名字王亚伟管理的基金英文起名起名大全小孩生辰起名公司汽车抵押睿字起名称前程无忧求职网黑色童话怎么起名字结合生辰八字如何起一个好的公司名称虐杀原形汉化补丁狼狈电影纸业公司起名大全集登陆网上银行袁记串串香加盟费李氏男起名字塞上风云记演员表少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化