[gdc13]Particle Shadows & Cache-Efficient Post-Processing

[gdc13]Particle Shadows & Cache-Efficient Post-Processing_第1张图片

Particle Shadows

这里particle shadow已经不是之前的sc2和crysis里面的particle投到正常场景上面的translucency shadow了:

使用类似LightPropagationVolume的做法,只不过是把indirect lighting信息换成了transmittance信息。

  • 以voxel的方式(也就是3d texture)存储particle transmittance,填充过程使用到geometry shader
  • 顺着light dir方向进行扩散(使用compute shader计算)
  • sample
一些优化:
  • 加一个低分辨率(8x8)的coverage mask,这样一些完全空的地方就可以跳过计算
  • 使用tesselation,在domain shader这里进行particle shadow map的sample,domain shader这里精度是比在pixel shader阶段的要低,算是一个low resolution计算的变种了,不过更加自然了
CacheEfficientPostProcessing
围绕着spatial locality来做文章,思路很棒,正常带着kernel sample screen space texture的做法(ssao,ss reflection...),常常用一个不规则kernel(poison filter...),这样就会让cache效率很差。
nv采用把用于sample的贴图,以这种方式:

,拆分成多几个,然后在sample的时候(使用texture array),一个kernel就在同一张贴图上面采,cache效率就好太多了:2.3x


sum
几个技术就是都用到了dx11,算是一个推广dx11努力吧,geometry shader, tessellation(domain shader), compute shader, texture array...


你可能感兴趣的:([gdc13]Particle Shadows & Cache-Efficient Post-Processing)