mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-01-21 05:00:06 -05:00
--Code changes
-Add vignette variation.
This commit is contained in:
parent
54610ab73d
commit
99cc597abc
@ -6,7 +6,7 @@
|
||||
<ProductVersion>3.7</ProductVersion>
|
||||
<ProjectGuid>{c8096c47-e358-438c-a520-146d46b0637d}</ProjectGuid>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<OutputName>Fractorium_1.0.0.20</OutputName>
|
||||
<OutputName>Fractorium_1.0.0.21</OutputName>
|
||||
<OutputType>Package</OutputType>
|
||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?define ProductVersion="1.0.0.20" ?>
|
||||
<?define ProductVersion="1.0.0.21" ?>
|
||||
<?define ProductName="Fractorium $(var.ProductVersion) ($(var.GpuType))" ?>
|
||||
<?define UpgradeCode="{4714cd15-bfba-44f6-8059-9e1466ebfa6e}"?>
|
||||
<?define Manufacturer="Fractorium"?>
|
||||
@ -13,7 +13,7 @@
|
||||
<!--
|
||||
Change this for every release.
|
||||
-->
|
||||
<?define ProductCode="{A91C2097-2043-4A70-B3E9-F93426567195}"?>
|
||||
<?define ProductCode="{3BDFCE16-0944-4463-B475-82748BDC0AF1}"?>
|
||||
|
||||
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
|
||||
<Package
|
||||
|
Binary file not shown.
@ -49,8 +49,8 @@
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1, 0, 0, 20
|
||||
PRODUCTVERSION 1, 0, 0, 20
|
||||
FILEVERSION 1, 0, 0, 21
|
||||
PRODUCTVERSION 1, 0, 0, 21
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@ -67,12 +67,12 @@
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Open Source"
|
||||
VALUE "FileDescription", "Renders fractal flames as animations with motion blur"
|
||||
VALUE "FileVersion", "1, 0, 0, 20"
|
||||
VALUE "FileVersion", "1, 0, 0, 21"
|
||||
VALUE "InternalName", "EmberAnimate.exe"
|
||||
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2020, GPL v3"
|
||||
VALUE "OriginalFilename", "EmberAnimate.exe"
|
||||
VALUE "ProductName", "Ember Animate"
|
||||
VALUE "ProductVersion", "1, 0, 0, 20"
|
||||
VALUE "ProductVersion", "1, 0, 0, 21"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
Binary file not shown.
@ -49,8 +49,8 @@
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1, 0, 0, 20
|
||||
PRODUCTVERSION 1, 0, 0, 20
|
||||
FILEVERSION 1, 0, 0, 21
|
||||
PRODUCTVERSION 1, 0, 0, 21
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@ -67,12 +67,12 @@
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Open Source"
|
||||
VALUE "FileDescription", "Manipulates fractal flame parameter files"
|
||||
VALUE "FileVersion", "1, 0, 0, 20"
|
||||
VALUE "FileVersion", "1, 0, 0, 21"
|
||||
VALUE "InternalName", "EmberGenome.exe"
|
||||
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2020, GPL v3"
|
||||
VALUE "OriginalFilename", "EmberGenome.exe"
|
||||
VALUE "ProductName", "Ember Genome"
|
||||
VALUE "ProductVersion", "1, 0, 0, 20"
|
||||
VALUE "ProductVersion", "1, 0, 0, 21"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
@ -49,8 +49,8 @@
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1, 0, 0, 20
|
||||
PRODUCTVERSION 1, 0, 0, 20
|
||||
FILEVERSION 1, 0, 0, 21
|
||||
PRODUCTVERSION 1, 0, 0, 21
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@ -67,12 +67,12 @@
|
||||
BEGIN
|
||||
VALUE "CompanyName", "Open Source"
|
||||
VALUE "FileDescription", "Renders fractal flames as single images"
|
||||
VALUE "FileVersion", "1, 0, 0, 20"
|
||||
VALUE "FileVersion", "1, 0, 0, 21"
|
||||
VALUE "InternalName", "EmberRender.exe"
|
||||
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2020, GPL v3"
|
||||
VALUE "OriginalFilename", "EmberRender.exe"
|
||||
VALUE "ProductName", "Ember Render"
|
||||
VALUE "ProductVersion", "1, 0, 0, 20"
|
||||
VALUE "ProductVersion", "1, 0, 0, 21"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
Binary file not shown.
@ -1,4 +1,4 @@
|
||||
1.0.0.20 4/11/2020
|
||||
1.0.0.21 4/11/2020
|
||||
--Bug fixes
|
||||
-ETA time was wrong with incremental final renders after waiting for a period of time.
|
||||
-Fix possible OpenCL bugs in cubic3D, cubicLattice_3D, dc_cube, falloff, falloff2, falloff3, waffle.
|
||||
|
@ -496,6 +496,7 @@ uint Timing::m_ProcessorCount;
|
||||
EXPORTPREPOSTREGVAR(Gnarly, T) \
|
||||
EXPORTPREPOSTREGVAR(Inkdrop, T) \
|
||||
EXPORTPREPOSTREGVAR(HexModulus, T) \
|
||||
EXPORTPREPOSTREGVAR(Vignette, T) \
|
||||
template EMBER_API class VariationList<T>; \
|
||||
template EMBER_API class SpatialFilter<T>; \
|
||||
template EMBER_API class GaussianFilter<T>; \
|
||||
|
@ -37,7 +37,7 @@ static void sincos(float x, float* s, float* c)
|
||||
|
||||
namespace EmberNs
|
||||
{
|
||||
#define EMBER_VERSION "1.0.0.20"
|
||||
#define EMBER_VERSION "1.0.0.21"
|
||||
//#define FLAM3_COMPAT 1//Uncomment this if you want full compatibility with flam3 regarding some of the trig-based variations in Variations01.h
|
||||
#define EPS6 T(1e-6)
|
||||
#define EPS std::numeric_limits<T>::epsilon()//Apoplugin.h uses -20, but it's more mathematically correct to do it this way.
|
||||
|
@ -433,6 +433,7 @@ enum class eVariationId : glm::uint
|
||||
VAR_UNPOLAR ,
|
||||
VAR_VIBRATION,
|
||||
VAR_VIBRATION2,
|
||||
VAR_VIGNETTE,
|
||||
VAR_VORON,
|
||||
VAR_W ,
|
||||
VAR_WAFFLE,
|
||||
@ -849,6 +850,7 @@ enum class eVariationId : glm::uint
|
||||
VAR_PRE_UNPOLAR,
|
||||
VAR_PRE_VIBRATION,
|
||||
VAR_PRE_VIBRATION2,
|
||||
VAR_PRE_VIGNETTE,
|
||||
VAR_PRE_VORON,
|
||||
VAR_PRE_W,
|
||||
VAR_PRE_WAFFLE,
|
||||
@ -1265,6 +1267,7 @@ enum class eVariationId : glm::uint
|
||||
VAR_POST_UNPOLAR,
|
||||
VAR_POST_VIBRATION,
|
||||
VAR_POST_VIBRATION2,
|
||||
VAR_POST_VIGNETTE,
|
||||
VAR_POST_VORON,
|
||||
VAR_POST_W,
|
||||
VAR_POST_WAFFLE,
|
||||
|
@ -439,6 +439,7 @@ VariationList<T>::VariationList()
|
||||
ADDPREPOSTREGVAR(Gnarly)
|
||||
ADDPREPOSTREGVAR(Inkdrop)
|
||||
ADDPREPOSTREGVAR(HexModulus)
|
||||
ADDPREPOSTREGVAR(Vignette)
|
||||
//ADDPREPOSTREGVAR(LinearXZ)
|
||||
//ADDPREPOSTREGVAR(LinearYZ)
|
||||
//DC are special.
|
||||
|
@ -7564,6 +7564,199 @@ private:
|
||||
T m_Yfact001;//Precalc.
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// vignette by Bezo97.
|
||||
/// </summary>
|
||||
template <typename T>
|
||||
class VignetteVariation : public ParametricVariation<T>
|
||||
{
|
||||
public:
|
||||
VignetteVariation(T weight = 1.0) : ParametricVariation<T>("vignette", eVariationId::VAR_VIGNETTE, weight)
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
PARVARCOPY(VignetteVariation)
|
||||
|
||||
virtual void Func(IteratorHelper<T>& helper, Point<T>& outPoint, QTIsaac<ISAAC_SIZE, ISAAC_INT>& rand) override
|
||||
{
|
||||
T px = helper.In.x;
|
||||
T py = helper.In.y;
|
||||
T dist = std::sqrt((px - m_Posx) * (px - m_Posx) + (py - m_Posy) * (py - m_Posy));
|
||||
|
||||
if (dist < m_InnerabsPrecalc)
|
||||
{
|
||||
helper.Out.z = DefaultZ(helper);
|
||||
|
||||
//middle part
|
||||
if (m_Innerradius < 0.0)
|
||||
{
|
||||
helper.Out.x = 0;
|
||||
helper.Out.y = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
helper.Out.x = px * m_Weight;
|
||||
helper.Out.y = py * m_Weight;
|
||||
return;
|
||||
}
|
||||
|
||||
//map to 0-1
|
||||
dist = (dist - m_InnerabsPrecalc) / m_FadeabsPrecalc;
|
||||
T fade = T(1.0) - std::pow(rand.Frand01<T>(), m_PowerhelperPrecalc);
|
||||
T blur_r = m_Blur * std::pow(dist * rand.Frand01<T>(), T(2.0));
|
||||
T blur_a = rand.Frand01<T>() * M_2PI;
|
||||
|
||||
if (m_Faderadius > 0)
|
||||
{
|
||||
//vignette
|
||||
if (fade < dist)
|
||||
{
|
||||
px = 0;
|
||||
py = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
px += blur_r * std::cos(blur_a);
|
||||
py += blur_r * std::sin(blur_a);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//inverse vignette
|
||||
if (1 - fade > dist)
|
||||
{
|
||||
px = 0;
|
||||
py = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
px += blur_r * std::cos(blur_a);
|
||||
py += blur_r * std::sin(blur_a);
|
||||
}
|
||||
}
|
||||
|
||||
helper.Out.x = px * m_Weight;
|
||||
helper.Out.y = py * m_Weight;
|
||||
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 weight = WeightDefineString();
|
||||
string posx = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string posy = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string innerradius = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string faderadius = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string power = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string blur = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string innerabsprecalc = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string fadeabsprecalc = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
string powerhelperprecalc = "parVars[" + ToUpper(m_Params[i++].Name()) + index;
|
||||
ss << "\t{\n"
|
||||
<< "\t\treal_t px = vIn.x;\n"
|
||||
<< "\t\treal_t py = vIn.y;\n"
|
||||
<< "\t\treal_t dist = sqrt((px - " << posx << ") * (px - " << posx << ") + (py - " << posy << ") * (py - " << posy << "));\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (dist < " << innerabsprecalc << ")\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\n"
|
||||
<< "\t\t\tif (" << innerradius << " < (real_t)(0.0))\n"
|
||||
<< "\t\t\t{\n"
|
||||
<< "\t\t\t\tvOut.x = (real_t)(0.0);\n"
|
||||
<< "\t\t\t\tvOut.y = (real_t)(0.0);\n"
|
||||
<< "\t\t\t\treturn;\n"
|
||||
<< "\t\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\t\tvOut.x = px * " << weight << ";\n"
|
||||
<< "\t\t\tvOut.y = py * " << weight << ";\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tdist = (dist - " << innerabsprecalc << ") / " << fadeabsprecalc << ";\n"
|
||||
<< "\n"
|
||||
<< "\t\treal_t fade = (real_t)(1.0) - pow(MwcNext01(mwc), " << powerhelperprecalc << ");\n"
|
||||
<< "\t\treal_t blur_r = " << blur << " * pow(dist * MwcNext01(mwc), (real_t)(2.0));\n"
|
||||
<< "\t\treal_t blur_a = MwcNext01(mwc) * M_2PI;\n"
|
||||
<< "\n"
|
||||
<< "\t\tif (" << faderadius << " > 0.0)\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t\tif (fade < dist)\n"
|
||||
<< "\t\t\t{\n"
|
||||
<< "\t\t\t\tpx = (real_t)(0.0);\n"
|
||||
<< "\t\t\t\tpy = (real_t)(0.0);\n"
|
||||
<< "\t\t\t}\n"
|
||||
<< "\t\t\telse\n"
|
||||
<< "\t\t\t{\n"
|
||||
<< "\t\t\t\tpx += blur_r * cos(blur_a);\n"
|
||||
<< "\t\t\t\tpy += blur_r * sin(blur_a);\n"
|
||||
<< "\t\t\t}\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\t\telse\n"
|
||||
<< "\t\t{\n"
|
||||
<< "\t\t\tif (1 - fade > dist)\n"
|
||||
<< "\t\t\t{\n"
|
||||
<< "\t\t\t\tpx = (real_t)(0.0);\n"
|
||||
<< "\t\t\t\tpy = (real_t)(0.0);\n"
|
||||
<< "\t\t\t}\n"
|
||||
<< "\t\t\telse\n"
|
||||
<< "\t\t\t{\n"
|
||||
<< "\t\t\t\tpx += blur_r * cos(blur_a);\n"
|
||||
<< "\t\t\t\tpy += blur_r * sin(blur_a);\n"
|
||||
<< "\t\t\t}\n"
|
||||
<< "\t\t}\n"
|
||||
<< "\n"
|
||||
<< "\t\tvOut.x = px * " << weight << ";\n"
|
||||
<< "\t\tvOut.y = py * " << weight << ";\n"
|
||||
<< "\t\tvOut.z = " << DefaultZCl()
|
||||
<< "\t}\n";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
virtual void Precalc() override
|
||||
{
|
||||
m_InnerabsPrecalc = std::abs(m_Innerradius);
|
||||
m_FadeabsPrecalc = std::abs(m_Faderadius);
|
||||
m_PowerhelperPrecalc = T(1.0) / std::abs(m_Power);
|
||||
}
|
||||
|
||||
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_Posx, prefix + "vignette_posx"));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Posy, prefix + "vignette_posy"));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Innerradius, prefix + "vignette_inner_radius", T(0.5)));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Faderadius, prefix + "vignette_fade_radius", T(0.5), eParamType::REAL_NONZERO));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Power, prefix + "vignette_power", T(4.0), eParamType::REAL_NONZERO));
|
||||
m_Params.push_back(ParamWithName<T>(&m_Blur, prefix + "vignette_blur", T(1.0)));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_InnerabsPrecalc, prefix + "vignette_inner_abs_precalc"));//Precalc.
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_FadeabsPrecalc, prefix + "vignette_fade_abs_precalc"));
|
||||
m_Params.push_back(ParamWithName<T>(true, &m_PowerhelperPrecalc, prefix + "vignette_power_helper_precalc"));
|
||||
}
|
||||
|
||||
private:
|
||||
T m_Posx;
|
||||
T m_Posy;
|
||||
T m_Innerradius;
|
||||
T m_Faderadius;
|
||||
T m_Power;
|
||||
T m_Blur;
|
||||
T m_InnerabsPrecalc;//Precalc.
|
||||
T m_FadeabsPrecalc;
|
||||
T m_PowerhelperPrecalc;
|
||||
};
|
||||
|
||||
MAKEPREPOSTPARVAR(Splits3D, splits3D, SPLITS3D)
|
||||
MAKEPREPOSTPARVAR(Waves2B, waves2b, WAVES2B)
|
||||
MAKEPREPOSTPARVAR(JacCn, jac_cn, JAC_CN)
|
||||
@ -7634,4 +7827,5 @@ MAKEPREPOSTPARVAR(Waves23, waves23, WAVES23)
|
||||
MAKEPREPOSTPARVAR(Waves42, waves42, WAVES42)
|
||||
MAKEPREPOSTPARVAR(Waves3, waves3, WAVES3)
|
||||
MAKEPREPOSTPARVAR(Waves4, waves4, WAVES4)
|
||||
MAKEPREPOSTPARVAR(Vignette, vignette, VIGNETTE)
|
||||
}
|
||||
|
@ -58,7 +58,7 @@
|
||||
<enum>QFrame::NoFrame</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><html><head/><body><p align="center"><span style=" font-size:10pt;">Fractorium 1.0.0.20</span></p><p align="center"><span style=" font-size:10pt;">A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm named Ember and a GPU capable version named EmberCL which implements a portion of the cuburn algorithm in OpenCL.</span></p><p align="center"><a href="http://fractorium.com"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">fractorium.com</span></a></p></body></html></string>
|
||||
<string><html><head/><body><p align="center"><span style=" font-size:10pt;">Fractorium 1.0.0.21</span></p><p align="center"><span style=" font-size:10pt;">A Qt-based fractal flame editor which uses a C++ re-write of the flam3 algorithm named Ember and a GPU capable version named EmberCL which implements a portion of the cuburn algorithm in OpenCL.</span></p><p align="center"><a href="http://fractorium.com"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">fractorium.com</span></a></p></body></html></string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::RichText</enum>
|
||||
|
Loading…
Reference in New Issue
Block a user