【问题标题】:How to read or sample stencil value from depth/stencil texture?如何从深度/模板纹理中读取或采样模板值?
【发布时间】:2019-08-29 06:55:23
【问题描述】:

假设我有一个深度/模板纹理,其格式为 MTLPixelFormatDepth32Float_Stencil8,我在渲染过程中用作附件,然后我想在后面的渲染过程中从该纹理中采样模板值。

Metal Shading Language Specification 没有提及任何关于此的内容,只是需要将深度纹理声明为 depth2d<T, access a = access::sample> 并且对于 depth2d 两者 T sample(sampler s, float2 coord, int2 offset = int2(0)) constT read(uint2 coord, uint lod = 0) const 返回 T 其中 T很可能是float

所以,我的问题是,我如何从这个纹理中读取或采样模板值?

【问题讨论】:

    标签: metal


    【解决方案1】:

    使用MTLPixelFormatX32_Stencil8 格式创建深度/模板纹理的stencil texture view。然后,将该纹理视图传递到要读取它的着色器中。它作为R8Uint 纹理运行。

    请注意,并非所有设备都支持模板纹理视图。它们支持等于或优于 iOS_GPUFamily1_v3、iOS_GPUFamily2_v3、iOS_GPUFamily3_v2、tvOS_GPUFamily1_v2 或 OSX_GPUFamily1_v2 的功能集。

    如果不支持,则需要使用 blit 编码器将深度/模板纹理复制到缓冲区,然后直接使用该缓冲区或将其复制到合适格式的纹理。

    【讨论】:

    • 完全忘记了纹理视图,现在我看到它们,一切都说得通了。谢谢。
    猜你喜欢
    • 2016-08-15
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多