sampler(resources.get<GL::Sampler>("linear_clip.samp")),
sim_integrate(resources.get<GL::Program>("fluidsim_integrate.glsl.shader")),
sim_velocity(resources.get<GL::Program>("fluidsim_velocity.glsl.shader")),
- sim_clamp(resources.get<GL::Program>("fluidsim_clamp.glsl.shader")),
normals_shader(resources.get<GL::Program>("water_normals.glsl.shader")),
variance_x_shader(resources.get<GL::Program>("water_variance_x.glsl.shader")),
variance_y_shader(resources.get<GL::Program>("water_variance_y.glsl.shader"))
state[i].surface.set_debug_name(format("Water surface[%d]", i));
state[i].velocity.storage(GL::RG32F, width, height, 1);
state[i].velocity.set_debug_name(format("Water velocity[%d]", i));
- state[i].clamping.storage(GL::R32F, width, height, 1);
- state[i].clamping.set_debug_name(format("Water clamping[%d]", i));
}
normals.storage(GL::RG8, width, height, 1);
{
renderer.set_storage_texture("surface_out", &state[i].surface);
renderer.set_storage_texture("velocity_out", &state[i].velocity);
- renderer.set_storage_texture("clamping_out", &state[i].clamping);
renderer.dispatch((width+7)/8, (height+7)/8);
}
renderer.end();
renderer.set_shader_program(&sim_integrate);
renderer.set_storage_texture("surface_out", &next->surface);
renderer.set_storage_texture("velocity_out", &next->velocity);
- renderer.set_storage_texture("clamping_out", &next->clamping);
renderer.set_texture("surface_in", ¤t->surface, &sampler);
renderer.set_texture("velocity_in", ¤t->velocity, &sampler);
- renderer.set_texture("clamping_in", ¤t->clamping, &sampler);
renderer.dispatch(groups_x, groups_y);
renderer.set_shader_program(&sim_velocity);
renderer.set_texture("surface_in", &next->surface, &sampler);
renderer.dispatch(groups_x, groups_y);
- renderer.set_shader_program(&sim_clamp);
- renderer.set_texture("velocity_in", &next->velocity, &sampler);
- renderer.dispatch(groups_x, groups_y);
-
time += stepsize;
swap(current, next);
}