X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Feffects%2Fambientocclusion.cpp;h=21271acf2555d8a7f6b474d9cf3657cc69dccdb9;hb=003890aeda3e2bb444d9560a8dd8f6aef924a1ee;hp=a407c2d9918621b3aa9f057fd93597845635f1e9;hpb=7f81f26889b84542b0b35685b0e80383256cdc47;p=libs%2Fgl.git diff --git a/source/effects/ambientocclusion.cpp b/source/effects/ambientocclusion.cpp index a407c2d9..21271acf 100644 --- a/source/effects/ambientocclusion.cpp +++ b/source/effects/ambientocclusion.cpp @@ -67,14 +67,14 @@ float AmbientOcclusion::radical_inverse(unsigned n) void AmbientOcclusion::set_n_samples(unsigned n) { - if(n<1 || n>32) + if(n<1 || n>128) throw out_of_range("AmbientOcclusion::set_n_samples"); - Vector3 sample_points[32]; + vector sample_points(n); for(unsigned i=0; i(i)/n; - float r = sqrt(1.0f-z*z); + float r = static_cast(i)/n; + float z = sqrt(1.0f-r*r); float d = radical_inverse(i); Geometry::Angle a = Geometry::Angle::from_turns(d); sample_points[i] = Vector3(cos(a)*r, sin(a)*r, z)*(0.1f+0.9f*d*d); @@ -116,6 +116,16 @@ void AmbientOcclusion::render(Renderer &renderer, const Texture2D &color, const quad.draw(renderer); } +void AmbientOcclusion::set_debug_name(const string &name) +{ +#ifdef DEBUG + occlude_target.set_debug_name(name+" [RT]"); + shdata.set_debug_name(name+" [UBO]"); +#else + (void)name; +#endif +} + AmbientOcclusion::Template::Template(): n_samples(16),