now we're doing a bunch of them
[carveJwlIkooP6JGAAIwe30JlM.git] / shaders / scene.vs
index 9c8e4ebdfb113df60b7faaa8457cf1ca63ae96f7..34ec16b235fd96d934ff6f39064b69b8a07edc3e 100644 (file)
@@ -8,12 +8,14 @@ layout (location=3) in ivec4 a_lights;
 uniform mat4x3 uMdl;
 uniform mat4   uPv;
 uniform mat4   uPvmPrev;
+uniform samplerBuffer uLightsArray;
 
 out vec2 aUv;
 out vec4 aNorm;
 out vec3 aCo;
 out vec3 aWorldCo;
-flat out ivec4 aLights;
+flat out vec4 light_colours[3];
+flat out vec4 light_positions[3];
 
 void main()
 {
@@ -29,5 +31,12 @@ void main()
    aNorm = vec4( mat3(uMdl) * a_norm.xyz, a_norm.w );
    aCo = a_co;
    aWorldCo = world_pos0;
-   aLights = a_lights;
+
+   // read lights
+   light_colours[0] = texelFetch( uLightsArray, a_lights.x*2+0 );
+   light_colours[1] = texelFetch( uLightsArray, a_lights.y*2+0 );
+   light_colours[2] = texelFetch( uLightsArray, a_lights.z*2+0 );
+   light_positions[0] = texelFetch( uLightsArray, a_lights.x*2+1 );
+   light_positions[1] = texelFetch( uLightsArray, a_lights.y*2+1 );
+   light_positions[2] = texelFetch( uLightsArray, a_lights.z*2+1 );
 }