[Aqsis-commits] [SCM] Aqsis Renderer branch, master, updated. Release_1.6.0_Phase2-389-g3da208f
Brought to you by:
ltatkinson,
pgregory
From: Chris F. <c4...@us...> - 2010-09-29 06:49:38
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Aqsis Renderer". The branch, master has been updated via 3da208fb8f8c4f9b9c0eae4137c6ff22b83a592e (commit) from 338a338b9b64131e8f231d3cb23bfc392bfd1bed (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 3da208fb8f8c4f9b9c0eae4137c6ff22b83a592e Author: Chris Foster <chr...@gm...> Date: Wed Sep 29 16:46:26 2010 +1000 Clamp bucket size to filter width from below This restriction is due to the simplifying assumptions I decided to use when implement filtering. If we don't do the clamp odd results can result, probably include crashing. diff --git a/prototypes/newcore/renderer.cpp b/prototypes/newcore/renderer.cpp index 502a3ae..3360460 100644 --- a/prototypes/newcore/renderer.cpp +++ b/prototypes/newcore/renderer.cpp @@ -267,12 +267,16 @@ float Renderer::micropolyBlurWidth(const GeomHolderPtr& holder, namespace { template<typename T> -void clampOptBelow(T& val, const char* name, const T& minVal) +void clampOptBelow(T& val, const char* name, const T& minVal, + const char* reason = 0) { if(val < minVal) { std::cerr << "Warning: Option " << name << " = " << val - << " is too small. Clamping to " << minVal << "\n"; + << " is too small"; + if(reason) + std::cerr << " (" << reason << ")"; + std::cerr << ". Clamping to " << minVal << ".\n"; val = minVal; } } @@ -290,6 +294,13 @@ void Renderer::sanitizeOptions(Options& opts) CLAMP_OPT_BELOW(resolution.y, 1); CLAMP_OPT_BELOW(bucketSize.x, 1); CLAMP_OPT_BELOW(bucketSize.y, 1); + // Filter width can't be larger than bucket size due to implementation + // choices. + V2i minBucketSize = iceil(opts.pixelFilter->width()); + clampOptBelow(opts.bucketSize.x, "bucketsize.x", minBucketSize.x, + "must be greater than filter size"); + clampOptBelow(opts.bucketSize.y, "bucketsize.y", minBucketSize.y, + "must be greater than filter size"); CLAMP_OPT_BELOW(superSamp.x, 1); CLAMP_OPT_BELOW(superSamp.y, 1); CLAMP_OPT_BELOW(shutterMax, opts.shutterMin); diff --git a/prototypes/newcore/util.h b/prototypes/newcore/util.h index fef6bdd..33bd8dc 100644 --- a/prototypes/newcore/util.h +++ b/prototypes/newcore/util.h @@ -121,6 +121,12 @@ inline Imath::Vec2<T> min(const Imath::Vec2<T>& a, const Imath::Vec2<T>& b) } template<typename T> +inline Imath::Vec2<T> max(const Imath::Vec2<T>& a, const Imath::Vec2<T>& b) +{ + return Imath::Vec2<T>(std::max(a.x, b.x), std::max(a.y,b.y)); +} + +template<typename T> inline T cross(Imath::Vec2<T> a, Imath::Vec2<T> b) { return a.x*b.y - b.x*a.y; @@ -320,6 +326,12 @@ inline Imath::V2i ifloor(const Imath::Vec2<T>& v) return Imath::V2i(ifloor(v.x), ifloor(v.y)); } +template<typename T> +inline Imath::V2i iceil(const Imath::Vec2<T>& v) +{ + return Imath::V2i(iceil(v.x), iceil(v.y)); +} + #define ALLOCA(type, len) static_cast<type*>(alloca(len*sizeof(type))) #define FALLOCA(len) ALLOCA(float, len) ----------------------------------------------------------------------- Summary of changes: prototypes/newcore/renderer.cpp | 15 +++++++++++++-- prototypes/newcore/util.h | 12 ++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) hooks/post-receive -- Aqsis Renderer |