diff options
| author | Saracen | 2016-01-31 12:56:53 +0000 |
|---|---|---|
| committer | Saracen | 2016-02-06 18:03:20 +0000 |
| commit | de5281c3989fd4071cf57e5b7bc0cbbc174524e8 (patch) | |
| tree | 085eb62134c2d04811af67dba0231a03dd4b5edc /drivers | |
| parent | 987bfb4b5e99bb11ecfd914e80d59b9bde62e26f (diff) | |
| download | godot-de5281c3989fd4071cf57e5b7bc0cbbc174524e8.tar.gz godot-de5281c3989fd4071cf57e5b7bc0cbbc174524e8.tar.zst godot-de5281c3989fd4071cf57e5b7bc0cbbc174524e8.zip | |
Ability to colourize baked lighting in real time.
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gles2/rasterizer_gles2.cpp | 11 | ||||
| -rw-r--r-- | drivers/gles2/shaders/material.glsl | 10 |
2 files changed, 20 insertions, 1 deletions
diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index e3a3e7def..23d5860d2 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -6545,8 +6545,19 @@ void RasterizerGLES2::_render_list_forward(RenderList *p_render_list,const Trans material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_LIGHTMAP,false); material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_DP_SAMPLER,false); + material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_COLOR, false); + + if (material->flags[VS::MATERIAL_FLAG_UNSHADED] == false && current_debug != VS::SCENARIO_DEBUG_SHADELESS) { + if (baked_light != NULL) { + if (baked_light->realtime_color_enabled) { + float realtime_energy = baked_light->realtime_energy; + material_shader.set_conditional(MaterialShaderGLES2::ENABLE_AMBIENT_COLOR, true); + material_shader.set_uniform(MaterialShaderGLES2::AMBIENT_COLOR, Vector3(baked_light->realtime_color.r*realtime_energy, baked_light->realtime_color.g*realtime_energy, baked_light->realtime_color.b*realtime_energy)); + } + } + if (e->instance->sampled_light.is_valid()) { SampledLight *sl = sampled_light_owner.get(e->instance->sampled_light); diff --git a/drivers/gles2/shaders/material.glsl b/drivers/gles2/shaders/material.glsl index ccd80bf2f..e68949b05 100644 --- a/drivers/gles2/shaders/material.glsl +++ b/drivers/gles2/shaders/material.glsl @@ -618,6 +618,12 @@ uniform float ambient_dp_sampler_multiplier; #endif +#ifdef ENABLE_AMBIENT_COLOR + +uniform vec3 ambient_color; + +#endif + FRAGMENT_SHADER_GLOBALS @@ -1262,7 +1268,9 @@ LIGHT_SHADER_CODE #if defined(ENABLE_AMBIENT_OCTREE) || defined(ENABLE_AMBIENT_LIGHTMAP) || defined(ENABLE_AMBIENT_DP_SAMPLER) - +#if defined(ENABLE_AMBIENT_COLOR) + ambientmap_color*=ambient_color; +#endif diffuse.rgb+=ambientmap_color; #endif |
