Skip to content

Commit 34ce890

Browse files
committed
Updated AssimpParser so factor is always 1.0f when texture is loaded
1 parent a4a9ed4 commit 34ce890

1 file changed

Lines changed: 28 additions & 25 deletions

File tree

Sources/OvRendering/src/OvRendering/Resources/Parsers/AssimpParser.cpp

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)