TBDR下msaa 在metal vulkan和ogles的解决方案

Posted minggoddess

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TBDR下msaa 在metal vulkan和ogles的解决方案相关的知识,希望对你有一定的参考价值。

https://developer.arm.com/solutions/graphics/developer-guides/understanding-render-passes/multi-sample-anti-aliasing

msaa在local mem上做很省但是 带宽不处理多出8x  对于4xmsaa

计算如下

处理前

python
bytesPerFrame4x = 2560 * 1440 * 4 * 4
bytesPerFrame1x = 2560 * 1440 * 4 * 1

# Additional 4x bandwidth is doubled because the additional samples
# are written by one pass and then re-read to resolve the final color
bytesPerFrame = ((bytesPerFrame4x * 2) + bytesPerFrame1x)
bytesPerSecond = bytesPerFrame * 60
               = 7.9 GB/s

处理后


python bytesPerFrame1x = 2560 * 1440 * 4 * 1 # All additional 4x bandwidth is kept entirely inside the tile memory bytesPerSecond = bytesPerFrame1x * 60 = 884 MB/s

 

处理的方法就是load store action选一共1x那种

vulkan和metal都可以这样处理 之前有发blog

https://www.cnblogs.com/minggoddess/p/10950349.html

对于

ogles

用如下扩展

[EXT_multisampled_render_to_texture][EXT_msaa] extension

https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt

 

vulkan还要用

using VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT and constructing the VkImage with VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT.做memoryless

metal直接设置memoryless

这块memoryless 还不知道ogles的方案 不过好在这块只是footprint没有bandwidth了

 

所有tbdr下这套解决方案 在ogles 在unity估计写起来比较麻烦。。 多半是extension。。。又够我做一壶的了

 

以上是关于TBDR下msaa 在metal vulkan和ogles的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Metal2剖析:抗锯齿之基于Imageblock特性的增强MSAA

Metal2新特性:光栅顺序组(ROG,Raster Order Groups)

WebGPU学习:MSAA

移动GPU渲染原理的流派——IMRTBR及TBDR

adreno的tbdr

Unity开启MSAA后模型出现网格黑线的问题