@@ -518,27 +518,30 @@ namespace
518518 embeddedMaterial.heightTexture .reset ();
519519 }
520520
521- aiColor4D albedoColor{};
522- bool hasBaseColor = false ;
521+ if (!embeddedMaterial.albedoTexture .has_value ())
522+ {
523+ aiColor4D albedoColor{};
524+ bool hasBaseColor = false ;
523525#if defined(AI_MATKEY_BASE_COLOR)
524- hasBaseColor = material->Get (AI_MATKEY_BASE_COLOR, albedoColor) == AI_SUCCESS;
526+ hasBaseColor = material->Get (AI_MATKEY_BASE_COLOR, albedoColor) == AI_SUCCESS;
525527#endif
526528
527- if (hasBaseColor)
528- {
529- embeddedMaterial.albedo .x = ToPerceptualColor (albedoColor.r );
530- embeddedMaterial.albedo .y = ToPerceptualColor (albedoColor.g );
531- embeddedMaterial.albedo .z = ToPerceptualColor (albedoColor.b );
532- embeddedMaterial.albedo .w = std::clamp (albedoColor.a , 0 .0f , 1 .0f );
533- }
534- else if (!embeddedMaterial.albedoTexture .has_value ())
535- {
536- aiColor3D diffuseColor{};
537- if (material->Get (AI_MATKEY_COLOR_DIFFUSE, diffuseColor) == AI_SUCCESS)
529+ if (hasBaseColor)
530+ {
531+ embeddedMaterial.albedo .x = ToPerceptualColor (albedoColor.r );
532+ embeddedMaterial.albedo .y = ToPerceptualColor (albedoColor.g );
533+ embeddedMaterial.albedo .z = ToPerceptualColor (albedoColor.b );
534+ embeddedMaterial.albedo .w = std::clamp (albedoColor.a , 0 .0f , 1 .0f );
535+ }
536+ else
538537 {
539- embeddedMaterial.albedo .x = ToPerceptualColor (diffuseColor.r );
540- embeddedMaterial.albedo .y = ToPerceptualColor (diffuseColor.g );
541- embeddedMaterial.albedo .z = ToPerceptualColor (diffuseColor.b );
538+ aiColor3D diffuseColor{};
539+ if (material->Get (AI_MATKEY_COLOR_DIFFUSE, diffuseColor) == AI_SUCCESS)
540+ {
541+ embeddedMaterial.albedo .x = ToPerceptualColor (diffuseColor.r );
542+ embeddedMaterial.albedo .y = ToPerceptualColor (diffuseColor.g );
543+ embeddedMaterial.albedo .z = ToPerceptualColor (diffuseColor.b );
544+ }
542545 }
543546 }
544547
@@ -552,13 +555,13 @@ namespace
552555 float metallicFactor = 0 .0f ;
553556 const bool hasMetallicFactor = material->Get (AI_MATKEY_METALLIC_FACTOR, metallicFactor) == AI_SUCCESS;
554557
555- if (hasMetallicFactor )
558+ if (embeddedMaterial. metallicTexture . has_value () )
556559 {
557- embeddedMaterial.metallic = std::clamp (metallicFactor, 0 . 0f , 1 .0f ) ;
560+ embeddedMaterial.metallic = 1 .0f ;
558561 }
559- else if (embeddedMaterial. metallicTexture . has_value () )
562+ else if (hasMetallicFactor )
560563 {
561- embeddedMaterial.metallic = 1 .0f ;
564+ embeddedMaterial.metallic = std::clamp (metallicFactor, 0 . 0f , 1 .0f ) ;
562565 }
563566#if defined(AI_MATKEY_REFLECTIVITY)
564567 else
@@ -580,13 +583,13 @@ namespace
580583
581584#if defined(AI_MATKEY_ROUGHNESS_FACTOR)
582585 float roughnessFactor = 0 .0f ;
583- if (material-> Get (AI_MATKEY_ROUGHNESS_FACTOR, roughnessFactor) == AI_SUCCESS )
586+ if (embeddedMaterial. roughnessTexture . has_value () )
584587 {
585- embeddedMaterial.roughness = std::clamp (roughnessFactor, 0 . 0f , 1 .0f ) ;
588+ embeddedMaterial.roughness = 1 .0f ;
586589 }
587- else if (embeddedMaterial. roughnessTexture . has_value () )
590+ else if (material-> Get (AI_MATKEY_ROUGHNESS_FACTOR, roughnessFactor) == AI_SUCCESS )
588591 {
589- embeddedMaterial.roughness = 1 .0f ;
592+ embeddedMaterial.roughness = std::clamp (roughnessFactor, 0 . 0f , 1 .0f ) ;
590593 }
591594#else
592595 if (embeddedMaterial.roughnessTexture .has_value ())
0 commit comments