// Attributes attribute vec3 position; #ifdef NORMAL attribute vec3 normal; #endif #ifdef TANGENT attribute vec4 tangent; #endif #ifdef UV1 attribute vec2 uv; #endif #ifdef UV2 attribute vec2 uv2; #endif #ifdef VERTEXCOLOR attribute vec4 color; #endif #include // Uniforms #include uniform mat4 view; uniform mat4 viewProjection; #ifdef DIFFUSE varying vec2 vDiffuseUV; uniform mat4 diffuseMatrix; uniform vec2 vDiffuseInfos; #endif #ifdef AMBIENT varying vec2 vAmbientUV; uniform mat4 ambientMatrix; uniform vec2 vAmbientInfos; #endif #ifdef OPACITY varying vec2 vOpacityUV; uniform mat4 opacityMatrix; uniform vec2 vOpacityInfos; #endif #ifdef EMISSIVE varying vec2 vEmissiveUV; uniform vec2 vEmissiveInfos; uniform mat4 emissiveMatrix; #endif #ifdef LIGHTMAP varying vec2 vLightmapUV; uniform vec2 vLightmapInfos; uniform mat4 lightmapMatrix; #endif #if defined(SPECULAR) && defined(SPECULARTERM) varying vec2 vSpecularUV; uniform vec2 vSpecularInfos; uniform mat4 specularMatrix; #endif #ifdef BUMP varying vec2 vBumpUV; uniform vec3 vBumpInfos; uniform mat4 bumpMatrix; #endif #include // Output varying vec3 vPositionW; #ifdef NORMAL varying vec3 vNormalW; #endif #ifdef VERTEXCOLOR varying vec4 vColor; #endif #include #include #include #include[0..maxSimultaneousLights] #include #include[0..maxSimultaneousMorphTargets] #ifdef REFLECTIONMAP_SKYBOX varying vec3 vPositionUVW; #endif #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED) varying vec3 vDirectionW; #endif #include void main(void) { vec3 positionUpdated = position; #ifdef NORMAL vec3 normalUpdated = normal; #endif #include[0..maxSimultaneousMorphTargets] #ifdef REFLECTIONMAP_SKYBOX vPositionUVW = positionUpdated; #endif #include #include gl_Position = viewProjection * finalWorld * vec4(positionUpdated, 1.0); vec4 worldPos = finalWorld * vec4(positionUpdated, 1.0); vPositionW = vec3(worldPos); #ifdef NORMAL vNormalW = normalize(vec3(finalWorld * vec4(normalUpdated, 0.0))); #endif #if defined(REFLECTIONMAP_EQUIRECTANGULAR_FIXED) || defined(REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED) vDirectionW = normalize(vec3(finalWorld * vec4(positionUpdated, 0.0))); #endif // Texture coordinates #ifndef UV1 vec2 uv = vec2(0., 0.); #endif #ifndef UV2 vec2 uv2 = vec2(0., 0.); #endif #ifdef DIFFUSE if (vDiffuseInfos.x == 0.) { vDiffuseUV = vec2(diffuseMatrix * vec4(uv, 1.0, 0.0)); } else { vDiffuseUV = vec2(diffuseMatrix * vec4(uv2, 1.0, 0.0)); } #endif #ifdef AMBIENT if (vAmbientInfos.x == 0.) { vAmbientUV = vec2(ambientMatrix * vec4(uv, 1.0, 0.0)); } else { vAmbientUV = vec2(ambientMatrix * vec4(uv2, 1.0, 0.0)); } #endif #ifdef OPACITY if (vOpacityInfos.x == 0.) { vOpacityUV = vec2(opacityMatrix * vec4(uv, 1.0, 0.0)); } else { vOpacityUV = vec2(opacityMatrix * vec4(uv2, 1.0, 0.0)); } #endif #ifdef EMISSIVE if (vEmissiveInfos.x == 0.) { vEmissiveUV = vec2(emissiveMatrix * vec4(uv, 1.0, 0.0)); } else { vEmissiveUV = vec2(emissiveMatrix * vec4(uv2, 1.0, 0.0)); } #endif #ifdef LIGHTMAP if (vLightmapInfos.x == 0.) { vLightmapUV = vec2(lightmapMatrix * vec4(uv, 1.0, 0.0)); } else { vLightmapUV = vec2(lightmapMatrix * vec4(uv2, 1.0, 0.0)); } #endif #if defined(SPECULAR) && defined(SPECULARTERM) if (vSpecularInfos.x == 0.) { vSpecularUV = vec2(specularMatrix * vec4(uv, 1.0, 0.0)); } else { vSpecularUV = vec2(specularMatrix * vec4(uv2, 1.0, 0.0)); } #endif #ifdef BUMP if (vBumpInfos.x == 0.) { vBumpUV = vec2(bumpMatrix * vec4(uv, 1.0, 0.0)); } else { vBumpUV = vec2(bumpMatrix * vec4(uv2, 1.0, 0.0)); } #endif #include #include #include #include[0..maxSimultaneousLights] #ifdef VERTEXCOLOR // Vertex color vColor = color; #endif #include #include }