9#include "graphics/graphics.h"
13#include "utils/flags.h"
35 {
return {1, 4.5f /
r, 75.0f / (
r *
r)}; }
44 float range()
const {
return 4.5f / this->att[1]; }
77 std::array<mat4, 7 * MAX_LIGHTS>
views = {};
86 {
return this->flags.
is_set(Flag::SHADOWS_ENABLED); }
Definition: animation.h:71
float m_shadow_map_far
Definition: light.h:75
void set_update_sun(bool b)
size_t n_point
Definition: light.h:71
bool update_sun(void) const
Definition: light.h:84
void remove_light(Light *l)
size_t n_dir
Definition: light.h:71
Light * sun_light()
Definition: light.h:92
std::span< const Light > point_lights() const
mat4 m_point_proj
Definition: light.h:76
float shadow_map_near() const
Definition: light.h:94
void set_shadow_map_far(float f)
const LightsUBO & ubo() const
Definition: light.h:101
std::span< Light > point_lights()
Light * add_light(Light::Type t)
void update_view(const vec3 &eye)
vec4 m_ambient_light
Definition: light.h:69
void set_zsprites(bool b)
static constexpr size_t MAX_LIGHTS
Definition: light.h:55
Light * m_sun_light
Definition: light.h:73
float shadow_map_far() const
Definition: light.h:95
void init(Math *m)
Definition: light.h:81
Sun * sun()
Definition: light.h:102
void set_ambient_anim(LightAnimation a)
vec3 view_pos
Definition: light.h:68
Sun m_sun
Definition: light.h:79
float m_shadow_map_near
Definition: light.h:75
bool enabled() const
Definition: light.h:82
const mat4 & point_view(size_t i, size_t f) const
Definition: light.h:99
void set_shadow_map_near(float f)
void set_shadow_map_proj_size(float s)
const mat4 & dir_proj() const
Definition: light.h:96
const mat4 & dir_view(size_t i) const
Definition: light.h:98
std::span< const Light > dir_lights() const
std::array< Light, MAX_LIGHTS > m_dir_lights
Definition: light.h:72
Math * math
Definition: light.h:66
std::array< Light, MAX_LIGHTS > m_point_lights
Definition: light.h:72
bool update(const Timing &t)
Flag
Definition: light.h:57
@ UPDATE_SUN
Definition: light.h:61
@ ENABLED
Definition: light.h:58
@ UPDATED
Definition: light.h:62
@ SHADOW_MAPS_UPDATED
Definition: light.h:64
@ VIEW_UPDATED
Definition: light.h:63
@ ZSPRITES
Definition: light.h:60
@ SHADOWS_ENABLED
Definition: light.h:59
const vec4 & ambient_light() const
Definition: light.h:87
bool shadows_enabled(void) const
Definition: light.h:85
std::array< mat4, 7 *MAX_LIGHTS > views
Definition: light.h:77
void set_shadows_enabled(bool b)
const Light * sun_light() const
Definition: light.h:93
std::span< Light > dir_lights()
void set_sun_light(Light *l)
Definition: light.h:109
mat4 m_dir_proj
Definition: light.h:76
float m_shadow_map_proj_size
Definition: light.h:74
void set_ambient_light(const vec4 &v)
LightAnimation m_ambient_anim
Definition: light.h:70
Flags< Flag > flags
Definition: light.h:67
const mat4 & point_proj() const
Definition: light.h:97
bool zsprites(void) const
Definition: light.h:83
LightsUBO m_ubo
Definition: light.h:78
for i
Definition: font.lua:5
c
Definition: gamma.lua:11
l
Definition: light.lua:23
pos
Definition: lua_audio.cpp:17
#define NNGN_SHADOWS_ENABLED_BIT
Definition: const.h:7
#define NNGN_MAX_LIGHTS
Definition: const.h:6
v[1]
Definition: math.lua:19
std::chrono::seconds s
Definition: timing.cpp:6
vec4_base< float > vec4
Definition: vec4.h:128
mat4_base< float > mat4
Definition: mat4.h:62
vec3_base< float > vec3
Definition: vec3.h:51
Type
Supported parameter types for kernel execution.
Definition: compute.h:133
Wrapper for an unsigned integral representing flags.
Definition: flags.h:18
constexpr bool is_set(AT a) const
Definition: flags.h:26
static constexpr vec3 att_for_range(float r)
Definition: light.h:34
mat4 ortho_view(float far) const
float range() const
Definition: light.h:44
void set_att(lua_State *L)
Entity * e
Definition: light.h:28
void write_to_ubo_dir(LightsUBO *ubo, size_t i, float far, const mat4 &proj) const
void write_to_ubo_point(LightsUBO *ubo, size_t i, bool zsprites) const
Type type
Definition: light.h:27
Type
Definition: light.h:26
@ POINT
Definition: light.h:26
@ DIR
Definition: light.h:26
bool updated
Definition: light.h:33
float spec
Definition: light.h:32
void set_color(const vec4 &c)
vec3 att
Definition: light.h:31
constexpr Light(Type t) noexcept
Definition: light.h:37
vec3 dir
Definition: light.h:29
vec3 ortho_view_pos(float far) const
float cutoff
Definition: light.h:32
vec4 color
Definition: light.h:30
constexpr Light()=default
mat4 persp_view(int face, bool zsprites) const
void set_pos(const vec3 &p)
void set_dir(const vec3 &p)
Definition: graphics.h:114