采样器 lod_options (MSL) 在金属着色器中的正确用法是什么?
What is the correct usage of sampler lod_options (MSL) in Metal shader?
我正在尝试通过 Metal Shading Language Specification 学习 MSL,发现您可以在对纹理进行采样时通过在 sample
函数中指定选项来设置 LOD 选项。这是规范中给出的示例之一:
Tv sample(sampler s, float2 coord, lod_options options, int2 offset = int2(0)) const
lod_options
包括bias,level,gradient2d等
我找遍了,但找不到它的用法语法。这些是命名参数吗? lod_options
是结构体吗?例如,如果我想指定 LOD 级别,正确的做法是什么?我知道这些选项也可以在采样器对象本身中指定,但如果我想在这里这样做,正确的语法是什么?
没有 lod_options
类型;您可以将其视为 bias
、level
、gradient2d
等类型之一的占位符。这些类型中的每一种都是不同的结构,这允许 Metal 标准库为每个此类选项提供 sample
函数的重载变体。
例如,要指定要采样的 mipmap 级别,您需要提供 level
类型的参数:
float4 color = myTexture.sample(mySampler, coords, level(1));
我正在尝试通过 Metal Shading Language Specification 学习 MSL,发现您可以在对纹理进行采样时通过在 sample
函数中指定选项来设置 LOD 选项。这是规范中给出的示例之一:
Tv sample(sampler s, float2 coord, lod_options options, int2 offset = int2(0)) const
lod_options
包括bias,level,gradient2d等
我找遍了,但找不到它的用法语法。这些是命名参数吗? lod_options
是结构体吗?例如,如果我想指定 LOD 级别,正确的做法是什么?我知道这些选项也可以在采样器对象本身中指定,但如果我想在这里这样做,正确的语法是什么?
没有 lod_options
类型;您可以将其视为 bias
、level
、gradient2d
等类型之一的占位符。这些类型中的每一种都是不同的结构,这允许 Metal 标准库为每个此类选项提供 sample
函数的重载变体。
例如,要指定要采样的 mipmap 级别,您需要提供 level
类型的参数:
float4 color = myTexture.sample(mySampler, coords, level(1));