|
@@ -5347,7 +5347,33 @@ static Model LoadGLTF(const char *fileName)
|
|
|
Image imMetallicRoughness = LoadImageFromCgltfImage(data->materials[i].pbr_metallic_roughness.metallic_roughness_texture.texture->image, texPath);
|
|
|
if (imMetallicRoughness.data != NULL)
|
|
|
{
|
|
|
- model.materials[j].maps[MATERIAL_MAP_ROUGHNESS].texture = LoadTextureFromImage(imMetallicRoughness);
|
|
|
+ Image imMetallic, imRoughness;
|
|
|
+
|
|
|
+ imMetallic.data = RL_MALLOC(imMetallicRoughness.width * imMetallicRoughness.height);
|
|
|
+ imRoughness.data = RL_MALLOC(imMetallicRoughness.width * imMetallicRoughness.height);
|
|
|
+
|
|
|
+ imMetallic.width = imRoughness.width = imMetallicRoughness.width;
|
|
|
+ imMetallic.height = imRoughness.height = imMetallicRoughness.height;
|
|
|
+
|
|
|
+ imMetallic.format = imRoughness.format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE;
|
|
|
+ imMetallic.mipmaps = imRoughness.mipmaps = 1;
|
|
|
+
|
|
|
+ for (int x = 0; x < imRoughness.width; x++) {
|
|
|
+ for (int y = 0; y < imRoughness.height; y++) {
|
|
|
+ Color color = GetImageColor(imMetallicRoughness, x, y);
|
|
|
+
|
|
|
+ Color roughness = (Color) {color.g};
|
|
|
+ Color metallic = (Color) {color.b};
|
|
|
+
|
|
|
+ ((unsigned char *)imRoughness.data)[y*imRoughness.width + x] = color.g;
|
|
|
+ ((unsigned char *)imMetallic.data)[y*imMetallic.width + x] = color.b;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ model.materials[j].maps[MATERIAL_MAP_ROUGHNESS].texture = LoadTextureFromImage(imRoughness);
|
|
|
+ model.materials[j].maps[MATERIAL_MAP_METALNESS].texture = LoadTextureFromImage(imMetallic);
|
|
|
+
|
|
|
+ UnloadImage(imRoughness);
|
|
|
+ UnloadImage(imMetallic);
|
|
|
UnloadImage(imMetallicRoughness);
|
|
|
}
|
|
|
|