1 #ifndef R2_LIGHT_PROJECTIVE_LAMBERT_H 2 #define R2_LIGHT_PROJECTIVE_LAMBERT_H 13 uniform sampler2D R2_light_projective_image;
14 uniform mat4x4 R2_transform_eye_to_light_eye;
15 uniform mat4x4 R2_transform_light_projection;
25 R2_transform_eye_to_light_eye,
26 R2_transform_light_projection);
39 diffuse * image_sample * attenuation,
43 #endif // R2_LIGHT_PROJECTIVE_LAMBERT_H Vectors used when calculating projective lighting.
float R2_lightPositionalAttenuation(const R2_light_positional_t light, const float distance)
vec4 position
The eye-space position of the surface.
R2_light_projective_vectors_t R2_lightProjectiveVectors(const R2_light_positional_t light, const vec3 p, const vec3 n, const mat4x4 m_eye_to_light_eye, const mat4x4 m_light_projection)
vec3 R2_lightSphericalDiffuseLambertTerm(const R2_light_positional_t light, const R2_light_positional_vectors_t v)
Reconstructed surface data, taken from the G-Buffer.
R2_light_output_t R2_deferredLightMain(const R2_reconstructed_surface_t surface)
vec2 surface_light_uv
The surface position as UV coordinates from the perspective of the light.
float distance
The distance between the surface and light source.
vec3 normal
The eye-space normal vector of the surface.
The main function that all deferred light shaders must implement.
Functions and types related to spherical lighting.
Functions and types related to positional lighting.
The type of light values that all deferred light shaders calculate.
Functions and types related to projective lighting.
R2_light_positional_vectors_t positional
The vectors for positional lighting.
float back_projected
A value that indicates whether or not the light fragment is back projected (0.0 means back projected...