|
@@ -4,12 +4,13 @@
|
|
|
#import "Common/ShaderLib/MorphAnim.glsllib"
|
|
|
|
|
|
uniform vec4 m_BaseColor;
|
|
|
+
|
|
|
uniform vec4 g_AmbientLightColor;
|
|
|
varying vec2 texCoord;
|
|
|
|
|
|
#ifdef SEPARATE_TEXCOORD
|
|
|
- varying vec2 texCoord2;
|
|
|
- attribute vec2 inTexCoord2;
|
|
|
+ varying vec2 texCoord2;
|
|
|
+ attribute vec2 inTexCoord2;
|
|
|
#endif
|
|
|
|
|
|
varying vec4 Color;
|
|
@@ -18,25 +19,41 @@ attribute vec3 inPosition;
|
|
|
attribute vec2 inTexCoord;
|
|
|
attribute vec3 inNormal;
|
|
|
|
|
|
-#ifdef VERTEX_COLOR
|
|
|
- attribute vec4 inColor;
|
|
|
+#if defined (VERTEX_COLOR) || defined(USE_VERTEX_COLORS_AS_SUN_INTENSITY)
|
|
|
+ attribute vec4 inColor;
|
|
|
+#endif
|
|
|
+
|
|
|
+#if defined(USE_VERTEX_COLORS_AS_SUN_INTENSITY)
|
|
|
+ varying vec4 vertColors;
|
|
|
#endif
|
|
|
|
|
|
varying vec3 wNormal;
|
|
|
varying vec3 wPosition;
|
|
|
-#if defined(NORMALMAP) || defined(PARALLAXMAP)
|
|
|
- attribute vec4 inTangent;
|
|
|
- varying vec4 wTangent;
|
|
|
+
|
|
|
+varying vec4 lPosition;
|
|
|
+
|
|
|
+attribute vec4 inTangent;
|
|
|
+varying vec4 wTangent;
|
|
|
+
|
|
|
+#ifdef USE_FOG
|
|
|
+ varying float fogDistance;
|
|
|
+ uniform vec3 g_CameraPosition;
|
|
|
#endif
|
|
|
|
|
|
-void main(){
|
|
|
+void main(){
|
|
|
+
|
|
|
vec4 modelSpacePos = vec4(inPosition, 1.0);
|
|
|
vec3 modelSpaceNorm = inNormal;
|
|
|
-
|
|
|
- #if ( defined(NORMALMAP) || defined(PARALLAXMAP)) && !defined(VERTEX_LIGHTING)
|
|
|
- vec3 modelSpaceTan = inTangent.xyz;
|
|
|
+ vec3 modelSpaceTan = inTangent.xyz;
|
|
|
+
|
|
|
+ lPosition = modelSpacePos;
|
|
|
+
|
|
|
+
|
|
|
+ #ifdef USE_VERTEX_COLORS_AS_SUN_INTENSITY
|
|
|
+ vertColors = inColor;
|
|
|
#endif
|
|
|
|
|
|
+
|
|
|
#ifdef NUM_MORPH_TARGETS
|
|
|
#if defined(NORMALMAP) && !defined(VERTEX_LIGHTING)
|
|
|
Morph_Compute(modelSpacePos, modelSpaceNorm, modelSpaceTan);
|
|
@@ -47,9 +64,9 @@ void main(){
|
|
|
|
|
|
#ifdef NUM_BONES
|
|
|
#if defined(NORMALMAP) && !defined(VERTEX_LIGHTING)
|
|
|
- Skinning_Compute(modelSpacePos, modelSpaceNorm, modelSpaceTan);
|
|
|
+ Skinning_Compute(modelSpacePos, modelSpaceNorm, modelSpaceTan);
|
|
|
#else
|
|
|
- Skinning_Compute(modelSpacePos, modelSpaceNorm);
|
|
|
+ Skinning_Compute(modelSpacePos, modelSpaceNorm);
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
@@ -59,16 +76,19 @@ void main(){
|
|
|
texCoord2 = inTexCoord2;
|
|
|
#endif
|
|
|
|
|
|
- wPosition = TransformWorld(modelSpacePos).xyz;
|
|
|
+ wPosition = (g_WorldMatrix * vec4(inPosition, 1.0)).xyz;
|
|
|
wNormal = TransformWorldNormal(modelSpaceNorm);
|
|
|
-
|
|
|
- #if defined(NORMALMAP) || defined(PARALLAXMAP)
|
|
|
- wTangent = vec4(TransformWorldNormal(modelSpaceTan),inTangent.w);
|
|
|
- #endif
|
|
|
+
|
|
|
+ wTangent = vec4(TransformWorldNormal(modelSpaceTan),inTangent.w);
|
|
|
|
|
|
Color = m_BaseColor;
|
|
|
|
|
|
- #ifdef VERTEX_COLOR
|
|
|
+ #ifdef VERTEX_COLOR
|
|
|
Color *= inColor;
|
|
|
#endif
|
|
|
+
|
|
|
+ #ifdef USE_FOG
|
|
|
+ fogDistance = distance(g_CameraPosition, (g_WorldMatrix * modelSpacePos).xyz);
|
|
|
+ #endif
|
|
|
+
|
|
|
}
|