techkaczynski.dev / code

summaryrefslogtreecommitdiff
path: root/env.c
diff options
context:
space:
mode:
Diffstat (limited to 'env.c')
-rw-r--r--env.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/env.c b/env.c
index 2ed7012..412dbea 100644
--- a/env.c
+++ b/env.c
@@ -173,65 +173,71 @@ sky_update_lighting(void) {
}
static void
-env_update_mdl_shader(void) {
+env_update_shader(cstr key) {
Vec3 sun_col = color_to_vec3(env.sun_col);
Vec3 moon_col = color_to_vec3(env.moon_col);
Vec3 ambient_col = color_to_vec3(env.ambient_col);
- Shader sdr = shader_get("model")->sdr;
+ FunShader *res = shader_get(key);
+ if (!res) {
+ TraceLog(LOG_ERROR, "env_update_shaders: invalid key");
+ return;
+ }
+
+ Shader sdr = shader_get(key)->sdr;
SetTraceLogLevel(LOG_DEBUG);
SetShaderValue(
sdr,
- fun_shader_uniform("model", "sun_direction"),
+ fun_shader_uniform(key, "sun_direction"),
&env.sun_dir,
SHADER_UNIFORM_VEC3
);
SetShaderValue(
sdr,
- fun_shader_uniform("model", "sun_colour"),
+ fun_shader_uniform(key, "sun_colour"),
&sun_col,
SHADER_UNIFORM_VEC3
);
SetShaderValue(
sdr,
- fun_shader_uniform("model", "sun_intensity"),
+ fun_shader_uniform(key, "sun_intensity"),
&env.sun_intensity,
SHADER_UNIFORM_FLOAT
);
SetShaderValue(
sdr,
- fun_shader_uniform("model", "moon_direction"),
+ fun_shader_uniform(key, "moon_direction"),
&env.moon_dir,
SHADER_UNIFORM_VEC3
);
SetShaderValue(
sdr,
- fun_shader_uniform("model", "moon_colour"),
+ fun_shader_uniform(key, "moon_colour"),
&moon_col,
SHADER_UNIFORM_VEC3
);
SetShaderValue(
sdr,
- fun_shader_uniform("model", "moon_intensity"),
+ fun_shader_uniform(key, "moon_intensity"),
&env.moon_intensity,
SHADER_UNIFORM_FLOAT
);
SetShaderValue(
sdr,
- fun_shader_uniform("model", "ambient_colour"),
+ fun_shader_uniform(key, "ambient_colour"),
&ambient_col,
SHADER_UNIFORM_VEC3
);
SetShaderValue(
sdr,
- fun_shader_uniform("model", "ambient_intensity"),
+ fun_shader_uniform(key, "ambient_intensity"),
&env.ambient_intensity,
SHADER_UNIFORM_FLOAT
);
@@ -265,11 +271,12 @@ env_update(void) {
// env.cycle += GetFrameTime() / env.day_len;
// env.cycle -= floorf(env.cycle);
// }
+
sky_update_lighting();
- env_update_mdl_shader();
+ env_update_shader("model");
+ env_update_shader("model_cutoff");
}
-
void
env_draw_sky(Camera cam) {
int scr_w = GetScreenWidth();