- 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_pipeline_key(this);
+ renderer.set_framebuffer(&transmittance_lookup.get_framebuffer());
+ renderer.set_shader_program(&transmittance_shprog);
+ renderer.set_texture("transmittance_lookup", &dummy_texture, &sampler);
+ fullscreen_mesh.draw(renderer);
+ }
+
+ renderer.set_pipeline_key(this, 1);
+ renderer.set_framebuffer(&distant.get_framebuffer());
+ renderer.set_shader_program(&distant_shprog);
+ renderer.set_texture("transmittance_lookup", &transmittance_lookup.get_target_texture(0), &sampler);