X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Feffects%2Fsky.cpp;fp=source%2Feffects%2Fsky.cpp;h=c7e748794a4e3a6f6dbf58d1771000c053721154;hb=bb4638a8470b0be2f960709368ec0d360a64f8ac;hp=8fa00cfbd4d44e884cdfadfd6268226705e039d2;hpb=55e3f2d494d939280a4ea48676fd17ca2342b457;p=libs%2Fgl.git diff --git a/source/effects/sky.cpp b/source/effects/sky.cpp index 8fa00cfb..c7e74879 100644 --- a/source/effects/sky.cpp +++ b/source/effects/sky.cpp @@ -12,8 +12,10 @@ namespace GL { Sky::Sky(Resources &resources, Renderable &r, const Light &s): Effect(r), sun(s), + transmittance_lookup(128, 64, (RENDER_COLOR, RGB16F)), transmittance_shprog(resources.get("_sky_transmittance.glsl.shader")), transmittance_lookup_dirty(true), + distant(256, 128, (RENDER_COLOR, RGB16F)), distant_shprog(resources.get("_sky_distant.glsl.shader")), fullscreen_mesh(resources.get("_fullscreen_quad.mesh")), backdrop_shprog(resources.get("_sky_backdrop.glsl.shader")), @@ -21,12 +23,6 @@ Sky::Sky(Resources &resources, Renderable &r, const Light &s): wrap_sampler(resources.get("_linear_clamp_v.samp")), rendered(false) { - transmittance_lookup.storage(RGB16F, 128, 64, 1); - transmittance_fbo.attach(COLOR_ATTACHMENT0, transmittance_lookup); - - distant.storage(RGB16F, 256, 128, 1); - distant_fbo.attach(COLOR_ATTACHMENT0, distant); - shdata.uniform("n_steps", 50); set_planet(Planet::earth()); @@ -68,14 +64,14 @@ void Sky::setup_frame(Renderer &renderer) if(transmittance_lookup_dirty) { transmittance_lookup_dirty = false; - Bind bind_fbo(transmittance_fbo); + Bind bind_fbo(transmittance_lookup.get_framebuffer()); renderer.set_shader_program(&transmittance_shprog, &shdata); fullscreen_mesh.draw(renderer); } - Bind bind_fbo(distant_fbo); + Bind bind_fbo(distant.get_framebuffer()); renderer.set_shader_program(&distant_shprog, &shdata); - renderer.set_texture("transmittance_lookup", &transmittance_lookup, &sampler); + renderer.set_texture("transmittance_lookup", &transmittance_lookup.get_target_texture(0), &sampler); fullscreen_mesh.draw(renderer); renderable.setup_frame(renderer); @@ -97,7 +93,7 @@ void Sky::render(Renderer &renderer, Tag tag) const Renderer::Push push(renderer); renderer.set_shader_program(&backdrop_shprog, &shdata); - renderer.set_texture("distant", &distant, &wrap_sampler); + renderer.set_texture("distant", &distant.get_target_texture(0), &wrap_sampler); fullscreen_mesh.draw(renderer); }