diff options
Diffstat (limited to 'env.c')
| -rw-r--r-- | env.c | 31 |
1 files changed, 19 insertions, 12 deletions
@@ -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(); |
