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。。。又够我做一壶的了
原文地址:https://www.cnblogs.com/minggoddess/p/11240211.html