[英]GLSL gl_FragDepth equivalent in Metal shaders
是的,您可以在从片段着色器返回的结构成员上使用depth
属性指定此属性。 例如,您将创建一个类型,如:
struct FragmentOut {
half4 color [[color(0)]];
float depth [[depth(any)]];
};
然后,在您的fragment函数中,创建此struct的实例,填充并返回它:
fragment FragmentOut my_frag_function(...) {
FragmentOut out;
out.color = // compute fragment color (for first color attachment)
out.depth = // compute fragment depth
return out;
}
请注意,您可以指定greater
或less
作为深度属性参数,而不是any
一个,这表示您提供的片段深度将分别大于或小于插值片段深度。 这些说明符的语义与OpenGL中的相同名称匹配,您应该尽可能使用它们以进行优化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.