X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=shaders%2Fscene.vs;h=34ec16b235fd96d934ff6f39064b69b8a07edc3e;hb=409edea2cf6271956137918e4e0b4f1c2addf620;hp=9c8e4ebdfb113df60b7faaa8457cf1ca63ae96f7;hpb=aa4c26eae2208872824e0eb5b71bc05c16d43242;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/shaders/scene.vs b/shaders/scene.vs index 9c8e4eb..34ec16b 100644 --- a/shaders/scene.vs +++ b/shaders/scene.vs @@ -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 ); }