#if defined(BUMPED) void applyLight(vec4 position, mat3 tangentSpaceTransformMatrix) { #if (defined(SPECULAR) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)) vec4 positionWorldViewSpace = u_worldViewMatrix * position; #endif #if (DIRECTIONAL_LIGHT_COUNT > 0) for (int i = 0; i < DIRECTIONAL_LIGHT_COUNT; ++i) { // Transform light direction to tangent space v_directionalLightDirection[i] = tangentSpaceTransformMatrix * u_directionalLightDirection[i]; } #endif #if (POINT_LIGHT_COUNT > 0) for (int i = 0; i < POINT_LIGHT_COUNT; ++i) { // Compute the vertex to light direction, in tangent space v_vertexToPointLightDirection[i] = tangentSpaceTransformMatrix * (u_pointLightPosition[i] - positionWorldViewSpace.xyz); } #endif #if (SPOT_LIGHT_COUNT > 0) for (int i = 0; i < SPOT_LIGHT_COUNT; ++i) { // Compute the vertex to light direction, in tangent space v_vertexToSpotLightDirection[i] = tangentSpaceTransformMatrix * (u_spotLightPosition[i] - positionWorldViewSpace.xyz); v_spotLightDirection[i] = tangentSpaceTransformMatrix * u_spotLightDirection[i]; } #endif #if defined(SPECULAR) // Compute camera direction and transform it to tangent space. v_cameraDirection = tangentSpaceTransformMatrix * (u_cameraPosition - positionWorldViewSpace.xyz); #endif } #else void applyLight(vec4 position) { #if defined(SPECULAR) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0) vec4 positionWorldViewSpace = u_worldViewMatrix * position; #endif #if (POINT_LIGHT_COUNT > 0) for (int i = 0; i < POINT_LIGHT_COUNT; ++i) { // Compute the light direction with light position and the vertex position. v_vertexToPointLightDirection[i] = u_pointLightPosition[i] - positionWorldViewSpace.xyz; } #endif #if (SPOT_LIGHT_COUNT > 0) for (int i = 0; i < SPOT_LIGHT_COUNT; ++i) { // Compute the light direction with light position and the vertex position. v_vertexToSpotLightDirection[i] = u_spotLightPosition[i] - positionWorldViewSpace.xyz; } #endif #if defined(SPECULAR) v_cameraDirection = u_cameraPosition - positionWorldViewSpace.xyz; #endif } #endif