繁体   English   中英

在哪些情况下需要使用 MTLStoreActionStoreAndMultisampleResolve 而不是 MTLStoreActionMultisampleResolve?

[英]In which cases is it necessary to use MTLStoreActionStoreAndMultisampleResolve instead of MTLStoreActionMultisampleResolve?

使用MTLStoreActionStoreAndMultisampleResolve ,多样本值存储在附件中,并解析为存储在resolveTexture属性指定的纹理中的单样本值。 但在哪些情况下将多样本值存储在附件中有用? 据我所知,多重采样纹理没有加载操作(或者我错过了一些东西)。 我也不太清楚这种多重采样纹理的使用方式。

当您想要以普通方式解析 MSAA 渲染目标并保留其内容以供进一步操作时,可以使用此存储操作。

此类操作的一个示例是自定义 MSAA 解析过滤器。 Metal 允许您将多重采样纹理绑定为着色器函数参数,前提是readaccess属性(这意味着您无法编写或采样多重采样纹理)。 金属着色语言 (MSL) 包括用于指定要读取的坐标和样本索引的函数:

Tv read(uint2 coord, uint sample) const

get_num_samples()函数可用于确定多重采样纹理的样本数。

如果您自定义了样本位置(使用MTLRenderPassDescriptorsetSamplePositions:count:方法设置),免费函数get_sample_position(uint index)返回指定索引的位置。

这些着色器函数可以一起使用,以使用着色器手动解析 MSAA 纹理。 您可以想象,某些应用程序可以受益于使用一组自定义样本位置并以不同于取平均值的普通技术的方式组合样本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM