[hgiMetal] Change Metal's swizzle so single channel texture
authorklucknav <klucknav@users.noreply.github.com>
Fri, 15 Dec 2023 00:31:15 +0000 (16:31 -0800)
committerpixar-oss <pixar-oss@users.noreply.github.com>
Fri, 15 Dec 2023 00:31:15 +0000 (16:31 -0800)
reads follow the UsdPreviewSurface spec of repeating the single channel
on the r, g and b channels with 1.0 in the alpha channel.

Fixes #2731

(Internal change: 2308645)

pxr/imaging/hgiMetal/texture.mm

index 0585129b6170ac469997c49f739a7a6a30393c26..f5b708d256c4905fb21b66f1440ebf78f5721699 100644 (file)
@@ -74,24 +74,15 @@ HgiMetalTexture::HgiMetalTexture(HgiMetal *hgi, HgiTextureDesc const & desc)
 #if (defined(__MAC_10_15) && __MAC_OS_X_VERSION_MAX_ALLOWED >= __MAC_10_15) \
     || __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000
         if (@available(macOS 10.15, ios 13.0, *)) {
-            size_t numChannels = HgiGetComponentCount(desc.format);
-
-            if (usage == MTLTextureUsageShaderRead && numChannels == 1) {
-                MTLTextureSwizzle s = HgiMetalConversions::GetComponentSwizzle(
-                    desc.componentMapping.r);
-                texDesc.swizzle = MTLTextureSwizzleChannelsMake(s, s, s, s);
-            }
-            else {
-                texDesc.swizzle = MTLTextureSwizzleChannelsMake(
-                    HgiMetalConversions::GetComponentSwizzle(
-                        desc.componentMapping.r),
-                    HgiMetalConversions::GetComponentSwizzle(
-                        desc.componentMapping.g),
-                    HgiMetalConversions::GetComponentSwizzle(
-                        desc.componentMapping.b),
-                    HgiMetalConversions::GetComponentSwizzle(
-                        desc.componentMapping.a));
-            }
+            texDesc.swizzle = MTLTextureSwizzleChannelsMake(
+                HgiMetalConversions::GetComponentSwizzle(
+                    desc.componentMapping.r),
+                HgiMetalConversions::GetComponentSwizzle(
+                    desc.componentMapping.g),
+                HgiMetalConversions::GetComponentSwizzle(
+                    desc.componentMapping.b),
+                HgiMetalConversions::GetComponentSwizzle(
+                    desc.componentMapping.a));
         }
 #endif