in src/fbx/Fbx2Raw.cpp [64:89]
static RawMaterialType GetMaterialType(
const RawModel& raw,
const int textures[RAW_TEXTURE_USAGE_MAX],
const bool vertexTransparency,
const bool skinned) {
// DIFFUSE and ALBEDO are different enough to represent distinctly, but they both help determine
// transparency.
int diffuseTexture = textures[RAW_TEXTURE_USAGE_DIFFUSE];
if (diffuseTexture < 0) {
diffuseTexture = textures[RAW_TEXTURE_USAGE_ALBEDO];
}
// determine material type based on texture occlusion.
if (diffuseTexture >= 0) {
return (raw.GetTexture(diffuseTexture).occlusion == RAW_TEXTURE_OCCLUSION_OPAQUE)
? (skinned ? RAW_MATERIAL_TYPE_SKINNED_OPAQUE : RAW_MATERIAL_TYPE_OPAQUE)
: (skinned ? RAW_MATERIAL_TYPE_SKINNED_TRANSPARENT : RAW_MATERIAL_TYPE_TRANSPARENT);
}
// else if there is any vertex transparency, treat whole mesh as transparent
if (vertexTransparency) {
return skinned ? RAW_MATERIAL_TYPE_SKINNED_TRANSPARENT : RAW_MATERIAL_TYPE_TRANSPARENT;
}
// Default to simply opaque.
return skinned ? RAW_MATERIAL_TYPE_SKINNED_OPAQUE : RAW_MATERIAL_TYPE_OPAQUE;
}