// TODO: Multiple texture coordinate will be supported.
in lowp vec2 vUV;
in lowp mat3 vTBN;
+#ifdef COLOR_ATTRIBUTE
in lowp vec4 vColor;
+#endif
in highp vec3 vPositionToCamera;
out vec4 FragColor;
lowp vec4 baseColor = texture(sAlbedoAlpha, vUV);
baseColor = vec4(linear(baseColor.rgb), baseColor.w) * uColorFactor;
#else // BASECOLOR_TEX
+#ifdef COLOR_ATTRIBUTE
lowp vec4 baseColor = vColor * uColorFactor;
+#else // COLOR_ATTRIBUTE
+ lowp vec4 baseColor = uColorFactor;
+#endif // COLOR_ATTRIBUTE
#endif // BASECOLOR_TEX
#ifdef METALLIC_ROUGHNESS_TEX
#endif // NORMAL_TEX
#else // THREE_TEX
vec4 albedoMetal = texture(sAlbedoMetal, vUV);
+#ifdef COLOR_ATTRIBUTE
lowp vec4 baseColor = vec4(linear(albedoMetal.rgb), 1.0) * vColor * uColorFactor;
+#else // COLOR_ATTRIBUTE
+ lowp vec4 baseColor = vec4(linear(albedoMetal.rgb), 1.0) * uColorFactor;
+#endif // COLOR_ATTRIBUTE
metallic = albedoMetal.METALLIC * metallic;
in vec3 aTangent;
#endif
+#ifdef COLOR_ATTRIBUTE
in vec4 aVertexColor;
+uniform lowp float uHasVertexColor;
+#endif
#ifdef MORPH
uniform highp sampler2D sBlendShapeGeometry;
#endif
-out vec2 vUV;
+out lowp vec2 vUV;
out lowp mat3 vTBN;
out lowp vec4 vColor;
out highp vec3 vPositionToCamera;
uniform mat3 uNormalMatrix;
uniform mat4 uModelMatrix;
uniform mat4 uProjection;
-uniform lowp float uHasVertexColor;
#ifdef SKINNING
in vec4 aJoints;
vUV = aTexCoord;
#endif
+#ifdef COLOR_ATTRIBUTE
vColor = mix(vec4(1.0f), aVertexColor, uHasVertexColor);
+#endif
gl_Position = uProjection * positionV;
}
materialDef.CheckTextures(MaterialDefinition::NORMAL))
{
hash.Add("3TEX");
+
+ // For the glTF, each of basecolor, metallic_roughness, normal texture is not essential.
+ if(materialDef.CheckTextures(MaterialDefinition::ALBEDO))
+ {
+ hash.Add("BCTEX");
+ }
+
+ if(materialDef.CheckTextures(MaterialDefinition::METALLIC | MaterialDefinition::ROUGHNESS))
+ {
+ hash.Add("MRTEX");
+ }
+
+ if(materialDef.CheckTextures(MaterialDefinition::NORMAL))
+ {
+ hash.Add("NTEX");
+ }
}
if(materialDef.GetAlphaCutoff() > 0.f)
}
}
+ if(meshDef.mColors.IsDefined())
+ {
+ hash.Add("COLATT");
+ }
+
+ if(meshDef.mTangentType == Property::VECTOR4)
+ {
+ hash.Add("V4TAN");
+ }
+
return hash;
}
} // namespace
}
}
+ if(meshDef.mColors.IsDefined())
+ {
+ shaderDef.mDefines.push_back("COLOR_ATTRIBUTE");
+ }
+
if(meshDef.mTangentType == Property::VECTOR4)
{
shaderDef.mDefines.push_back("VEC4_TANGENT");