mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2026-04-18 23:10:22 -04:00
--User changes
-Allow for pausing the renderer in the main window. This makes is more efficient when entering many parameters, such as when following a tutorial. -Add support for new variations: erf, gamma, jac_cn, jac_dn, jac_sn, logDB, pressure_wave, pRose3D, splits3D, w, waves2b, x, xerf, y, z. -Inform user of the start and stop of file parsing in EmberAnimate because the files could potentially be very large. -Move the follwing fields to a new table called Animation: Interpolation, Affine Interpolation, Temporal Samples, Temporal Filter Width, Temporal Filter Type. -These currently have no effect on the interactive renderer and instead are used when running flames through EmberGenome to generate sequences, and then animating them in Fractorium or EmberAnimate. -Add new parameter overrides for EmberRender and EmberAnimate which directly assign values to all flames being rendered, rather than scale: --quality --demin --demax --Bug fixes -Left pad instead of right pad names of sequence outputs from EmberGenome. -Unique file naming was broken for files which already had an underscore in them. -Properly report that png is the default format of EmberRender and EmberAnimate output instead of erroneously claiming it was jpg. -Make command line programs search these folders in this order for the palette file: ./ ~/.fractorium ~/.config/fractorium /usr/share/fractorium /usr/local/share/fractorium -Fix possible bad values in hexes. -Better assignment of Z variables. -Fix boarders due to use of poorly implemented rint() function from flam3. Use std::rint() now. -wedge_sph was completely wrong due to having accidentally swapped the mapping of two parameters. -Make juliascope juliascope_power parameter be of type REAL_NONZERO since it's used as a denominator. -Make Z assignment compatible with the originals in: -arch, bcircle, bCollide, bent, bent2, bisplit, blob, blur_linear, blur_square, bMod, boarders, boarders2, bSwirl, bTransform, butterfly, cardioid, cell, circleblur, circlize, circlize2, circus, collideoscope, cos, cosine, cosh, coth, cpow, cpow2, crescents, cropn, csc, csch, curl, curve, dc_gridout, deltaa, diamond, disc2, eclipse, eCollide, edisc, eJulia, elliptic, eMod, eMotion, ennepers, epispiral, ePush, eRotate, eScale, eSwirl, ex, exp, expo, exponential, fan, fdisc, fibonacci, fibonacci2, fisheye, flipcircle, flipy, flower, flux, funnel, glynnia, GlynnSim1, GlynnSim2, GlynnSim3, gridout, handkerchief, heart, hole, idisc, julia, julian2, juliaNab, kaleidoscope, lazyTravis, Lissajous, mask, MobiusN, mobius_strip, modulus, murl, murl2, npolar, ortho, oscilloscope, parabola, perspective, petal, phoenix_julia, pie (was also inconsistent between cpu and gpu), poincare, popcorn, popcorn2, power, pow_block, rational3, rays, rblur, rings, rippled, roundspher, sec, secant2, sigmoid, sin, sineblur, sinh, sinusgrid, sphericaln, spiralwing, spirograph, split, squarize, squirrel, squish, sschecks, starblur, stripes, stwin, super_shape, tan, tancos, tangent, tanh, TwinTrian, twoface, unpolar, waves, wavesn, wedge_julia, whorl, xheart, zblur, zscale. --Code changes -Generalize Variation::PrecalcHelper() and rename to PrePostPrecalcHelper(). --Do the same for the OpenCL version and rename it PrePostPrecalcOpenCLString(). -Rename Variation::m_AssignType to m_PrePostAssignType since it's only relevant to pre/post variations.
This commit is contained in:
@ -23,6 +23,7 @@ template<> CriticalSection QTIsaac<ISAAC_SIZE, ISAAC_INT>::m_CS = CriticalSectio
|
||||
#include "Variations04.h"
|
||||
#include "Variations05.h"
|
||||
#include "Variations06.h"
|
||||
#include "Variations07.h"
|
||||
#include "VariationsDC.h"
|
||||
#include "VariationList.h"
|
||||
#include "Affine2D.h"
|
||||
@ -379,6 +380,21 @@ uint Timing::m_ProcessorCount;
|
||||
EXPORTPREPOSTREGVAR(BubbleT3D, T) \
|
||||
EXPORTPREPOSTREGVAR(Synth, T) \
|
||||
EXPORTPREPOSTREGVAR(Crackle, T) \
|
||||
EXPORTPREPOSTREGVAR(Erf, T) \
|
||||
EXPORTPREPOSTREGVAR(Xerf, T) \
|
||||
EXPORTPREPOSTREGVAR(W, T) \
|
||||
EXPORTPREPOSTREGVAR(X, T) \
|
||||
EXPORTPREPOSTREGVAR(Y, T) \
|
||||
EXPORTPREPOSTREGVAR(Z, T) \
|
||||
EXPORTPREPOSTREGVAR(Splits3D, T) \
|
||||
EXPORTPREPOSTREGVAR(Waves2B, T) \
|
||||
EXPORTPREPOSTREGVAR(JacCn, T) \
|
||||
EXPORTPREPOSTREGVAR(JacDn, T) \
|
||||
EXPORTPREPOSTREGVAR(JacSn, T) \
|
||||
EXPORTPREPOSTREGVAR(PressureWave, T) \
|
||||
EXPORTPREPOSTREGVAR(Gamma, T) \
|
||||
EXPORTPREPOSTREGVAR(PRose3D, T) \
|
||||
EXPORTPREPOSTREGVAR(LogDB, T) \
|
||||
template EMBER_API class PostSmartcropVariation<T>; /*Only implemented as post.*/ \
|
||||
EXPORTPREPOSTREGVAR(DCBubble, T) \
|
||||
EXPORTPREPOSTREGVAR(DCCarpet, T) \
|
||||
|
||||
@ -1794,7 +1794,7 @@ private:
|
||||
for (size_t k = 0; k < size; k++)
|
||||
t += coefs[k] * embers[k].*m;
|
||||
|
||||
this->*m = size_t(Rint(t));
|
||||
this->*m = size_t(std::rint(t));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -64,7 +64,6 @@ namespace EmberNs
|
||||
#define CX(c) (reinterpret_cast<char*>(c))
|
||||
#define CCX(c) (reinterpret_cast<const char*>(c))
|
||||
#define BadVal(x) (((x) != (x)) || ((x) > 1e10) || ((x) < -1e10))
|
||||
#define Rint(A) floor((A) + (((A) < 0) ? T(-0.5) : T(0.5)))
|
||||
#define Vlen(x) (sizeof(x) / sizeof(*x))
|
||||
#define SQR(x) ((x) * (x))
|
||||
#define CUBE(x) ((x) * (x) * (x))
|
||||
|
||||
@ -270,9 +270,9 @@ public:
|
||||
for (j = 0; j < 8; j++)
|
||||
{
|
||||
size_t idx = 8 * i + j;
|
||||
os << hex << setw(2) << setfill('0') << int(Rint(ember.m_Palette[idx][0] * 255));
|
||||
os << hex << setw(2) << setfill('0') << int(Rint(ember.m_Palette[idx][1] * 255));
|
||||
os << hex << setw(2) << setfill('0') << int(Rint(ember.m_Palette[idx][2] * 255));
|
||||
os << hex << setw(2) << setfill('0') << int(std::rint(ember.m_Palette[idx][0] * 255));
|
||||
os << hex << setw(2) << setfill('0') << int(std::rint(ember.m_Palette[idx][1] * 255));
|
||||
os << hex << setw(2) << setfill('0') << int(std::rint(ember.m_Palette[idx][2] * 255));
|
||||
}
|
||||
|
||||
os << endl;
|
||||
@ -294,14 +294,14 @@ public:
|
||||
if (IsClose(a, 255.0))
|
||||
{
|
||||
if (intPalette)
|
||||
os << "<color index=\"" << i << "\" rgb=\"" << int(Rint(r)) << " " << int(Rint(g)) << " " << int(Rint(b)) << "\"/>";
|
||||
os << "<color index=\"" << i << "\" rgb=\"" << int(std::rint(r)) << " " << int(std::rint(g)) << " " << int(std::rint(b)) << "\"/>";
|
||||
else
|
||||
os << "<color index=\"" << i << "\" rgb=\"" << std::fixed << std::setprecision(2) << r << " " << g << " " << b << "\"/>";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (intPalette)
|
||||
os << " <color index=\"" << i << "\" rgba=\"" << int(Rint(r)) << " " << int(Rint(g)) << " " << int(Rint(b)) << " " << int(Rint(a)) << "\"/>";
|
||||
os << " <color index=\"" << i << "\" rgba=\"" << int(std::rint(r)) << " " << int(std::rint(g)) << " " << int(std::rint(b)) << " " << int(std::rint(a)) << "\"/>";
|
||||
else
|
||||
os << " <color index=\"" << i << "\" rgba=\"" << std::fixed << std::setprecision(2) << r << " " << g << " " << b << " " << a << "\"/>";
|
||||
}
|
||||
|
||||
@ -658,6 +658,22 @@ double SafeTan<double>(double x)
|
||||
return std::tan(x);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// If r < EPS, return 1 / r.
|
||||
/// Else, return q / r.
|
||||
/// </summary>
|
||||
/// <param name="q">The numerator</param>
|
||||
/// <param name="r">The denominator</param>
|
||||
/// <returns>The quotient</returns>
|
||||
template <typename T>
|
||||
static inline T SafeDivInv(T q, T r)
|
||||
{
|
||||
if (r < EPS)
|
||||
return 1 / r;
|
||||
|
||||
return q / r;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return the cube of the passed in value.
|
||||
/// This is useful when the value is a result of a computation
|
||||
|
||||
@ -255,7 +255,7 @@ public:
|
||||
if (pmq.x == 0 && pmq.y == 0)
|
||||
return 1;
|
||||
|
||||
return 2 * ((u.x - q.x) * pmq.x + (u.y - q.y) * pmq.y) / (SQR(pmq.x) + SQR(pmq.y));
|
||||
return 2 * ((u.x - q.x) * pmq.x + (u.y - q.y) * pmq.y) / Zeps(SQR(pmq.x) + SQR(pmq.y));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -279,6 +279,99 @@ public:
|
||||
return ratiomax;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Used in the jac_* variations.
|
||||
/// </summary>
|
||||
static void JacobiElliptic(T uu, T emmc, T& sn, T& cn, T& dn)
|
||||
{
|
||||
//Code is taken from IROIRO++ library,
|
||||
//released under CC share-alike license.
|
||||
//Less accurate for faster rendering (still very precise).
|
||||
T const CA = T(0.0003);//The accuracy is the square of CA.
|
||||
T a, b, c, d, em[13], en[13];
|
||||
int bo;
|
||||
int l;
|
||||
int ii;
|
||||
int i;
|
||||
T emc = emmc;
|
||||
T u = uu;
|
||||
|
||||
if (emc != 0)
|
||||
{
|
||||
bo = 0;
|
||||
|
||||
if (emc < 0)
|
||||
bo = 1;
|
||||
|
||||
if (bo != 0)
|
||||
{
|
||||
d = 1 - emc;
|
||||
emc = -emc / d;
|
||||
d = std::sqrt(d);
|
||||
u = d * u;
|
||||
}
|
||||
|
||||
a = 1;
|
||||
dn = 1;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
l = i;
|
||||
em[i] = a;
|
||||
emc = std::sqrt(emc);
|
||||
en[i] = emc;
|
||||
c = T(0.5) * (a + emc);
|
||||
|
||||
if (std::abs(a - emc) <= CA * a)
|
||||
break;
|
||||
|
||||
emc = a * emc;
|
||||
a = c;
|
||||
}
|
||||
|
||||
u = c * u;
|
||||
sincos(u, &sn, &cn);
|
||||
|
||||
if (sn != 0)
|
||||
{
|
||||
a = cn / sn;
|
||||
c = a * c;
|
||||
|
||||
for (ii = l; ii >= 0; --ii)
|
||||
{
|
||||
b = em[ii];
|
||||
a = c * a;
|
||||
c = dn * c;
|
||||
dn = (en[ii] + a) / (b + a);
|
||||
a = c / b;
|
||||
}
|
||||
|
||||
a = 1 / std::sqrt(c * c + 1);
|
||||
|
||||
if (sn < 0)
|
||||
sn = -a;
|
||||
else
|
||||
sn = a;
|
||||
|
||||
cn = c * sn;
|
||||
}
|
||||
|
||||
if (bo != 0)
|
||||
{
|
||||
a = dn;
|
||||
dn = cn;
|
||||
cn = a;
|
||||
sn = sn / d;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cn = 1 / std::cosh(u);
|
||||
dn = cn;
|
||||
sn = std::tanh(u);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLETON_DERIVED_IMPL(VarFuncs<T>);
|
||||
|
||||
private:
|
||||
|
||||
@ -136,6 +136,7 @@ enum class eVariationId : et
|
||||
VAR_ENNEPERS ,
|
||||
VAR_EPISPIRAL ,
|
||||
VAR_EPUSH ,
|
||||
VAR_ERF ,
|
||||
VAR_EROTATE ,
|
||||
VAR_ESCALE ,
|
||||
VAR_ESCHER ,
|
||||
@ -166,6 +167,7 @@ enum class eVariationId : et
|
||||
VAR_FOCI3D ,
|
||||
VAR_FOURTH ,
|
||||
VAR_FUNNEL ,
|
||||
VAR_GAMMA ,
|
||||
VAR_GAUSSIAN_BLUR ,
|
||||
VAR_GDOFFS ,
|
||||
VAR_GLYNNIA ,
|
||||
@ -193,6 +195,9 @@ enum class eVariationId : et
|
||||
VAR_HYPERTILE3D2 ,
|
||||
VAR_IDISC ,
|
||||
VAR_INTERFERENCE2 ,
|
||||
VAR_JAC_CN ,
|
||||
VAR_JAC_DN ,
|
||||
VAR_JAC_SN ,
|
||||
VAR_JULIA ,
|
||||
VAR_JULIA3D ,
|
||||
VAR_JULIA3DQ ,
|
||||
@ -216,6 +221,7 @@ enum class eVariationId : et
|
||||
VAR_LINEAR3D ,
|
||||
VAR_LISSAJOUS ,
|
||||
VAR_LOG ,
|
||||
VAR_LOG_DB ,
|
||||
VAR_LOQ ,
|
||||
VAR_LOONIE ,
|
||||
VAR_LOONIE2 ,
|
||||
@ -260,6 +266,8 @@ enum class eVariationId : et
|
||||
VAR_POPCORN23D ,
|
||||
VAR_POW_BLOCK ,
|
||||
VAR_POWER ,
|
||||
VAR_PRESSURE_WAVE ,
|
||||
VAR_PROSE3D ,
|
||||
VAR_PSPHERE ,
|
||||
VAR_Q_ODE ,
|
||||
VAR_RADIAL_BLUR ,
|
||||
@ -308,6 +316,7 @@ enum class eVariationId : et
|
||||
VAR_SPLIT ,
|
||||
VAR_SPLIT_BRDR ,
|
||||
VAR_SPLITS ,
|
||||
VAR_SPLITS3D ,
|
||||
VAR_SQUARE ,
|
||||
VAR_SQUARE3D ,
|
||||
VAR_SQUARIZE ,
|
||||
@ -336,18 +345,24 @@ enum class eVariationId : et
|
||||
VAR_TWO_FACE ,
|
||||
VAR_UNPOLAR ,
|
||||
VAR_VORON ,
|
||||
VAR_W ,
|
||||
VAR_WAFFLE ,
|
||||
VAR_WAVES ,
|
||||
VAR_WAVES2 ,
|
||||
VAR_WAVES23D ,
|
||||
VAR_WAVES2B ,
|
||||
VAR_WAVESN ,
|
||||
VAR_WDISC ,
|
||||
VAR_WEDGE ,
|
||||
VAR_WEDGE_JULIA ,
|
||||
VAR_WEDGE_SPH ,
|
||||
VAR_WHORL ,
|
||||
VAR_X ,
|
||||
VAR_XERF ,
|
||||
VAR_XHEART ,
|
||||
VAR_XTRB ,
|
||||
VAR_Y ,
|
||||
VAR_Z ,
|
||||
VAR_ZBLUR ,
|
||||
VAR_ZCONE ,
|
||||
VAR_ZSCALE ,
|
||||
@ -445,6 +460,7 @@ enum class eVariationId : et
|
||||
VAR_PRE_ENNEPERS,
|
||||
VAR_PRE_EPISPIRAL,
|
||||
VAR_PRE_EPUSH,
|
||||
VAR_PRE_ERF,
|
||||
VAR_PRE_EROTATE,
|
||||
VAR_PRE_ESCALE,
|
||||
VAR_PRE_ESCHER,
|
||||
@ -475,6 +491,7 @@ enum class eVariationId : et
|
||||
VAR_PRE_FOCI3D,
|
||||
VAR_PRE_FOURTH,
|
||||
VAR_PRE_FUNNEL,
|
||||
VAR_PRE_GAMMA,
|
||||
VAR_PRE_GAUSSIAN_BLUR,
|
||||
VAR_PRE_GDOFFS,
|
||||
VAR_PRE_GLYNNIA,
|
||||
@ -502,6 +519,9 @@ enum class eVariationId : et
|
||||
VAR_PRE_HYPERTILE3D2,
|
||||
VAR_PRE_IDISC,
|
||||
VAR_PRE_INTERFERENCE2,
|
||||
VAR_PRE_JAC_CN,
|
||||
VAR_PRE_JAC_DN,
|
||||
VAR_PRE_JAC_SN,
|
||||
VAR_PRE_JULIA,
|
||||
VAR_PRE_JULIA3D,
|
||||
VAR_PRE_JULIA3DQ,
|
||||
@ -525,6 +545,7 @@ enum class eVariationId : et
|
||||
VAR_PRE_LINEAR3D,
|
||||
VAR_PRE_LISSAJOUS,
|
||||
VAR_PRE_LOG,
|
||||
VAR_PRE_LOG_DB,
|
||||
VAR_PRE_LOQ,
|
||||
VAR_PRE_LOONIE,
|
||||
VAR_PRE_LOONIE2,
|
||||
@ -569,6 +590,8 @@ enum class eVariationId : et
|
||||
VAR_PRE_POPCORN23D,
|
||||
VAR_PRE_POW_BLOCK,
|
||||
VAR_PRE_POWER,
|
||||
VAR_PRE_PRESSURE_WAVE,
|
||||
VAR_PRE_PROSE3D,
|
||||
VAR_PRE_PSPHERE,
|
||||
VAR_PRE_Q_ODE,
|
||||
VAR_PRE_RADIAL_BLUR,
|
||||
@ -617,6 +640,7 @@ enum class eVariationId : et
|
||||
VAR_PRE_SPLIT,
|
||||
VAR_PRE_SPLIT_BRDR,
|
||||
VAR_PRE_SPLITS,
|
||||
VAR_PRE_SPLITS3D,
|
||||
VAR_PRE_SQUARE,
|
||||
VAR_PRE_SQUARE3D,
|
||||
VAR_PRE_SQUARIZE,
|
||||
@ -645,18 +669,24 @@ enum class eVariationId : et
|
||||
VAR_PRE_TWO_FACE,
|
||||
VAR_PRE_UNPOLAR,
|
||||
VAR_PRE_VORON,
|
||||
VAR_PRE_W,
|
||||
VAR_PRE_WAFFLE,
|
||||
VAR_PRE_WAVES,
|
||||
VAR_PRE_WAVES2,
|
||||
VAR_PRE_WAVES23D,
|
||||
VAR_PRE_WAVES2B,
|
||||
VAR_PRE_WAVESN,
|
||||
VAR_PRE_WDISC,
|
||||
VAR_PRE_WEDGE,
|
||||
VAR_PRE_WEDGE_JULIA,
|
||||
VAR_PRE_WEDGE_SPH,
|
||||
VAR_PRE_WHORL,
|
||||
VAR_PRE_X,
|
||||
VAR_PRE_XERF,
|
||||
VAR_PRE_XHEART,
|
||||
VAR_PRE_XTRB,
|
||||
VAR_PRE_Y,
|
||||
VAR_PRE_Z,
|
||||
VAR_PRE_ZBLUR,
|
||||
VAR_PRE_ZCONE,
|
||||
VAR_PRE_ZSCALE,
|
||||
@ -754,6 +784,7 @@ enum class eVariationId : et
|
||||
VAR_POST_ENNEPERS,
|
||||
VAR_POST_EPISPIRAL,
|
||||
VAR_POST_EPUSH,
|
||||
VAR_POST_ERF,
|
||||
VAR_POST_EROTATE,
|
||||
VAR_POST_ESCALE,
|
||||
VAR_POST_ESCHER,
|
||||
@ -784,6 +815,7 @@ enum class eVariationId : et
|
||||
VAR_POST_FOCI3D,
|
||||
VAR_POST_FOURTH,
|
||||
VAR_POST_FUNNEL,
|
||||
VAR_POST_GAMMA,
|
||||
VAR_POST_GAUSSIAN_BLUR,
|
||||
VAR_POST_GDOFFS,
|
||||
VAR_POST_GLYNNIA,
|
||||
@ -811,6 +843,9 @@ enum class eVariationId : et
|
||||
VAR_POST_HYPERTILE3D2,
|
||||
VAR_POST_IDISC,
|
||||
VAR_POST_INTERFERENCE2,
|
||||
VAR_POST_JAC_CN,
|
||||
VAR_POST_JAC_DN,
|
||||
VAR_POST_JAC_SN,
|
||||
VAR_POST_JULIA,
|
||||
VAR_POST_JULIA3D,
|
||||
VAR_POST_JULIA3DQ,
|
||||
@ -834,6 +869,7 @@ enum class eVariationId : et
|
||||
VAR_POST_LINEAR3D,
|
||||
VAR_POST_LISSAJOUS,
|
||||
VAR_POST_LOG,
|
||||
VAR_POST_LOG_DB,
|
||||
VAR_POST_LOQ,
|
||||
VAR_POST_LOONIE,
|
||||
VAR_POST_LOONIE2,
|
||||
@ -878,6 +914,8 @@ enum class eVariationId : et
|
||||
VAR_POST_POPCORN23D,
|
||||
VAR_POST_POW_BLOCK,
|
||||
VAR_POST_POWER,
|
||||
VAR_POST_PRESSURE_WAVE,
|
||||
VAR_POST_PROSE3D,
|
||||
VAR_POST_PSPHERE,
|
||||
VAR_POST_Q_ODE,
|
||||
VAR_POST_RADIAL_BLUR,
|
||||
@ -926,6 +964,7 @@ enum class eVariationId : et
|
||||
VAR_POST_SPLIT,
|
||||
VAR_POST_SPLIT_BRDR,
|
||||
VAR_POST_SPLITS,
|
||||
VAR_POST_SPLITS3D,
|
||||
VAR_POST_SQUARE,
|
||||
VAR_POST_SQUARE3D,
|
||||
VAR_POST_SQUARIZE,
|
||||
@ -954,18 +993,24 @@ enum class eVariationId : et
|
||||
VAR_POST_TWO_FACE,
|
||||
VAR_POST_UNPOLAR,
|
||||
VAR_POST_VORON,
|
||||
VAR_POST_W,
|
||||
VAR_POST_WAFFLE,
|
||||
VAR_POST_WAVES,
|
||||
VAR_POST_WAVES2,
|
||||
VAR_POST_WAVES23D,
|
||||
VAR_POST_WAVES2B,
|
||||
VAR_POST_WAVESN,
|
||||
VAR_POST_WDISC,
|
||||
VAR_POST_WEDGE,
|
||||
VAR_POST_WEDGE_JULIA,
|
||||
VAR_POST_WEDGE_SPH,
|
||||
VAR_POST_WHORL,
|
||||
VAR_POST_X,
|
||||
VAR_POST_XERF,
|
||||
VAR_POST_XHEART,
|
||||
VAR_POST_XTRB,
|
||||
VAR_POST_Y,
|
||||
VAR_POST_Z,
|
||||
VAR_POST_ZBLUR,
|
||||
VAR_POST_ZCONE,
|
||||
VAR_POST_ZSCALE,
|
||||
@ -1077,7 +1122,7 @@ public:
|
||||
m_NeedPrecalcSqrtSumSquares = true;
|
||||
}
|
||||
|
||||
m_AssignType = eVariationAssignType::ASSIGNTYPE_SET;
|
||||
m_PrePostAssignType = eVariationAssignType::ASSIGNTYPE_SET;
|
||||
SetType();
|
||||
}
|
||||
|
||||
@ -1131,7 +1176,7 @@ public:
|
||||
{
|
||||
m_Name = variation.Name();
|
||||
m_VarType = variation.VarType();
|
||||
m_AssignType = variation.AssignType();
|
||||
m_PrePostAssignType = variation.AssignType();
|
||||
m_VariationId = variation.VariationId();
|
||||
m_Weight = T(variation.m_Weight);
|
||||
m_Xform = typeid(T) == typeid(U) ? const_cast<Xform<T>*>(reinterpret_cast<const Xform<T>*>(variation.ParentXform())) : nullptr;
|
||||
@ -1147,115 +1192,60 @@ public:
|
||||
/// Per-variation precalc used for pre and post variations.
|
||||
/// </summary>
|
||||
/// <param name="iteratorHelper">The helper to read values from in the case of pre, and store precalc values to in both cases.</param>
|
||||
/// <param name="point">The point to read values from in the case of post, ignored for pre.</param>
|
||||
void PrecalcHelper(IteratorHelper<T>& iteratorHelper, Point<T>* point)
|
||||
void PrePostPrecalcHelper(IteratorHelper<T>& iteratorHelper)
|
||||
{
|
||||
if (m_VarType == eVariationType::VARTYPE_PRE)
|
||||
if (m_NeedPrecalcSumSquares)
|
||||
{
|
||||
if (m_NeedPrecalcSumSquares)
|
||||
iteratorHelper.m_PrecalcSumSquares = SQR(iteratorHelper.In.x) + SQR(iteratorHelper.In.y);
|
||||
|
||||
if (m_NeedPrecalcSqrtSumSquares)
|
||||
{
|
||||
iteratorHelper.m_PrecalcSumSquares = SQR(iteratorHelper.m_TransX) + SQR(iteratorHelper.m_TransY);
|
||||
iteratorHelper.m_PrecalcSqrtSumSquares = std::sqrt(iteratorHelper.m_PrecalcSumSquares);
|
||||
|
||||
if (m_NeedPrecalcSqrtSumSquares)
|
||||
if (m_NeedPrecalcAngles)
|
||||
{
|
||||
iteratorHelper.m_PrecalcSqrtSumSquares = std::sqrt(iteratorHelper.m_PrecalcSumSquares);
|
||||
|
||||
if (m_NeedPrecalcAngles)
|
||||
{
|
||||
iteratorHelper.m_PrecalcSina = iteratorHelper.m_TransX / iteratorHelper.m_PrecalcSqrtSumSquares;
|
||||
iteratorHelper.m_PrecalcCosa = iteratorHelper.m_TransY / iteratorHelper.m_PrecalcSqrtSumSquares;
|
||||
}
|
||||
iteratorHelper.m_PrecalcSina = iteratorHelper.In.x / iteratorHelper.m_PrecalcSqrtSumSquares;
|
||||
iteratorHelper.m_PrecalcCosa = iteratorHelper.In.y / iteratorHelper.m_PrecalcSqrtSumSquares;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_NeedPrecalcAtanXY)
|
||||
iteratorHelper.m_PrecalcAtanxy = atan2(iteratorHelper.m_TransX, iteratorHelper.m_TransY);
|
||||
|
||||
if (m_NeedPrecalcAtanYX)
|
||||
iteratorHelper.m_PrecalcAtanyx = atan2(iteratorHelper.m_TransY, iteratorHelper.m_TransX);
|
||||
}
|
||||
else if (m_VarType == eVariationType::VARTYPE_POST)
|
||||
{
|
||||
if (m_NeedPrecalcSumSquares)
|
||||
{
|
||||
iteratorHelper.m_PrecalcSumSquares = SQR(point->m_X) + SQR(point->m_Y);
|
||||
|
||||
if (m_NeedPrecalcSqrtSumSquares)
|
||||
{
|
||||
iteratorHelper.m_PrecalcSqrtSumSquares = std::sqrt(iteratorHelper.m_PrecalcSumSquares);
|
||||
if (m_NeedPrecalcAtanXY)
|
||||
iteratorHelper.m_PrecalcAtanxy = atan2(iteratorHelper.In.x, iteratorHelper.In.y);
|
||||
|
||||
if (m_NeedPrecalcAngles)
|
||||
{
|
||||
iteratorHelper.m_PrecalcSina = point->m_X / iteratorHelper.m_PrecalcSqrtSumSquares;
|
||||
iteratorHelper.m_PrecalcCosa = point->m_Y / iteratorHelper.m_PrecalcSqrtSumSquares;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_NeedPrecalcAtanXY)
|
||||
iteratorHelper.m_PrecalcAtanxy = atan2(point->m_X, point->m_Y);
|
||||
|
||||
if (m_NeedPrecalcAtanYX)
|
||||
iteratorHelper.m_PrecalcAtanyx = atan2(point->m_Y, point->m_X);
|
||||
}
|
||||
if (m_NeedPrecalcAtanYX)
|
||||
iteratorHelper.m_PrecalcAtanyx = atan2(iteratorHelper.In.y, iteratorHelper.In.x);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Per-variation precalc OpenCL string used for pre and post variations.
|
||||
/// </summary>
|
||||
/// <returns>The per-variation OpenCL precalc string</returns>
|
||||
string PrecalcOpenCLString() const
|
||||
string PrePostPrecalcOpenCLString() const
|
||||
{
|
||||
ostringstream ss;
|
||||
|
||||
if (m_VarType == eVariationType::VARTYPE_PRE)
|
||||
if (m_NeedPrecalcSumSquares)
|
||||
{
|
||||
if (m_NeedPrecalcSumSquares)
|
||||
ss << "\tprecalcSumSquares = SQR(vIn.x) + SQR(vIn.y);\n";
|
||||
|
||||
if (m_NeedPrecalcSqrtSumSquares)
|
||||
{
|
||||
ss << "\tprecalcSumSquares = SQR(transX) + SQR(transY);\n";
|
||||
ss << "\tprecalcSqrtSumSquares = sqrt(precalcSumSquares);\n";
|
||||
|
||||
if (m_NeedPrecalcSqrtSumSquares)
|
||||
if (m_NeedPrecalcAngles)
|
||||
{
|
||||
ss << "\tprecalcSqrtSumSquares = sqrt(precalcSumSquares);\n";
|
||||
|
||||
if (m_NeedPrecalcAngles)
|
||||
{
|
||||
ss << "\tprecalcSina = transX / precalcSqrtSumSquares;\n";
|
||||
ss << "\tprecalcCosa = transY / precalcSqrtSumSquares;\n";
|
||||
}
|
||||
ss << "\tprecalcSina = vIn.x / precalcSqrtSumSquares;\n";
|
||||
ss << "\tprecalcCosa = vIn.y / precalcSqrtSumSquares;\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (m_NeedPrecalcAtanXY)
|
||||
ss << "\tprecalcAtanxy = atan2(transX, transY);\n";
|
||||
|
||||
if (m_NeedPrecalcAtanYX)
|
||||
ss << "\tprecalcAtanyx = atan2(transY, transX);\n";
|
||||
}
|
||||
else if (m_VarType == eVariationType::VARTYPE_POST)
|
||||
{
|
||||
if (m_NeedPrecalcSumSquares)
|
||||
{
|
||||
ss << "\tprecalcSumSquares = SQR(outPoint->m_X) + SQR(outPoint->m_Y);\n";
|
||||
|
||||
if (m_NeedPrecalcSqrtSumSquares)
|
||||
{
|
||||
ss << "\tprecalcSqrtSumSquares = sqrt(precalcSumSquares);\n";
|
||||
if (m_NeedPrecalcAtanXY)
|
||||
ss << "\tprecalcAtanxy = atan2(vIn.x, vIn.y);\n";
|
||||
|
||||
if (m_NeedPrecalcAngles)
|
||||
{
|
||||
ss << "\tprecalcSina = outPoint->m_X / precalcSqrtSumSquares;\n";
|
||||
ss << "\tprecalcCosa = outPoint->m_Y / precalcSqrtSumSquares;\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_NeedPrecalcAtanXY)
|
||||
ss << "\tprecalcAtanxy = atan2(outPoint->m_X, outPoint->m_Y);\n";
|
||||
|
||||
if (m_NeedPrecalcAtanYX)
|
||||
ss << "\tprecalcAtanyx = atan2(outPoint->m_Y, outPoint->m_X);\n";
|
||||
}
|
||||
if (m_NeedPrecalcAtanYX)
|
||||
ss << "\tprecalcAtanyx = atan2(vIn.y, vIn.x);\n";
|
||||
|
||||
if (NeedAnyPrecalc())
|
||||
ss << "\n";
|
||||
@ -1393,6 +1383,10 @@ public:
|
||||
return "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the base name of the variation without the "pre_" or "post_" prefix.
|
||||
/// </summary>
|
||||
/// <returns>The base name of the variation</returns>
|
||||
string BaseName() const
|
||||
{
|
||||
string prefix = Prefix();
|
||||
@ -1415,7 +1409,7 @@ public:
|
||||
eVariationId VariationId() const { return m_VariationId; }
|
||||
string Name() const { return m_Name; }
|
||||
eVariationType VarType() const { return m_VarType; }
|
||||
eVariationAssignType AssignType() const { return m_AssignType; }
|
||||
eVariationAssignType AssignType() const { return m_PrePostAssignType; }
|
||||
const Xform<T>* ParentXform() const { return m_Xform; }
|
||||
void ParentXform(Xform<T>* xform) { m_Xform = xform; }
|
||||
intmax_t IndexInXform() const { return m_Xform ? m_Xform->GetVariationIndex(const_cast<Variation<T>*>(this)) : -1; }
|
||||
@ -1424,6 +1418,10 @@ public:
|
||||
T m_Weight;//The weight of the variation.
|
||||
|
||||
protected:
|
||||
/// <summary>
|
||||
/// Sets the type of the variation depending on whether the name starts with "pre_",
|
||||
/// "post_" or neither.
|
||||
/// </summary>
|
||||
void SetType()
|
||||
{
|
||||
if (m_Name.find("pre_") == 0)
|
||||
@ -1434,11 +1432,30 @@ protected:
|
||||
m_VarType = eVariationType::VARTYPE_REG;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return the default Z coordinate assignment value depending on the type of variation and its assign type.
|
||||
/// </summary>
|
||||
/// <param name="helper">The helper used to retrieve the input Z coordinate.</param>
|
||||
/// <returns>The appropriate Z value.</returns>
|
||||
T DefaultZ(const IteratorHelper<T>& helper) const
|
||||
{
|
||||
return m_VarType == eVariationType::VARTYPE_REG ? 0 : (m_PrePostAssignType == eVariationAssignType::ASSIGNTYPE_SET ? helper.In.z : 0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// OpenCL equivalent of DefaultZ().
|
||||
/// </summary>
|
||||
/// <returns>The OpenCL string needed to make the proper Z coordinate assignment</returns>
|
||||
string DefaultZCl() const
|
||||
{
|
||||
return m_VarType == eVariationType::VARTYPE_REG ? "0;\n" : (m_PrePostAssignType == eVariationAssignType::ASSIGNTYPE_SET ? "vIn.z;\n" : "0;\n");
|
||||
}
|
||||
|
||||
Xform<T>* m_Xform;//The parent Xform that this variation is a child of.
|
||||
eVariationId m_VariationId;//The unique ID of this variation.
|
||||
string m_Name;//The unique name of this variation.
|
||||
eVariationType m_VarType;//The type of variation: regular, pre or post.
|
||||
eVariationAssignType m_AssignType;//Whether to assign the results for pre/post, or sum them.
|
||||
eVariationAssignType m_PrePostAssignType;//Whether to assign the results for pre/post, or sum them.
|
||||
|
||||
private:
|
||||
bool m_NeedPrecalcSumSquares;//Whether this variation uses the precalc sum squares value in its calculations.
|
||||
@ -1750,13 +1767,15 @@ private:
|
||||
using Variation<T>::m_VariationId; \
|
||||
using Variation<T>::m_Name; \
|
||||
using Variation<T>::m_VarType; \
|
||||
using Variation<T>::m_AssignType; \
|
||||
using Variation<T>::m_PrePostAssignType; \
|
||||
using Variation<T>::SetType; \
|
||||
using Variation<T>::IndexInXform; \
|
||||
using Variation<T>::XformIndexInEmber; \
|
||||
using Variation<T>::Prefix; \
|
||||
using Variation<T>::Precalc; \
|
||||
using Variation<T>::StateOpenCLString;
|
||||
using Variation<T>::StateOpenCLString; \
|
||||
using Variation<T>::DefaultZ; \
|
||||
using Variation<T>::DefaultZCl;
|
||||
|
||||
/// <summary>
|
||||
/// Parametric variations use parameters in addition to weight.
|
||||
@ -2147,7 +2166,7 @@ protected:
|
||||
{ \
|
||||
m_VariationId = eVariationId::VAR_PRE_##enumName; \
|
||||
m_Name = "pre_"#stringName; \
|
||||
m_AssignType = assignType; \
|
||||
m_PrePostAssignType = assignType; \
|
||||
SetType(); \
|
||||
} \
|
||||
\
|
||||
@ -2163,7 +2182,7 @@ protected:
|
||||
{ \
|
||||
m_VariationId = eVariationId::VAR_POST_##enumName; \
|
||||
m_Name = "post_"#stringName; \
|
||||
m_AssignType = assignType; \
|
||||
m_PrePostAssignType = assignType; \
|
||||
SetType(); \
|
||||
} \
|
||||
\
|
||||
@ -2268,7 +2287,7 @@ protected:
|
||||
{ \
|
||||
m_VariationId = eVariationId::VAR_PRE_##enumName; \
|
||||
m_Name = "pre_"#stringName; \
|
||||
m_AssignType = assignType; \
|
||||
m_PrePostAssignType = assignType; \
|
||||
SetType(); \
|
||||
Init(); \
|
||||
} \
|
||||
@ -2287,7 +2306,7 @@ protected:
|
||||
{ \
|
||||
m_VariationId = eVariationId::VAR_POST_##enumName; \
|
||||
m_Name = "post_"#stringName; \
|
||||
m_AssignType = assignType; \
|
||||
m_PrePostAssignType = assignType; \
|
||||
SetType(); \
|
||||
Init(); \
|
||||
} \
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
#include "Variations04.h"
|
||||
#include "Variations05.h"
|
||||
#include "Variations06.h"
|
||||
#include "Variations07.h"
|
||||
#include "VariationsDC.h"
|
||||
|
||||
/// <summary>
|
||||
@ -343,6 +344,21 @@ public:
|
||||
ADDPREPOSTREGVAR(Synth)
|
||||
ADDPREPOSTREGVAR(Crackle)
|
||||
m_Variations.push_back(new PostSmartcropVariation<T>());//Post only
|
||||
ADDPREPOSTREGVAR(Xerf)
|
||||
ADDPREPOSTREGVAR(Erf)
|
||||
ADDPREPOSTREGVAR(W)
|
||||
ADDPREPOSTREGVAR(X)
|
||||
ADDPREPOSTREGVAR(Y)
|
||||
ADDPREPOSTREGVAR(Z)
|
||||
ADDPREPOSTREGVAR(Splits3D)
|
||||
ADDPREPOSTREGVAR(Waves2B)
|
||||
ADDPREPOSTREGVAR(JacCn)
|
||||
ADDPREPOSTREGVAR(JacDn)
|
||||
ADDPREPOSTREGVAR(JacSn)
|
||||
ADDPREPOSTREGVAR(PressureWave)
|
||||
ADDPREPOSTREGVAR(Gamma)
|
||||
ADDPREPOSTREGVAR(PRose3D)
|
||||
ADDPREPOSTREGVAR(LogDB)
|
||||
//ADDPREPOSTREGVAR(LinearXZ)
|
||||
//ADDPREPOSTREGVAR(LinearYZ)
|
||||
//DC are special.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -61,14 +61,14 @@ public:
|
||||
{
|
||||
helper.Out.x = m_Weight * t * std::cos(theta);
|
||||
helper.Out.y = m_Weight * t * std::sin(theta);
|
||||
helper.Out.z = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
helper.Out.x = 0;
|
||||
helper.Out.y = 0;
|
||||
helper.Out.z = 0;
|
||||
}
|
||||
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -96,6 +96,7 @@ public:
|
||||
<< "\t\t\tvOut.y = 0;\n"
|
||||
<< "\t\t\tvOut.z = 0;\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\t\tvOut.Z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -697,7 +698,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -736,7 +737,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -781,7 +782,7 @@ public:
|
||||
T r = m_BlurLinearLength * rand.Frand01<T>();
|
||||
helper.Out.x = m_Weight * (helper.In.x + r * m_C);
|
||||
helper.Out.y = m_Weight * (helper.In.y + r * m_S);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -799,7 +800,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (vIn.x + r * " << c << ");\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (vIn.y + r * " << s << ");\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -845,7 +846,7 @@ public:
|
||||
{
|
||||
helper.Out.x = m_V * (rand.Frand01<T>() - T(0.5));
|
||||
helper.Out.y = m_V * (rand.Frand01<T>() - T(0.5));
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -858,7 +859,7 @@ public:
|
||||
ss << "\t{\n"
|
||||
<< "\t\tvOut.x = " << v << " * (MwcNext01(mwc) - (real_t)(0.5));\n"
|
||||
<< "\t\tvOut.y = " << v << " * (MwcNext01(mwc) - (real_t)(0.5));\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1361,7 +1362,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1417,7 +1418,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1473,7 +1474,7 @@ public:
|
||||
T r = m_Weight * std::sqrt(helper.m_PrecalcSumSquares + std::sin(helper.m_PrecalcAtanyx * m_A) + 1);
|
||||
helper.Out.x = r * helper.m_PrecalcCosa;
|
||||
helper.Out.y = r * helper.m_PrecalcSina;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1488,7 +1489,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * precalcCosa;\n"
|
||||
<< "\t\tvOut.y = r * precalcSina;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1669,7 +1670,7 @@ public:
|
||||
val = T(M_PI_4) * perimeter / side - T(M_PI_4);
|
||||
helper.Out.x = r * std::cos(val);
|
||||
helper.Out.y = r * std::sin(val);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1710,7 +1711,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * cos(val);\n"
|
||||
<< "\t\tvOut.y = r * sin(val);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1778,7 +1779,7 @@ public:
|
||||
T val = T(M_PI_4) * perimeter / side - T(M_PI_4);
|
||||
helper.Out.x = r * std::cos(val);
|
||||
helper.Out.y = r * std::sin(val);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1818,7 +1819,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * cos(val);\n"
|
||||
<< "\t\tvOut.y = r * sin(val);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1859,7 +1860,7 @@ public:
|
||||
T oscnapy = Foscn<T>(m_AmountY, m_Py);
|
||||
helper.Out.x = -1 + m_Vv2 * Lerp<T>(Lerp(x, Fosc(x, T(4), m_Px), oscnapx), Fosc(bx, T(4), m_Px), oscnapx);//Original did a direct assignment to outPoint, which is incompatible with Ember's design.
|
||||
helper.Out.y = -1 + m_Vv2 * Lerp<T>(Lerp(y, Fosc(y, T(4), m_Py), oscnapy), Fosc(by, T(4), m_Py), oscnapy);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1889,7 +1890,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = -1 + " << vv2 << " * Lerp(Lerp(x, Fosc(x, 4, " << px << "), oscnapx), Fosc(bx, 4, " << px << "), oscnapx);\n"
|
||||
<< "\t\tvOut.y = -1 + " << vv2 << " * Lerp(Lerp(y, Fosc(y, 4, " << py << "), oscnapy), Fosc(by, 4, " << py << "), oscnapy);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1963,7 +1964,7 @@ public:
|
||||
sincos(avga, &s, &c);
|
||||
helper.Out.x = avgr * c;
|
||||
helper.Out.y = avgr * s;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1978,7 +1979,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = avgr * c;\n"
|
||||
<< "\t\tvOut.y = avgr * s;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2006,7 +2007,7 @@ public:
|
||||
T csv = std::cos(temp);
|
||||
helper.Out.x = m_Weight * expor * csv;
|
||||
helper.Out.y = m_Weight * expor * snv;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2027,7 +2028,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * expor * csv;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * expor * snv;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2159,7 +2160,7 @@ public:
|
||||
sincos(a, &s, &c);
|
||||
helper.Out.x = m_Weight * r * c;
|
||||
helper.Out.y = m_Weight * r * s;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2174,7 +2175,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * r * c;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * r * s;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2205,7 +2206,7 @@ public:
|
||||
T eradius2 = std::exp((helper.In.x * m_NatLog - helper.In.y * T(M_PI)) * -1);
|
||||
helper.Out.x = m_Weight * (eradius1 * cnum1 - eradius2 * cnum2) * m_Five;
|
||||
helper.Out.y = m_Weight * (eradius1 * snum1 - eradius2 * snum2) * m_Five;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2228,7 +2229,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (eradius1 * cnum1 - eradius2 * cnum2) * " << five << ";\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (eradius1 * snum1 - eradius2 * snum2) * " << five << ";\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2278,7 +2279,7 @@ public:
|
||||
T eradius2 = m_Sc * std::exp(m_Sc2 * ((helper.In.x * m_NatLog - helper.In.y * T(M_PI)) * -1));
|
||||
helper.Out.x = m_Weight * (eradius1 * cnum1 - eradius2 * cnum2) * m_Five;
|
||||
helper.Out.y = m_Weight * (eradius1 * snum1 - eradius2 * snum2) * m_Five;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2303,7 +2304,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (eradius1 * cnum1 - eradius2 * cnum2) * " << five << ";\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (eradius1 * snum1 - eradius2 * snum2) * " << five << ";\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2383,7 +2384,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2429,7 +2430,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2526,7 +2527,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2596,7 +2597,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2632,7 +2633,7 @@ public:
|
||||
|
||||
helper.Out.x = r * helper.m_PrecalcCosa;
|
||||
helper.Out.y = r * helper.m_PrecalcSina;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2653,7 +2654,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * precalcCosa;\n"
|
||||
<< "\t\tvOut.y = r * precalcSina;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2695,7 +2696,7 @@ public:
|
||||
T vr = m_Weight / (SQR(c) + SQR(d));
|
||||
helper.Out.x = vr * (a * c + b * d);
|
||||
helper.Out.y = vr * (b * c - a * d);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2718,7 +2719,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = vr * (a * c + b * d);\n"
|
||||
<< "\t\tvOut.y = vr * (b * c - a * d);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2787,7 +2788,7 @@ public:
|
||||
T vr = m_Weight / (SQR(c) + SQR(d));
|
||||
helper.Out.x = vr * (a * c + b * d);
|
||||
helper.Out.y = vr * (b * c - a * d);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2814,7 +2815,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = vr * (a * c + b * d);\n"
|
||||
<< "\t\tvOut.y = vr * (b * c - a * d);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2878,7 +2879,7 @@ public:
|
||||
T cosa = std::cos(temp);
|
||||
helper.Out.x = vr * (x * cosa + y * sina);
|
||||
helper.Out.y = vr * (y * cosa - x * sina);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2905,7 +2906,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = vr * (x * cosa + y * sina);\n"
|
||||
<< "\t\tvOut.y = vr * (y * cosa - x * sina);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3286,7 +3287,7 @@ public:
|
||||
T r = helper.m_PrecalcAtanyx * m_V;
|
||||
helper.Out.x = r * c;
|
||||
helper.Out.y = r * s;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3304,7 +3305,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * c;\n"
|
||||
<< "\t\tvOut.y = r * s;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3350,7 +3351,7 @@ public:
|
||||
T r = m_Weight * std::pow(SQR(x) + SQR(y), m_Cn);
|
||||
helper.Out.x = r * cosa;
|
||||
helper.Out.y = r * sina;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3379,7 +3380,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * cosa;\n"
|
||||
<< "\t\tvOut.y = r * sina;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3445,7 +3446,7 @@ public:
|
||||
T r = m_Weight * std::pow(helper.m_PrecalcSumSquares, m_HalfInvPower);
|
||||
helper.Out.x = r * cosa;
|
||||
helper.Out.y = r * sina;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3467,7 +3468,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * cosa;\n"
|
||||
<< "\t\tvOut.y = r * sina;\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3524,7 +3525,7 @@ public:
|
||||
T r1 = m_Vp / (SQR(re) + SQR(im));
|
||||
helper.Out.x = r1 * (helper.In.x * re + helper.In.y * im);
|
||||
helper.Out.y = r1 * (helper.In.y * re - helper.In.x * im);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3549,7 +3550,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r1 * (vIn.x * re + vIn.y * im);\n"
|
||||
<< "\t\tvOut.y = r1 * (vIn.y * re - vIn.x * im);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3616,7 +3617,7 @@ public:
|
||||
T r1 = m_Vp / SQR(r);
|
||||
helper.Out.x = r1 * (helper.In.x * re + helper.In.y * im);
|
||||
helper.Out.y = r1 * (helper.In.y * re - helper.In.x * im);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3650,7 +3651,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r1 * (vIn.x * re + vIn.y * im);\n"
|
||||
<< "\t\tvOut.y = r1 * (vIn.y * re - vIn.x * im);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3715,7 +3716,7 @@ public:
|
||||
y = (m_IsOdd != 0) ? sina : (m_Vvar * std::atan2(cosa, sina));
|
||||
helper.Out.x = x;
|
||||
helper.Out.y = y;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3744,7 +3745,7 @@ public:
|
||||
<< "\t\ty = (" << isOdd << " != 0) ? sina : (" << vvar << " * atan2(cosa, sina));\n"
|
||||
<< "\t\tvOut.x = x;\n"
|
||||
<< "\t\tvOut.y = y;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3872,7 +3873,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3968,7 +3969,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4007,7 +4008,7 @@ public:
|
||||
T y = m_C1y + (SQR(m_C1r) * (helper.In.y - m_C1y)) / (SQR(helper.In.x - m_C1x) + SQR(helper.In.y - m_C1y));
|
||||
helper.Out.x = m_C2x + (SQR(m_C2r) * (x - m_C2x)) / (SQR(x - m_C2x) + SQR(y - m_C2y));
|
||||
helper.Out.y = m_C2y + (SQR(m_C2r) * (y - m_C2y)) / (SQR(x - m_C2x) + SQR(y - m_C2y));
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4032,7 +4033,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = " << c2x << " + (SQR(" << c2r << ") * (x - " << c2x << ")) / (SQR(x - " << c2x << ") + SQR(y - " << c2y << "));\n"
|
||||
<< "\t\tvOut.y = " << c2y << " + (SQR(" << c2r << ") * (y - " << c2y << ")) / (SQR(x - " << c2x << ") + SQR(y - " << c2y << "));\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4363,7 +4364,7 @@ public:
|
||||
T r3den = 1 / (br * br + bi * bi);
|
||||
helper.Out.x = m_Weight * (tr * br + ti * bi) * r3den;
|
||||
helper.Out.y = m_Weight * (ti * br - tr * bi) * r3den;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4396,7 +4397,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (tr * br + ti * bi) * r3den;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (ti * br - tr * bi) * r3den;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4466,7 +4467,7 @@ public:
|
||||
//invert the multiplication with scale from before.
|
||||
helper.Out.x = m_Weight * Lerp<T>(u1, u2, m_P) * m_Is;//Original did a direct assignment to outPoint, which is incompatible with Ember's design.
|
||||
helper.Out.y = m_Weight * Lerp<T>(v1, v2, m_P) * m_Is;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4511,7 +4512,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * Lerp(u1, u2, " << p << ") * " << is << ";\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * Lerp(v1, v2, " << p << ") * " << is << ";\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4596,7 +4597,7 @@ public:
|
||||
T y = (2 * (c1 - T(0.5)));
|
||||
helper.Out.x = m_Vv * x;
|
||||
helper.Out.y = m_Vv * y;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4620,7 +4621,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = " << vv << " * x;\n"
|
||||
<< "\t\tvOut.y = " << vv << " * y;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4713,7 +4714,7 @@ public:
|
||||
T ty = Lerp(helper.In.y, sy, m_Ay);
|
||||
helper.Out.x = m_Weight * tx;
|
||||
helper.Out.y = m_Weight * ty;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4741,7 +4742,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * tx;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * ty;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * tz;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4818,7 +4819,7 @@ public:
|
||||
result /= divident;
|
||||
helper.Out.x = m_Weight * helper.In.x + result;
|
||||
helper.Out.y = m_Weight * helper.In.y + result;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4846,7 +4847,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * vIn.x + result;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * vIn.y + result;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4883,7 +4884,7 @@ public:
|
||||
|
||||
helper.Out.x = r * helper.In.x;
|
||||
helper.Out.y = r * helper.In.y;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4898,7 +4899,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * vIn.x;\n"
|
||||
<< "\t\tvOut.y = r * vIn.y;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4925,7 +4926,7 @@ public:
|
||||
T c = std::cos(helper.In.x);
|
||||
helper.Out.x = m_Vvar2 * r * s;
|
||||
helper.Out.y = m_Vvar2 * r * c;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4942,7 +4943,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = " << vvar2 << " * r * s;\n"
|
||||
<< "\t\tvOut.y = " << vvar2 << " * r * c;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4992,7 +4993,7 @@ public:
|
||||
T dy = yn + T(0.5) * (m_ScaleY * sinx + std::abs(yn) * m_IncY * sinx);
|
||||
helper.Out.x = m_Weight * dx;
|
||||
helper.Out.y = m_Weight * dy;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -5024,7 +5025,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * dx;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * dy;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -5103,7 +5104,7 @@ public:
|
||||
helper.Out.y = -m_Weight * y;
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -5139,7 +5140,7 @@ public:
|
||||
<< "\t\t vOut.y = -xform->m_VariationWeights[" << varIndex << "] * y;\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -5277,7 +5278,7 @@ public:
|
||||
{
|
||||
helper.Out.x = m_Weight01 / SafeTan<T>(helper.In.x) * std::cos(helper.In.y);
|
||||
helper.Out.y = m_Weight01 / std::sin(helper.In.x) * (-helper.In.y);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -5290,7 +5291,7 @@ public:
|
||||
ss << "\t{\n"
|
||||
<< "\t\tvOut.x = " << weight01 << " / tan(vIn.x) * cos(vIn.y);\n"
|
||||
<< "\t\tvOut.y = " << weight01 << " / sin(vIn.x) * (-vIn.y);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -5331,7 +5332,7 @@ public:
|
||||
T coshy1 = std::cosh(helper.In.y) + 1;
|
||||
helper.Out.x = m_Weight * sinx * coshy1 * sinx2;
|
||||
helper.Out.y = m_Weight * cosx * coshy1 * sinx2;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -5346,7 +5347,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * sinx * coshy1 * sinx2;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * cosx * coshy1 * sinx2;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -5377,7 +5378,7 @@ public:
|
||||
T coshy1 = std::cosh(helper.In.y) + 1;
|
||||
helper.Out.x = d * sinx * coshy1 * sinx2;
|
||||
helper.Out.y = d * cosx * coshy1 * sinx2;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -5393,7 +5394,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = d * sinx * coshy1 * sinx2;\n"
|
||||
<< "\t\tvOut.y = d * cosx * coshy1 * sinx2;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -5436,7 +5437,7 @@ public:
|
||||
T temp = m_C * a + m_HalfD * lnr2 + m_Ang * rand.Rand();
|
||||
helper.Out.x = r * std::cos(temp);
|
||||
helper.Out.y = r * std::sin(temp);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -5474,7 +5475,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * cos(temp);\n"
|
||||
<< "\t\tvOut.y = r * sin(temp);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -5535,7 +5536,7 @@ MAKEPREPOSTPARVARASSIGN(BlurSquare, blur_square, BLUR_SQUARE, eVariationAssignTy
|
||||
MAKEPREPOSTVAR(Flatten, flatten, FLATTEN)
|
||||
MAKEPREPOSTVARASSIGN(Zblur, zblur, ZBLUR, eVariationAssignType::ASSIGNTYPE_SUM)
|
||||
MAKEPREPOSTVARASSIGN(Blur3D, blur3D, BLUR3D, eVariationAssignType::ASSIGNTYPE_SUM)
|
||||
MAKEPREPOSTVARASSIGN(ZScale, zscale, ZSCALE, eVariationAssignType::ASSIGNTYPE_SUM)
|
||||
MAKEPREPOSTVAR(ZScale, zscale, ZSCALE)
|
||||
MAKEPREPOSTVARASSIGN(ZTranslate, ztranslate, ZTRANSLATE, eVariationAssignType::ASSIGNTYPE_SUM)
|
||||
MAKEPREPOSTVAR(ZCone, zcone, ZCONE)
|
||||
MAKEPREPOSTVAR(Spherical3D, Spherical3D, SPHERICAL3D)
|
||||
|
||||
@ -23,7 +23,7 @@ public:
|
||||
T temp = 1 / Zeps(cos(helper.In.y)) + m_Effect * T(M_PI);
|
||||
helper.Out.x = m_Weight * (tanh(helper.In.x) * temp);
|
||||
helper.Out.y = m_Weight * (tanh(helper.In.y) * temp);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -38,7 +38,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (tanh(vIn.x) * temp);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (tanh(vIn.y) * temp);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -111,7 +111,7 @@ public:
|
||||
T ran = (helper.m_PrecalcAtanyx / Zeps(m_Denominator) + (m_Root * M_2PI * Floor<T>(rand.Frand01<T>() * m_Denominator) / Zeps(m_Denominator))) * m_Numerator;
|
||||
helper.Out.x = r2 * std::cos(ran);
|
||||
helper.Out.y = r2 * std::sin(ran);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -132,7 +132,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r2 * cos(ran);\n"
|
||||
<< "\t\tvOut.y = r2 * sin(ran);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -188,7 +188,7 @@ public:
|
||||
T u = std::sqrt(ClampGte0<T>(Zeps(m_A) * SQR(helper.In.x) + Zeps(m_B) * SQR(helper.In.y)));//Original did not clamp.
|
||||
helper.Out.x = std::cos(u) * SafeTan<T>(helper.In.x) * m_Weight;
|
||||
helper.Out.y = std::sin(u) * SafeTan<T>(helper.In.y) * m_Weight;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -204,7 +204,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = cos(u) * tan(vIn.x) * xform->m_VariationWeights[" << varIndex << "];\n"
|
||||
<< "\t\tvOut.y = sin(u) * tan(vIn.y) * xform->m_VariationWeights[" << varIndex << "];\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -243,7 +243,7 @@ public:
|
||||
{
|
||||
helper.Out.x = m_Weight * (helper.In.x - ((SQR(helper.In.x) * helper.In.x) / 3)) + helper.In.x * SQR(helper.In.y);
|
||||
helper.Out.y = m_Weight * (helper.In.y - ((SQR(helper.In.y) * helper.In.y) / 3)) + helper.In.y * SQR(helper.In.x);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -253,7 +253,7 @@ public:
|
||||
ss << "\t{\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (vIn.x - ((SQR(vIn.x) * vIn.x) / 3)) + vIn.x * SQR(vIn.y);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (vIn.y - ((SQR(vIn.y) * vIn.y) / 3)) + vIn.y * SQR(vIn.x);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -282,7 +282,7 @@ public:
|
||||
T cosa = std::cos(alpha);
|
||||
helper.Out.x = m_Weight * cosa / r;
|
||||
helper.Out.y = m_Weight * sina / r;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -302,7 +302,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * cosa / r;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sina / r;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -352,7 +352,7 @@ public:
|
||||
else
|
||||
helper.Out.y = (m_Rotate * helper.In.y) * cos45 + helper.In.x * sin45 - m_Pull - m_LineUp;
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -377,7 +377,7 @@ public:
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t vOut.y = (" << rotate << " * vIn.y) * cos45 + vIn.x * sin45 - " << pull << " - " << lineUp << ";\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -456,7 +456,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -512,7 +512,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -624,7 +624,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -668,7 +668,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -783,7 +783,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -825,7 +825,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -936,7 +936,7 @@ public:
|
||||
T temp = angle - T(M_PI_2);
|
||||
helper.Out.x = m_Weight * z * std::cos(temp);
|
||||
helper.Out.y = m_Weight * z * std::sin(temp);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -969,7 +969,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * z * cos(temp);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * z * sin(temp);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1021,7 +1021,7 @@ public:
|
||||
T r = m_Weight * (m_Power == 1 ? std::acos(rand.Frand01<T>() * 2 - 1) / T(M_PI) : std::acos(std::exp(std::log(rand.Frand01<T>()) * m_Power) * 2 - 1) / T(M_PI));
|
||||
helper.Out.x = r * c;
|
||||
helper.Out.y = r * s;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1039,7 +1039,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * c;\n"
|
||||
<< "\t\tvOut.y = r * s;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1073,7 +1073,7 @@ public:
|
||||
T temp = rand.Frand01<T>() * M_2PI;
|
||||
helper.Out.x = m_Weight * std::cos(temp) * rad;
|
||||
helper.Out.y = m_Weight * std::sin(temp) * rad;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1086,7 +1086,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * cos(temp) * rad;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sin(temp) * rad;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1190,7 +1190,7 @@ public:
|
||||
helper.Out.y = m_Weight * helper.In.y;
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1233,7 +1233,7 @@ public:
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * vIn.y;\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1611,7 +1611,7 @@ public:
|
||||
{
|
||||
helper.Out.x = SignNz<T>(helper.In.x) * std::pow(std::abs(helper.In.x), m_PowX) * m_Weight;
|
||||
helper.Out.y = SignNz<T>(helper.In.y) * std::pow(std::abs(helper.In.y), m_PowY) * m_Weight;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1625,7 +1625,7 @@ public:
|
||||
ss << "\t{\n"
|
||||
<< "\t\tvOut.x = SignNz(vIn.x) * pow(fabs(vIn.x), " << powx << ") * xform->m_VariationWeights[" << varIndex << "];\n"
|
||||
<< "\t\tvOut.y = SignNz(vIn.y) * pow(fabs(vIn.y), " << powy << ") * xform->m_VariationWeights[" << varIndex << "];\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1722,7 +1722,7 @@ public:
|
||||
T r = m_Weight / Zeps(helper.m_PrecalcSumSquares);
|
||||
helper.Out.x = helper.In.x * r * m_X;
|
||||
helper.Out.y = helper.In.y * r * m_Y;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1738,7 +1738,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = vIn.x * r * " << x << ";\n"
|
||||
<< "\t\tvOut.y = vIn.y * r * " << y << ";\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1846,7 +1846,7 @@ public:
|
||||
T y1 = (m_A + m_B) * std::sin(t) - m_C2 * std::sin((m_A + m_B) / m_B * t);
|
||||
helper.Out.x = m_Weight * (x1 + m_D * std::cos(t) + y);
|
||||
helper.Out.y = m_Weight * (y1 + m_D * std::sin(t) + y);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1872,7 +1872,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (x1 + " << d << " * cos(t) + y);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (y1 + " << d << " * sin(t) + y);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1925,7 +1925,7 @@ public:
|
||||
T by = Cube(sinX * cosY);
|
||||
helper.Out.x = m_Weight * cosX * bx;
|
||||
helper.Out.y = m_Weight * cosX * by;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1942,7 +1942,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * cosX * bx;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * cosX * by;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1969,7 +1969,7 @@ public:
|
||||
T e = 1 / helper.m_PrecalcSumSquares + SQR(T(M_2_PI));
|
||||
helper.Out.x = m_Weight * (m_Weight / helper.m_PrecalcSumSquares * helper.In.x / e);
|
||||
helper.Out.y = m_Weight * (m_Weight / helper.m_PrecalcSumSquares * helper.In.y / e);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1981,7 +1981,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (xform->m_VariationWeights[" << varIndex << "] / precalcSumSquares * vIn.x / e);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (xform->m_VariationWeights[" << varIndex << "] / precalcSumSquares * vIn.y / e);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2124,7 +2124,7 @@ public:
|
||||
T c2 = Zeps(SQR(helper.In.y));
|
||||
helper.Out.x = m_Weight * ((1 / d) * std::cos(c1) * std::sin(c2));
|
||||
helper.Out.y = m_Weight * ((1 / d) * std::sin(c1) * std::sin(c2));
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2138,7 +2138,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (((real_t)(1.0) / d) * cos(c1) * sin(c2));\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (((real_t)(1.0) / d) * sin(c1) * sin(c2));\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2195,7 +2195,7 @@ public:
|
||||
helper.Out.y = -(m_Weight * (8 * helper.m_PrecalcSqrtSumSquares - p));
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2236,7 +2236,7 @@ public:
|
||||
<< "\t\t vOut.y = -(xform->m_VariationWeights[" << varIndex << "] * (8 * precalcSqrtSumSquares - p));\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2274,7 +2274,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * (std::sin(helper.In.x) * r + dx);
|
||||
helper.Out.y = m_Weight * (std::sin(helper.In.y) * r + dy);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2305,7 +2305,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (sin(vIn.x) * r + dx);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (sin(vIn.y) * r + dy);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2362,7 +2362,7 @@ public:
|
||||
T r = m_Weight * std::pow(helper.m_PrecalcSumSquares, m_Cn);
|
||||
helper.Out.x = r * std::cos(temp);
|
||||
helper.Out.y = r * std::sin(temp);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2386,7 +2386,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * cos(temp);\n"
|
||||
<< "\t\tvOut.y = r * sin(temp);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2542,7 +2542,7 @@ public:
|
||||
alpha = (std::atan2(y, x) + n * M_2PI) / Floor<T>(m_Power);
|
||||
helper.Out.x = m_Weight * r * std::cos(alpha);
|
||||
helper.Out.y = m_Weight * r * std::sin(alpha);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2585,7 +2585,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * r * cos(alpha);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * r * sin(alpha);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2689,7 +2689,7 @@ public:
|
||||
//Add final values in to variations totals.
|
||||
helper.Out.x = m_Weight * mx;
|
||||
helper.Out.y = m_Weight * my;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2752,7 +2752,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * mx;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * my;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2817,7 +2817,7 @@ public:
|
||||
T y1 = sin(m_B * t);
|
||||
helper.Out.x = m_Weight * (x1 + m_C * t + m_E * y);
|
||||
helper.Out.y = m_Weight * (y1 + m_C * t + m_E * y);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2841,7 +2841,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (x1 + " << c << " * t + " << e << " * y);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (y1 + " << c << " * t + " << e << " * y);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2960,7 +2960,7 @@ public:
|
||||
|
||||
helper.Out.x = helper.m_PrecalcSqrtSumSquares * std::cos(a);
|
||||
helper.Out.y = helper.m_PrecalcSqrtSumSquares * std::sin(a);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2989,7 +2989,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = precalcSqrtSumSquares * cos(a);\n"
|
||||
<< "\t\tvOut.y = precalcSqrtSumSquares * sin(a);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3142,7 +3142,7 @@ public:
|
||||
|
||||
helper.Out.x = r * std::cos(a);
|
||||
helper.Out.y = r * std::sin(a);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3183,7 +3183,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * cos(a);\n"
|
||||
<< "\t\tvOut.y = r * sin(a);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3244,7 +3244,7 @@ public:
|
||||
T temp = std::cosh(tau) - std::cos(sigma);
|
||||
helper.Out.x = m_Weight * std::sinh(tau) / temp;
|
||||
helper.Out.y = m_Weight * std::sin(sigma) / temp;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3266,7 +3266,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * sinh(tau) / temp;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sin(sigma) / temp;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3312,7 +3312,7 @@ public:
|
||||
T temp = std::cosh(tau) - std::cos(sigma);
|
||||
helper.Out.x = m_Weight * std::sinh(tau) / temp;
|
||||
helper.Out.y = m_Weight * std::sin(sigma) / temp;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3333,7 +3333,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * sinh(tau) / temp;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sin(sigma) / temp;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3385,7 +3385,7 @@ public:
|
||||
T temp = std::cosh(tau) - std::cos(sigma);
|
||||
helper.Out.x = m_Weight * std::sinh(tau) / temp;
|
||||
helper.Out.y = m_Weight * std::sin(sigma) / temp;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3413,7 +3413,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * sinh(tau) / temp;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sin(sigma) / temp;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3469,7 +3469,7 @@ public:
|
||||
T temp = std::cosh(tau) - std::cos(sigma);
|
||||
helper.Out.x = m_Weight * sinh(tau) / temp;
|
||||
helper.Out.y = m_Weight * sin(sigma) / temp;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3498,7 +3498,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * sinh(tau) / temp;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sin(sigma) / temp;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3582,7 +3582,7 @@ public:
|
||||
helper.Out.y = m_Weight * helper.In.y;
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3621,7 +3621,7 @@ public:
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * vIn.y;\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3661,7 +3661,7 @@ public:
|
||||
else
|
||||
helper.Out.y = -(m_Weight * helper.In.y);
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3679,7 +3679,7 @@ public:
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t vOut.y = -(xform->m_VariationWeights[" << varIndex << "] * vIn.y);\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3721,7 +3721,7 @@ public:
|
||||
else
|
||||
helper.Out.y = m_Weight * helper.In.y;
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3736,7 +3736,7 @@ public:
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * vIn.y;\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3791,7 +3791,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * xmax * std::cos(nu);
|
||||
helper.Out.y = m_Weight * std::sqrt(xmax - 1) * std::sqrt(xmax + 1) * sin(nu);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3840,7 +3840,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * xmax * cos(nu);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sqrt(xmax - 1) * sqrt(xmax + 1) * sin(nu);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3922,7 +3922,7 @@ public:
|
||||
mu /= m_Power;
|
||||
helper.Out.x = m_Weight * std::cosh(mu) * std::cos(nu);
|
||||
helper.Out.y = m_Weight * std::sinh(mu) * std::sin(nu);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3964,7 +3964,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * cosh(mu) * cos(nu);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sinh(mu) * sin(nu);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4032,7 +4032,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * std::cosh(mu) * std::cos(nu);
|
||||
helper.Out.y = m_Weight * std::sinh(mu) * std::sin(nu);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4067,7 +4067,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * cosh(mu) * cos(nu);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sinh(mu) * sin(nu);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4131,7 +4131,7 @@ public:
|
||||
nu += m_Rotate;
|
||||
helper.Out.x = m_Weight * std::cosh(mu) * std::cos(nu);
|
||||
helper.Out.y = m_Weight * std::sinh(mu) * std::sin(nu);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4171,7 +4171,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * cosh(mu) * cos(nu);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sinh(mu) * sin(nu);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4226,7 +4226,7 @@ public:
|
||||
mu += m_Push;
|
||||
helper.Out.x = m_Weight * std::cosh(mu) * std::cos(nu);
|
||||
helper.Out.y = m_Weight * std::sinh(mu) * std::sin(nu);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4258,7 +4258,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * cosh(mu) * cos(nu);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sinh(mu) * sin(nu);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4315,7 +4315,7 @@ public:
|
||||
nu = fmod(nu + m_Rotate + T(M_PI), M_2PI) - T(M_PI);
|
||||
helper.Out.x = m_Weight * xmax * std::cos(nu);
|
||||
helper.Out.y = m_Weight * std::sqrt(xmax - 1) * std::sqrt(xmax + 1) * std::sin(nu);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4333,7 +4333,7 @@ public:
|
||||
<< "\t\tif (xmax < 1)\n"
|
||||
<< "\t\t xmax = 1;\n"
|
||||
<< "\n"
|
||||
<< "\t\treal_t nu = acos(clamp(vIn.x / xmax, -(real_t)(1.0), (real_t)(1.0)));\n"
|
||||
<< "\t\treal_t nu = acos(clamp(vIn.x / xmax, (real_t)(-1.0), (real_t)(1.0)));\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (vIn.y < 0)\n"
|
||||
<< "\t\t nu *= -1;\n"
|
||||
@ -4342,7 +4342,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * xmax * cos(nu);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sqrt(xmax - 1) * sqrt(xmax + 1) * sin(nu);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4401,7 +4401,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * std::cosh(mu) * std::cos(nu);
|
||||
helper.Out.y = m_Weight * std::sinh(mu) * std::sin(nu);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4437,7 +4437,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * cosh(mu) * cos(nu);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sinh(mu) * sin(nu);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
@ -33,7 +33,7 @@ public:
|
||||
nu = nu + mu * m_Out + m_In / mu;
|
||||
helper.Out.x = m_Weight * std::cosh(mu) * std::cos(nu);
|
||||
helper.Out.y = m_Weight * std::sinh(mu) * std::sin(nu);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -62,7 +62,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * cosh(mu) * cos(nu);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sinh(mu) * sin(nu);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -204,7 +204,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -321,7 +321,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -420,7 +420,7 @@ public:
|
||||
helper.Out.y = (m_Weight * (8 * s - p));
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -484,7 +484,7 @@ public:
|
||||
<< "\t\t vOut.y = -(xform->m_VariationWeights[" << varIndex << "] * (8 * s - p));\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -533,7 +533,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * r * helper.m_PrecalcCosa;
|
||||
helper.Out.y = m_Weight * r * helper.m_PrecalcSina;
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -554,7 +554,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * r * precalcCosa;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * r * precalcSina;\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -594,7 +594,7 @@ public:
|
||||
T d = Zeps(helper.m_PrecalcSumSquares);
|
||||
helper.Out.x = (m_Weight / d) * (tanh(d) * (2 * helper.In.x));
|
||||
helper.Out.y = (m_Weight / d) * (cos(d) * (2 * helper.In.y));
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -606,7 +606,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = (xform->m_VariationWeights[" << varIndex << "] / d) * (tanh(d) * ((real_t)(2.0) * vIn.x));\n"
|
||||
<< "\t\tvOut.y = (xform->m_VariationWeights[" << varIndex << "] / d) * (cos(d) * ((real_t)(2.0) * vIn.y));\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -633,7 +633,7 @@ public:
|
||||
T d = Zeps(helper.m_PrecalcSumSquares);
|
||||
helper.Out.x = (m_Weight / 2) * (tanh(d) * (2 * helper.In.x));
|
||||
helper.Out.y = (m_Weight / 2) * (cos(d) * (2 * helper.In.y));
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -645,7 +645,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = (xform->m_VariationWeights[" << varIndex << "] / (real_t)(2.0)) * (tanh(d) * ((real_t)(2.0) * vIn.x));\n"
|
||||
<< "\t\tvOut.y = (xform->m_VariationWeights[" << varIndex << "] / (real_t)(2.0)) * (cos(d) * ((real_t)(2.0) * vIn.y));\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1134,7 +1134,7 @@ public:
|
||||
r *= m_S2;
|
||||
helper.Out.x = m_Weight * (helper.In.x + (rand.Frand01<T>() - T(0.5)) * r);
|
||||
helper.Out.y = m_Weight * (helper.In.y + (rand.Frand01<T>() - T(0.5)) * r);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1158,7 +1158,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (vIn.x + (MwcNext01(mwc) - (real_t)(0.5)) * r);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (vIn.y + (MwcNext01(mwc) - (real_t)(0.5)) * r);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1209,7 +1209,10 @@ public:
|
||||
T r = m_Weight * std::pow(helper.m_PrecalcSumSquares, m_Cn * m_A);
|
||||
helper.Out.x = r * std::cos(a) + m_B;
|
||||
helper.Out.y = r * std::sin(a) + m_B;
|
||||
helper.Out.z = m_Weight * helper.In.z;//Original did not multiply by weight. Do it here to be consistent with others.
|
||||
helper.Out.z = helper.In.z;
|
||||
|
||||
if (m_VarType == eVariationType::VARTYPE_REG)
|
||||
outPoint.m_Z = 0;
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1232,8 +1235,13 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = r * cos(a) + " << b << ";\n"
|
||||
<< "\t\tvOut.y = r * sin(a) + " << b << ";\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t}\n";
|
||||
<< "\t\tvOut.z = vIn.z;\n";
|
||||
|
||||
if (m_VarType == eVariationType::VARTYPE_REG)
|
||||
ss << "\t\toutPoint->m_Z = 0;\n";
|
||||
|
||||
ss
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
@ -1292,7 +1300,7 @@ public:
|
||||
T v = (sqX + sqY) * m_W;//Do not use precalcSumSquares here because its components are needed below.
|
||||
helper.Out.x = m_Weight * std::sin(helper.In.x) * (sqX + m_W - v);
|
||||
helper.Out.y = m_Weight * std::sin(helper.In.y) * (sqY + m_W - v);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1309,7 +1317,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * sin(vIn.x) * (sqX + " << w << " - v);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * sin(vIn.y) * (sqY + " << w << " - v);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1378,7 +1386,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * (m_K * (helper.In.x - x0) + x0);
|
||||
helper.Out.y = m_Weight * (m_K * (helper.In.y - y0) + y0);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1429,7 +1437,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (" << m_k << " * (vIn.x - x0) + x0);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (" << m_k << " * (vIn.y - y0) + y0);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1527,7 +1535,7 @@ public:
|
||||
|
||||
helper.Out.x = m_CosR * a + m_SinR * r;
|
||||
helper.Out.y = -m_SinR * a + m_CosR * r;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1571,7 +1579,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = " << cosr << " * a + " << sinr << " * r;\n"
|
||||
<< "\t\tvOut.y = -" << sinr << " * a + " << cosr << " * r;\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2240,7 +2248,7 @@ public:
|
||||
helper.Out.y = m_Weight * helper.In.y;
|
||||
}
|
||||
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2307,7 +2315,7 @@ public:
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * vIn.y;\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2963,7 +2971,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * (fp1x + fp2x);
|
||||
helper.Out.y = m_Weight * (fp1y + fp2y);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3030,7 +3038,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (fp1x + fp2x);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (fp1y + fp2y);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3852,7 +3860,7 @@ public:
|
||||
{
|
||||
helper.Out.x = m_Weight / Zeps(helper.m_PrecalcSqrtSumSquares);
|
||||
helper.Out.y = helper.m_PrecalcAtanyx;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3862,7 +3870,7 @@ public:
|
||||
ss << "\t{\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] / Zeps(precalcSqrtSumSquares);\n"
|
||||
<< "\t\tvOut.y = precalcAtanyx;\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -3896,7 +3904,7 @@ public:
|
||||
(m_Q04 * xy + m_Q05 * helper.In.y + m_Q06 * sqy);
|
||||
helper.Out.y = (m_Q07 + m_Q08 * helper.In.x + m_Q09 * sqx) +
|
||||
(m_Q10 * xy + m_Weight * m_Q11 * helper.In.y + m_Q12 * sqy);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3926,7 +3934,7 @@ public:
|
||||
<< "\t\t (" << q04 << " * xy + " << q05 << " * vIn.y + " << q06 << " * sqy);\n"
|
||||
<< "\t\tvOut.y = (" << q07 << " + " << q08 << " * vIn.x + " << q09 << " * sqx) + \n"
|
||||
<< "\t\t (" << q10 << " * xy + xform->m_VariationWeights[" << varIndex << "] * " << q11 << " * vIn.y + " << q12 << " * sqy);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4002,7 +4010,7 @@ public:
|
||||
|
||||
helper.Out.x = xx * m_Weight;
|
||||
helper.Out.y = yy * m_Weight;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4035,7 +4043,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xx * xform->m_VariationWeights[" << varIndex << "];\n"
|
||||
<< "\t\tvOut.y = yy * xform->m_VariationWeights[" << varIndex << "];\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4192,7 +4200,7 @@ public:
|
||||
helper.Out.y += m_Size * (y + Floor<T>(helper.In.y));
|
||||
}
|
||||
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4329,7 +4337,7 @@ public:
|
||||
<< "\t\t vOut.y += " << size << " * (y + floor(vIn.y));\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4732,7 +4740,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4789,7 +4797,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -4844,7 +4852,7 @@ public:
|
||||
T mod2 = std::exp(lnmod * m_ReInv - arg * m_Im100);
|
||||
helper.Out.x = m_Weight * mod2 * std::cos(temp);
|
||||
helper.Out.y = m_Weight * mod2 * std::sin(temp);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -4866,7 +4874,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * mod2 * cos(temp);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * mod2 * sin(temp);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -5036,7 +5044,7 @@ public:
|
||||
a = helper.In.y / Zeps(ymax);
|
||||
b = SafeSqrt(1 - SQR(a));
|
||||
helper.Out.y = m_Vy * atan2(a, b) * r;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -5068,7 +5076,7 @@ public:
|
||||
<< "\t\tb = SafeSqrt(1 - SQR(a));\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.y = " << vy << " * atan2(a, b) * r;\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
@ -133,7 +133,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * (x + (m * 2 + 1) * m_Sc);
|
||||
helper.Out.y = m_Weight * (y + (n * 2 + 1) * m_Sc);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -195,7 +195,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (x + (m * 2 + 1) * " << sc << ");\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (y + (n * 2 + 1) * " << sc << ");\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -292,7 +292,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * (x + (m * 2 + 1) * m_Sc);
|
||||
helper.Out.y = m_Weight * (y + (n * 2 + 1) * m_Sc);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -327,7 +327,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (x + (m * 2 + 1) * " << sc << ");\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (y + (n * 2 + 1) * " << sc << ");\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -418,7 +418,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * ux;
|
||||
helper.Out.y = m_Weight * uy;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -456,7 +456,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * ux;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * uy;\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1086,7 +1086,7 @@ public:
|
||||
T sucv = su * cv;
|
||||
T x = std::pow(std::abs(cucv), m_XPow) + (cucv * m_XPow) + (T(0.25) * atOmegaX);//Must fabs first argument to pow, because negative values will return NaN.
|
||||
T y = std::pow(std::abs(sucv), m_YPow) + (sucv * m_YPow) + (T(0.25) * atOmegaY);//Original did not do this and would frequently return bad values.
|
||||
T z = std::pow(std::abs(sv), m_ZPow) + sv * m_ZPow;
|
||||
T z = std::pow(std::abs(sv), m_ZPow) + sv * m_ZPow;
|
||||
helper.Out.x = m_Weight * x;
|
||||
helper.Out.y = m_Weight * y;
|
||||
helper.Out.z = m_Weight * z;
|
||||
@ -1356,7 +1356,7 @@ public:
|
||||
helper.Out.y = m_Weight * helper.In.y;
|
||||
}
|
||||
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1417,7 +1417,7 @@ public:
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * vIn.y;\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1498,7 +1498,7 @@ public:
|
||||
helper.Out.y = m_Weight * helper.In.y;
|
||||
}
|
||||
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1529,7 +1529,7 @@ public:
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * vIn.y;\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1655,7 +1655,7 @@ public:
|
||||
helper.Out.y = helper.In.y * r * m_Y;
|
||||
helper.Out.x += (1 - (m_Twist * SQR(helper.In.x)) + helper.In.y) * m_Weight;//The += is intentional.
|
||||
helper.Out.y += m_Tilt * helper.In.x * m_Weight;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -1676,7 +1676,7 @@ public:
|
||||
<< "\t\tvOut.y = vIn.y * r * " << y << ";\n"
|
||||
<< "\t\tvOut.x += (1 - (" << twist << " * SQR(vIn.x)) + vIn.y) * xform->m_VariationWeights[" << varIndex << "];\n"
|
||||
<< "\t\tvOut.y += " << tilt << " * vIn.x * xform->m_VariationWeights[" << varIndex << "];\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -1702,8 +1702,8 @@ private:
|
||||
/// <summary>
|
||||
/// waves2_3D.
|
||||
/// Original used a precalc for the input points, but it doesn't
|
||||
/// work with Ember's design, so it gets calculated on every iter
|
||||
/// which is slightly slower.
|
||||
/// work with Ember's design (and is also likely wrong), so it gets calculated on every iter
|
||||
/// which is slightly slower, but more correct.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API Waves23DVariation : public ParametricVariation<T>
|
||||
@ -2130,8 +2130,8 @@ public:
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
T b = m_Weight / (helper.m_PrecalcSumSquares * T(0.25) + 1);
|
||||
T roundX = Rint(helper.In.x);
|
||||
T roundY = Rint(helper.In.y);
|
||||
T roundX = std::rint(helper.In.x);
|
||||
T roundY = std::rint(helper.In.y);
|
||||
T offsetX = helper.In.x - roundX;
|
||||
T offsetY = helper.In.y - roundY;
|
||||
helper.Out.x = helper.In.x * b;
|
||||
@ -2174,7 +2174,7 @@ public:
|
||||
|
||||
helper.Out.x += helper.In.x * m_Px;
|
||||
helper.Out.y += helper.In.y * m_Py;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2234,7 +2234,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x += vIn.x * " << px << ";\n"
|
||||
<< "\t\tvOut.y += vIn.y * " << py << ";\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2278,7 +2278,7 @@ public:
|
||||
|
||||
helper.Out.x = m_Weight * r * std::cos(a);
|
||||
helper.Out.y = m_Weight * r * std::sin(a);
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -2294,7 +2294,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * r * cos(a);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * r * sin(a);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
@ -2941,7 +2941,7 @@ public:
|
||||
InverseTrilinear(alpha, beta, x, y, rand);
|
||||
helper.Out.x = m_Weight * x;
|
||||
helper.Out.y = m_Weight * y;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
@ -3062,7 +3062,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * x;\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * y;\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
968
Source/Ember/Variations07.h
Normal file
968
Source/Ember/Variations07.h
Normal file
@ -0,0 +1,968 @@
|
||||
#pragma once
|
||||
|
||||
#include "Variation.h"
|
||||
|
||||
namespace EmberNs
|
||||
{
|
||||
/// <summary>
|
||||
/// splits3D.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API Splits3DVariation : public ParametricVariation<T>
|
||||
{
|
||||
public:
|
||||
Splits3DVariation(T weight = 1.0) : ParametricVariation<T>("splits3D", eVariationId::VAR_SPLITS3D, weight)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
PARVARCOPY(Splits3DVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
if (helper.In.x >= 0)
|
||||
helper.Out.x = m_Weight * (helper.In.x + m_X);
|
||||
else
|
||||
helper.Out.x = m_Weight * (helper.In.x - m_X);
|
||||
|
||||
if (helper.In.y >= 0)
|
||||
helper.Out.y = m_Weight * (helper.In.y + m_Y);
|
||||
else
|
||||
helper.Out.y = m_Weight * (helper.In.y - m_Y);
|
||||
|
||||
if (helper.In.z >= 0)
|
||||
helper.Out.z = m_Weight * (helper.In.z + m_Z);
|
||||
else
|
||||
helper.Out.z = m_Weight * (helper.In.z - m_Z);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
{
|
||||
ostringstream ss, ss2;
|
||||
intmax_t i = 0, varIndex = IndexInXform();
|
||||
ss2 << "_" << XformIndexInEmber() << "]";
|
||||
string index = ss2.str();
|
||||
string x = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string y = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string z = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
ss << "\t{\n"
|
||||
<< "\t\tif (vIn.x >= 0)\n"
|
||||
<< "\t\t vOut.x = xform->m_VariationWeights[" << varIndex << "] * (vIn.x + " << x << ");\n"
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t vOut.x = xform->m_VariationWeights[" << varIndex << "] * (vIn.x - " << x << ");\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (vIn.y >= 0)\n"
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * (vIn.y + " << y << ");\n"
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * (vIn.y - " << y << ");\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (vIn.z >= 0)\n"
|
||||
<< "\t\t vOut.z = xform->m_VariationWeights[" << varIndex << "] * (vIn.z + " << z << ");\n"
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t vOut.z = xform->m_VariationWeights[" << varIndex << "] * (vIn.z - " << z << ");\n"
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual void Random(QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
m_X = rand.Frand11<T>();
|
||||
m_Y = rand.Frand11<T>();
|
||||
m_Z = rand.Frand11<T>();
|
||||
}
|
||||
|
||||
protected:
|
||||
void Init()
|
||||
{
|
||||
string prefix = Prefix();
|
||||
m_Params.clear();
|
||||
m_Params.push_back(ParamWithName<T>(&m_X, prefix + "splits3D_x"));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Y, prefix + "splits3D_y"));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Z, prefix + "splits3D_z"));
|
||||
}
|
||||
|
||||
private:
|
||||
T m_X;
|
||||
T m_Y;
|
||||
T m_Z;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// waves2b.
|
||||
/// Note that _j1() is not implemented in OpenCL, so that conditional is skipped
|
||||
/// when running on the GPU. The results might look different.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API Waves2BVariation : public ParametricVariation<T>
|
||||
{
|
||||
public:
|
||||
Waves2BVariation(T weight = 1.0) : ParametricVariation<T>("waves2b", eVariationId::VAR_WAVES2B, weight)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
PARVARCOPY(Waves2BVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
T CsX = 1;
|
||||
T CsY = 1;
|
||||
T jcbSn = 0, jcbCn, jcbDn;
|
||||
CsX = SafeDivInv(m_Unity, (m_Unity + Sqr(helper.In.x)));
|
||||
CsX = CsX * m_Six + m_Scaleinfx;
|
||||
CsY = SafeDivInv(m_Unity, (m_Unity + Sqr(helper.In.y)));
|
||||
CsY = CsY * m_Siy + m_Scaleinfy;
|
||||
|
||||
if (m_Pwx >= 0 && m_Pwx < 1e-4)
|
||||
{
|
||||
m_VarFuncs->JacobiElliptic(helper.In.y * m_Freqx, m_Jacok, jcbSn, jcbCn, jcbDn);
|
||||
helper.Out.x = m_Weight * (helper.In.x + CsX * jcbSn);
|
||||
}
|
||||
else if (m_Pwx < 0 && m_Pwx > -1e-4)
|
||||
#ifdef _WIN32
|
||||
helper.Out.x = m_Weight * (helper.In.x + CsX * T(_j1(helper.In.y * m_Freqx)));//This is not implemented in OpenCL.
|
||||
|
||||
#else
|
||||
helper.Out.x = m_Weight * (helper.In.x + CsX * T(j1(helper.In.y * m_Freqx)));//This is not implemented in OpenCL.
|
||||
#endif
|
||||
else
|
||||
helper.Out.x = m_Weight * (helper.In.x + CsX * std::sin(SignNz(helper.In.y) * std::pow(Zeps(std::abs(helper.In.y)), m_Pwx) * m_Freqx));
|
||||
|
||||
if (m_Pwy >= 0 && m_Pwy < 1e-4)
|
||||
{
|
||||
m_VarFuncs->JacobiElliptic(helper.In.x * m_Freqy, m_Jacok, jcbSn, jcbCn, jcbDn);
|
||||
helper.Out.y = m_Weight * (helper.In.y + CsY * jcbSn);
|
||||
}
|
||||
else if (m_Pwy < 0 && m_Pwy > -1e-4)
|
||||
#ifdef _WIN32
|
||||
helper.Out.y = m_Weight * (helper.In.y + CsY * T(_j1(helper.In.x * m_Freqy)));
|
||||
|
||||
#else
|
||||
helper.Out.y = m_Weight * (helper.In.y + CsY * T(j1(helper.In.x * m_Freqy)));
|
||||
#endif
|
||||
else
|
||||
helper.Out.y = m_Weight * (helper.In.y + CsY * std::sin(SignNz(helper.In.x) * std::pow(Zeps(std::abs(helper.In.x)), m_Pwy) * m_Freqy));
|
||||
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
{
|
||||
ostringstream ss, ss2;
|
||||
intmax_t i = 0, varIndex = IndexInXform();
|
||||
ss2 << "_" << XformIndexInEmber() << "]";
|
||||
string index = ss2.str();
|
||||
string freqx = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string freqy = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string pwx = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string pwy = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string scalex = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string scaleinfx = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string scaley = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string scaleinfy = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string unity = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string jacok = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string six = "parVars[" + ToUpper(m_Params[i++].Name()) + index;//Precalc.
|
||||
string siy = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
ss << "\t{\n"
|
||||
<< "\t\treal_t CsX = 1;\n"
|
||||
<< "\t\treal_t CsY = 1;\n"
|
||||
<< "\t\treal_t jcbSn = 0, jcbCn, jcbDn;\n"
|
||||
<< "\t\tCsX = SafeDivInv(" << unity << ", (" << unity << " + Sqr(vIn.x)));\n"
|
||||
<< "\t\tCsX = CsX * " << six << " + " << scaleinfx << ";\n"
|
||||
<< "\t\tCsY = SafeDivInv(" << unity << ", (" << unity << " + Sqr(vIn.y)));\n"
|
||||
<< "\t\tCsY = CsY * " << siy << " + " << scaleinfy << ";\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (" << pwx << " >= 0 && " << pwx << " < 1e-4)\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t JacobiElliptic(vIn.y * " << freqx << ", " << jacok << ", &jcbSn, &jcbCn, &jcbDn);\n"
|
||||
<< "\t\t vOut.x = xform->m_VariationWeights[" << varIndex << "] * (vIn.x + CsX * jcbSn);\n"
|
||||
<< "\t\t}\n"
|
||||
//<< "\t\telse if (" << pwx << " < 0 && " << pwx << " > -1e-4)\n"
|
||||
//<< "\t\t vOut.x = xform->m_VariationWeights[" << varIndex << "] * (vIn.x + CsX * _j1(vIn.y * " << freqx << "));\n"//This is not implemented in OpenCL.
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t vOut.x = xform->m_VariationWeights[" << varIndex << "] * (vIn.x + CsX * sin(SignNz(vIn.y) * pow(Zeps(fabs(vIn.y)), " << pwx << ") * " << freqx << "));\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (" << pwy << " >= 0 && " << pwy << " < 1e-4)\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t JacobiElliptic(vIn.x * " << freqy << ", " << jacok << ", &jcbSn, &jcbCn, &jcbDn);\n"
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * (vIn.y + CsY * jcbSn);\n"
|
||||
<< "\t\t}\n"
|
||||
//<< "\t\telse if (" << pwy << " < 0 && " << pwy << " > -1e-4)\n"
|
||||
//<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * (vIn.y + CsY * _j1(vIn.x * " << freqy << "));\n"//This is not implemented in OpenCL.
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * (vIn.y + CsY * sin(SignNz(vIn.x) * pow(Zeps(fabs(vIn.x)), " << pwy << ") * " << freqy << "));\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual vector<string> OpenCLGlobalFuncNames() const override
|
||||
{
|
||||
return vector<string> { "Zeps", "Sqr", "SignNz", "SafeDivInv", "JacobiElliptic" };
|
||||
}
|
||||
|
||||
virtual void Precalc() override
|
||||
{
|
||||
m_Six = m_Scalex - m_Scaleinfx;
|
||||
m_Siy = m_Scaley - m_Scaleinfy;
|
||||
}
|
||||
|
||||
protected:
|
||||
void Init()
|
||||
{
|
||||
string prefix = Prefix();
|
||||
m_VarFuncs = VarFuncs<T>::Instance();
|
||||
m_Params.clear();
|
||||
m_Params.push_back(ParamWithName<T>(&m_Freqx, prefix + "waves2b_freqx", 2));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Freqy, prefix + "waves2b_freqy", 2));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Pwx, prefix + "waves2b_pwx", 1, eParamType::REAL, -10, 10));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Pwy, prefix + "waves2b_pwy", 1, eParamType::REAL, -10, 10));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Scalex, prefix + "waves2b_scalex", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Scaleinfx, prefix + "waves2b_scaleinfx", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Scaley, prefix + "waves2b_scaley", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Scaleinfy, prefix + "waves2b_scaleinfy", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Unity, prefix + "waves2b_unity", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Jacok, prefix + "waves2b_jacok", T(0.25), eParamType::REAL, -1, 1));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_Six, prefix + "waves2b_six"));//Precalc.
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_Siy, prefix + "waves2b_siy"));
|
||||
}
|
||||
|
||||
private:
|
||||
T m_Freqx;
|
||||
T m_Freqy;
|
||||
T m_Pwx;
|
||||
T m_Pwy;
|
||||
T m_Scalex;
|
||||
T m_Scaleinfx;
|
||||
T m_Scaley;
|
||||
T m_Scaleinfy;
|
||||
T m_Unity;
|
||||
T m_Jacok;
|
||||
T m_Six;//Precalc.
|
||||
T m_Siy;
|
||||
shared_ptr<VarFuncs<T>> m_VarFuncs;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// jac_cn.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API JacCnVariation : public ParametricVariation<T>
|
||||
{
|
||||
public:
|
||||
JacCnVariation(T weight = 1.0) : ParametricVariation<T>("jac_cn", eVariationId::VAR_JAC_CN, weight)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
PARVARCOPY(JacCnVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
T snx, cnx, dnx;
|
||||
T sny, cny, dny;
|
||||
T numX, numY, denom;
|
||||
m_VarFuncs->JacobiElliptic(helper.In.x, m_K, snx, cnx, dnx);
|
||||
m_VarFuncs->JacobiElliptic(helper.In.y, 1 - m_K, sny, cny, dny);
|
||||
numX = cnx * cny;
|
||||
numY = -dnx * snx * dny * sny;
|
||||
denom = SQR(snx) * SQR(sny) * m_K + SQR(cny);
|
||||
denom = m_Weight / Zeps(denom);
|
||||
helper.Out.x = denom * numX;
|
||||
helper.Out.y = denom * numY;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
{
|
||||
ostringstream ss, ss2;
|
||||
intmax_t i = 0, varIndex = IndexInXform();
|
||||
ss2 << "_" << XformIndexInEmber() << "]";
|
||||
string index = ss2.str();
|
||||
string k = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
ss << "\t{\n"
|
||||
<< "\t\treal_t snx, cnx, dnx;\n"
|
||||
<< "\t\treal_t sny, cny, dny;\n"
|
||||
<< "\t\treal_t numX, numY, denom;\n"
|
||||
<< "\t\tJacobiElliptic(vIn.x, " << k << ", &snx, &cnx, &dnx);\n"
|
||||
<< "\t\tJacobiElliptic(vIn.y, 1 - " << k << ", &sny, &cny, &dny);\n"
|
||||
<< "\t\tnumX = cnx * cny;\n"
|
||||
<< "\t\tnumY = -dnx * snx * dny * sny;\n"
|
||||
<< "\t\tdenom = SQR(snx) * SQR(sny) * " << k << " + SQR(cny);\n"
|
||||
<< "\t\tdenom = xform->m_VariationWeights[" << varIndex << "] / Zeps(denom);\n"
|
||||
<< "\t\tvOut.x = denom * numX;\n"
|
||||
<< "\t\tvOut.y = denom * numY;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual vector<string> OpenCLGlobalFuncNames() const override
|
||||
{
|
||||
return vector<string> { "Zeps", "JacobiElliptic" };
|
||||
}
|
||||
|
||||
protected:
|
||||
void Init()
|
||||
{
|
||||
string prefix = Prefix();
|
||||
m_VarFuncs = VarFuncs<T>::Instance();
|
||||
m_Params.clear();
|
||||
m_Params.push_back(ParamWithName<T>(&m_K, prefix + "jac_cn_k", T(0.5), eParamType::REAL, -1, 1));
|
||||
}
|
||||
|
||||
private:
|
||||
T m_K;
|
||||
shared_ptr<VarFuncs<T>> m_VarFuncs;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// jac_dn.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API JacDnVariation : public ParametricVariation<T>
|
||||
{
|
||||
public:
|
||||
JacDnVariation(T weight = 1.0) : ParametricVariation<T>("jac_dn", eVariationId::VAR_JAC_DN, weight)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
PARVARCOPY(JacDnVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
T snx, cnx, dnx;
|
||||
T sny, cny, dny;
|
||||
T numX, numY, denom;
|
||||
m_VarFuncs->JacobiElliptic(helper.In.x, m_K, snx, cnx, dnx);
|
||||
m_VarFuncs->JacobiElliptic(helper.In.y, 1 - m_K, sny, cny, dny);
|
||||
numX = dnx * cny * dny;
|
||||
numY = -cnx * snx * sny * m_K;
|
||||
denom = SQR(snx) * SQR(sny) * m_K + SQR(cny);
|
||||
denom = m_Weight / Zeps(denom);
|
||||
helper.Out.x = denom * numX;
|
||||
helper.Out.y = denom * numY;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
{
|
||||
ostringstream ss, ss2;
|
||||
intmax_t i = 0, varIndex = IndexInXform();
|
||||
ss2 << "_" << XformIndexInEmber() << "]";
|
||||
string index = ss2.str();
|
||||
string k = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
ss << "\t{\n"
|
||||
<< "\t\treal_t snx, cnx, dnx;\n"
|
||||
<< "\t\treal_t sny, cny, dny;\n"
|
||||
<< "\t\treal_t numX, numY, denom;\n"
|
||||
<< "\t\tJacobiElliptic(vIn.x, " << k << ", &snx, &cnx, &dnx);\n"
|
||||
<< "\t\tJacobiElliptic(vIn.y, 1 - " << k << ", &sny, &cny, &dny);\n"
|
||||
<< "\t\tnumX = dnx * cny * dny;\n"
|
||||
<< "\t\tnumY = -cnx * snx * sny * " << k << ";\n"
|
||||
<< "\t\tdenom = SQR(snx) * SQR(sny) * " << k << " + SQR(cny);\n"
|
||||
<< "\t\tdenom = xform->m_VariationWeights[" << varIndex << "] / Zeps(denom);\n"
|
||||
<< "\t\tvOut.x = denom * numX;\n"
|
||||
<< "\t\tvOut.y = denom * numY;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual vector<string> OpenCLGlobalFuncNames() const override
|
||||
{
|
||||
return vector<string> { "Zeps", "JacobiElliptic" };
|
||||
}
|
||||
|
||||
protected:
|
||||
void Init()
|
||||
{
|
||||
string prefix = Prefix();
|
||||
m_VarFuncs = VarFuncs<T>::Instance();
|
||||
m_Params.clear();
|
||||
m_Params.push_back(ParamWithName<T>(&m_K, prefix + "jac_dn_k", T(0.5), eParamType::REAL, -1, 1));
|
||||
}
|
||||
|
||||
private:
|
||||
T m_K;
|
||||
shared_ptr<VarFuncs<T>> m_VarFuncs;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// jac_sn.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API JacSnVariation : public ParametricVariation<T>
|
||||
{
|
||||
public:
|
||||
JacSnVariation(T weight = 1.0) : ParametricVariation<T>("jac_sn", eVariationId::VAR_JAC_SN, weight)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
PARVARCOPY(JacSnVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
T snx, cnx, dnx;
|
||||
T sny, cny, dny;
|
||||
T numX, numY, denom;
|
||||
m_VarFuncs->JacobiElliptic(helper.In.x, m_K, snx, cnx, dnx);
|
||||
m_VarFuncs->JacobiElliptic(helper.In.y, 1 - m_K, sny, cny, dny);
|
||||
numX = snx * dny;
|
||||
numY = cnx * dnx * cny * sny;
|
||||
denom = SQR(snx) * SQR(sny) * m_K + SQR(cny);
|
||||
denom = m_Weight / Zeps(denom);
|
||||
helper.Out.x = denom * numX;
|
||||
helper.Out.y = denom * numY;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
{
|
||||
ostringstream ss, ss2;
|
||||
intmax_t i = 0, varIndex = IndexInXform();
|
||||
ss2 << "_" << XformIndexInEmber() << "]";
|
||||
string index = ss2.str();
|
||||
string k = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
ss << "\t{\n"
|
||||
<< "\t\treal_t snx, cnx, dnx;\n"
|
||||
<< "\t\treal_t sny, cny, dny;\n"
|
||||
<< "\t\treal_t numX, numY, denom;\n"
|
||||
<< "\t\tJacobiElliptic(vIn.x, " << k << ", &snx, &cnx, &dnx);\n"
|
||||
<< "\t\tJacobiElliptic(vIn.y, 1 - " << k << ", &sny, &cny, &dny);\n"
|
||||
<< "\t\tnumX = snx * dny;\n"
|
||||
<< "\t\tnumY = cnx * dnx * cny * sny;\n"
|
||||
<< "\t\tdenom = SQR(snx) * SQR(sny) * " << k << " + SQR(cny);\n"
|
||||
<< "\t\tdenom = xform->m_VariationWeights[" << varIndex << "] / Zeps(denom);\n"
|
||||
<< "\t\tvOut.x = denom * numX;\n"
|
||||
<< "\t\tvOut.y = denom * numY;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual vector<string> OpenCLGlobalFuncNames() const override
|
||||
{
|
||||
return vector<string> { "Zeps", "JacobiElliptic" };
|
||||
}
|
||||
|
||||
protected:
|
||||
void Init()
|
||||
{
|
||||
string prefix = Prefix();
|
||||
m_VarFuncs = VarFuncs<T>::Instance();
|
||||
m_Params.clear();
|
||||
m_Params.push_back(ParamWithName<T>(&m_K, prefix + "jac_sn_k", T(0.5), eParamType::REAL, -1, 1));
|
||||
}
|
||||
|
||||
private:
|
||||
T m_K;
|
||||
shared_ptr<VarFuncs<T>> m_VarFuncs;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// pressure_wave.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API PressureWaveVariation : public ParametricVariation<T>
|
||||
{
|
||||
public:
|
||||
PressureWaveVariation(T weight = 1.0) : ParametricVariation<T>("pressure_wave", eVariationId::VAR_PRESSURE_WAVE, weight)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
PARVARCOPY(PressureWaveVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
helper.Out.x = m_Weight * (helper.In.x + (1 / Zeps(m_X * M_2PI)) * std::sin(m_X * M_2PI * helper.In.x));
|
||||
helper.Out.y = m_Weight * (helper.In.y + (1 / Zeps(m_Y * M_2PI)) * std::sin(m_Y * M_2PI * helper.In.y));
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
{
|
||||
ostringstream ss, ss2;
|
||||
intmax_t i = 0, varIndex = IndexInXform();
|
||||
ss2 << "_" << XformIndexInEmber() << "]";
|
||||
string index = ss2.str();
|
||||
string x = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string y = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
ss << "\t{\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (vIn.x + (1 / Zeps(" << x << " * M_2PI)) * sin(" << x << " * M_2PI * vIn.x));\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (vIn.y + (1 / Zeps(" << y << " * M_2PI)) * sin(" << y << " * M_2PI * vIn.y));\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual vector<string> OpenCLGlobalFuncNames() const override
|
||||
{
|
||||
return vector<string> { "Zeps" };
|
||||
}
|
||||
|
||||
protected:
|
||||
void Init()
|
||||
{
|
||||
string prefix = Prefix();
|
||||
m_Params.clear();
|
||||
m_Params.push_back(ParamWithName<T>(&m_X, prefix + "pressure_wave_x_freq", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Y, prefix + "pressure_wave_y_freq", 1));
|
||||
}
|
||||
|
||||
private:
|
||||
T m_X;
|
||||
T m_Y;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// gamma.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API GammaVariation : public Variation<T>
|
||||
{
|
||||
public:
|
||||
GammaVariation(T weight = 1.0) : Variation<T>("gamma", eVariationId::VAR_GAMMA, weight, true, true, false, false, true)
|
||||
{
|
||||
}
|
||||
|
||||
VARCOPY(GammaVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
helper.Out.x = m_Weight * std::lgamma(helper.m_PrecalcSqrtSumSquares);
|
||||
helper.Out.y = m_Weight * helper.m_PrecalcAtanyx;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
{
|
||||
ostringstream ss, ss2;
|
||||
intmax_t i = 0, varIndex = IndexInXform();
|
||||
ss2 << "_" << XformIndexInEmber() << "]";
|
||||
string index = ss2.str();
|
||||
ss << "\t{\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * lgamma(precalcSqrtSumSquares);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * precalcAtanyx;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// prose3D.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API PRose3DVariation : public ParametricVariation<T>
|
||||
{
|
||||
public:
|
||||
PRose3DVariation(T weight = 1.0) : ParametricVariation<T>("pRose3D", eVariationId::VAR_PROSE3D, weight, true, true, false, false, true)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
PARVARCOPY(PRose3DVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
int posNeg = 1;
|
||||
T th = 0;
|
||||
T sth, cth, pang, wig, wag, wag2, wag3, wag12, waggle;
|
||||
T rad = helper.m_PrecalcSqrtSumSquares;
|
||||
T curve1 = rad / m_L;
|
||||
T curve2 = Sqr(curve1);
|
||||
T curve3 = (rad - m_L * T(0.5)) / m_L;
|
||||
T curve4 = Sqr(curve2);
|
||||
th = helper.m_PrecalcAtanyx;
|
||||
sincos(th, &sth, &cth);
|
||||
|
||||
if (rand.Frand01<T>() < T(0.5))
|
||||
posNeg = -1;
|
||||
|
||||
pang = th / Zeps(m_Cycle);
|
||||
wig = pang * m_Freq * T(0.5) + m_Offset * m_Cycle;
|
||||
|
||||
if (m_OptDir < 0)
|
||||
{
|
||||
wag = std::sin(curve1 * T(M_PI) * m_AbsOptSc) + m_Wagsc * T(0.4) * rad + m_Crvsc * T(0.5) * (std::sin(curve2 * T(M_PI)));
|
||||
wag3 = std::sin(curve4 * T(M_PI) * m_AbsOptSc) + m_Wagsc * SQR(rad) * T(0.4) + m_Crvsc * T(0.5) * (std::cos(curve3 * T(M_PI)));
|
||||
}
|
||||
else
|
||||
{
|
||||
wag = std::sin(curve1 * T(M_PI) * m_AbsOptSc) + m_Wagsc * T(0.4) * rad + m_Crvsc * T(0.5) * (std::cos(curve3 * T(M_PI)));
|
||||
wag3 = std::sin(curve4 * T(M_PI) * m_AbsOptSc) + m_Wagsc * SQR(rad) * T(0.4) + m_Crvsc * T(0.5) * (std::sin(curve2 * T(M_PI)));
|
||||
}
|
||||
|
||||
wag2 = std::sin(curve2 * T(M_PI) * m_AbsOptSc) + m_Wagsc * T(0.4) * rad + m_Crvsc * T(0.5) * (std::cos(curve3 * T(M_PI)));
|
||||
|
||||
if (m_Smooth12 <= 1)
|
||||
wag12 = wag;
|
||||
else if (m_Smooth12 <= 2 && m_Smooth12 > 1)
|
||||
wag12 = wag2 * (1 - m_AntiOpt1) + wag * m_AntiOpt1;
|
||||
else if (m_Smooth12 > 2)
|
||||
wag12 = wag2;
|
||||
|
||||
if (m_Smooth3 == 0)
|
||||
waggle = wag12;
|
||||
else if (m_Smooth3 > 0)
|
||||
waggle = wag12 * (1 - m_Smooth3) + wag3 * m_Smooth3;
|
||||
|
||||
if (rand.Frand01<T>() < m_Ghost)
|
||||
{
|
||||
if (posNeg < 0)
|
||||
{
|
||||
helper.Out.x = m_Weight * T(0.5) * m_RefSc * (m_L * std::cos(m_NumPetals * th + m_C)) * cth;
|
||||
helper.Out.y = m_Weight * T(0.5) * m_RefSc * (m_L * std::cos(m_NumPetals * th + m_C)) * sth;
|
||||
helper.Out.z = m_Weight * T(-0.5) * ((m_Z2 * waggle + Sqr(rad * T(0.5)) * std::sin(wig) * m_WigScale) + m_Dist);
|
||||
}
|
||||
else
|
||||
{
|
||||
helper.Out.x = m_Weight * T(0.5) * (m_L * std::cos(m_NumPetals * th + m_C)) * cth;
|
||||
helper.Out.y = m_Weight * T(0.5) * (m_L * std::cos(m_NumPetals * th + m_C)) * sth;
|
||||
helper.Out.z = m_Weight * T(0.5) * ((m_Z1 * waggle + Sqr(rad * T(0.5)) * std::sin(wig) * m_WigScale) + m_Dist);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (posNeg < 0)
|
||||
{
|
||||
helper.Out.x = m_Weight * T(0.5) * (m_L * std::cos(m_NumPetals * th + m_C)) * cth;
|
||||
helper.Out.y = m_Weight * T(0.5) * (m_L * std::cos(m_NumPetals * th + m_C)) * sth;
|
||||
helper.Out.z = m_Weight * T(0.5) * ((m_Z1 * waggle + Sqr(rad * T(0.5)) * std::sin(wig) * m_WigScale) + m_Dist);
|
||||
}
|
||||
else
|
||||
{
|
||||
helper.Out.x = m_Weight * T(0.5) * (m_L * std::cos(m_NumPetals * th + m_C)) * cth;
|
||||
helper.Out.y = m_Weight * T(0.5) * (m_L * std::cos(m_NumPetals * th + m_C)) * sth;
|
||||
helper.Out.z = m_Weight * T(0.5) * ((m_Z1 * waggle + Sqr(rad * T(0.5)) * std::sin(wig) * m_WigScale) + m_Dist);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
{
|
||||
ostringstream ss, ss2;
|
||||
intmax_t i = 0, varIndex = IndexInXform();
|
||||
ss2 << "_" << XformIndexInEmber() << "]";
|
||||
string index = ss2.str();
|
||||
string l = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string k = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string c = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string z1 = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string z2 = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string refSc = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string opt = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string optSc = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string opt3 = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string transp = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string dist = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string wagsc = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string crvsc = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string f = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string wigsc = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string offset = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string cycle = "parVars[" + ToUpper(m_Params[i++].Name()) + index;//Precalc.
|
||||
string optDir = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string petalsSign = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string numPetals = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string absOptSc = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string smooth12 = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string smooth3 = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string antiOpt1 = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string ghost = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string freq = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string wigScale = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
ss << "\t{\n"
|
||||
<< "\t\tint posNeg = 1;\n"
|
||||
<< "\t\treal_t th = 0;\n"
|
||||
<< "\t\treal_t sth, cth, pang, wig, wag, wag2, wag3, wag12, waggle;\n"
|
||||
<< "\t\treal_t rad = precalcSqrtSumSquares;\n"
|
||||
<< "\t\treal_t curve1 = rad / " << l << ";\n"
|
||||
<< "\t\treal_t curveTwo = Sqr(curve1);\n"
|
||||
<< "\t\treal_t curve3 = (rad - " << l << " * 0.5) / " << l << ";\n"
|
||||
<< "\t\treal_t curve4 = Sqr(curveTwo);\n"
|
||||
<< "\t\tth = precalcAtanyx;\n"
|
||||
<< "\t\tsth = sincos(th, &cth);\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (MwcNext01(mwc) < 0.5)\n"
|
||||
<< "\t\t posNeg = -1;\n"
|
||||
<< "\n"
|
||||
<< "\t\tpang = th / Zeps(" << cycle << ");\n"
|
||||
<< "\t\twig = pang * " << freq << " * 0.5 + " << offset << " * " << cycle << ";\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (" << optDir << " < 0)\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t wag = sin(curve1 * M_PI * " << absOptSc << ") + " << wagsc << " * 0.4 * rad + " << crvsc << " * 0.5 * (sin(curveTwo * M_PI));\n"
|
||||
<< "\t\t wag3 = sin(curve4 * M_PI * " << absOptSc << ") + " << wagsc << " * SQR(rad) * 0.4 + " << crvsc << " * 0.5 * (cos(curve3 * M_PI));\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t wag = sin(curve1 * M_PI * " << absOptSc << ") + " << wagsc << " * 0.4 * rad + " << crvsc << " * 0.5 * (cos(curve3 * M_PI));\n"
|
||||
<< "\t\t wag3 = sin(curve4 * M_PI * " << absOptSc << ") + " << wagsc << " * SQR(rad) * 0.4 + " << crvsc << " * 0.5 * (sin(curveTwo * M_PI));\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\twag2 = sin(curveTwo * M_PI * " << absOptSc << ") + " << wagsc << " * 0.4 * rad + " << crvsc << " * 0.5 * (cos(curve3 * M_PI));\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (" << smooth12 << " <= 1)\n"
|
||||
<< "\t\t wag12 = wag;\n"
|
||||
<< "\t\telse if (" << smooth12 << " <= 2 && " << smooth12 << " > 1)\n"
|
||||
<< "\t\t wag12 = wag2 * (1 - " << antiOpt1 << ") + wag * " << antiOpt1 << ";\n"
|
||||
<< "\t\telse if (" << smooth12 << " > 2)\n"
|
||||
<< "\t\t wag12 = wag2;\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (" << smooth3 << " == 0)\n"
|
||||
<< "\t\t waggle = wag12;\n"
|
||||
<< "\t\telse if (" << smooth3 << " > 0)\n"
|
||||
<< "\t\t waggle = wag12 * (1 - " << smooth3 << ") + wag3 * " << smooth3 << ";\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (MwcNext01(mwc) < " << ghost << ")\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t if (posNeg < 0)\n"
|
||||
<< "\t\t {\n"
|
||||
<< "\t\t vOut.x = xform->m_VariationWeights[" << varIndex << "] * 0.5 * " << refSc << " * (" << l << " * cos(" << numPetals << " * th + " << c << ")) * cth;\n"
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * 0.5 * " << refSc << " * (" << l << " * cos(" << numPetals << " * th + " << c << ")) * sth;\n"
|
||||
<< "\t\t vOut.z = xform->m_VariationWeights[" << varIndex << "] * -0.5 * ((" << z2 << " * waggle + Sqr(rad * 0.5) * sin(wig) * " << wigScale << ") + " << dist << ");\n"
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t else\n"
|
||||
<< "\t\t {\n"
|
||||
<< "\t\t vOut.x = xform->m_VariationWeights[" << varIndex << "] * 0.5 * (" << l << " * cos(" << numPetals << " * th + " << c << ")) * cth;\n"
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * 0.5 * (" << l << " * cos(" << numPetals << " * th + " << c << ")) * sth;\n"
|
||||
<< "\t\t vOut.z = xform->m_VariationWeights[" << varIndex << "] * 0.5 * ((" << z1 << " * waggle + Sqr(rad * 0.5) * sin(wig) * " << wigScale << ") + " << dist << ");\n"
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t if (posNeg < 0)\n"
|
||||
<< "\t\t {\n"
|
||||
<< "\t\t vOut.x = xform->m_VariationWeights[" << varIndex << "] * 0.5 * (" << l << " * cos(" << numPetals << " * th + " << c << ")) * cth;\n"
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * 0.5 * (" << l << " * cos(" << numPetals << " * th + " << c << ")) * sth;\n"
|
||||
<< "\t\t vOut.z = xform->m_VariationWeights[" << varIndex << "] * 0.5 * ((" << z1 << " * waggle + Sqr(rad * 0.5) * sin(wig) * " << wigScale << ") + " << dist << ");\n"
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t else\n"
|
||||
<< "\t\t {\n"
|
||||
<< "\t\t vOut.x = xform->m_VariationWeights[" << varIndex << "] * 0.5 * (" << l << " * cos(" << numPetals << " * th + " << c << ")) * cth;\n"
|
||||
<< "\t\t vOut.y = xform->m_VariationWeights[" << varIndex << "] * 0.5 * (" << l << " * cos(" << numPetals << " * th + " << c << ")) * sth;\n"
|
||||
<< "\t\t vOut.z = xform->m_VariationWeights[" << varIndex << "] * 0.5 * ((" << z1 << " * waggle + Sqr(rad * 0.5) * sin(wig) * " << wigScale << ") + " << dist << ");\n"
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual vector<string> OpenCLGlobalFuncNames() const override
|
||||
{
|
||||
return vector<string> { "Sqr", "Zeps" };
|
||||
}
|
||||
|
||||
virtual void Precalc() override
|
||||
{
|
||||
m_Cycle = M_2PI / Zeps(m_K);
|
||||
m_NumPetals = m_K;
|
||||
m_Ghost = Sqr(m_Transp);
|
||||
m_Freq = m_F * M_2PI;
|
||||
m_WigScale = m_Wigsc * T(0.5);
|
||||
|
||||
if (std::abs(m_NumPetals) < T(0.0001))
|
||||
m_NumPetals = T(0.0001) * m_PetalsSign;
|
||||
|
||||
m_Smooth12 = std::abs(m_Opt);
|
||||
m_Smooth3 = std::abs(m_Opt3);
|
||||
m_AbsOptSc = std::abs(m_OptSc);
|
||||
|
||||
if (m_Smooth12 > 2)
|
||||
m_Smooth12 = 2;
|
||||
|
||||
m_AntiOpt1 = 2 - m_Smooth12;
|
||||
|
||||
if (m_Smooth3 > 1)
|
||||
m_Smooth3 = 1;
|
||||
|
||||
m_OptDir = std::copysign(T(1.0), m_Opt);
|
||||
m_PetalsSign = std::copysign(T(1.0), m_K);
|
||||
|
||||
if (m_Opt3 < 0)
|
||||
m_OptDir = -1;
|
||||
|
||||
if (m_OptDir > 0)
|
||||
m_Ghost = 0;
|
||||
}
|
||||
|
||||
protected:
|
||||
void Init()
|
||||
{
|
||||
string prefix = Prefix();
|
||||
m_Params.clear();
|
||||
m_Params.push_back(ParamWithName<T>(&m_L, prefix + "pRose3D_l", 1, eParamType::REAL_NONZERO));
|
||||
m_Params.push_back(ParamWithName<T>(&m_K, prefix + "pRose3D_k", 3));
|
||||
m_Params.push_back(ParamWithName<T>(&m_C, prefix + "pRose3D_c"));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Z1, prefix + "pRose3D_z1", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Z2, prefix + "pRose3D_z2", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_RefSc, prefix + "pRose3D_refSc", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Opt, prefix + "pRose3D_opt", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_OptSc, prefix + "pRose3D_optSc", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Opt3, prefix + "pRose3D_opt3"));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Transp, prefix + "pRose3D_transp", T(0.5)));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Dist, prefix + "pRose3D_dist", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Wagsc, prefix + "pRose3D_wagsc", 0));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Crvsc, prefix + "pRose3D_crvsc", 0));
|
||||
m_Params.push_back(ParamWithName<T>(&m_F, prefix + "pRose3D_f", 3));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Wigsc, prefix + "pRose3D_wigsc"));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Offset, prefix + "pRose3D_offset"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_Cycle, prefix + "pRose3D_cycle"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_OptDir, prefix + "pRose3D_opt_dir"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_PetalsSign, prefix + "pRose3D_petals_sign"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_NumPetals, prefix + "pRose3D_num_petals"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_AbsOptSc, prefix + "pRose3D_abs_optSc"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_Smooth12, prefix + "pRose3D_smooth12"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_Smooth3, prefix + "pRose3D_smooth3"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_AntiOpt1, prefix + "pRose3D_anti_opt1"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_Ghost, prefix + "pRose3D_ghost"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_Freq, prefix + "pRose3D_freq"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_WigScale, prefix + "pRose3D_wig_scale"));
|
||||
}
|
||||
|
||||
private:
|
||||
T m_L;
|
||||
T m_K;
|
||||
T m_C;
|
||||
T m_Z1;
|
||||
T m_Z2;
|
||||
T m_RefSc;
|
||||
T m_Opt;
|
||||
T m_OptSc;
|
||||
T m_Opt3;
|
||||
T m_Transp;
|
||||
T m_Dist;
|
||||
T m_Wagsc;
|
||||
T m_Crvsc;
|
||||
T m_F;
|
||||
T m_Wigsc;
|
||||
T m_Offset;
|
||||
T m_Cycle;//Precalc.
|
||||
T m_OptDir;
|
||||
T m_PetalsSign;
|
||||
T m_NumPetals;
|
||||
T m_AbsOptSc;
|
||||
T m_Smooth12;
|
||||
T m_Smooth3;
|
||||
T m_AntiOpt1;
|
||||
T m_Ghost;
|
||||
T m_Freq;
|
||||
T m_WigScale;
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// log_db.
|
||||
/// By DarkBeam, taken from JWildfire.
|
||||
/// http://jwildfire.org/forum/viewtopic.php?f=23&t=1450&p=2692#p2692
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class EMBER_API LogDBVariation : public ParametricVariation<T>
|
||||
{
|
||||
public:
|
||||
LogDBVariation(T weight = 1.0) : ParametricVariation<T>("log_db", eVariationId::VAR_LOG_DB, weight, true, false, false, false, true)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
PARVARCOPY(LogDBVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
int i, adp;
|
||||
T atanPeriod = 0;
|
||||
|
||||
for (i = 0; i < 7; i++)
|
||||
{
|
||||
adp = rand.Rand(10) - 5;
|
||||
|
||||
if (std::abs(adp) >= 3)
|
||||
adp = 0;
|
||||
|
||||
atanPeriod += adp;
|
||||
}
|
||||
|
||||
atanPeriod *= m_FixPe;
|
||||
helper.Out.x = m_Denom * std::log(helper.m_PrecalcSumSquares);
|
||||
helper.Out.y = m_Weight * (helper.m_PrecalcAtanyx + atanPeriod);
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
}
|
||||
|
||||
virtual string OpenCLString() const override
|
||||
{
|
||||
ostringstream ss, ss2;
|
||||
intmax_t i = 0, varIndex = IndexInXform();
|
||||
ss2 << "_" << XformIndexInEmber() << "]";
|
||||
string index = ss2.str();
|
||||
string base = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string fixPeriod = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string denom = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string fixPe = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
ss << "\t{\n"
|
||||
<< "\t\tint i, adp;\n"
|
||||
<< "\t\treal_t atanPeriod = 0;\n"
|
||||
<< "\n"
|
||||
<< "\t\tfor (i = 0; i < 7; i++)\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t adp = MwcNextRange(mwc, 10) - 5;\n"
|
||||
<< "\n"
|
||||
<< "\t\t if (abs(adp) >= 3)\n"
|
||||
<< "\t\t adp = 0;\n"
|
||||
<< "\n"
|
||||
<< "\t\t atanPeriod += adp;\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tatanPeriod *= " << fixPe << ";\n"
|
||||
<< "\t\tvOut.x = " << denom << " * log(precalcSumSquares);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (precalcAtanyx + atanPeriod);\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual void Precalc() override
|
||||
{
|
||||
m_Denom = T(0.5);
|
||||
|
||||
if (m_Base > EPS)
|
||||
m_Denom = m_Denom / std::log(T(M_E) * m_Base);
|
||||
|
||||
m_Denom *= m_Weight;
|
||||
m_FixPe = T(M_PI);
|
||||
|
||||
if (m_FixPeriod > EPS)
|
||||
m_FixPe *= m_FixPeriod;
|
||||
}
|
||||
protected:
|
||||
void Init()
|
||||
{
|
||||
string prefix = Prefix();
|
||||
m_Params.clear();
|
||||
m_Params.push_back(ParamWithName<T>(&m_Base, prefix + "log_db_base", 1));
|
||||
m_Params.push_back(ParamWithName<T>(&m_FixPeriod, prefix + "log_db_fix_period", 1));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_Denom, prefix + "log_db_denom"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_FixPe, prefix + "log_db_fix_pe"));
|
||||
}
|
||||
private:
|
||||
T m_Base;
|
||||
T m_FixPeriod;
|
||||
T m_Denom;
|
||||
T m_FixPe;
|
||||
};
|
||||
|
||||
MAKEPREPOSTPARVAR(Splits3D, splits3D, SPLITS3D)
|
||||
MAKEPREPOSTPARVAR(Waves2B, waves2b, WAVES2B)
|
||||
MAKEPREPOSTPARVAR(JacCn, jac_cn, JAC_CN)
|
||||
MAKEPREPOSTPARVAR(JacDn, jac_dn, JAC_DN)
|
||||
MAKEPREPOSTPARVAR(JacSn, jac_sn, JAC_SN)
|
||||
MAKEPREPOSTPARVAR(PressureWave, pressure_wave, PRESSURE_WAVE)
|
||||
MAKEPREPOSTVAR(Gamma, gamma, GAMMA)
|
||||
MAKEPREPOSTPARVAR(PRose3D, pRose3D, PROSE3D)
|
||||
MAKEPREPOSTPARVAR(LogDB, log_db, LOG_DB)
|
||||
}
|
||||
@ -140,7 +140,7 @@ public:
|
||||
T h = -m_H + (1 - x0_xor_y0) * m_H;
|
||||
helper.Out.x = m_Weight * (m_Xform->m_Affine.A() * x + m_Xform->m_Affine.B() * y + m_Xform->m_Affine.E());
|
||||
helper.Out.y = m_Weight * (m_Xform->m_Affine.C() * x + m_Xform->m_Affine.D() * y + m_Xform->m_Affine.F());
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
outPoint.m_ColorX = fmod(std::abs(outPoint.m_ColorX * T(0.5) * (1 + h) + x0_xor_y0 * (1 - h) * T(0.5)), T(1.0));
|
||||
}
|
||||
|
||||
@ -162,7 +162,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * (xform->m_A * x + xform->m_B * y + xform->m_E);\n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * (xform->m_C * x + xform->m_D * y + xform->m_F);\n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t\toutPoint->m_ColorX = fmod(fabs(outPoint->m_ColorX * (real_t)(0.5) * (1 + h) + x0_xor_y0 * (1 - h) * (real_t)(0.5)), (real_t)(1.0));\n"
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
@ -588,7 +588,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.z = m_Weight * helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
outPoint.m_ColorX = fmod(c, T(1.0));
|
||||
}
|
||||
|
||||
@ -668,7 +668,7 @@ public:
|
||||
<< "\t\t }\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.z = xform->m_VariationWeights[" << varIndex << "] * vIn.z;\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t\toutPoint->m_ColorX = fmod(c, (real_t)(1.0));\n"
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
@ -1242,7 +1242,7 @@ public:
|
||||
// Add blur effect to transform
|
||||
helper.Out.x = m_Weight * vx;
|
||||
helper.Out.y = m_Weight * vy;
|
||||
helper.Out.z = (m_VarType == eVariationType::VARTYPE_REG) ? 0 : helper.In.z;
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
col = m_Centre + m_Range * p;
|
||||
outPoint.m_ColorX = col - Floor<T>(col);
|
||||
}
|
||||
@ -1393,7 +1393,7 @@ public:
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = xform->m_VariationWeights[" << varIndex << "] * vx; \n"
|
||||
<< "\t\tvOut.y = xform->m_VariationWeights[" << varIndex << "] * vy; \n"
|
||||
<< "\t\tvOut.z = " << ((m_VarType == eVariationType::VARTYPE_REG) ? "0" : "vIn.z") << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t\tcol = " << centre << " + " << range << " * p; \n"
|
||||
<< "\t\toutPoint->m_ColorX = col - floor(col); \n"
|
||||
<< "\t}\n";
|
||||
|
||||
@ -616,7 +616,7 @@ public:
|
||||
iterHelper.In.x = iterHelper.m_TransX;//Read must be done before every pre variation because transX/Y are changing.
|
||||
iterHelper.In.y = iterHelper.m_TransY;
|
||||
iterHelper.In.z = iterHelper.m_TransZ;
|
||||
m_PreVariations[i]->PrecalcHelper(iterHelper, inPoint);//Apply per-variation precalc, the second parameter is unused for pre variations.
|
||||
m_PreVariations[i]->PrePostPrecalcHelper(iterHelper);//Apply per-variation precalc, the second parameter is unused for pre variations.
|
||||
m_PreVariations[i]->Func(iterHelper, *outPoint, rand);
|
||||
WritePre(iterHelper, m_PreVariations[i]->AssignType());
|
||||
}
|
||||
@ -668,7 +668,7 @@ public:
|
||||
iterHelper.In.x = outPoint->m_X;//Read must be done before every post variation because the out point is changing.
|
||||
iterHelper.In.y = outPoint->m_Y;
|
||||
iterHelper.In.z = outPoint->m_Z;
|
||||
m_PostVariations[i]->PrecalcHelper(iterHelper, outPoint);//Apply per-variation precalc.
|
||||
m_PostVariations[i]->PrePostPrecalcHelper(iterHelper);//Apply per-variation precalc.
|
||||
m_PostVariations[i]->Func(iterHelper, *outPoint, rand);
|
||||
WritePost(iterHelper, *outPoint, m_PostVariations[i]->AssignType());
|
||||
}
|
||||
|
||||
@ -268,6 +268,7 @@ public:
|
||||
badParams.push_back("post_scrop_cropmode");
|
||||
badParams.push_back("post_scrop_static");
|
||||
m_BadVariationNames.push_back(make_pair(make_pair(string("post_scrop"), string("post_smartcrop")), badParams));
|
||||
//Note that splits3D can't be done here because it's param names are also used by splits.
|
||||
badParams.clear();
|
||||
m_BadVariationNames.push_back(make_pair(make_pair(string("pre_blur"), string("pre_gaussian_blur")), badParams));//No other special params for these.
|
||||
m_BadVariationNames.push_back(make_pair(make_pair(string("pre_spin_z"), string("pre_rotate_z")), badParams));
|
||||
|
||||
Reference in New Issue
Block a user