Fix Filament emissive material factors
This commit is contained in:
@@ -25,7 +25,8 @@ material {
|
||||
{ type : sampler2d, name : Emissive },
|
||||
{ type : float4, name : BaseColorFactor },
|
||||
{ type : float, name : MetallicFactor },
|
||||
{ type : float, name : RoughnessFactor }
|
||||
{ type : float, name : RoughnessFactor },
|
||||
{ type : float, name : EmissiveFactor }
|
||||
|
||||
],
|
||||
requires : [
|
||||
@@ -48,6 +49,8 @@ fragment {
|
||||
material.metallic = materialParams.MetallicFactor;
|
||||
material.metallic *= texture(materialParams_Metallic, uv).r;
|
||||
material.emissive = texture(materialParams_Emissive, uv);
|
||||
material.emissive.a = 1.0 - material.emissive.a;
|
||||
material.emissive.rgb *= materialParams.EmissiveFactor;
|
||||
material.emissive.a = (1.0 - material.emissive.a) *
|
||||
materialParams.EmissiveFactor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,8 @@ material {
|
||||
{ type : sampler2d, name : Emissive },
|
||||
{ type : float4, name : BaseColorFactor },
|
||||
{ type : float, name : MetallicFactor },
|
||||
{ type : float, name : RoughnessFactor }
|
||||
{ type : float, name : RoughnessFactor },
|
||||
{ type : float, name : EmissiveFactor }
|
||||
],
|
||||
requires : [
|
||||
uv0
|
||||
@@ -45,6 +46,8 @@ fragment {
|
||||
material.metallic = materialParams.MetallicFactor;
|
||||
material.metallic *= texture(materialParams_ORM, uv).b;
|
||||
material.emissive = texture(materialParams_Emissive, uv);
|
||||
material.emissive.a = 1.0 - material.emissive.a;
|
||||
material.emissive.rgb *= materialParams.EmissiveFactor;
|
||||
material.emissive.a = (1.0 - material.emissive.a) *
|
||||
materialParams.EmissiveFactor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,8 @@ material {
|
||||
{ type : sampler2d, name : Emissive },
|
||||
{ type : float4, name : BaseColorFactor },
|
||||
{ type : float, name : MetallicFactor },
|
||||
{ type : float, name : RoughnessFactor }
|
||||
{ type : float, name : RoughnessFactor },
|
||||
{ type : float, name : EmissiveFactor }
|
||||
],
|
||||
requires : [
|
||||
uv0
|
||||
@@ -48,6 +49,8 @@ fragment {
|
||||
material.metallic = materialParams.MetallicFactor;
|
||||
material.metallic *= texture(materialParams_ORM, uv).b;
|
||||
material.emissive = texture(materialParams_Emissive, uv);
|
||||
material.emissive.a = 1.0 - material.emissive.a;
|
||||
material.emissive.rgb *= materialParams.EmissiveFactor;
|
||||
material.emissive.a = (1.0 - material.emissive.a) *
|
||||
materialParams.EmissiveFactor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ material {
|
||||
{ type : sampler2d, name : Emissive },
|
||||
{ type : float4, name : BaseColorFactor },
|
||||
{ type : float, name : MetallicFactor },
|
||||
{ type : float, name : RoughnessFactor }
|
||||
{ type : float, name : RoughnessFactor },
|
||||
{ type : float, name : EmissiveFactor }
|
||||
|
||||
],
|
||||
requires : [
|
||||
@@ -51,6 +52,8 @@ fragment {
|
||||
material.metallic = materialParams.MetallicFactor;
|
||||
material.metallic *= texture(materialParams_Metallic, uv).r;
|
||||
material.emissive = texture(materialParams_Emissive, uv);
|
||||
material.emissive.a = 1.0 - material.emissive.a;
|
||||
material.emissive.rgb *= materialParams.EmissiveFactor;
|
||||
material.emissive.a = (1.0 - material.emissive.a) *
|
||||
materialParams.EmissiveFactor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ fragment {
|
||||
material.baseColor *= texture(materialParams_BaseColor, uv);
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,7 @@ fragment {
|
||||
material.baseColor *= texture(materialParams_BaseColor, uv);
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,8 @@ fragment {
|
||||
material.baseColor *= texture(materialParams_BaseColor, uv);
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
|
||||
// Apply reflection.
|
||||
vec4 reflection = texture(materialParams_Reflection, screen_uv);
|
||||
|
||||
@@ -37,6 +37,7 @@ fragment {
|
||||
material.baseColor *= texture(materialParams_BaseColor, uv);
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ fragment {
|
||||
material.baseColor *= texture(materialParams_BaseColor, uv);
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,8 @@ fragment {
|
||||
material.baseColor *= texture(materialParams_BaseColor, uv);
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
|
||||
// Apply reflection.
|
||||
vec4 reflection = texture(materialParams_Reflection, screen_uv);
|
||||
|
||||
@@ -29,6 +29,7 @@ fragment {
|
||||
material.baseColor = materialParams.BaseColorFactor;
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ fragment {
|
||||
material.baseColor = materialParams.BaseColorFactor;
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,8 @@ fragment {
|
||||
material.baseColor = materialParams.BaseColorFactor;
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
|
||||
// Apply reflection.
|
||||
vec4 reflection = texture(materialParams_Reflection, screen_uv);
|
||||
|
||||
@@ -44,6 +44,7 @@ fragment {
|
||||
material.baseColor *= texture(materialParams_BaseColor, uv);
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ fragment {
|
||||
material.baseColor *= texture(materialParams_BaseColor, uv);
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,8 @@ fragment {
|
||||
material.baseColor *= texture(materialParams_BaseColor, uv);
|
||||
material.specularColor = vec3(materialParams.SpecularFactor);
|
||||
material.glossiness = materialParams.GlossinessFactor;
|
||||
material.emissive = vec4(materialParams.EmissiveFactor);
|
||||
material.emissive = vec4(
|
||||
materialParams.BaseColorFactor.rgb * materialParams.EmissiveFactor, 0.0);
|
||||
|
||||
// Apply reflection.
|
||||
vec4 reflection = texture(materialParams_Reflection, screen_uv);
|
||||
|
||||
@@ -251,7 +251,11 @@ void MaterialManager::UpdateMaterialInstance(
|
||||
color);
|
||||
}
|
||||
if (fmaterial->hasParameter("EmissiveFactor")) {
|
||||
instance->setParameter("EmissiveFactor", material.emissive);
|
||||
const float emissive =
|
||||
material.emissive > 0
|
||||
? material.emissive
|
||||
: (material.emissive_texture != nullptr ? 1.0f : 0.0f);
|
||||
instance->setParameter("EmissiveFactor", emissive);
|
||||
}
|
||||
if (fmaterial->hasParameter("SpecularFactor")) {
|
||||
instance->setParameter("SpecularFactor", material.specular);
|
||||
|
||||
@@ -115,7 +115,7 @@ ObjectManager::ObjectManager(filament::Engine* engine) : engine_(engine) {
|
||||
fallback_textures_[mjTEXROLE_ROUGHNESS] = fallback_white_;
|
||||
fallback_textures_[mjTEXROLE_METALLIC] = fallback_black_;
|
||||
fallback_textures_[mjTEXROLE_NORMAL] = fallback_normal_;
|
||||
fallback_textures_[mjTEXROLE_EMISSIVE] = fallback_black_;
|
||||
fallback_textures_[mjTEXROLE_EMISSIVE] = fallback_white_;
|
||||
fallback_textures_[mjTEXROLE_ORM] = fallback_orm_;
|
||||
|
||||
CreateQuadBuffers();
|
||||
|
||||
Reference in New Issue
Block a user