namespace GL {
AmbientOcclusion::AmbientOcclusion(unsigned w, unsigned h, float):
- occlude_target(w, h, (RENDER_COLOR,RGB)),
+ occlude_target(w, h, (RENDER_COLOR,RED)),
occlude_shader("ambientocclusion_occlude.glsl"),
combine_shader("ambientocclusion_combine.glsl"),
quad(get_fullscreen_quad())
set_n_samples(16);
set_occlusion_radius(0.5f);
set_darkness(1.0f);
+ set_edge_depth_threshold(0.1f);
}
float AmbientOcclusion::random(unsigned &seed)
shdata.uniform("occlusion_radius", r);
}
-void AmbientOcclusion::set_depth_ratio(float)
+void AmbientOcclusion::set_darkness(float darkness)
{
+ shdata.uniform("darkness", darkness);
}
-void AmbientOcclusion::set_darkness(float darkness)
+void AmbientOcclusion::set_edge_depth_threshold(float edt)
{
- shdata.uniform("darkness", darkness);
+ shdata.uniform("edge_depth_threshold", edt);
}
void AmbientOcclusion::render(Renderer &renderer, const Texture2D &color, const Texture2D &depth)
AmbientOcclusion::Template::Template():
n_samples(16),
occlusion_radius(0.5f),
- darkness(1.0f)
+ darkness(1.0f),
+ edge_depth_threshold(0.1f)
{ }
AmbientOcclusion *AmbientOcclusion::Template::create(unsigned width, unsigned height) const
ao->set_n_samples(n_samples);
ao->set_occlusion_radius(occlusion_radius);
ao->set_darkness(darkness);
+ ao->set_edge_depth_threshold(edge_depth_threshold);
return ao.release();
}
DataFile::DerivedObjectLoader<Template, PostProcessor::Template::Loader>(t)
{
add("darkness", &Template::darkness);
+ add("edge_depth_threshold", &Template::edge_depth_threshold);
add("occlusion_radius", &Template::occlusion_radius);
add("samples", &Template::n_samples);
}