From 6123a81aecc4e3cd6c47c908fb7e9010d3d64798 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 16 Feb 2015 17:35:10 +0100 Subject: Vectorize color clipping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces redundant code with one function. Oddly this fixes rendering with earlyclip – not sure why. Drop transparency and channel settings (always transparent, always four channels). --- math.h | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 math.h (limited to 'math.h') diff --git a/math.h b/math.h new file mode 100644 index 0000000..defc7c6 --- /dev/null +++ b/math.h @@ -0,0 +1,61 @@ +/* + FLAM3 - cosmic recursive fractal flames + Copyright (C) 1992-2009 Spotworks LLC + Copyright (C) 2015 vlam3 contributors + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#pragma once + +#include + +#include "build/config.h" + +#ifdef HAVE_AMDLIBM +#define REPLACE_WITH_AMDLIBM +#include +#endif + +#define clamp(a,min,max) (a > max ? max : (a < min ? min : a)) + +/* Vector wrapping function, could be replaced by true vector functions later + */ + +inline double4 clamp_d4 (const double4 in, const double min, const double max) { + return (double4) { + clamp (in[0], min, max), + clamp (in[1], min, max), + clamp (in[2], min, max), + clamp (in[3], min, max), + }; +} + +inline double4 pow_d4 (const double4 in, double exp) { + return (double4) { + pow (in[0], exp), + pow (in[1], exp), + pow (in[2], exp), + pow (in[3], exp), + }; +} + +inline double4 nearbyint_d4 (const double4 in) { + return (double4) { + nearbyint (in[0]), + nearbyint (in[1]), + nearbyint (in[2]), + nearbyint (in[3]), + }; +} -- cgit v1.2.3