Skip to content

Commit c554a0b

Browse files
Merge branch 'main' into release-all-imagesin-releaseRenderResources
2 parents 7395313 + 75e372f commit c554a0b

File tree

1 file changed

+31
-31
lines changed

1 file changed

+31
-31
lines changed

source/MaterialXRenderMsl/MetalTextureHandler.mm

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -197,54 +197,54 @@
197197
std::vector<unsigned char> rearrangedDataC;
198198
void* imageData = image->getResourceBuffer();
199199

200-
if ((pixelFormat == MTLPixelFormatRGBA32Float || pixelFormat == MTLPixelFormatRGBA8Unorm) && channelCount == 3)
200+
id<MTLBuffer> buffer = nil;
201+
if (imageData)
201202
{
202-
bool isFloat = pixelFormat == MTLPixelFormatRGBA32Float;
203+
if ((pixelFormat == MTLPixelFormatRGBA32Float || pixelFormat == MTLPixelFormatRGBA8Unorm) && channelCount == 3)
204+
{
205+
bool isFloat = pixelFormat == MTLPixelFormatRGBA32Float;
203206

204-
sourceBytesPerRow = sourceBytesPerRow / 3 * 4;
205-
sourceBytesPerImage = sourceBytesPerImage / 3 * 4;
207+
sourceBytesPerRow = sourceBytesPerRow / 3 * 4;
208+
sourceBytesPerImage = sourceBytesPerImage / 3 * 4;
206209

207-
size_t srcIdx = 0;
210+
size_t srcIdx = 0;
208211

209-
if (isFloat)
210-
{
211-
rearrangedDataF.resize(sourceBytesPerImage / sizeof(float));
212-
for (size_t dstIdx = 0; dstIdx < rearrangedDataF.size(); ++dstIdx)
212+
if (isFloat)
213213
{
214-
if ((dstIdx & 0x3) == 3)
214+
rearrangedDataF.resize(sourceBytesPerImage / sizeof(float));
215+
for (size_t dstIdx = 0; dstIdx < rearrangedDataF.size(); ++dstIdx)
215216
{
216-
rearrangedDataF[dstIdx] = 1.0f;
217-
continue;
217+
if ((dstIdx & 0x3) == 3)
218+
{
219+
rearrangedDataF[dstIdx] = 1.0f;
220+
continue;
221+
}
222+
223+
rearrangedDataF[dstIdx] = ((float*) imageData)[srcIdx++];
218224
}
219225

220-
rearrangedDataF[dstIdx] = ((float*) imageData)[srcIdx++];
226+
imageData = rearrangedDataF.data();
221227
}
222-
223-
imageData = rearrangedDataF.data();
224-
}
225-
else
226-
{
227-
rearrangedDataC.resize(sourceBytesPerImage);
228-
for (size_t dstIdx = 0; dstIdx < rearrangedDataC.size(); ++dstIdx)
228+
else
229229
{
230-
if ((dstIdx & 0x3) == 3)
230+
rearrangedDataC.resize(sourceBytesPerImage);
231+
for (size_t dstIdx = 0; dstIdx < rearrangedDataC.size(); ++dstIdx)
231232
{
232-
rearrangedDataC[dstIdx] = 255;
233-
continue;
233+
if ((dstIdx & 0x3) == 3)
234+
{
235+
rearrangedDataC[dstIdx] = 255;
236+
continue;
237+
}
238+
239+
rearrangedDataC[dstIdx] = ((unsigned char*) imageData)[srcIdx++];
234240
}
235241

236-
rearrangedDataC[dstIdx] = ((unsigned char*) imageData)[srcIdx++];
242+
imageData = rearrangedDataC.data();
237243
}
238244

239-
imageData = rearrangedDataC.data();
245+
channelCount = 4;
240246
}
241247

242-
channelCount = 4;
243-
}
244-
245-
id<MTLBuffer> buffer = nil;
246-
if (imageData)
247-
{
248248
buffer = [_device newBufferWithBytes:imageData
249249
length:sourceBytesPerImage
250250
options:MTLStorageModeShared];

0 commit comments

Comments
 (0)