/** * Mandelbulber v2, a 3D fractal generator _%}}i*<. ____ _______ * Copyright (C) 2020 Mandelbulber Team _>]|=||i=i<, / __ \___ ___ ___ / ___/ / * \><||i|=>>%) / /_/ / _ \/ -_) _ \/ /__/ /__ * This file is part of Mandelbulber. )<=i=]=|=i<> \____/ .__/\__/_//_/\___/____/ * The project is licensed under GPLv3, -<>>=|><|||` /_/ * see also COPYING file in this folder. ~+{i%+++ * * Sierpinski3D. made from DarkBeam's Sierpinski code from M3D * @reference * http://www.fractalforums.com/mandelbulb-3d/custom-formulas-and-transforms-release-t17106/ * This file has been autogenerated by tools/populateUiInformation.php * from the file "fractal_sierpinski3d_v3.cpp" in the folder formula/definition * D O N O T E D I T T H I S F I L E ! */ REAL4 Sierpinski3dV3Iteration(REAL4 z, __constant sFractalCl *fractal, sExtendedAuxCl *aux) { if (fractal->transformCommon.functionEnabledTFalse && aux->i >= fractal->transformCommon.startIterationsT && aux->i < fractal->transformCommon.stopIterationsT1) { z += fractal->transformCommon.offset000; z = Matrix33MulFloat4(fractal->transformCommon.rotationMatrix2, z); } if (z.x - z.y < 0.0f) { REAL temp = z.y; z.y = z.x; z.x = temp; } if (z.x - z.z < 0.0f) { REAL temp = z.z; z.z = z.x; z.x = temp; } if (z.y - z.z < 0.0f) { REAL temp = z.z; z.z = z.y; z.y = temp; } z *= fractal->transformCommon.scaleA2; z -= fractal->transformCommon.offset100; // neg offset if (fractal->transformCommon.functionEnabledRFalse && aux->i >= fractal->transformCommon.startIterationsR && aux->i < fractal->transformCommon.stopIterationsR) { z = Matrix33MulFloat4(fractal->transformCommon.rotationMatrix, z); } // Reversed full tetra-fold; if (fractal->transformCommon.functionEnabledFalse && aux->i >= fractal->transformCommon.startIterationsC && aux->i < fractal->transformCommon.stopIterationsC) { REAL4 temp = z; if (z.x + z.y < 0.0f) { temp.x = -z.y; z.y = -z.x; z.x = temp.x; } if (z.x + z.z < 0.0f) { temp.x = -z.z; z.z = -z.x; z.x = temp.x; } if (z.y + z.z < 0.0f) { temp.y = -z.z; z.z = -z.y; z.y = temp.y; } } if (!fractal->analyticDE.enabledFalse) aux->DE *= fabs(fractal->transformCommon.scaleA2); else aux->DE = aux->DE * fabs(fractal->transformCommon.scaleA2) * fractal->analyticDE.scale1 + fractal->analyticDE.offset0; return z; }