| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- #ifndef DIRECTIONAL_LIGHT_COUNT
- #define DIRECTIONAL_LIGHT_COUNT 0
- #endif
- #ifndef SPOT_LIGHT_COUNT
- #define SPOT_LIGHT_COUNT 0
- #endif
- #ifndef POINT_LIGHT_COUNT
- #define POINT_LIGHT_COUNT 0
- #endif
- #if (DIRECTIONAL_LIGHT_COUNT > 0) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
- #define LIGHTING
- #endif
- ///////////////////////////////////////////////////////////
- // Atributes
- attribute vec4 a_position;
- #if defined(SKINNING)
- attribute vec4 a_blendWeights;
- attribute vec4 a_blendIndices;
- #endif
- attribute vec2 a_texCoord;
- #if defined(LIGHTMAP)
- attribute vec2 a_texCoord1;
- #endif
- #if defined(LIGHTING)
- attribute vec3 a_normal;
- #if defined(BUMPED)
- attribute vec3 a_tangent;
- attribute vec3 a_binormal;
- #endif
- #endif
- ///////////////////////////////////////////////////////////
- // Uniforms
- uniform mat4 u_worldViewProjectionMatrix;
- #if defined(SKINNING)
- uniform vec4 u_matrixPalette[SKINNING_JOINT_COUNT * 3];
- #endif
- #if defined(LIGHTING)
- uniform mat4 u_inverseTransposeWorldViewMatrix;
- #if defined(SPECULAR) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
- uniform mat4 u_worldViewMatrix;
- #endif
- #if defined(BUMPED) && (DIRECTIONAL_LIGHT_COUNT > 0)
- uniform vec3 u_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
- #endif
- #if (POINT_LIGHT_COUNT > 0)
- uniform vec3 u_pointLightPosition[POINT_LIGHT_COUNT];
- #endif
- #if (SPOT_LIGHT_COUNT > 0)
- uniform vec3 u_spotLightPosition[SPOT_LIGHT_COUNT];
- #if defined(BUMPED)
- uniform vec3 u_spotLightDirection[SPOT_LIGHT_COUNT];
- #endif
- #endif
- #if defined(SPECULAR)
- uniform vec3 u_cameraPosition;
- #endif
- #endif
- #if defined(TEXTURE_REPEAT)
- uniform vec2 u_textureRepeat;
- #endif
- #if defined(TEXTURE_OFFSET)
- uniform vec2 u_textureOffset;
- #endif
- #if defined(CLIP_PLANE)
- uniform mat4 u_worldMatrix;
- uniform vec4 u_clipPlane;
- #endif
- ///////////////////////////////////////////////////////////
- // Varyings
- varying vec2 v_texCoord;
- #if defined(LIGHTMAP)
- varying vec2 v_texCoord1;
- #endif
- #if defined(LIGHTING)
- #if !defined(BUMPED)
- varying vec3 v_normalVector;
- #endif
- #if defined(BUMPED) && (DIRECTIONAL_LIGHT_COUNT > 0)
- varying vec3 v_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
- #endif
- #if (POINT_LIGHT_COUNT > 0)
- varying vec3 v_vertexToPointLightDirection[POINT_LIGHT_COUNT];
- #endif
- #if (SPOT_LIGHT_COUNT > 0)
- varying vec3 v_vertexToSpotLightDirection[SPOT_LIGHT_COUNT];
- #if defined(BUMPED)
- varying vec3 v_spotLightDirection[SPOT_LIGHT_COUNT];
- #endif
- #endif
- #if defined(SPECULAR)
- varying vec3 v_cameraDirection;
- #endif
- #include "lighting.vert"
- #endif
- #if defined(SKINNING)
- #include "skinning.vert"
- #else
- #include "skinning-none.vert"
- #endif
- #if defined(CLIP_PLANE)
- varying float v_clipDistance;
- #endif
- void main()
- {
- vec4 position = getPosition();
- gl_Position = u_worldViewProjectionMatrix * position;
- #if defined(LIGHTING)
- vec3 normal = getNormal();
- // Transform the normal, tangent and binormals to view space.
- mat3 inverseTransposeWorldViewMatrix = mat3(u_inverseTransposeWorldViewMatrix[0].xyz, u_inverseTransposeWorldViewMatrix[1].xyz, u_inverseTransposeWorldViewMatrix[2].xyz);
- vec3 normalVector = normalize(inverseTransposeWorldViewMatrix * normal);
-
- #if defined(BUMPED)
-
- vec3 tangent = getTangent();
- vec3 binormal = getBinormal();
- vec3 tangentVector = normalize(inverseTransposeWorldViewMatrix * tangent);
- vec3 binormalVector = normalize(inverseTransposeWorldViewMatrix * binormal);
- mat3 tangentSpaceTransformMatrix = mat3(tangentVector.x, binormalVector.x, normalVector.x, tangentVector.y, binormalVector.y, normalVector.y, tangentVector.z, binormalVector.z, normalVector.z);
- applyLight(position, tangentSpaceTransformMatrix);
-
- #else
-
- v_normalVector = normalVector;
- applyLight(position);
-
- #endif
-
- #endif
-
- v_texCoord = a_texCoord;
-
- #if defined(TEXTURE_REPEAT)
- v_texCoord *= u_textureRepeat;
- #endif
-
- #if defined(TEXTURE_OFFSET)
- v_texCoord += u_textureOffset;
- #endif
-
- #if defined(LIGHTMAP)
- v_texCoord1 = a_texCoord1;
- #endif
-
- #if defined(CLIP_PLANE)
- v_clipDistance = dot(u_worldMatrix * position, u_clipPlane);
- #endif
- }
|