X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Feffects%2Fsky.cpp;h=a11a76a971bad75f2c6b82f9933af39ddf0db193;hb=50492d9a5106b3dd76e3d6fa5ac88d9f97ba3c47;hp=2e5a6e1825114141fb57784324475e3acfdd84c2;hpb=bdcae47bf2f4e49d2d9e4ba15e6f17171ce5fa0c;p=libs%2Fgl.git diff --git a/source/effects/sky.cpp b/source/effects/sky.cpp index 2e5a6e18..a11a76a9 100644 --- a/source/effects/sky.cpp +++ b/source/effects/sky.cpp @@ -16,10 +16,10 @@ namespace GL { Sky::Sky(Renderable &c, DirectionalLight &s): Effect(c), sun(s), - transmittance_lookup(128, 64, (COLOR_ATTACHMENT,RGB16F)), + transmittance_lookup(128, 64, (COLOR_ATTACHMENT,RGBA16F)), transmittance_shprog(Resources::get_global().get("_sky_transmittance.glsl.shader")), transmittance_lookup_dirty(true), - distant(256, 128, (COLOR_ATTACHMENT,RGB16F)), + distant(256, 128, (COLOR_ATTACHMENT,RGBA16F)), distant_shprog(Resources::get_global().get("_sky_distant.glsl.shader")), fullscreen_mesh(Resources::get_global().get("_fullscreen_quad.mesh")), backdrop_shprog(Resources::get_global().get("_sky_backdrop.glsl.shader")), @@ -101,21 +101,25 @@ void Sky::setup_frame(Renderer &renderer) shdata.uniform("light_dir", -sun.get_direction()); sun.set_transmittance(get_transmittance(-sun.get_direction())); - Renderer::Push push(renderer); - - if(transmittance_lookup_dirty) { - transmittance_lookup_dirty = false; - renderer.set_framebuffer(&transmittance_lookup.get_framebuffer()); - renderer.set_shader_program(&transmittance_shprog, &shdata); + Renderer::Push push(renderer); + + renderer.add_shader_data(shdata); + + if(transmittance_lookup_dirty) + { + transmittance_lookup_dirty = false; + renderer.set_framebuffer(&transmittance_lookup.get_framebuffer()); + renderer.set_shader_program(&transmittance_shprog); + fullscreen_mesh.draw(renderer); + } + + renderer.set_framebuffer(&distant.get_framebuffer()); + renderer.set_shader_program(&distant_shprog); + renderer.set_texture("transmittance_lookup", &transmittance_lookup.get_target_texture(0), &sampler); fullscreen_mesh.draw(renderer); } - renderer.set_framebuffer(&distant.get_framebuffer()); - renderer.set_shader_program(&distant_shprog, &shdata); - renderer.set_texture("transmittance_lookup", &transmittance_lookup.get_target_texture(0), &sampler); - fullscreen_mesh.draw(renderer); - content.setup_frame(renderer); }