mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-01-21 21:20:07 -05:00
0.4.0.7 Beta 07/26/2014
0.4.0.7 Beta 07/26/2014 --User Changes Color code xforms like Apo does. Change other aspects of xform color drawing. Add option to invert the Y axis to both the options final render dialogs. Coordinate Y axis setting with preview renders. Add option to show all xforms when dragging. Previously, only the current one was shown. Make final render dialog appear in the middle of the screen. Immediately draw yellow selection dot on mouse down. --Bug Fixes Resize final render dialog vertically if it's taller than the 90% of the desktop area.
This commit is contained in:
parent
ed8850e3db
commit
d9d676393c
@ -6,7 +6,7 @@
|
|||||||
<ProductVersion>3.7</ProductVersion>
|
<ProductVersion>3.7</ProductVersion>
|
||||||
<ProjectGuid>{c8096c47-e358-438c-a520-146d46b0637d}</ProjectGuid>
|
<ProjectGuid>{c8096c47-e358-438c-a520-146d46b0637d}</ProjectGuid>
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
<SchemaVersion>2.0</SchemaVersion>
|
||||||
<OutputName>Fractorium_Beta_0.4.0.6</OutputName>
|
<OutputName>Fractorium_Beta_0.4.0.7</OutputName>
|
||||||
<OutputType>Package</OutputType>
|
<OutputType>Package</OutputType>
|
||||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
||||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\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"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||||
<?define ProductVersion="0.4.0.6" ?>
|
<?define ProductVersion="0.4.0.7" ?>
|
||||||
<?define ProductName="Fractorium Beta $(var.ProductVersion) ($(var.GpuType))" ?>
|
<?define ProductName="Fractorium Beta $(var.ProductVersion) ($(var.GpuType))" ?>
|
||||||
<?define UpgradeCode="{4714cd15-bfba-44f6-8059-9e1466ebfa6e}"?>
|
<?define UpgradeCode="{4714cd15-bfba-44f6-8059-9e1466ebfa6e}"?>
|
||||||
<?define Manufacturer="Fractorium"?>
|
<?define Manufacturer="Fractorium"?>
|
||||||
@ -13,7 +13,7 @@
|
|||||||
<!--
|
<!--
|
||||||
Change this for every release.
|
Change this for every release.
|
||||||
-->
|
-->
|
||||||
<?define ProductCode="{16DA4191-1391-40D5-BA37-C4BC0ADED012}"?>
|
<?define ProductCode="{CA02C021-90D4-45F4-84C0-01E18E2474F3}"?>
|
||||||
|
|
||||||
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
|
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
|
||||||
<Package
|
<Package
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
0.4.0.7 Beta 07/26/2014
|
||||||
|
--User Changes
|
||||||
|
Color code xforms like Apo does.
|
||||||
|
Change other aspects of xform color drawing.
|
||||||
|
Add option to invert the Y axis to both the options final render dialogs.
|
||||||
|
Coordinate Y axis setting with preview renders.
|
||||||
|
Add option to show all xforms when dragging. Previously, only the current one was shown.
|
||||||
|
Make final render dialog appear in the middle of the screen.
|
||||||
|
Immediately draw yellow selection dot on mouse down.
|
||||||
|
|
||||||
|
--Bug Fixes
|
||||||
|
Resize final render dialog vertically if it's taller than the 90% of the desktop area.
|
||||||
|
|
||||||
0.4.0.6 Beta 07/22/2014
|
0.4.0.6 Beta 07/22/2014
|
||||||
--User Changes
|
--User Changes
|
||||||
Place certain areas of the UI on scroll panels so they are not obscured on low resolution monitors.
|
Place certain areas of the UI on scroll panels so they are not obscured on low resolution monitors.
|
||||||
|
@ -25,7 +25,7 @@ namespace EmberNs
|
|||||||
extern void sincos(double x, double *s, double *c);
|
extern void sincos(double x, double *s, double *c);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define EMBER_VERSION "0.4.0.6"
|
#define EMBER_VERSION "0.4.0.7"
|
||||||
#define EPS6 T(1e-6)
|
#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.
|
#define EPS std::numeric_limits<T>::epsilon()//Apoplugin.h uses -20, but it's more mathematically correct to do it this way.
|
||||||
#define ISAAC_SIZE 4
|
#define ISAAC_SIZE 4
|
||||||
|
@ -13,6 +13,7 @@ Renderer<T, bucketT>::Renderer()
|
|||||||
m_Abort = false;
|
m_Abort = false;
|
||||||
m_LockAccum = false;
|
m_LockAccum = false;
|
||||||
m_EarlyClip = false;
|
m_EarlyClip = false;
|
||||||
|
m_YAxisUp = false;
|
||||||
m_InsertPalette = false;
|
m_InsertPalette = false;
|
||||||
m_ReclaimOnResize = false;
|
m_ReclaimOnResize = false;
|
||||||
m_SubBatchSize = 1024 * 10;
|
m_SubBatchSize = 1024 * 10;
|
||||||
@ -1451,7 +1452,7 @@ eRenderStatus Renderer<T, bucketT>::AccumulatorToFinalImage(unsigned char* pixel
|
|||||||
parallel_for((unsigned int)0, FinalRasH(), [&] (unsigned int j)
|
parallel_for((unsigned int)0, FinalRasH(), [&] (unsigned int j)
|
||||||
{
|
{
|
||||||
Color<bucketT> newBucket;
|
Color<bucketT> newBucket;
|
||||||
int pixelsRowStart = j * FinalRowSize();//Pull out of inner loop for optimization.
|
int pixelsRowStart = (m_YAxisUp ? ((FinalRasH() - j) - 1) : j) * FinalRowSize();//Pull out of inner loop for optimization.
|
||||||
unsigned int y = m_DensityFilterOffset + (j * Supersample());//Start at the beginning row of each super sample block.
|
unsigned int y = m_DensityFilterOffset + (j * Supersample());//Start at the beginning row of each super sample block.
|
||||||
unsigned short* p16;
|
unsigned short* p16;
|
||||||
|
|
||||||
@ -1755,6 +1756,24 @@ void Renderer<T, bucketT>::EarlyClip(bool earlyClip)
|
|||||||
ChangeVal([&] { m_EarlyClip = earlyClip; }, FILTER_AND_ACCUM);
|
ChangeVal([&] { m_EarlyClip = earlyClip; }, FILTER_AND_ACCUM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get whether the positive Y coordinate of the final output image is up.
|
||||||
|
/// Default: false.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>True if up, else false.</returns>
|
||||||
|
template <typename T, typename bucketT>
|
||||||
|
bool Renderer<T, bucketT>::YAxisUp() const { return m_YAxisUp; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set whether the positive Y axis of the final output image is up.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="yup">True if the positive y axis is up, else false.</param>
|
||||||
|
template <typename T, typename bucketT>
|
||||||
|
void Renderer<T, bucketT>::YAxisUp(bool yup)
|
||||||
|
{
|
||||||
|
ChangeVal([&] { m_YAxisUp = yup; }, ACCUM_ONLY);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get whether to insert the palette as a block of colors in the final output image.
|
/// Get whether to insert the palette as a block of colors in the final output image.
|
||||||
/// This is useful for debugging palette issues.
|
/// This is useful for debugging palette issues.
|
||||||
|
@ -111,6 +111,8 @@ public:
|
|||||||
virtual void ReclaimOnResize(bool reclaimOnResize) { }
|
virtual void ReclaimOnResize(bool reclaimOnResize) { }
|
||||||
virtual bool EarlyClip() const { return false; }
|
virtual bool EarlyClip() const { return false; }
|
||||||
virtual void EarlyClip(bool earlyClip) { }
|
virtual void EarlyClip(bool earlyClip) { }
|
||||||
|
virtual bool YAxisUp() const { return false; }
|
||||||
|
virtual void YAxisUp(bool yup) { }
|
||||||
virtual void ThreadCount(unsigned int threads, const char* seedString = NULL) { }
|
virtual void ThreadCount(unsigned int threads, const char* seedString = NULL) { }
|
||||||
virtual void Transparency(bool transparency) { }
|
virtual void Transparency(bool transparency) { }
|
||||||
virtual void InteractiveFilter(eInteractiveFilter filter) { }
|
virtual void InteractiveFilter(eInteractiveFilter filter) { }
|
||||||
@ -221,6 +223,9 @@ public:
|
|||||||
virtual bool EarlyClip() const;
|
virtual bool EarlyClip() const;
|
||||||
virtual void EarlyClip(bool earlyClip);
|
virtual void EarlyClip(bool earlyClip);
|
||||||
|
|
||||||
|
virtual bool YAxisUp() const;
|
||||||
|
virtual void YAxisUp(bool yup);
|
||||||
|
|
||||||
inline bool InsertPalette() const;
|
inline bool InsertPalette() const;
|
||||||
void InsertPalette(bool insertPalette);
|
void InsertPalette(bool insertPalette);
|
||||||
|
|
||||||
@ -335,6 +340,7 @@ private:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool m_EarlyClip;
|
bool m_EarlyClip;
|
||||||
|
bool m_YAxisUp;
|
||||||
bool m_Transparency;
|
bool m_Transparency;
|
||||||
unsigned int m_SuperRasW;
|
unsigned int m_SuperRasW;
|
||||||
unsigned int m_SuperRasH;
|
unsigned int m_SuperRasH;
|
||||||
|
@ -49,8 +49,8 @@ END
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 0,4,0,6
|
FILEVERSION 0,4,0,7
|
||||||
PRODUCTVERSION 0,4,0,6
|
PRODUCTVERSION 0,4,0,7
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -67,12 +67,12 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Open Source"
|
VALUE "CompanyName", "Open Source"
|
||||||
VALUE "FileDescription", "Renders fractal flames as animations with motion blur"
|
VALUE "FileDescription", "Renders fractal flames as animations with motion blur"
|
||||||
VALUE "FileVersion", "0.4.0.6"
|
VALUE "FileVersion", "0.4.0.7"
|
||||||
VALUE "InternalName", "EmberAnimate.rc"
|
VALUE "InternalName", "EmberAnimate.rc"
|
||||||
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2013, GPL v3"
|
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2013, GPL v3"
|
||||||
VALUE "OriginalFilename", "EmberAnimate.rc"
|
VALUE "OriginalFilename", "EmberAnimate.rc"
|
||||||
VALUE "ProductName", "Ember Animate"
|
VALUE "ProductName", "Ember Animate"
|
||||||
VALUE "ProductVersion", "0.4.0.6"
|
VALUE "ProductVersion", "0.4.0.7"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -313,6 +313,7 @@ struct ALIGN SpatialFilterCL
|
|||||||
unsigned int m_BytesPerChannel;
|
unsigned int m_BytesPerChannel;
|
||||||
unsigned int m_DensityFilterOffset;
|
unsigned int m_DensityFilterOffset;
|
||||||
unsigned int m_Transparency;
|
unsigned int m_Transparency;
|
||||||
|
unsigned int m_YAxisUp;
|
||||||
T m_Vibrancy;
|
T m_Vibrancy;
|
||||||
T m_HighlightPower;
|
T m_HighlightPower;
|
||||||
T m_Gamma;
|
T m_Gamma;
|
||||||
@ -337,6 +338,7 @@ static const char* SpatialFilterCLStructString =
|
|||||||
" uint m_BytesPerChannel;\n"
|
" uint m_BytesPerChannel;\n"
|
||||||
" uint m_DensityFilterOffset;\n"
|
" uint m_DensityFilterOffset;\n"
|
||||||
" uint m_Transparency;\n"
|
" uint m_Transparency;\n"
|
||||||
|
" uint m_YAxisUp;\n"
|
||||||
" real_t m_Vibrancy;\n"
|
" real_t m_Vibrancy;\n"
|
||||||
" real_t m_HighlightPower;\n"
|
" real_t m_HighlightPower;\n"
|
||||||
" real_t m_Gamma;\n"
|
" real_t m_Gamma;\n"
|
||||||
|
@ -65,7 +65,7 @@ template <typename T> string FinalAccumOpenCLKernelCreator<T>::FinalAccumLateCli
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
string FinalAccumOpenCLKernelCreator<T>::GammaCorrectionEntryPoint(unsigned int channels, bool transparency)
|
string FinalAccumOpenCLKernelCreator<T>::GammaCorrectionEntryPoint(unsigned int channels, bool transparency)
|
||||||
{
|
{
|
||||||
bool alphaCalc = (channels > 3 && transparency);
|
bool alphaCalc = ((channels > 3) && transparency);
|
||||||
return alphaCalc ? m_GammaCorrectionWithAlphaCalcEntryPoint : m_GammaCorrectionWithoutAlphaCalcEntryPoint;
|
return alphaCalc ? m_GammaCorrectionWithAlphaCalcEntryPoint : m_GammaCorrectionWithoutAlphaCalcEntryPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ string FinalAccumOpenCLKernelCreator<T>::GammaCorrectionEntryPoint(unsigned int
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
string FinalAccumOpenCLKernelCreator<T>::GammaCorrectionKernel(unsigned int channels, bool transparency)
|
string FinalAccumOpenCLKernelCreator<T>::GammaCorrectionKernel(unsigned int channels, bool transparency)
|
||||||
{
|
{
|
||||||
bool alphaCalc = (channels > 3 && transparency);
|
bool alphaCalc = ((channels > 3) && transparency);
|
||||||
return alphaCalc ? m_GammaCorrectionWithAlphaCalcKernel : m_GammaCorrectionWithoutAlphaCalcKernel;
|
return alphaCalc ? m_GammaCorrectionWithAlphaCalcKernel : m_GammaCorrectionWithoutAlphaCalcKernel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ string FinalAccumOpenCLKernelCreator<T>::GammaCorrectionKernel(unsigned int chan
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
string FinalAccumOpenCLKernelCreator<T>::FinalAccumEntryPoint(bool earlyClip, unsigned int channels, bool transparency, T& alphaBase, T& alphaScale)
|
string FinalAccumOpenCLKernelCreator<T>::FinalAccumEntryPoint(bool earlyClip, unsigned int channels, bool transparency, T& alphaBase, T& alphaScale)
|
||||||
{
|
{
|
||||||
bool alphaCalc = (channels > 3 && transparency);
|
bool alphaCalc = ((channels > 3) && transparency);
|
||||||
bool alphaAccum = channels > 3;
|
bool alphaAccum = channels > 3;
|
||||||
|
|
||||||
if (alphaAccum)
|
if (alphaAccum)
|
||||||
@ -241,10 +241,9 @@ string FinalAccumOpenCLKernelCreator<T>::CreateFinalAccumKernelString(bool early
|
|||||||
"\n"
|
"\n"
|
||||||
" unsigned int accumX = spatialFilter->m_DensityFilterOffset + (GLOBAL_ID_X * spatialFilter->m_Supersample);\n"
|
" unsigned int accumX = spatialFilter->m_DensityFilterOffset + (GLOBAL_ID_X * spatialFilter->m_Supersample);\n"
|
||||||
" unsigned int accumY = spatialFilter->m_DensityFilterOffset + (GLOBAL_ID_Y * spatialFilter->m_Supersample);\n"
|
" unsigned int accumY = spatialFilter->m_DensityFilterOffset + (GLOBAL_ID_Y * spatialFilter->m_Supersample);\n"
|
||||||
|
|
||||||
" int2 finalCoord;\n"
|
" int2 finalCoord;\n"
|
||||||
" finalCoord.x = GLOBAL_ID_X;\n"
|
" finalCoord.x = GLOBAL_ID_X;\n"
|
||||||
" finalCoord.y = GLOBAL_ID_Y;\n"
|
" finalCoord.y = (int)((spatialFilter->m_YAxisUp == 1) ? ((spatialFilter->m_FinalRasH - GLOBAL_ID_Y) - 1) : GLOBAL_ID_Y);\n"
|
||||||
" float4floats finalColor;\n"
|
" float4floats finalColor;\n"
|
||||||
" real_t alpha, ls;\n"
|
" real_t alpha, ls;\n"
|
||||||
" int ii, jj;\n"
|
" int ii, jj;\n"
|
||||||
|
@ -1250,6 +1250,7 @@ SpatialFilterCL<T> RendererCL<T>::ConvertSpatialFilter()
|
|||||||
filterCL.m_BytesPerChannel = BytesPerChannel();
|
filterCL.m_BytesPerChannel = BytesPerChannel();
|
||||||
filterCL.m_DensityFilterOffset = DensityFilterOffset();
|
filterCL.m_DensityFilterOffset = DensityFilterOffset();
|
||||||
filterCL.m_Transparency = Transparency();
|
filterCL.m_Transparency = Transparency();
|
||||||
|
filterCL.m_YAxisUp = (unsigned int)m_YAxisUp;
|
||||||
filterCL.m_Vibrancy = vibrancy;
|
filterCL.m_Vibrancy = vibrancy;
|
||||||
filterCL.m_HighlightPower = HighlightPower();
|
filterCL.m_HighlightPower = HighlightPower();
|
||||||
filterCL.m_Gamma = g;
|
filterCL.m_Gamma = g;
|
||||||
|
@ -49,8 +49,8 @@ END
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 0,4,0,6
|
FILEVERSION 0,4,0,7
|
||||||
PRODUCTVERSION 0,4,0,6
|
PRODUCTVERSION 0,4,0,7
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -67,12 +67,12 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Open Source"
|
VALUE "CompanyName", "Open Source"
|
||||||
VALUE "FileDescription", "Manipulates fractal flames parameter files"
|
VALUE "FileDescription", "Manipulates fractal flames parameter files"
|
||||||
VALUE "FileVersion", "0.4.0.6"
|
VALUE "FileVersion", "0.4.0.7"
|
||||||
VALUE "InternalName", "EmberGenome.rc"
|
VALUE "InternalName", "EmberGenome.rc"
|
||||||
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2013, GPL v3"
|
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2013, GPL v3"
|
||||||
VALUE "OriginalFilename", "EmberGenome.rc"
|
VALUE "OriginalFilename", "EmberGenome.rc"
|
||||||
VALUE "ProductName", "Ember Genome"
|
VALUE "ProductName", "Ember Genome"
|
||||||
VALUE "ProductVersion", "0.4.0.6"
|
VALUE "ProductVersion", "0.4.0.7"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -49,8 +49,8 @@ END
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 0,4,0,6
|
FILEVERSION 0,4,0,7
|
||||||
PRODUCTVERSION 0,4,0,6
|
PRODUCTVERSION 0,4,0,7
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
@ -67,12 +67,12 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Open Source"
|
VALUE "CompanyName", "Open Source"
|
||||||
VALUE "FileDescription", "Renders fractal flames as single images"
|
VALUE "FileDescription", "Renders fractal flames as single images"
|
||||||
VALUE "FileVersion", "0.4.0.6"
|
VALUE "FileVersion", "0.4.0.7"
|
||||||
VALUE "InternalName", "EmberRender.rc"
|
VALUE "InternalName", "EmberRender.rc"
|
||||||
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2013, GPL v3"
|
VALUE "LegalCopyright", "Copyright (C) Matt Feemster 2013, GPL v3"
|
||||||
VALUE "OriginalFilename", "EmberRender.rc"
|
VALUE "OriginalFilename", "EmberRender.rc"
|
||||||
VALUE "ProductName", "Ember Render"
|
VALUE "ProductName", "Ember Render"
|
||||||
VALUE "ProductVersion", "0.4.0.6"
|
VALUE "ProductVersion", "0.4.0.7"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
</font>
|
</font>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string><html><head/><body><p align="center"><br/><span style=" font-size:12pt;">Fractorium 0.4.0.6 Beta</span></p><p align="center"><span style=" font-size:10pt;"><br/>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"><span style=" font-size:10pt;">Matt Feemster</span></p></body></html></string>
|
<string><html><head/><body><p align="center"><br/><span style=" font-size:12pt;">Fractorium 0.4.0.7 Beta</span></p><p align="center"><span style=" font-size:10pt;"><br/>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"><span style=" font-size:10pt;">Matt Feemster</span></p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
<property name="textFormat">
|
<property name="textFormat">
|
||||||
<enum>Qt::RichText</enum>
|
<enum>Qt::RichText</enum>
|
||||||
|
@ -25,6 +25,7 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* set
|
|||||||
m_Settings = settings;
|
m_Settings = settings;
|
||||||
ui.FinalRenderThreadCountSpin->setRange(1, Timing::ProcessorCount());
|
ui.FinalRenderThreadCountSpin->setRange(1, Timing::ProcessorCount());
|
||||||
connect(ui.FinalRenderEarlyClipCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnEarlyClipCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
connect(ui.FinalRenderEarlyClipCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnEarlyClipCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
||||||
|
connect(ui.FinalRenderYAxisUpCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnYAxisUpCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
||||||
connect(ui.FinalRenderTransparencyCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnTransparencyCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
connect(ui.FinalRenderTransparencyCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnTransparencyCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
||||||
connect(ui.FinalRenderOpenCLCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnOpenCLCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
connect(ui.FinalRenderOpenCLCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnOpenCLCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
||||||
connect(ui.FinalRenderDoublePrecisionCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnDoublePrecisionCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
connect(ui.FinalRenderDoublePrecisionCheckBox, SIGNAL(stateChanged(int)), this, SLOT(OnDoublePrecisionCheckBoxStateChanged(int)), Qt::QueuedConnection);
|
||||||
@ -87,6 +88,7 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* set
|
|||||||
}
|
}
|
||||||
|
|
||||||
ui.FinalRenderEarlyClipCheckBox->setChecked( m_Settings->FinalEarlyClip());
|
ui.FinalRenderEarlyClipCheckBox->setChecked( m_Settings->FinalEarlyClip());
|
||||||
|
ui.FinalRenderYAxisUpCheckBox->setChecked( m_Settings->FinalYAxisUp());
|
||||||
ui.FinalRenderTransparencyCheckBox->setChecked( m_Settings->FinalTransparency());
|
ui.FinalRenderTransparencyCheckBox->setChecked( m_Settings->FinalTransparency());
|
||||||
ui.FinalRenderDoublePrecisionCheckBox->setChecked(m_Settings->FinalDouble());
|
ui.FinalRenderDoublePrecisionCheckBox->setChecked(m_Settings->FinalDouble());
|
||||||
ui.FinalRenderSaveXmlCheckBox->setChecked( m_Settings->FinalSaveXml());
|
ui.FinalRenderSaveXmlCheckBox->setChecked( m_Settings->FinalSaveXml());
|
||||||
@ -111,6 +113,12 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* set
|
|||||||
//Explicitly call these to enable/disable the appropriate controls.
|
//Explicitly call these to enable/disable the appropriate controls.
|
||||||
OnOpenCLCheckBoxStateChanged(ui.FinalRenderOpenCLCheckBox->isChecked());
|
OnOpenCLCheckBoxStateChanged(ui.FinalRenderOpenCLCheckBox->isChecked());
|
||||||
OnDoAllCheckBoxStateChanged(ui.FinalRenderDoAllCheckBox->isChecked());
|
OnDoAllCheckBoxStateChanged(ui.FinalRenderDoAllCheckBox->isChecked());
|
||||||
|
|
||||||
|
QSize s = size();
|
||||||
|
int desktopHeight = qApp->desktop()->availableGeometry().height();
|
||||||
|
|
||||||
|
s.setHeight(min(s.height(), (int)((double)desktopHeight * 0.90)));
|
||||||
|
setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, s, qApp->desktop()->availableGeometry()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -118,6 +126,7 @@ FractoriumFinalRenderDialog::FractoriumFinalRenderDialog(FractoriumSettings* set
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
bool FractoriumFinalRenderDialog::EarlyClip() { return ui.FinalRenderEarlyClipCheckBox->isChecked(); }
|
bool FractoriumFinalRenderDialog::EarlyClip() { return ui.FinalRenderEarlyClipCheckBox->isChecked(); }
|
||||||
|
bool FractoriumFinalRenderDialog::YAxisUp() { return ui.FinalRenderYAxisUpCheckBox->isChecked(); }
|
||||||
bool FractoriumFinalRenderDialog::Transparency() { return ui.FinalRenderTransparencyCheckBox->isChecked(); }
|
bool FractoriumFinalRenderDialog::Transparency() { return ui.FinalRenderTransparencyCheckBox->isChecked(); }
|
||||||
bool FractoriumFinalRenderDialog::OpenCL() { return ui.FinalRenderOpenCLCheckBox->isChecked(); }
|
bool FractoriumFinalRenderDialog::OpenCL() { return ui.FinalRenderOpenCLCheckBox->isChecked(); }
|
||||||
bool FractoriumFinalRenderDialog::Double() { return ui.FinalRenderDoublePrecisionCheckBox->isChecked(); }
|
bool FractoriumFinalRenderDialog::Double() { return ui.FinalRenderDoublePrecisionCheckBox->isChecked(); }
|
||||||
@ -149,6 +158,7 @@ FinalRenderGuiState FractoriumFinalRenderDialog::State()
|
|||||||
FinalRenderGuiState state;
|
FinalRenderGuiState state;
|
||||||
|
|
||||||
state.m_EarlyClip = EarlyClip();
|
state.m_EarlyClip = EarlyClip();
|
||||||
|
state.m_YAxisUp = YAxisUp();
|
||||||
state.m_Transparency = Transparency();
|
state.m_Transparency = Transparency();
|
||||||
state.m_OpenCL = OpenCL();
|
state.m_OpenCL = OpenCL();
|
||||||
state.m_Double = Double();
|
state.m_Double = Double();
|
||||||
@ -223,6 +233,15 @@ void FractoriumFinalRenderDialog::OnEarlyClipCheckBoxStateChanged(int state)
|
|||||||
SetMemory();
|
SetMemory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether the positive Y axis of the final output image is up.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="yup">True if the positive y axis is up, else false.</param>
|
||||||
|
void FractoriumFinalRenderDialog::OnYAxisUpCheckBoxStateChanged(int state)
|
||||||
|
{
|
||||||
|
SetMemory();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether to use transparency in png images.
|
/// Whether to use transparency in png images.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -45,6 +45,7 @@ class FractoriumFinalRenderDialog : public QDialog
|
|||||||
public:
|
public:
|
||||||
FractoriumFinalRenderDialog(FractoriumSettings* settings, QWidget* parent, Qt::WindowFlags f = 0);
|
FractoriumFinalRenderDialog(FractoriumSettings* settings, QWidget* parent, Qt::WindowFlags f = 0);
|
||||||
bool EarlyClip();
|
bool EarlyClip();
|
||||||
|
bool YAxisUp();
|
||||||
bool Transparency();
|
bool Transparency();
|
||||||
bool OpenCL();
|
bool OpenCL();
|
||||||
bool Double();
|
bool Double();
|
||||||
@ -72,6 +73,7 @@ public:
|
|||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
void MoveCursorToEnd();
|
void MoveCursorToEnd();
|
||||||
void OnEarlyClipCheckBoxStateChanged(int state);
|
void OnEarlyClipCheckBoxStateChanged(int state);
|
||||||
|
void OnYAxisUpCheckBoxStateChanged(int state);
|
||||||
void OnTransparencyCheckBoxStateChanged(int state);
|
void OnTransparencyCheckBoxStateChanged(int state);
|
||||||
void OnOpenCLCheckBoxStateChanged(int state);
|
void OnOpenCLCheckBoxStateChanged(int state);
|
||||||
void OnDoublePrecisionCheckBoxStateChanged(int state);
|
void OnDoublePrecisionCheckBoxStateChanged(int state);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>519</width>
|
<width>519</width>
|
||||||
<height>801</height>
|
<height>813</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -61,7 +61,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>507</width>
|
<width>507</width>
|
||||||
<height>789</height>
|
<height>801</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
@ -82,77 +82,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<layout class="QGridLayout" name="gridLayout" columnstretch="0,0">
|
<layout class="QGridLayout" name="gridLayout" columnstretch="0,0">
|
||||||
<item row="1" column="1">
|
<item row="5" column="0">
|
||||||
<widget class="QCheckBox" name="FinalRenderDoAllCheckBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Render all open flames instead of just the current one</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Render All</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QCheckBox" name="FinalRenderDoSequenceCheckBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Use temporal samples value to achieve motion blur effect between flames</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Render as Animation Sequence</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QCheckBox" name="FinalRenderDoublePrecisionCheckBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Checked: use 64-bit double precision numbers (slower, but better image quality).</p><p>Unchecked: use 32-bit single precision numbers (faster, but worse image quality).</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Use Double Precision</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="0">
|
|
||||||
<widget class="QCheckBox" name="FinalRenderOpenCLCheckBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Use OpenCL to render if your video card supports it.</p><p>This is highly recommended as it will dramatically speed up render time.</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Use OpenCL</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QCheckBox" name="FinalRenderEarlyClipCheckBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Checked: clip colors and gamma correct after density filtering.</p><p>Unchecked: do it after spatial filtering.</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Early Clip</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QCheckBox" name="FinalRenderSaveXmlCheckBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Save an Xml parameter file for each flame rendered</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Save Xml</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QCheckBox" name="FinalRenderTransparencyCheckBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Use transparency in the final image.</p><p>Only supported for Png format.</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Transparency</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0">
|
|
||||||
<widget class="QGroupBox" name="FinalRenderScaleGroupBox">
|
<widget class="QGroupBox" name="FinalRenderScaleGroupBox">
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
@ -212,7 +142,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1">
|
<item row="5" column="1">
|
||||||
<widget class="QGroupBox" name="FinalRenderExtensionGroupBox">
|
<widget class="QGroupBox" name="FinalRenderExtensionGroupBox">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
@ -283,6 +213,26 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QCheckBox" name="FinalRenderEarlyClipCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Checked: clip colors and gamma correct after density filtering.</p><p>Unchecked: do it after spatial filtering.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Early Clip</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QCheckBox" name="FinalRenderSaveXmlCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Save an Xml parameter file for each flame rendered</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Save Xml</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="QCheckBox" name="FinalRenderKeepAspectCheckBox">
|
<widget class="QCheckBox" name="FinalRenderKeepAspectCheckBox">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
@ -296,6 +246,66 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QCheckBox" name="FinalRenderDoSequenceCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Use temporal samples value to achieve motion blur effect between flames</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Render as Animation Sequence</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QCheckBox" name="FinalRenderDoAllCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>Render all open flames instead of just the current one</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Render All</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="FinalRenderYAxisUpCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Checked: Positive Y direction is up.</p><p>Unchecked: Positive Y direction is down.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Positive Y Up</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QCheckBox" name="FinalRenderDoublePrecisionCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Checked: use 64-bit double precision numbers (slower, but better image quality).</p><p>Unchecked: use 32-bit single precision numbers (faster, but worse image quality).</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Use Double Precision</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QCheckBox" name="FinalRenderOpenCLCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Use OpenCL to render if your video card supports it.</p><p>This is highly recommended as it will dramatically speed up render time.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Use OpenCL</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QCheckBox" name="FinalRenderTransparencyCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Use transparency in the final image.</p><p>Only supported for Png format.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Transparency</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
|
@ -116,6 +116,7 @@ FinalRenderEmberController<T>::FinalRenderEmberController(FractoriumFinalRenderD
|
|||||||
QApplication::processEvents();
|
QApplication::processEvents();
|
||||||
|
|
||||||
m_PreviewRenderer->EarlyClip(m_FinalRender->EarlyClip());
|
m_PreviewRenderer->EarlyClip(m_FinalRender->EarlyClip());
|
||||||
|
m_PreviewRenderer->YAxisUp(m_FinalRender->YAxisUp());
|
||||||
m_PreviewRenderer->Transparency(m_FinalRender->Transparency());
|
m_PreviewRenderer->Transparency(m_FinalRender->Transparency());
|
||||||
m_PreviewRenderer->SetEmber(m_PreviewEmber);
|
m_PreviewRenderer->SetEmber(m_PreviewEmber);
|
||||||
|
|
||||||
@ -158,6 +159,7 @@ FinalRenderEmberController<T>::FinalRenderEmberController(FractoriumFinalRenderD
|
|||||||
|
|
||||||
QMetaObject::invokeMethod(m_FinalRender->ui.FinalRenderTextOutput, "setText", Qt::QueuedConnection, Q_ARG(QString, "Begin rendering..."));
|
QMetaObject::invokeMethod(m_FinalRender->ui.FinalRenderTextOutput, "setText", Qt::QueuedConnection, Q_ARG(QString, "Begin rendering..."));
|
||||||
m_Renderer->EarlyClip(m_GuiState.m_EarlyClip);
|
m_Renderer->EarlyClip(m_GuiState.m_EarlyClip);
|
||||||
|
m_Renderer->YAxisUp(m_GuiState.m_YAxisUp);
|
||||||
m_Renderer->ThreadCount(m_GuiState.m_ThreadCount);
|
m_Renderer->ThreadCount(m_GuiState.m_ThreadCount);
|
||||||
m_Renderer->Transparency(m_GuiState.m_Transparency);
|
m_Renderer->Transparency(m_GuiState.m_Transparency);
|
||||||
|
|
||||||
@ -312,6 +314,7 @@ int FinalRenderEmberController<T>::ProgressFunc(Ember<T>& ember, void* foo, doub
|
|||||||
|
|
||||||
//Save whatever options were specified on the GUI to the settings.
|
//Save whatever options were specified on the GUI to the settings.
|
||||||
m_Settings->FinalEarlyClip(m_GuiState.m_EarlyClip);
|
m_Settings->FinalEarlyClip(m_GuiState.m_EarlyClip);
|
||||||
|
m_Settings->FinalYAxisUp(m_GuiState.m_YAxisUp);
|
||||||
m_Settings->FinalTransparency(m_GuiState.m_Transparency);
|
m_Settings->FinalTransparency(m_GuiState.m_Transparency);
|
||||||
m_Settings->FinalOpenCL(m_GuiState.m_OpenCL);
|
m_Settings->FinalOpenCL(m_GuiState.m_OpenCL);
|
||||||
m_Settings->FinalDouble(m_GuiState.m_Double);
|
m_Settings->FinalDouble(m_GuiState.m_Double);
|
||||||
@ -463,6 +466,7 @@ bool FinalRenderEmberController<T>::CreateRenderer(eRendererType renderType, uns
|
|||||||
m_Renderer->NumChannels(channels);
|
m_Renderer->NumChannels(channels);
|
||||||
m_Renderer->ReclaimOnResize(false);
|
m_Renderer->ReclaimOnResize(false);
|
||||||
m_Renderer->EarlyClip(m_FinalRender->EarlyClip());
|
m_Renderer->EarlyClip(m_FinalRender->EarlyClip());
|
||||||
|
m_Renderer->YAxisUp(m_FinalRender->YAxisUp());
|
||||||
m_Renderer->ThreadCount(m_FinalRender->ThreadCount());
|
m_Renderer->ThreadCount(m_FinalRender->ThreadCount());
|
||||||
m_Renderer->Transparency(m_FinalRender->Transparency());
|
m_Renderer->Transparency(m_FinalRender->Transparency());
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ class FractoriumFinalRenderDialog;
|
|||||||
struct FinalRenderGuiState
|
struct FinalRenderGuiState
|
||||||
{
|
{
|
||||||
bool m_EarlyClip;
|
bool m_EarlyClip;
|
||||||
|
bool m_YAxisUp;
|
||||||
bool m_AlphaChannel;
|
bool m_AlphaChannel;
|
||||||
bool m_Transparency;
|
bool m_Transparency;
|
||||||
bool m_OpenCL;
|
bool m_OpenCL;
|
||||||
|
@ -10,8 +10,8 @@
|
|||||||
Fractorium::Fractorium(QWidget* parent)
|
Fractorium::Fractorium(QWidget* parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
{
|
{
|
||||||
int spinHeight = 20;
|
int spinHeight = 20, iconSize = 9;
|
||||||
size_t i, j;
|
size_t i = 0;
|
||||||
Timing t;
|
Timing t;
|
||||||
ui.setupUi(this);
|
ui.setupUi(this);
|
||||||
qRegisterMetaType<QVector<int>>("QVector<int>");//For previews.
|
qRegisterMetaType<QVector<int>>("QVector<int>");//For previews.
|
||||||
@ -34,6 +34,37 @@ Fractorium::Fractorium(QWidget* parent)
|
|||||||
m_OptionsDialog->setSizeGripEnabled(false);
|
m_OptionsDialog->setSizeGripEnabled(false);
|
||||||
connect(m_ColorDialog, SIGNAL(colorSelected(const QColor&)), this, SLOT(OnColorSelected(const QColor&)), Qt::QueuedConnection);
|
connect(m_ColorDialog, SIGNAL(colorSelected(const QColor&)), this, SLOT(OnColorSelected(const QColor&)), Qt::QueuedConnection);
|
||||||
|
|
||||||
|
m_XformComboColors[i++] = QColor(0XFF, 0X00, 0X00);
|
||||||
|
m_XformComboColors[i++] = QColor(0XCC, 0XCC, 0X00);
|
||||||
|
m_XformComboColors[i++] = QColor(0X00, 0XCC, 0X00);
|
||||||
|
m_XformComboColors[i++] = QColor(0X00, 0XCC, 0XCC);
|
||||||
|
m_XformComboColors[i++] = QColor(0X40, 0X40, 0XFF);
|
||||||
|
|
||||||
|
m_XformComboColors[i++] = QColor(0XCC, 0X00, 0XCC);
|
||||||
|
m_XformComboColors[i++] = QColor(0XCC, 0X80, 0X00);
|
||||||
|
m_XformComboColors[i++] = QColor(0X80, 0X00, 0X4F);
|
||||||
|
m_XformComboColors[i++] = QColor(0X80, 0X80, 0X22);
|
||||||
|
m_XformComboColors[i++] = QColor(0X60, 0X80, 0X60);
|
||||||
|
|
||||||
|
m_XformComboColors[i++] = QColor(0X50, 0X80, 0X80);
|
||||||
|
m_XformComboColors[i++] = QColor(0X4F, 0X4F, 0X80);
|
||||||
|
m_XformComboColors[i++] = QColor(0X80, 0X50, 0X80);
|
||||||
|
m_XformComboColors[i++] = QColor(0X80, 0X60, 0X22);
|
||||||
|
m_FinalXformComboColor = QColor(0x7F, 0x7F, 0x7F);
|
||||||
|
|
||||||
|
for (i = 0; i < XFORM_COLOR_COUNT; i++)
|
||||||
|
{
|
||||||
|
QPixmap pixmap(iconSize, iconSize);
|
||||||
|
|
||||||
|
pixmap.fill(m_XformComboColors[i]);
|
||||||
|
m_XformComboIcons[i] = QIcon(pixmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPixmap pixmap(iconSize, iconSize);
|
||||||
|
|
||||||
|
pixmap.fill(m_FinalXformComboColor);
|
||||||
|
m_FinalXformComboIcon = QIcon(pixmap);
|
||||||
|
|
||||||
InitToolbarUI();
|
InitToolbarUI();
|
||||||
InitParamsUI();
|
InitParamsUI();
|
||||||
InitXformsUI();
|
InitXformsUI();
|
||||||
|
@ -117,6 +117,7 @@ public slots:
|
|||||||
void OnActionFinalRender(bool checked);
|
void OnActionFinalRender(bool checked);
|
||||||
void OnFinalRenderClose(int result);
|
void OnFinalRenderClose(int result);
|
||||||
void OnActionOptions(bool checked);
|
void OnActionOptions(bool checked);
|
||||||
|
|
||||||
void OnActionAbout(bool checked);//Help.
|
void OnActionAbout(bool checked);//Help.
|
||||||
|
|
||||||
//Toolbar.
|
//Toolbar.
|
||||||
@ -388,6 +389,8 @@ private:
|
|||||||
char m_HString[16];
|
char m_HString[16];
|
||||||
char m_DEString[16];
|
char m_DEString[16];
|
||||||
char m_CoordinateString[128];
|
char m_CoordinateString[128];
|
||||||
|
QColor m_XformComboColors[XFORM_COLOR_COUNT], m_FinalXformComboColor;
|
||||||
|
QIcon m_XformComboIcons[XFORM_COLOR_COUNT], m_FinalXformComboIcon;
|
||||||
|
|
||||||
int m_FontSize;
|
int m_FontSize;
|
||||||
int m_VarSortMode;
|
int m_VarSortMode;
|
||||||
|
Binary file not shown.
@ -340,7 +340,7 @@
|
|||||||
<enum>QTabWidget::Triangular</enum>
|
<enum>QTabWidget::Triangular</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>0</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="usesScrollButtons">
|
<property name="usesScrollButtons">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@ -1993,7 +1993,7 @@
|
|||||||
<item row="3" column="0" colspan="2">
|
<item row="3" column="0" colspan="2">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
<layout class="QHBoxLayout" name="horizontalLayout_13">
|
||||||
<property name="spacing">
|
<property name="spacing">
|
||||||
<number>4</number>
|
<number>2</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QComboBox" name="CurrentXformCombo">
|
<widget class="QComboBox" name="CurrentXformCombo">
|
||||||
@ -2005,13 +2005,13 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>50</width>
|
<width>60</width>
|
||||||
<height>22</height>
|
<height>22</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>60</width>
|
||||||
<height>16777215</height>
|
<height>16777215</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@ -2024,6 +2024,15 @@
|
|||||||
<property name="maxVisibleItems">
|
<property name="maxVisibleItems">
|
||||||
<number>12</number>
|
<number>12</number>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>9</width>
|
||||||
|
<height>9</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="frame">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@ -2036,7 +2045,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>30</width>
|
<width>25</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@ -2062,7 +2071,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>30</width>
|
<width>25</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@ -2088,7 +2097,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>30</width>
|
<width>25</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@ -2114,7 +2123,7 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>30</width>
|
<width>25</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@ -2140,13 +2149,13 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>50</width>
|
<width>58</width>
|
||||||
<height>0</height>
|
<height>0</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>60</width>
|
<width>58</width>
|
||||||
<height>16777215</height>
|
<height>16777215</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
@ -2730,8 +2739,8 @@ SpinBox
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>238</width>
|
<width>118</width>
|
||||||
<height>752</height>
|
<height>597</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="palette">
|
<property name="palette">
|
||||||
@ -5615,6 +5624,11 @@ SpinBox
|
|||||||
<string>Remove the Flatten variation from each xform</string>
|
<string>Remove the Flatten variation from each xform</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="ActionFlip">
|
||||||
|
<property name="text">
|
||||||
|
<string>Fl&ip</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
|
@ -80,6 +80,8 @@ FractoriumEmberController<T>::FractoriumEmberController(Fractorium* fractorium)
|
|||||||
m_PreviewRenderer->Callback(NULL);
|
m_PreviewRenderer->Callback(NULL);
|
||||||
m_PreviewRenderer->NumChannels(4);
|
m_PreviewRenderer->NumChannels(4);
|
||||||
m_PreviewRenderer->ReclaimOnResize(true);
|
m_PreviewRenderer->ReclaimOnResize(true);
|
||||||
|
m_PreviewRenderer->EarlyClip(m_Fractorium->m_Settings->EarlyClip());
|
||||||
|
m_PreviewRenderer->YAxisUp(m_Fractorium->m_Settings->YAxisUp());
|
||||||
m_PreviewRenderer->SetEmber(m_Ember);//Give it an initial ember, will be updated many times later.
|
m_PreviewRenderer->SetEmber(m_Ember);//Give it an initial ember, will be updated many times later.
|
||||||
//m_PreviewRenderer->ThreadCount(1);//For debugging.
|
//m_PreviewRenderer->ThreadCount(1);//For debugging.
|
||||||
|
|
||||||
|
@ -12,8 +12,8 @@ void Fractorium::UpdateHistogramBounds()
|
|||||||
{
|
{
|
||||||
sprintf_s(m_ULString, 32, "UL: %3.3f, %3.3f", r->LowerLeftX(), r->UpperRightY());//These bounds include gutter padding.
|
sprintf_s(m_ULString, 32, "UL: %3.3f, %3.3f", r->LowerLeftX(), r->UpperRightY());//These bounds include gutter padding.
|
||||||
sprintf_s(m_URString, 32, "UR: %3.3f, %3.3f", -r->LowerLeftX(), r->UpperRightY());
|
sprintf_s(m_URString, 32, "UR: %3.3f, %3.3f", -r->LowerLeftX(), r->UpperRightY());
|
||||||
sprintf_s(m_LRString, 32, "LR: %3.3f, %3.3f", -r->LowerLeftX(), -r->UpperRightY());
|
sprintf_s(m_LRString, 32, "LR: %3.3f, %3.3f", -r->LowerLeftX(), r->LowerLeftY());
|
||||||
sprintf_s(m_LLString, 32, "LL: %3.3f, %3.3f", r->LowerLeftX(), -r->UpperRightY());
|
sprintf_s(m_LLString, 32, "LL: %3.3f, %3.3f", r->LowerLeftX(), r->LowerLeftY());
|
||||||
sprintf_s(m_WString, 16, "W: %4d" , r->SuperRasW());
|
sprintf_s(m_WString, 16, "W: %4d" , r->SuperRasW());
|
||||||
sprintf_s(m_HString, 16, "H: %4d" , r->SuperRasH());
|
sprintf_s(m_HString, 16, "H: %4d" , r->SuperRasH());
|
||||||
|
|
||||||
|
@ -39,6 +39,8 @@
|
|||||||
#include "glm/gtc/matrix_transform.hpp"
|
#include "glm/gtc/matrix_transform.hpp"
|
||||||
#include "glm/gtc/type_ptr.hpp"
|
#include "glm/gtc/type_ptr.hpp"
|
||||||
|
|
||||||
|
#define XFORM_COLOR_COUNT 14
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace EmberNs;
|
using namespace EmberNs;
|
||||||
using namespace EmberCLns;
|
using namespace EmberCLns;
|
@ -478,6 +478,7 @@ bool FractoriumEmberController<T>::CreateRenderer(eRendererType renderType, unsi
|
|||||||
m_Renderer->ReclaimOnResize(true);
|
m_Renderer->ReclaimOnResize(true);
|
||||||
m_Renderer->SetEmber(m_Ember);//Give it an initial ember, will be updated many times later.
|
m_Renderer->SetEmber(m_Ember);//Give it an initial ember, will be updated many times later.
|
||||||
m_Renderer->EarlyClip(s->EarlyClip());
|
m_Renderer->EarlyClip(s->EarlyClip());
|
||||||
|
m_Renderer->YAxisUp(s->YAxisUp());
|
||||||
m_Renderer->ThreadCount(s->ThreadCount());
|
m_Renderer->ThreadCount(s->ThreadCount());
|
||||||
m_Renderer->Transparency(s->Transparency());
|
m_Renderer->Transparency(s->Transparency());
|
||||||
|
|
||||||
@ -486,6 +487,15 @@ bool FractoriumEmberController<T>::CreateRenderer(eRendererType renderType, unsi
|
|||||||
else
|
else
|
||||||
m_Renderer->InteractiveFilter(s->OpenCLDEFilter() ? FILTER_DE : FILTER_LOG);
|
m_Renderer->InteractiveFilter(s->OpenCLDEFilter() ? FILTER_DE : FILTER_LOG);
|
||||||
|
|
||||||
|
if ((m_Renderer->EarlyClip() != m_PreviewRenderer->EarlyClip()) ||
|
||||||
|
(m_Renderer->YAxisUp() != m_PreviewRenderer->YAxisUp()))
|
||||||
|
{
|
||||||
|
StopPreviewRender();
|
||||||
|
m_PreviewRenderer->EarlyClip(m_Renderer->EarlyClip());
|
||||||
|
m_PreviewRenderer->YAxisUp(m_Renderer->YAxisUp());
|
||||||
|
RenderPreviews();
|
||||||
|
}
|
||||||
|
|
||||||
m_FailedRenders = 0;
|
m_FailedRenders = 0;
|
||||||
m_RenderElapsedTimer.Tic();
|
m_RenderElapsedTimer.Tic();
|
||||||
//Leave rendering in a stopped state. The caller is responsible for restarting the render loop again.
|
//Leave rendering in a stopped state. The caller is responsible for restarting the render loop again.
|
||||||
|
@ -54,7 +54,7 @@ void FractoriumSettings::EnsureDefaults()
|
|||||||
FinalThreadCount(Timing::ProcessorCount());
|
FinalThreadCount(Timing::ProcessorCount());
|
||||||
|
|
||||||
if (CpuSubBatch() < 1)
|
if (CpuSubBatch() < 1)
|
||||||
CpuSubBatch(10);
|
CpuSubBatch(1);
|
||||||
|
|
||||||
if (OpenCLSubBatch() < 1)
|
if (OpenCLSubBatch() < 1)
|
||||||
OpenCLSubBatch(1);
|
OpenCLSubBatch(1);
|
||||||
@ -100,14 +100,20 @@ void FractoriumSettings::EnsureDefaults()
|
|||||||
bool FractoriumSettings::EarlyClip() { return value(EARLYCLIP).toBool(); }
|
bool FractoriumSettings::EarlyClip() { return value(EARLYCLIP).toBool(); }
|
||||||
void FractoriumSettings::EarlyClip(bool b) { setValue(EARLYCLIP, b); }
|
void FractoriumSettings::EarlyClip(bool b) { setValue(EARLYCLIP, b); }
|
||||||
|
|
||||||
|
bool FractoriumSettings::YAxisUp() { return value(YAXISUP).toBool(); }
|
||||||
|
void FractoriumSettings::YAxisUp(bool b) { setValue(YAXISUP, b); }
|
||||||
|
|
||||||
bool FractoriumSettings::Transparency() { return value(TRANSPARENCY).toBool(); }
|
bool FractoriumSettings::Transparency() { return value(TRANSPARENCY).toBool(); }
|
||||||
void FractoriumSettings::Transparency(bool b) { setValue(TRANSPARENCY, b); }
|
void FractoriumSettings::Transparency(bool b) { setValue(TRANSPARENCY, b); }
|
||||||
|
|
||||||
|
bool FractoriumSettings::OpenCL() { return value(OPENCL).toBool(); }
|
||||||
|
void FractoriumSettings::OpenCL(bool b) { setValue(OPENCL, b); }
|
||||||
|
|
||||||
bool FractoriumSettings::Double() { return value(DOUBLEPRECISION).toBool(); }
|
bool FractoriumSettings::Double() { return value(DOUBLEPRECISION).toBool(); }
|
||||||
void FractoriumSettings::Double(bool b) { setValue(DOUBLEPRECISION, b); }
|
void FractoriumSettings::Double(bool b) { setValue(DOUBLEPRECISION, b); }
|
||||||
|
|
||||||
bool FractoriumSettings::OpenCL() { return value(OPENCL).toBool(); }
|
bool FractoriumSettings::ShowAllXforms() { return value(SHOWALLXFORMS).toBool(); }
|
||||||
void FractoriumSettings::OpenCL(bool b) { setValue(OPENCL, b); }
|
void FractoriumSettings::ShowAllXforms(bool b) { setValue(SHOWALLXFORMS, b); }
|
||||||
|
|
||||||
unsigned int FractoriumSettings::PlatformIndex() { return value(PLATFORMINDEX).toUInt(); }
|
unsigned int FractoriumSettings::PlatformIndex() { return value(PLATFORMINDEX).toUInt(); }
|
||||||
void FractoriumSettings::PlatformIndex(unsigned int i) { setValue(PLATFORMINDEX, i); }
|
void FractoriumSettings::PlatformIndex(unsigned int i) { setValue(PLATFORMINDEX, i); }
|
||||||
@ -137,6 +143,9 @@ void FractoriumSettings::OpenCLSubBatch(unsigned int b) { setValue(OPENCLSUBB
|
|||||||
bool FractoriumSettings::FinalEarlyClip() { return value(FINALEARLYCLIP).toBool(); }
|
bool FractoriumSettings::FinalEarlyClip() { return value(FINALEARLYCLIP).toBool(); }
|
||||||
void FractoriumSettings::FinalEarlyClip(bool b) { setValue(FINALEARLYCLIP, b); }
|
void FractoriumSettings::FinalEarlyClip(bool b) { setValue(FINALEARLYCLIP, b); }
|
||||||
|
|
||||||
|
bool FractoriumSettings::FinalYAxisUp() { return value(FINALYAXISUP).toBool(); }
|
||||||
|
void FractoriumSettings::FinalYAxisUp(bool b) { setValue(FINALYAXISUP, b); }
|
||||||
|
|
||||||
bool FractoriumSettings::FinalTransparency() { return value(FINALTRANSPARENCY).toBool(); }
|
bool FractoriumSettings::FinalTransparency() { return value(FINALTRANSPARENCY).toBool(); }
|
||||||
void FractoriumSettings::FinalTransparency(bool b) { setValue(FINALTRANSPARENCY, b); }
|
void FractoriumSettings::FinalTransparency(bool b) { setValue(FINALTRANSPARENCY, b); }
|
||||||
|
|
||||||
|
@ -7,9 +7,11 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
#define EARLYCLIP "render/earlyclip"
|
#define EARLYCLIP "render/earlyclip"
|
||||||
|
#define YAXISUP "render/yaxisup"
|
||||||
#define TRANSPARENCY "render/transparency"
|
#define TRANSPARENCY "render/transparency"
|
||||||
#define OPENCL "render/opencl"
|
#define OPENCL "render/opencl"
|
||||||
#define DOUBLEPRECISION "render/dp64"
|
#define DOUBLEPRECISION "render/dp64"
|
||||||
|
#define SHOWALLXFORMS "render/dragshowallxforms"
|
||||||
#define PLATFORMINDEX "render/platformindex"
|
#define PLATFORMINDEX "render/platformindex"
|
||||||
#define DEVICEINDEX "render/deviceindex"
|
#define DEVICEINDEX "render/deviceindex"
|
||||||
#define THREADCOUNT "render/threadcount"
|
#define THREADCOUNT "render/threadcount"
|
||||||
@ -19,6 +21,7 @@
|
|||||||
#define OPENCLSUBBATCH "render/openclsubbatch"
|
#define OPENCLSUBBATCH "render/openclsubbatch"
|
||||||
|
|
||||||
#define FINALEARLYCLIP "finalrender/earlyclip"
|
#define FINALEARLYCLIP "finalrender/earlyclip"
|
||||||
|
#define FINALYAXISUP "finalrender/finalyaxisup"
|
||||||
#define FINALTRANSPARENCY "finalrender/transparency"
|
#define FINALTRANSPARENCY "finalrender/transparency"
|
||||||
#define FINALOPENCL "finalrender/opencl"
|
#define FINALOPENCL "finalrender/opencl"
|
||||||
#define FINALDOUBLEPRECISION "finalrender/dp64"
|
#define FINALDOUBLEPRECISION "finalrender/dp64"
|
||||||
@ -70,6 +73,9 @@ public:
|
|||||||
bool EarlyClip();
|
bool EarlyClip();
|
||||||
void EarlyClip(bool b);
|
void EarlyClip(bool b);
|
||||||
|
|
||||||
|
bool YAxisUp();
|
||||||
|
void YAxisUp(bool b);
|
||||||
|
|
||||||
bool Transparency();
|
bool Transparency();
|
||||||
void Transparency(bool b);
|
void Transparency(bool b);
|
||||||
|
|
||||||
@ -79,6 +85,9 @@ public:
|
|||||||
bool Double();
|
bool Double();
|
||||||
void Double(bool b);
|
void Double(bool b);
|
||||||
|
|
||||||
|
bool ShowAllXforms();
|
||||||
|
void ShowAllXforms(bool b);
|
||||||
|
|
||||||
unsigned int PlatformIndex();
|
unsigned int PlatformIndex();
|
||||||
void PlatformIndex(unsigned int b);
|
void PlatformIndex(unsigned int b);
|
||||||
|
|
||||||
@ -103,6 +112,9 @@ public:
|
|||||||
bool FinalEarlyClip();
|
bool FinalEarlyClip();
|
||||||
void FinalEarlyClip(bool b);
|
void FinalEarlyClip(bool b);
|
||||||
|
|
||||||
|
bool FinalYAxisUp();
|
||||||
|
void FinalYAxisUp(bool b);
|
||||||
|
|
||||||
bool FinalTransparency();
|
bool FinalTransparency();
|
||||||
void FinalTransparency(bool b);
|
void FinalTransparency(bool b);
|
||||||
|
|
||||||
|
@ -201,6 +201,7 @@ void FractoriumEmberController<T>::AddFinalXform()
|
|||||||
xform.AddVariation(new LinearVariation<T>());//Just a placeholder so other parts of the code don't see it as being empty.
|
xform.AddVariation(new LinearVariation<T>());//Just a placeholder so other parts of the code don't see it as being empty.
|
||||||
m_Ember.SetFinalXform(xform);
|
m_Ember.SetFinalXform(xform);
|
||||||
combo->addItem("Final");
|
combo->addItem("Final");
|
||||||
|
combo->setItemIcon(combo->count() - 1, m_Fractorium->m_FinalXformComboIcon);
|
||||||
combo->setCurrentIndex(combo->count() - 1);//Set index to the last item.
|
combo->setCurrentIndex(combo->count() - 1);//Set index to the last item.
|
||||||
UpdateRender();
|
UpdateRender();
|
||||||
}
|
}
|
||||||
@ -325,17 +326,23 @@ bool FractoriumEmberController<T>::IsFinal(Xform<T>* xform)
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
void Fractorium::FillXforms()
|
void Fractorium::FillXforms()
|
||||||
{
|
{
|
||||||
int spinHeight = 20;
|
int i = 0, spinHeight = 20;
|
||||||
QComboBox* combo = ui.CurrentXformCombo;
|
QComboBox* combo = ui.CurrentXformCombo;
|
||||||
|
|
||||||
combo->blockSignals(true);
|
combo->blockSignals(true);
|
||||||
combo->clear();
|
combo->clear();
|
||||||
|
|
||||||
for (int i = 0; i < m_Controller->XformCount(); i++)
|
for (i = 0; i < m_Controller->XformCount(); i++)
|
||||||
|
{
|
||||||
combo->addItem(QString::number(i + 1));
|
combo->addItem(QString::number(i + 1));
|
||||||
|
combo->setItemIcon(i, m_XformComboIcons[i % XFORM_COLOR_COUNT]);
|
||||||
|
}
|
||||||
|
|
||||||
if (m_Controller->UseFinalXform())
|
if (m_Controller->UseFinalXform())
|
||||||
|
{
|
||||||
combo->addItem("Final");
|
combo->addItem("Final");
|
||||||
|
combo->setItemIcon(i, m_FinalXformComboIcon);
|
||||||
|
}
|
||||||
|
|
||||||
combo->blockSignals(false);
|
combo->blockSignals(false);
|
||||||
combo->setCurrentIndex(0);
|
combo->setCurrentIndex(0);
|
||||||
|
@ -275,6 +275,7 @@ void GLEmberController<T>::DrawAffines(bool pre, bool post)
|
|||||||
{
|
{
|
||||||
QueryVMP();//Resolves to float or double specialization function depending on T.
|
QueryVMP();//Resolves to float or double specialization function depending on T.
|
||||||
Ember<T>* ember = m_FractoriumEmberController->CurrentEmber();
|
Ember<T>* ember = m_FractoriumEmberController->CurrentEmber();
|
||||||
|
bool dragging = m_DragState == DragDragging;
|
||||||
|
|
||||||
//Draw grid if control key is pressed.
|
//Draw grid if control key is pressed.
|
||||||
if ((m_DragModifier & DragModControl) == DragModControl)
|
if ((m_DragModifier & DragModControl) == DragModControl)
|
||||||
@ -282,27 +283,21 @@ void GLEmberController<T>::DrawAffines(bool pre, bool post)
|
|||||||
m_GL->glLineWidth(1.0f);
|
m_GL->glLineWidth(1.0f);
|
||||||
m_GL->DrawGrid();
|
m_GL->DrawGrid();
|
||||||
}
|
}
|
||||||
|
|
||||||
//When dragging, only draw the selected xform's affine and hide all others.
|
//When dragging, only draw the selected xform's affine and hide all others.
|
||||||
if (m_DragState == DragDragging)
|
if (!m_Fractorium->m_Settings->ShowAllXforms() && dragging)
|
||||||
{
|
{
|
||||||
if (m_SelectedXform)
|
if (m_SelectedXform)
|
||||||
DrawAffine(m_SelectedXform, m_AffineType == AffinePre, true);
|
DrawAffine(m_SelectedXform, m_AffineType == AffinePre, true);
|
||||||
|
|
||||||
m_GL->glPointSize(6.0f);//Draw large yellow dot on select or drag.
|
|
||||||
m_GL->glBegin(GL_POINTS);
|
|
||||||
m_GL->glColor4f(1.0f, 1.0f, 0.5f, 1.0f);
|
|
||||||
m_GL->glVertex2f(m_DragHandlePos.x, m_DragHandlePos.y);
|
|
||||||
m_GL->glEnd();
|
|
||||||
m_GL->glPointSize(1.0f);//Restore point size.
|
|
||||||
}
|
}
|
||||||
else//Not dragging, just hovering/mouse move.
|
else//Show all while dragging, or not dragging just hovering/mouse move.
|
||||||
{
|
{
|
||||||
if (pre && m_Fractorium->DrawAllPre())//Draw all pre affine if specified.
|
if (pre && m_Fractorium->DrawAllPre())//Draw all pre affine if specified.
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < ember->TotalXformCount(); i++)
|
for (unsigned int i = 0; i < ember->TotalXformCount(); i++)
|
||||||
{
|
{
|
||||||
Xform<T>* xform = ember->GetTotalXform(i);
|
Xform<T>* xform = ember->GetTotalXform(i);
|
||||||
bool selected = m_HoverXform == xform;
|
bool selected = dragging ? (m_SelectedXform == xform) : (m_HoverXform == xform);
|
||||||
|
|
||||||
DrawAffine(xform, true, selected);
|
DrawAffine(xform, true, selected);
|
||||||
}
|
}
|
||||||
@ -317,7 +312,7 @@ void GLEmberController<T>::DrawAffines(bool pre, bool post)
|
|||||||
for (unsigned int i = 0; i < ember->TotalXformCount(); i++)
|
for (unsigned int i = 0; i < ember->TotalXformCount(); i++)
|
||||||
{
|
{
|
||||||
Xform<T>* xform = ember->GetTotalXform(i);
|
Xform<T>* xform = ember->GetTotalXform(i);
|
||||||
bool selected = m_HoverXform == xform;
|
bool selected = dragging ? (m_SelectedXform == xform) : (m_HoverXform == xform);
|
||||||
|
|
||||||
DrawAffine(xform, false, selected);
|
DrawAffine(xform, false, selected);
|
||||||
}
|
}
|
||||||
@ -326,9 +321,18 @@ void GLEmberController<T>::DrawAffines(bool pre, bool post)
|
|||||||
{
|
{
|
||||||
DrawAffine(m_HoverXform, false, true);
|
DrawAffine(m_HoverXform, false, true);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Draw large turquoise dot on hover if they are hovering over the selected xform.
|
if (dragging)//Draw large yellow dot on select or drag.
|
||||||
if (m_HoverType != HoverNone && m_HoverXform == m_SelectedXform)
|
{
|
||||||
|
m_GL->glPointSize(6.0f);
|
||||||
|
m_GL->glBegin(GL_POINTS);
|
||||||
|
m_GL->glColor4f(1.0f, 1.0f, 0.5f, 1.0f);
|
||||||
|
m_GL->glVertex2f(m_DragHandlePos.x, m_DragHandlePos.y);
|
||||||
|
m_GL->glEnd();
|
||||||
|
m_GL->glPointSize(1.0f);//Restore point size.
|
||||||
|
}
|
||||||
|
else if (m_HoverType != HoverNone && m_HoverXform == m_SelectedXform)//Draw large turquoise dot on hover if they are hovering over the selected xform.
|
||||||
{
|
{
|
||||||
m_GL->glPointSize(6.0f);
|
m_GL->glPointSize(6.0f);
|
||||||
m_GL->glBegin(GL_POINTS);
|
m_GL->glBegin(GL_POINTS);
|
||||||
@ -337,7 +341,6 @@ void GLEmberController<T>::DrawAffines(bool pre, bool post)
|
|||||||
m_GL->glEnd();
|
m_GL->glEnd();
|
||||||
m_GL->glPointSize(1.0f);
|
m_GL->glPointSize(1.0f);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -473,6 +476,13 @@ void GLEmberController<T>::MousePress(QMouseEvent* e)
|
|||||||
|
|
||||||
//The user has selected an xform by clicking on it, so update the main GUI by selecting this xform in the combo box.
|
//The user has selected an xform by clicking on it, so update the main GUI by selecting this xform in the combo box.
|
||||||
m_Fractorium->CurrentXform(xformIndex);
|
m_Fractorium->CurrentXform(xformIndex);
|
||||||
|
|
||||||
|
//Update selected xform dot.
|
||||||
|
bool pre = m_Fractorium->ui.PreAffineGroupBox->isChecked();
|
||||||
|
bool post = m_Fractorium->ui.PostAffineGroupBox->isChecked();
|
||||||
|
|
||||||
|
DrawAffines(pre, post);
|
||||||
|
m_GL->update();
|
||||||
}
|
}
|
||||||
else//Nothing was selected.
|
else//Nothing was selected.
|
||||||
{
|
{
|
||||||
@ -937,6 +947,7 @@ void GLEmberController<T>::DrawAffine(Xform<T>* xform, bool pre, bool selected)
|
|||||||
{
|
{
|
||||||
Ember<T>* ember = m_FractoriumEmberController->CurrentEmber();
|
Ember<T>* ember = m_FractoriumEmberController->CurrentEmber();
|
||||||
bool final = ember->IsFinalXform(xform);
|
bool final = ember->IsFinalXform(xform);
|
||||||
|
int index = ember->GetXformIndex(xform);
|
||||||
size_t size = ember->m_Palette.m_Entries.size();
|
size_t size = ember->m_Palette.m_Entries.size();
|
||||||
v4T color = ember->m_Palette.m_Entries[Clamp<T>(xform->m_ColorX * size, 0, size - 1)];
|
v4T color = ember->m_Palette.m_Entries[Clamp<T>(xform->m_ColorX * size, 0, size - 1)];
|
||||||
Affine2D<T>* affine = pre ? &xform->m_Affine : &xform->m_Post;
|
Affine2D<T>* affine = pre ? &xform->m_Affine : &xform->m_Post;
|
||||||
@ -950,10 +961,10 @@ void GLEmberController<T>::DrawAffine(Xform<T>* xform, bool pre, bool selected)
|
|||||||
m_GL->glLoadIdentity();
|
m_GL->glLoadIdentity();
|
||||||
MultMatrix(mat);
|
MultMatrix(mat);
|
||||||
m_GL->glLineWidth(3.0f);//One 3px wide, colored black, except green on x axis for post affine.
|
m_GL->glLineWidth(3.0f);//One 3px wide, colored black, except green on x axis for post affine.
|
||||||
m_GL->DrawAffineHelper(selected, pre, final, true);
|
m_GL->DrawAffineHelper(index, selected, pre, final, true);
|
||||||
|
|
||||||
m_GL->glLineWidth(1.0f);//Again 1px wide, colored white, to give a white middle with black outline effect.
|
m_GL->glLineWidth(1.0f);//Again 1px wide, colored white, to give a white middle with black outline effect.
|
||||||
m_GL->DrawAffineHelper(selected, pre, final, false);
|
m_GL->DrawAffineHelper(index, selected, pre, final, false);
|
||||||
|
|
||||||
m_GL->glPointSize(5.0f);//Three black points, one in the center and two on the circle. Drawn big 5px first to give a black outline.
|
m_GL->glPointSize(5.0f);//Three black points, one in the center and two on the circle. Drawn big 5px first to give a black outline.
|
||||||
m_GL->glBegin(GL_POINTS);
|
m_GL->glBegin(GL_POINTS);
|
||||||
@ -984,25 +995,27 @@ void GLEmberController<T>::DrawAffine(Xform<T>* xform, bool pre, bool selected)
|
|||||||
/// Draw the axes, and optionally the surrounding circle
|
/// Draw the axes, and optionally the surrounding circle
|
||||||
/// of an affine transform.
|
/// of an affine transform.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="index"></param>
|
||||||
/// <param name="selected">True if selected (draw enclosing circle), else false (only draw axes).</param>
|
/// <param name="selected">True if selected (draw enclosing circle), else false (only draw axes).</param>
|
||||||
void GLWidget::DrawAffineHelper(bool selected, bool pre, bool final, bool background)
|
/// <param name="pre"></param>
|
||||||
|
/// <param name="final"></param>
|
||||||
|
/// <param name="background"></param>
|
||||||
|
void GLWidget::DrawAffineHelper(int index, bool selected, bool pre, bool final, bool background)
|
||||||
{
|
{
|
||||||
float px = 1.0f;
|
float px = 1.0f;
|
||||||
float py = 0.0f;
|
float py = 0.0f;
|
||||||
|
QColor col = final ? m_Fractorium->m_FinalXformComboColor : m_Fractorium->m_XformComboColors[index % XFORM_COLOR_COUNT];
|
||||||
|
|
||||||
glBegin(GL_LINES);
|
glBegin(GL_LINES);
|
||||||
|
|
||||||
//Circle part.
|
//Circle part.
|
||||||
if (!background)
|
if (!background)
|
||||||
{
|
{
|
||||||
if (pre)
|
glColor4f(col.redF(), col.greenF(), col.blueF(), 1.0f);//Draw pre affine transform with white.
|
||||||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);//Draw pre affine transform with white.
|
|
||||||
else
|
|
||||||
glColor4f(0.0f, 0.75f, 0.0f, 1.0f);//Draw post affine transform with green.
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
glColor4f(0.0f, 0.0f, 0.0f, 1.0f);
|
glColor4f(0.0f, 0.0f, 0.0f, 1.0f);//Draw pre affine transform outline with white.
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selected)
|
if (selected)
|
||||||
@ -1023,19 +1036,17 @@ void GLWidget::DrawAffineHelper(bool selected, bool pre, bool final, bool backgr
|
|||||||
//Lines from center to circle.
|
//Lines from center to circle.
|
||||||
if (!background)
|
if (!background)
|
||||||
{
|
{
|
||||||
if (final)
|
glColor4f(col.redF(), col.greenF(), col.blueF(), 1.0f);
|
||||||
glColor4f(1.0f, 0.0f, 0.0f, 1.0f);//Draw final xforms with red.
|
|
||||||
else
|
|
||||||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);//Draw normal xforms with white.
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!pre)
|
if (pre)
|
||||||
glColor4f(0.0f, 0.75f, 0.0f, 1.0f);//Draw post affine transform with green outline.
|
glColor4f(0.0f, 0.0f, 0.0f, 1.0f);//Draw pre affine transform outline with white.
|
||||||
|
else
|
||||||
|
glColor4f(0.0f, 0.75f, 0.0f, 1.0f);//Draw post affine transform outline with green.
|
||||||
}
|
}
|
||||||
|
|
||||||
//The lines from the center to the circle.
|
//The lines from the center to the circle.
|
||||||
|
|
||||||
glVertex2f(0.0f, 0.0f);//X axis.
|
glVertex2f(0.0f, 0.0f);//X axis.
|
||||||
glVertex2f(1.0f, 0.0f);
|
glVertex2f(1.0f, 0.0f);
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ private:
|
|||||||
void SetViewport();
|
void SetViewport();
|
||||||
void DrawGrid();
|
void DrawGrid();
|
||||||
void DrawUnitSquare();
|
void DrawUnitSquare();
|
||||||
void DrawAffineHelper(bool selected, bool pre, bool final, bool background);
|
void DrawAffineHelper(int index, bool selected, bool pre, bool final, bool background);
|
||||||
GLEmberControllerBase* GLController();
|
GLEmberControllerBase* GLController();
|
||||||
|
|
||||||
bool m_Init;
|
bool m_Init;
|
||||||
|
@ -72,8 +72,10 @@ FractoriumOptionsDialog::FractoriumOptionsDialog(FractoriumSettings* settings, Q
|
|||||||
}
|
}
|
||||||
|
|
||||||
ui.EarlyClipCheckBox->setChecked( m_Settings->EarlyClip());
|
ui.EarlyClipCheckBox->setChecked( m_Settings->EarlyClip());
|
||||||
ui.TransparencyCheckBox->setChecked(m_Settings->Transparency());
|
ui.YAxisUpCheckBox->setChecked( m_Settings->YAxisUp());
|
||||||
ui.DoublePrecisionCheckBox->setChecked( m_Settings->Double());
|
ui.TransparencyCheckBox->setChecked( m_Settings->Transparency());
|
||||||
|
ui.DoublePrecisionCheckBox->setChecked(m_Settings->Double());
|
||||||
|
ui.ShowAllXformsCheckBox->setChecked( m_Settings->ShowAllXforms());
|
||||||
ui.ThreadCountSpin->setValue( m_Settings->ThreadCount());
|
ui.ThreadCountSpin->setValue( m_Settings->ThreadCount());
|
||||||
|
|
||||||
if (m_Settings->CpuDEFilter())
|
if (m_Settings->CpuDEFilter())
|
||||||
@ -103,9 +105,11 @@ FractoriumOptionsDialog::FractoriumOptionsDialog(FractoriumSettings* settings, Q
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
bool FractoriumOptionsDialog::EarlyClip() { return ui.EarlyClipCheckBox->isChecked(); }
|
bool FractoriumOptionsDialog::EarlyClip() { return ui.EarlyClipCheckBox->isChecked(); }
|
||||||
|
bool FractoriumOptionsDialog::YAxisUp() { return ui.YAxisUpCheckBox->isChecked(); }
|
||||||
bool FractoriumOptionsDialog::Transparency() { return ui.TransparencyCheckBox->isChecked(); }
|
bool FractoriumOptionsDialog::Transparency() { return ui.TransparencyCheckBox->isChecked(); }
|
||||||
bool FractoriumOptionsDialog::OpenCL() { return ui.OpenCLCheckBox->isChecked(); }
|
bool FractoriumOptionsDialog::OpenCL() { return ui.OpenCLCheckBox->isChecked(); }
|
||||||
bool FractoriumOptionsDialog::Double() { return ui.DoublePrecisionCheckBox->isChecked(); }
|
bool FractoriumOptionsDialog::Double() { return ui.DoublePrecisionCheckBox->isChecked(); }
|
||||||
|
bool FractoriumOptionsDialog::ShowAllXforms() { return ui.ShowAllXformsCheckBox->isChecked(); }
|
||||||
unsigned int FractoriumOptionsDialog::PlatformIndex() { return ui.PlatformCombo->currentIndex(); }
|
unsigned int FractoriumOptionsDialog::PlatformIndex() { return ui.PlatformCombo->currentIndex(); }
|
||||||
unsigned int FractoriumOptionsDialog::DeviceIndex() { return ui.DeviceCombo->currentIndex(); }
|
unsigned int FractoriumOptionsDialog::DeviceIndex() { return ui.DeviceCombo->currentIndex(); }
|
||||||
unsigned int FractoriumOptionsDialog::ThreadCount() { return ui.ThreadCountSpin->value(); }
|
unsigned int FractoriumOptionsDialog::ThreadCount() { return ui.ThreadCountSpin->value(); }
|
||||||
@ -149,9 +153,11 @@ void FractoriumOptionsDialog::accept()
|
|||||||
{
|
{
|
||||||
//Interactive rendering.
|
//Interactive rendering.
|
||||||
m_Settings->EarlyClip(EarlyClip());
|
m_Settings->EarlyClip(EarlyClip());
|
||||||
|
m_Settings->YAxisUp(YAxisUp());
|
||||||
m_Settings->Transparency(Transparency());
|
m_Settings->Transparency(Transparency());
|
||||||
m_Settings->OpenCL(OpenCL());
|
m_Settings->OpenCL(OpenCL());
|
||||||
m_Settings->Double(Double());
|
m_Settings->Double(Double());
|
||||||
|
m_Settings->ShowAllXforms(ShowAllXforms());
|
||||||
m_Settings->PlatformIndex(PlatformIndex());
|
m_Settings->PlatformIndex(PlatformIndex());
|
||||||
m_Settings->DeviceIndex(DeviceIndex());
|
m_Settings->DeviceIndex(DeviceIndex());
|
||||||
m_Settings->ThreadCount(ThreadCount());
|
m_Settings->ThreadCount(ThreadCount());
|
||||||
@ -183,9 +189,11 @@ void FractoriumOptionsDialog::reject()
|
|||||||
{
|
{
|
||||||
//Interactive rendering.
|
//Interactive rendering.
|
||||||
ui.EarlyClipCheckBox->setChecked(m_Settings->EarlyClip());
|
ui.EarlyClipCheckBox->setChecked(m_Settings->EarlyClip());
|
||||||
|
ui.YAxisUpCheckBox->setChecked(m_Settings->YAxisUp());
|
||||||
ui.TransparencyCheckBox->setChecked(m_Settings->Transparency());
|
ui.TransparencyCheckBox->setChecked(m_Settings->Transparency());
|
||||||
ui.OpenCLCheckBox->setChecked(m_Settings->OpenCL());
|
ui.OpenCLCheckBox->setChecked(m_Settings->OpenCL());
|
||||||
ui.DoublePrecisionCheckBox->setChecked(m_Settings->Double());
|
ui.DoublePrecisionCheckBox->setChecked(m_Settings->Double());
|
||||||
|
ui.ShowAllXformsCheckBox->setChecked(m_Settings->ShowAllXforms());
|
||||||
ui.PlatformCombo->setCurrentIndex(m_Settings->PlatformIndex());
|
ui.PlatformCombo->setCurrentIndex(m_Settings->PlatformIndex());
|
||||||
ui.DeviceCombo->setCurrentIndex(m_Settings->DeviceIndex());
|
ui.DeviceCombo->setCurrentIndex(m_Settings->DeviceIndex());
|
||||||
ui.ThreadCountSpin->setValue(m_Settings->ThreadCount());
|
ui.ThreadCountSpin->setValue(m_Settings->ThreadCount());
|
||||||
|
@ -34,10 +34,12 @@ public slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool EarlyClip();
|
bool EarlyClip();
|
||||||
|
bool YAxisUp();
|
||||||
bool AlphaChannel();
|
bool AlphaChannel();
|
||||||
bool Transparency();
|
bool Transparency();
|
||||||
bool OpenCL();
|
bool OpenCL();
|
||||||
bool Double();
|
bool Double();
|
||||||
|
bool ShowAllXforms();
|
||||||
unsigned int PlatformIndex();
|
unsigned int PlatformIndex();
|
||||||
unsigned int DeviceIndex();
|
unsigned int DeviceIndex();
|
||||||
unsigned int ThreadCount();
|
unsigned int ThreadCount();
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>286</width>
|
<width>300</width>
|
||||||
<height>388</height>
|
<height>411</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
@ -18,14 +18,14 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>286</width>
|
<width>300</width>
|
||||||
<height>388</height>
|
<height>411</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>286</width>
|
<width>300</width>
|
||||||
<height>388</height>
|
<height>411</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@ -39,7 +39,7 @@
|
|||||||
<number>6</number>
|
<number>6</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="rightMargin">
|
<property name="rightMargin">
|
||||||
<number>6</number>
|
<number>4</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>6</number>
|
<number>6</number>
|
||||||
@ -94,7 +94,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="2" column="0">
|
||||||
<widget class="QCheckBox" name="TransparencyCheckBox">
|
<widget class="QCheckBox" name="TransparencyCheckBox">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Use transparency in the final image.</p><p>This will not make a difference in the editor, but will when saving as .png and opening in other programs.</p></body></html></string>
|
<string><html><head/><body><p>Use transparency in the final image.</p><p>This will not make a difference in the editor, but will when saving as .png and opening in other programs.</p></body></html></string>
|
||||||
@ -104,23 +104,13 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0">
|
<item row="5" column="0" colspan="2">
|
||||||
<widget class="QCheckBox" name="OpenCLCheckBox">
|
|
||||||
<property name="toolTip">
|
|
||||||
<string><html><head/><body><p>Use OpenCL to render if your video card supports it.</p><p>This is highly recommended as it will give fluid, real-time interactive editing.</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Use OpenCL</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="4" column="0" colspan="2">
|
|
||||||
<widget class="QComboBox" name="PlatformCombo"/>
|
<widget class="QComboBox" name="PlatformCombo"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="5" column="0" colspan="2">
|
<item row="6" column="0" colspan="2">
|
||||||
<widget class="QComboBox" name="DeviceCombo"/>
|
<widget class="QComboBox" name="DeviceCombo"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="6" column="0">
|
<item row="7" column="0">
|
||||||
<widget class="QSpinBox" name="ThreadCountSpin">
|
<widget class="QSpinBox" name="ThreadCountSpin">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>The number of threads to use with CPU rendering.</p><p>Decrease for more responsive editing, increase for better performance.</p></body></html></string>
|
<string><html><head/><body><p>The number of threads to use with CPU rendering.</p><p>Decrease for more responsive editing, increase for better performance.</p></body></html></string>
|
||||||
@ -136,7 +126,7 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="9" column="0">
|
<item row="10" column="0">
|
||||||
<widget class="QGroupBox" name="InteraciveCpuFilteringGroupBox">
|
<widget class="QGroupBox" name="InteraciveCpuFilteringGroupBox">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>CPU Filtering</string>
|
<string>CPU Filtering</string>
|
||||||
@ -183,7 +173,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="10" column="0">
|
<item row="11" column="0">
|
||||||
<widget class="QGroupBox" name="InteraciveGpuFilteringGroupBox">
|
<widget class="QGroupBox" name="InteraciveGpuFilteringGroupBox">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>OpenCL Filtering</string>
|
<string>OpenCL Filtering</string>
|
||||||
@ -227,7 +217,7 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="7" column="0">
|
<item row="8" column="0">
|
||||||
<widget class="QSpinBox" name="CpuSubBatchSpin">
|
<widget class="QSpinBox" name="CpuSubBatchSpin">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The number of 10,000 iteration chunks ran per thread on the CPU
|
<string>The number of 10,000 iteration chunks ran per thread on the CPU
|
||||||
@ -244,7 +234,7 @@ in interactive mode for each mouse movement</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="8" column="0">
|
<item row="9" column="0">
|
||||||
<widget class="QSpinBox" name="OpenCLSubBatchSpin">
|
<widget class="QSpinBox" name="OpenCLSubBatchSpin">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>The number of ~8M iteration chunks ran using OpenCL
|
<string>The number of ~8M iteration chunks ran using OpenCL
|
||||||
@ -261,7 +251,27 @@ in interactive mode for each mouse movement</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="0">
|
<item row="1" column="0">
|
||||||
|
<widget class="QCheckBox" name="YAxisUpCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Checked: Positive Y direction is up.</p><p>Unchecked: Positive Y direction is down.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Positive Y Up</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QCheckBox" name="OpenCLCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Use OpenCL to render if your video card supports it.</p><p>This is highly recommended as it will give fluid, real-time interactive editing.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Use OpenCL</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
<widget class="QCheckBox" name="DoublePrecisionCheckBox">
|
<widget class="QCheckBox" name="DoublePrecisionCheckBox">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>Checked: use 64-bit double precision numbers (slower, but better image quality).</p><p>Unchecked: use 32-bit single precision numbers (faster, but worse image quality).</p></body></html></string>
|
<string><html><head/><body><p>Checked: use 64-bit double precision numbers (slower, but better image quality).</p><p>Unchecked: use 32-bit single precision numbers (faster, but worse image quality).</p></body></html></string>
|
||||||
@ -271,6 +281,16 @@ in interactive mode for each mouse movement</string>
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QCheckBox" name="ShowAllXformsCheckBox">
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Checked: show all xforms while dragging.</p><p>Unchecked: only show current xform while dragging.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Show All Xforms</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="OptionsXmlSavingTab">
|
<widget class="QWidget" name="OptionsXmlSavingTab">
|
||||||
|
Loading…
Reference in New Issue
Block a user