public static IEnumerable <GetTextureParam> EnumerateTextures(glTF gltf, glTFMaterial m) { if (m.pbrMetallicRoughness != null) { // base color if (m.pbrMetallicRoughness?.baseColorTexture != null) { yield return(PBRMaterialItem.BaseColorTexture(gltf, m)); } // metallic roughness if (m.pbrMetallicRoughness?.metallicRoughnessTexture != null) { yield return(PBRMaterialItem.MetallicRoughnessTexture(gltf, m)); } } // emission if (m.emissiveTexture != null) { yield return(GetTextureParam.Create(gltf, m.emissiveTexture.index)); } // normal if (m.normalTexture != null) { yield return(PBRMaterialItem.NormalTexture(gltf, m)); } // occlusion if (m.occlusionTexture != null) { yield return(PBRMaterialItem.OcclusionTexture(gltf, m)); } }
public static IEnumerable <TextureImportParam> EnumerateTextures(GltfParser parser, glTFMaterial m) { int?metallicRoughnessTexture = default; if (m.pbrMetallicRoughness != null) { // base color if (m.pbrMetallicRoughness?.baseColorTexture != null) { yield return(PBRMaterialItem.BaseColorTexture(parser, m)); } // metallic roughness if (m.pbrMetallicRoughness?.metallicRoughnessTexture != null && m.pbrMetallicRoughness.metallicRoughnessTexture.index != -1) { metallicRoughnessTexture = m.pbrMetallicRoughness?.metallicRoughnessTexture?.index; } } // emission if (m.emissiveTexture != null) { var(offset, scale) = MaterialFactory.GetTextureOffsetAndScale(m.emissiveTexture); yield return(TextureFactory.CreateSRGB(parser, m.emissiveTexture.index, offset, scale)); } // normal if (m.normalTexture != null) { yield return(PBRMaterialItem.NormalTexture(parser, m)); } // occlusion int?occlusionTexture = default; if (m.occlusionTexture != null && m.occlusionTexture.index != -1) { occlusionTexture = m.occlusionTexture.index; } // metallicSmooth and occlusion if (metallicRoughnessTexture.HasValue || occlusionTexture.HasValue) { yield return(PBRMaterialItem.StandardTexture(parser, m)); } }
public static IEnumerable <GetTextureParam> EnumerateTextures(glTF gltf, glTFMaterial m) { int?metallicRoughnessTexture = default; if (m.pbrMetallicRoughness != null) { // base color if (m.pbrMetallicRoughness?.baseColorTexture != null) { yield return(PBRMaterialItem.BaseColorTexture(gltf, m)); } // metallic roughness if (m.pbrMetallicRoughness?.metallicRoughnessTexture != null && m.pbrMetallicRoughness.metallicRoughnessTexture.index != -1) { metallicRoughnessTexture = m.pbrMetallicRoughness?.metallicRoughnessTexture?.index; } } // emission if (m.emissiveTexture != null) { yield return(GetTextureParam.CreateSRGB(gltf, m.emissiveTexture.index)); } // normal if (m.normalTexture != null) { yield return(PBRMaterialItem.NormalTexture(gltf, m)); } // occlusion int?occlusionTexture = default; if (m.occlusionTexture != null && m.occlusionTexture.index != -1) { occlusionTexture = m.occlusionTexture.index; } // metallicSmooth and occlusion if (metallicRoughnessTexture.HasValue || occlusionTexture.HasValue) { yield return(PBRMaterialItem.StandardTexture(gltf, m)); } }