linear_sampler(resources.get<Sampler>("_linear_clamp.samp")),
nearest_sampler(resources.get<Sampler>("_nearest_clamp.samp"))
{
- texturing.attach(2, occlude_target.get_target_texture(RENDER_COLOR), &linear_sampler);
-
unsigned seed = 1;
rotate_lookup.storage(RGBA8, 4, 4, 1);
unsigned char data[64];
}
rotate_lookup.image(0, data);
- texturing.attach(3, rotate_lookup, &nearest_sampler);
-
- shdata.uniform("source", 0);
- shdata.uniform("depth", 1);
- shdata.uniform("occlusion", 2);
- shdata.uniform("rotate", 3);
shdata.uniform("inverse_projection", Matrix());
set_n_samples(16);
void AmbientOcclusion::render(Renderer &renderer, const Texture2D &color, const Texture2D &depth)
{
- texturing.attach(0, color, &nearest_sampler);
- texturing.attach(1, depth, &nearest_sampler);
-
if(renderer.get_camera())
shdata.uniform("inverse_projection", invert(renderer.get_camera()->get_projection_matrix()));
Renderer::Push push(renderer);
- renderer.set_texturing(&texturing);
+ renderer.set_texture("source", &color, &nearest_sampler);
+ renderer.set_texture("depth", &depth, &nearest_sampler);
+ renderer.set_texture("occlusion", &occlude_target.get_target_texture(RENDER_COLOR), &linear_sampler);
+ renderer.set_texture("rotate", &rotate_lookup, &nearest_sampler);
renderer.set_shader_program(&occlude_shader, &shdata);
{