20 +
lights.point.att_cutoff[
i][1] * d
21 +
lights.point.att_cutoff[
i][2] * d * d);
25 float inner =
lights.point.att_cutoff[
i].w;
28 const float penumbra = 0.1;
29 float outer = inner - penumbra;
30 float a = dot(-d,
lights.point.dir[
i].xyz);
31 return a > outer ?
clamp((
a - outer) / penumbra, 0.0, 1.0) : 0.0;
36 max(dot(view_dir, reflect(dir, frag_normal)), 0.0f),
64 vec3 p = frag_pos_light[
i] * 0.5 + 0.5;
72 vec3 abs_dir = abs(dir);
73 float z = max(abs_dir.x, max(abs_dir.y, abs_dir.z));
79 vec3 view_dir = normalize(
lights.view_pos - frag_pos);
82 float a = dot(frag_normal, -
lights.dir.dir[
i].xyz);
91 for(uint
i = 0u;
i <
lights.n_point; ++
i) {
92 float a = dot(frag_normal,
lights.point.pos[
i].xyz - frag_pos);
98 float diff = max(0.0f, dot(frag_normal, d));
101 * att *
spot(
i, d) * (diff + spec);
texture
Definition: particles.lua:4
for i
Definition: font.lua:5
vec3
Definition: zelda.lua:8
#define NNGN_SHADOWS_ENABLED_BIT
Definition: const.h:7
#define NNGN_MAX_LIGHTS
Definition: const.h:6
#define LAYOUT(x)
Definition: common.h:11
precision highp sampler2DArray
Definition: common.h:16
#define LAYOUT2(x, y)
Definition: common.h:12
uniform samplerCube lights_shadow_cube[8]
Definition: light_frag.h:9
float light_spec(float spec, vec3 dir, vec3 view_dir)
Definition: light_frag.h:34
float attenuation(uint i, float d)
Definition: light_frag.h:17
float sample_shadow(uint i, vec2 v)
Definition: light_frag.h:40
float spot(uint i, vec3 d)
Definition: light_frag.h:24
bool in_shadow_point(uint i)
Definition: light_frag.h:68
vec3 light()
Definition: light_frag.h:78
bool in_shadow(uint i)
Definition: light_frag.h:61
float sample_shadow_point(uint i, vec3 v)
Definition: light_frag.h:44
set
Definition: camera.lua:40
v[1]
Definition: math.lua:19
function clamp(v, min, max) return math.max(min
lights
Definition: models.lua:8