2014-07-08 03:11:14 -04:00
# pragma once
# include "EmberCommon.h"
/// <summary>
/// EmberOptionEntry and EmberOptions classes.
/// </summary>
2014-12-05 21:30:46 -05:00
static const char * DescriptionString = " Ember - Fractal flames C++ port and enhancement with OpenCL GPU support " ;
2014-07-08 03:11:14 -04:00
/// <summary>
/// Enum for specifying which command line programs an option is meant to be used with.
/// If an option is used with multiple programs, their values are ORed together.
/// </summary>
2016-01-04 19:50:15 -05:00
enum class eOptionUse : et
2014-07-08 03:11:14 -04:00
{
OPT_USE_RENDER = 1 ,
OPT_USE_ANIMATE = 1 < < 1 ,
OPT_USE_GENOME = 1 < < 2 ,
2016-01-04 19:50:15 -05:00
OPT_RENDER_ANIM = et ( eOptionUse : : OPT_USE_RENDER ) | et ( eOptionUse : : OPT_USE_ANIMATE ) ,
OPT_ANIM_GENOME = et ( eOptionUse : : OPT_USE_ANIMATE ) | et ( eOptionUse : : OPT_USE_GENOME ) ,
OPT_USE_ALL = et ( eOptionUse : : OPT_USE_RENDER ) | et ( eOptionUse : : OPT_USE_ANIMATE ) | et ( eOptionUse : : OPT_USE_GENOME )
2014-07-08 03:11:14 -04:00
} ;
/// <summary>
/// Unique identifiers for every available option across all programs.
/// </summary>
2016-01-04 19:50:15 -05:00
enum class eOptionIDs : et
2014-07-08 03:11:14 -04:00
{
//Diagnostic args.
OPT_HELP ,
OPT_VERSION ,
OPT_VERBOSE ,
OPT_DEBUG ,
OPT_DUMP_ARGS ,
OPT_PROGRESS ,
OPT_DUMP_OPENCL_INFO ,
2016-02-15 15:02:37 -05:00
OPT_ALL_VARS ,
OPT_REG_VARS ,
OPT_PRE_VARS ,
OPT_POST_VARS ,
2016-05-15 02:33:08 -04:00
OPT_SUM_VARS ,
OPT_ASSIGN_VARS ,
OPT_PPSUM_VARS ,
OPT_PPASSIGN_VARS ,
OPT_DC_VARS ,
2016-05-18 19:48:40 -04:00
OPT_STATE_VARS ,
2016-05-15 02:33:08 -04:00
OPT_PAR_VARS ,
OPT_NON_PAR_VARS ,
2014-07-08 03:11:14 -04:00
//Boolean args.
OPT_OPENCL ,
2016-04-11 21:15:14 -04:00
OPT_SP ,
2014-07-08 03:11:14 -04:00
OPT_EARLYCLIP ,
2014-08-06 00:50:52 -04:00
OPT_POS_Y_UP ,
2014-07-08 03:11:14 -04:00
OPT_TRANSPARENCY ,
OPT_NAME_ENABLE ,
OPT_INT_PALETTE ,
OPT_HEX_PALETTE ,
OPT_INSERT_PALETTE ,
2017-07-22 16:43:35 -04:00
OPT_ENABLE_COMMENTS ,
2014-07-08 03:11:14 -04:00
OPT_WRITE_GENOME ,
2015-01-19 11:39:50 -05:00
OPT_THREADED_WRITE ,
2014-07-08 03:11:14 -04:00
OPT_ENCLOSED ,
OPT_NO_EDITS ,
OPT_UNSMOOTH_EDGE ,
2016-12-05 22:04:33 -05:00
OPT_CW_LOOPS ,
OPT_CW_INTERP_LOOPS ,
2014-07-08 03:11:14 -04:00
OPT_LOCK_ACCUM ,
OPT_DUMP_KERNEL ,
//Value args.
2016-04-11 21:15:14 -04:00
OPT_NTHREADS , //Int value args.
2014-07-08 03:11:14 -04:00
OPT_STRIPS ,
2014-08-06 00:50:52 -04:00
OPT_SUPERSAMPLE ,
2016-05-05 19:11:30 -04:00
OPT_TEMPSAMPLES ,
2014-07-08 03:11:14 -04:00
OPT_PRINT_EDIT_DEPTH ,
OPT_JPEG ,
OPT_BEGIN ,
OPT_END ,
OPT_FRAME ,
OPT_DTIME ,
2016-12-05 22:04:33 -05:00
OPT_LOOP_FRAMES ,
OPT_INTERP_FRAMES ,
OPT_INTERP_LOOPS ,
2014-07-08 03:11:14 -04:00
OPT_SYMMETRY ,
OPT_SHEEP_GEN ,
OPT_SHEEP_ID ,
OPT_REPEAT ,
OPT_TRIES ,
OPT_MAX_XFORMS ,
2016-06-11 20:47:03 -04:00
OPT_START_COUNT ,
OPT_PADDING ,
2015-05-31 01:14:34 -04:00
OPT_PRIORITY ,
2014-07-08 03:11:14 -04:00
OPT_SS , //Float value args.
2017-05-31 22:50:05 -04:00
OPT_WS ,
OPT_HS ,
2014-07-08 03:11:14 -04:00
OPT_QS ,
--User changes
-Allow for pausing the renderer in the main window. This makes is more efficient when entering many parameters, such as when following a tutorial.
-Add support for new variations: erf, gamma, jac_cn, jac_dn, jac_sn, logDB, pressure_wave, pRose3D, splits3D, w, waves2b, x, xerf, y, z.
-Inform user of the start and stop of file parsing in EmberAnimate because the files could potentially be very large.
-Move the follwing fields to a new table called Animation: Interpolation, Affine Interpolation, Temporal Samples, Temporal Filter Width, Temporal Filter Type.
-These currently have no effect on the interactive renderer and instead are used when running flames through EmberGenome to generate sequences, and then animating them in Fractorium or EmberAnimate.
-Add new parameter overrides for EmberRender and EmberAnimate which directly assign values to all flames being rendered, rather than scale:
--quality
--demin
--demax
--Bug fixes
-Left pad instead of right pad names of sequence outputs from EmberGenome.
-Unique file naming was broken for files which already had an underscore in them.
-Properly report that png is the default format of EmberRender and EmberAnimate output instead of erroneously claiming it was jpg.
-Make command line programs search these folders in this order for the palette file:
./
~/.fractorium
~/.config/fractorium
/usr/share/fractorium
/usr/local/share/fractorium
-Fix possible bad values in hexes.
-Better assignment of Z variables.
-Fix boarders due to use of poorly implemented rint() function from flam3. Use std::rint() now.
-wedge_sph was completely wrong due to having accidentally swapped the mapping of two parameters.
-Make juliascope juliascope_power parameter be of type REAL_NONZERO since it's used as a denominator.
-Make Z assignment compatible with the originals in:
-arch, bcircle, bCollide, bent, bent2, bisplit, blob, blur_linear, blur_square, bMod, boarders, boarders2, bSwirl, bTransform, butterfly, cardioid, cell, circleblur, circlize, circlize2, circus, collideoscope, cos, cosine, cosh, coth, cpow, cpow2, crescents, cropn, csc, csch, curl, curve, dc_gridout, deltaa, diamond, disc2, eclipse, eCollide, edisc, eJulia, elliptic, eMod, eMotion, ennepers, epispiral, ePush, eRotate, eScale, eSwirl, ex, exp, expo, exponential, fan, fdisc, fibonacci, fibonacci2, fisheye, flipcircle, flipy, flower, flux, funnel, glynnia, GlynnSim1, GlynnSim2, GlynnSim3, gridout, handkerchief, heart, hole, idisc, julia, julian2, juliaNab, kaleidoscope, lazyTravis, Lissajous, mask, MobiusN, mobius_strip, modulus, murl, murl2, npolar, ortho, oscilloscope, parabola, perspective, petal, phoenix_julia, pie (was also inconsistent between cpu and gpu), poincare, popcorn, popcorn2, power, pow_block, rational3, rays, rblur, rings, rippled, roundspher, sec, secant2, sigmoid, sin, sineblur, sinh, sinusgrid, sphericaln, spiralwing, spirograph, split, squarize, squirrel, squish, sschecks, starblur, stripes, stwin, super_shape, tan, tancos, tangent, tanh, TwinTrian, twoface, unpolar, waves, wavesn, wedge_julia, whorl, xheart, zblur, zscale.
--Code changes
-Generalize Variation::PrecalcHelper() and rename to PrePostPrecalcHelper().
--Do the same for the OpenCL version and rename it PrePostPrecalcOpenCLString().
-Rename Variation::m_AssignType to m_PrePostAssignType since it's only relevant to pre/post variations.
2016-01-29 20:02:15 -05:00
OPT_QUALITY ,
OPT_DE_MIN ,
OPT_DE_MAX ,
2019-04-15 02:46:45 -04:00
OPT_SBPCTTH ,
2014-07-08 03:11:14 -04:00
OPT_PIXEL_ASPECT ,
OPT_STAGGER ,
OPT_AVG_THRESH ,
OPT_BLACK_THRESH ,
OPT_WHITE_LIMIT ,
OPT_SPEED ,
OPT_OFFSETX ,
OPT_OFFSETY ,
OPT_USEMEM ,
2015-07-06 07:06:20 -04:00
OPT_LOOPS ,
2014-07-08 03:11:14 -04:00
2017-05-31 22:50:05 -04:00
OPT_SCALE_TYPE , //String value args.
OPT_OPENCL_DEVICE ,
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
OPT_ISAAC_SEED ,
2014-07-08 03:11:14 -04:00
OPT_IN ,
OPT_OUT ,
OPT_PREFIX ,
OPT_SUFFIX ,
OPT_FORMAT ,
OPT_PALETTE_FILE ,
OPT_ID ,
OPT_URL ,
OPT_NICK ,
OPT_COMMENT ,
OPT_TEMPLATE ,
OPT_CLONE ,
OPT_CLONE_ALL ,
OPT_CLONE_ACTION ,
OPT_ANIMATE ,
OPT_MUTATE ,
OPT_CROSS0 ,
OPT_CROSS1 ,
OPT_METHOD ,
OPT_INTER ,
OPT_ROTATE ,
OPT_SEQUENCE ,
OPT_USE_VARS ,
OPT_DONT_USE_VARS ,
OPT_EXTRAS
} ;
class EmberOptions ;
/// <summary>
/// A single option.
2014-12-06 00:05:09 -05:00
/// Template argument expected to be bool, int, uint, double or string.
2014-07-08 03:11:14 -04:00
/// </summary>
template < typename T >
class EmberOptionEntry
{
2016-01-04 19:50:15 -05:00
friend class EmberOptions ;
2014-07-08 03:11:14 -04:00
private :
/// <summary>
/// Default constructor. This should never be used, instead use the one that takes arguments.
/// </summary>
EmberOptionEntry ( )
{
m_Option . nId = 0 ;
2014-12-05 21:30:46 -05:00
m_Option . pszArg = _T ( " --fillmein " ) ;
2016-04-23 12:02:09 -04:00
m_Option . nArgType = SO_NONE ;
2014-07-08 03:11:14 -04:00
}
public :
/// <summary>
/// Constructor that takes arguments.
/// </summary>
/// <param name="optUsage">The specified program usage</param>
/// <param name="optId">The option identifier enum</param>
/// <param name="arg">The command line argument (--arg)</param>
/// <param name="defaultVal">The default value to use the option was not given on the command line</param>
/// <param name="argType">The format the argument should be given in</param>
/// <param name="docString">The documentation string describing what the argument means</param>
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
EmberOptionEntry ( eOptionUse optUsage , eOptionIDs optId , const CharT * arg , T defaultVal , ESOArgType argType , const string & docString )
2014-07-08 03:11:14 -04:00
{
m_OptionUse = optUsage ;
2014-12-07 02:51:44 -05:00
m_Option . nId = int ( optId ) ;
2014-07-08 03:11:14 -04:00
m_Option . pszArg = arg ;
m_Option . nArgType = argType ;
m_DocString = docString ;
m_NameWithoutDashes = Trim ( string ( arg ) , ' - ' ) ;
2014-12-07 02:51:44 -05:00
m_Val = Arg < T > ( const_cast < char * > ( m_NameWithoutDashes . c_str ( ) ) , defaultVal ) ;
2014-07-08 03:11:14 -04:00
}
/// <summary>
/// Copy constructor.
/// </summary>
/// <param name="entry">The EmberOptionEntry object to copy</param>
EmberOptionEntry ( const EmberOptionEntry & entry )
{
* this = entry ;
}
2014-12-05 21:30:46 -05:00
2015-01-19 11:39:50 -05:00
/// <summary>
/// Default assignment operator.
/// </summary>
/// <param name="entry">The EmberOptionEntry object to copy</param>
EmberOptionEntry < T > & operator = ( const EmberOptionEntry < T > & entry )
{
if ( this ! = & entry )
{
m_OptionUse = entry . m_OptionUse ;
m_Option = entry . m_Option ;
m_DocString = entry . m_DocString ;
m_NameWithoutDashes = entry . m_NameWithoutDashes ;
m_Val = entry . m_Val ;
}
return * this ;
}
2014-07-08 03:11:14 -04:00
/// <summary>
/// Functor accessors.
/// </summary>
2016-05-05 19:11:30 -04:00
inline const T & operator ( ) ( void ) const { return m_Val ; }
2015-01-19 11:39:50 -05:00
inline void operator ( ) ( T t ) { m_Val = t ; }
2014-07-08 03:11:14 -04:00
private :
2016-04-23 12:02:09 -04:00
eOptionUse m_OptionUse = eOptionUse : : OPT_USE_ALL ;
2014-07-08 03:11:14 -04:00
CSimpleOpt : : SOption m_Option ;
2016-04-23 12:02:09 -04:00
string m_DocString = " Dummy doc " ;
2014-07-08 03:11:14 -04:00
string m_NameWithoutDashes ;
T m_Val ;
} ;
2017-05-31 22:50:05 -04:00
/// <summary>
/// Class to force a stringstream to not split on space and
/// read to the end of the string.
/// </summary>
struct NoDelimiters : std : : ctype < char >
{
/// <summary>
/// Constructor that passes the table created in GetTable() to the base.
/// </summary>
NoDelimiters ( )
: std : : ctype < char > ( GetTable ( ) )
{
}
/// <summary>
/// Create and return a pointer to an empty table with no delimiters.
/// </summary>
/// <returns>A pointer to the empty delimiter table</returns>
static std : : ctype_base : : mask const * GetTable ( )
{
typedef std : : ctype < char > cctype ;
static const cctype : : mask * const_rc = cctype : : classic_table ( ) ;
static cctype : : mask rc [ cctype : : table_size ] ;
std : : memset ( rc , 0 , cctype : : table_size * sizeof ( cctype : : mask ) ) ;
return & rc [ 0 ] ;
}
} ;
2014-07-08 03:11:14 -04:00
/// <summary>
/// Macros for setting up and parsing various option types.
/// </summary>
//Bool.
# define Eob EmberOptionEntry<bool>
# define INITBOOLOPTION(member, option) \
2016-01-04 19:50:15 -05:00
member = option ; \
m_BoolArgs . push_back ( & member )
2014-07-08 03:11:14 -04:00
2016-01-04 19:50:15 -05:00
# define PARSEBOOLOPTION(e, member) \
case ( e ) : \
{ \
if ( member . m_Option . nArgType = = SO_OPT ) \
2015-01-19 11:39:50 -05:00
{ \
2016-12-05 22:04:33 -05:00
member ( ! _stricmp ( args . OptionArg ( ) , " true " ) ) ; \
2015-01-19 11:39:50 -05:00
} \
2016-01-04 19:50:15 -05:00
else \
{ \
member ( true ) ; \
} \
} \
break
2014-07-08 03:11:14 -04:00
2016-12-05 22:04:33 -05:00
//Parsing is the same for all numerical option types.
# define PARSEOPTION(e, member) \
case ( e ) : \
{ \
ss . clear ( ) ; \
ss . str ( args . OptionArg ( ) ) ; \
ss > > member . m_Val ; \
break ; \
}
2014-07-08 03:11:14 -04:00
//Int.
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
# define Eoi EmberOptionEntry<intmax_t>
2014-07-08 03:11:14 -04:00
# define INITINTOPTION(member, option) \
2016-01-04 19:50:15 -05:00
member = option ; \
m_IntArgs . push_back ( & member )
2014-07-08 03:11:14 -04:00
//Uint.
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
# define Eou EmberOptionEntry<size_t>
2014-07-08 03:11:14 -04:00
# define INITUINTOPTION(member, option) \
2016-01-04 19:50:15 -05:00
member = option ; \
m_UintArgs . push_back ( & member )
2014-07-08 03:11:14 -04:00
//Double.
# define Eod EmberOptionEntry<double>
# define INITDOUBLEOPTION(member, option) \
2016-01-04 19:50:15 -05:00
member = option ; \
m_DoubleArgs . push_back ( & member )
2014-07-08 03:11:14 -04:00
//String.
# define Eos EmberOptionEntry<string>
# define INITSTRINGOPTION(member, option) \
2016-01-04 19:50:15 -05:00
member = option ; \
m_StringArgs . push_back ( & member )
2014-07-08 03:11:14 -04:00
/// <summary>
/// Class for holding all available options across all command line programs.
/// Some are used only for a single program, while others are used for more than one.
/// This prevents having to keep separate documentation strings around for different programs.
/// </summary>
class EmberOptions
{
public :
/// <summary>
/// Constructor that populates all available options.
/// </summary>
EmberOptions ( )
{
2017-05-31 22:50:05 -04:00
const size_t size = ( size_t ) eOptionIDs : : OPT_EXTRAS ;
2016-04-11 21:15:14 -04:00
m_BoolArgs . reserve ( size ) ;
m_IntArgs . reserve ( size ) ;
m_UintArgs . reserve ( size ) ;
m_DoubleArgs . reserve ( size ) ;
m_StringArgs . reserve ( size ) ;
//Informational bools.
2016-06-17 20:19:13 -04:00
INITBOOLOPTION ( Help , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_HELP , _T ( " --help " ) , false , SO_NONE , " --help Show this screen and exit. \n " ) ) ;
INITBOOLOPTION ( Version , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_VERSION , _T ( " --version " ) , false , SO_NONE , " --version Show version and exit. \n " ) ) ;
INITBOOLOPTION ( OpenCLInfo , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_DUMP_OPENCL_INFO , _T ( " --openclinfo " ) , false , SO_NONE , " --openclinfo Display platforms and devices for OpenCL and exit. \n " ) ) ;
INITBOOLOPTION ( AllVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_ALL_VARS , _T ( " --allvars " ) , false , SO_NONE , " --allvars Display the names of all supported variations and exit. \n " ) ) ;
INITBOOLOPTION ( RegVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_REG_VARS , _T ( " --regvars " ) , false , SO_NONE , " --regvars Display the names of all supported regular variations and exit. \n " ) ) ;
INITBOOLOPTION ( PreVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_PRE_VARS , _T ( " --prevars " ) , false , SO_NONE , " --prevars Display the names of all supported pre variations and exit. \n " ) ) ;
INITBOOLOPTION ( PostVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_POST_VARS , _T ( " --postvars " ) , false , SO_NONE , " --postvars Display the names of all supported post variations and exit. \n " ) ) ;
INITBOOLOPTION ( SumVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_SUM_VARS , _T ( " --sumvars " ) , false , SO_NONE , " --sumvars Display the names of all regular variations which have the standard behavior of summing their output, and exit. \n " ) ) ;
INITBOOLOPTION ( AssignVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_ASSIGN_VARS , _T ( " --assignvars " ) , false , SO_NONE , " --assignvars Display the names of all regular variations which have the non-standard behavior of assigning their output, and exit. \n " ) ) ;
INITBOOLOPTION ( PpSumVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_PPSUM_VARS , _T ( " --ppsumvars " ) , false , SO_NONE , " --ppsumvars Display the names of all pre/post variations which have the non-standard behavior of summing their output, and exit. \n " ) ) ;
INITBOOLOPTION ( PpAssignVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_PPASSIGN_VARS , _T ( " --ppassignvars " ) , false , SO_NONE , " --ppassignvars Display the names of all pre/post variations which have the standard behavior of assigning their output, and exit. \n " ) ) ;
INITBOOLOPTION ( DcVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_DC_VARS , _T ( " --dcvars " ) , false , SO_NONE , " --dcvars Display the names of all variations which alter the color index and exit. \n " ) ) ;
INITBOOLOPTION ( StateVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_STATE_VARS , _T ( " --statevars " ) , false , SO_NONE , " --statevars Display the names of all variations which alter their state on each iteration and exit. \n " ) ) ;
INITBOOLOPTION ( ParVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_PAR_VARS , _T ( " --parvars " ) , false , SO_NONE , " --parvars Display the names of all variations which have parameters and exit. \n " ) ) ;
INITBOOLOPTION ( NonParVars , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_NON_PAR_VARS , _T ( " --nonparvars " ) , false , SO_NONE , " --nonparvars Display the names of all variations which do not have parameters (weight only) and exit. \n " ) ) ;
2014-07-08 03:11:14 -04:00
//Diagnostic bools.
2016-06-17 20:19:13 -04:00
INITBOOLOPTION ( Verbose , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_VERBOSE , _T ( " --verbose " ) , false , SO_NONE , " --verbose Verbose output [default: false]. \n " ) ) ;
INITBOOLOPTION ( Debug , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_DEBUG , _T ( " --debug " ) , false , SO_NONE , " --debug Debug output [default: false]. \n " ) ) ;
INITBOOLOPTION ( DumpArgs , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_DUMP_ARGS , _T ( " --dumpargs " ) , false , SO_NONE , " --dumpargs Print all arguments entered from either the command line or environment variables [default: false]. \n " ) ) ;
INITBOOLOPTION ( DoProgress , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_PROGRESS , _T ( " --progress " ) , false , SO_NONE , " --progress Display progress. This will slow down processing by about 10% [default: false]. \n " ) ) ;
2014-12-05 21:30:46 -05:00
//Execution bools.
2016-06-17 20:19:13 -04:00
INITBOOLOPTION ( EmberCL , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_OPENCL , _T ( " --opencl " ) , false , SO_NONE , " --opencl Use OpenCL renderer (EmberCL) for rendering [default: false]. \n " ) ) ;
INITBOOLOPTION ( Sp , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_SP , _T ( " --sp " ) , false , SO_NONE , " --sp Use single precision for rendering instead of double precision [default: false]. \n " ) ) ;
INITBOOLOPTION ( EarlyClip , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_EARLYCLIP , _T ( " --earlyclip " ) , false , SO_NONE , " --earlyclip Perform clipping of RGB values before spatial filtering for better antialiasing and resizing [default: false]. \n " ) ) ;
INITBOOLOPTION ( YAxisUp , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_POS_Y_UP , _T ( " --yaxisup " ) , false , SO_NONE , " --yaxisup Orient the image with the positive y axis pointing up [default: false]. \n " ) ) ;
INITBOOLOPTION ( Transparency , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_TRANSPARENCY , _T ( " --transparency " ) , false , SO_NONE , " --transparency Include alpha channel in final output [default: false except for PNG]. \n " ) ) ;
INITBOOLOPTION ( NameEnable , Eob ( eOptionUse : : OPT_USE_RENDER , eOptionIDs : : OPT_NAME_ENABLE , _T ( " --name_enable " ) , false , SO_NONE , " --name_enable Use the name attribute contained in the Xml as the output filename [default: false]. \n " ) ) ;
INITBOOLOPTION ( HexPalette , Eob ( eOptionUse : : OPT_ANIM_GENOME , eOptionIDs : : OPT_HEX_PALETTE , _T ( " --hex_palette " ) , true , SO_OPT , " --hex_palette Force palette RGB values to be hex when saving to Xml [default: true]. \n " ) ) ;
INITBOOLOPTION ( InsertPalette , Eob ( eOptionUse : : OPT_USE_RENDER , eOptionIDs : : OPT_INSERT_PALETTE , _T ( " --insert_palette " ) , false , SO_NONE , " --insert_palette Insert the palette into the image for debugging purposes. Disabled when running with OpenCL [default: false]. \n " ) ) ;
2017-07-22 16:43:35 -04:00
INITBOOLOPTION ( EnableComments , Eob ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_ENABLE_COMMENTS , _T ( " --enable_comments " ) , false , SO_NONE , " --enable_comments Enables embedding the flame parameters and user identifying information in the header of a jpg, png or exr [default: false]. \n " ) ) ;
2016-06-17 20:19:13 -04:00
INITBOOLOPTION ( WriteGenome , Eob ( eOptionUse : : OPT_USE_ANIMATE , eOptionIDs : : OPT_WRITE_GENOME , _T ( " --write_genome " ) , false , SO_NONE , " --write_genome Write out flame associated with center of motion blur window [default: false]. \n " ) ) ;
INITBOOLOPTION ( ThreadedWrite , Eob ( eOptionUse : : OPT_USE_ANIMATE , eOptionIDs : : OPT_THREADED_WRITE , _T ( " --threaded_write " ) , true , SO_OPT , " --threaded_write Use a separate thread to write images to disk. This gives better performance, but doubles the memory required for the final output buffer. [default: true]. \n " ) ) ;
INITBOOLOPTION ( Enclosed , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_ENCLOSED , _T ( " --enclosed " ) , true , SO_OPT , " --enclosed Use enclosing Xml tags [default: true]. \n " ) ) ;
INITBOOLOPTION ( NoEdits , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_NO_EDITS , _T ( " --noedits " ) , false , SO_NONE , " --noedits Exclude edit tags when writing Xml [default: false]. \n " ) ) ;
INITBOOLOPTION ( UnsmoothEdge , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_UNSMOOTH_EDGE , _T ( " --unsmoother " ) , false , SO_NONE , " --unsmoother Do not use smooth blending for sheep edges [default: false]. \n " ) ) ;
2016-12-05 22:04:33 -05:00
INITBOOLOPTION ( CwLoops , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_CW_LOOPS , _T ( " --cwloops " ) , false , SO_NONE , " --cwloops Rotate loops clockwise [default: false]. \n " ) ) ;
INITBOOLOPTION ( CwInterpLoops , Eob ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_CW_INTERP_LOOPS , _T ( " --cwinterploops " ) , false , SO_NONE , " --cwinterploops Rotate clockwise during interpolation, ignored if --interploops is 0 [default: false]. \n " ) ) ;
2016-06-17 20:19:13 -04:00
INITBOOLOPTION ( LockAccum , Eob ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_LOCK_ACCUM , _T ( " --lock_accum " ) , false , SO_NONE , " --lock_accum Lock threads when accumulating to the histogram using the CPU. This will drop performance to that of single threading [default: false]. \n " ) ) ;
INITBOOLOPTION ( DumpKernel , Eob ( eOptionUse : : OPT_USE_RENDER , eOptionIDs : : OPT_DUMP_KERNEL , _T ( " --dump_kernel " ) , false , SO_NONE , " --dump_kernel Print the iteration kernel string when using OpenCL (ignored for CPU) [default: false]. \n " ) ) ;
2014-07-08 03:11:14 -04:00
//Int.
2016-06-17 20:19:13 -04:00
INITINTOPTION ( Symmetry , Eoi ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_SYMMETRY , _T ( " --symmetry " ) , 0 , SO_REQ_SEP , " --symmetry=<val> Set symmetry of result [default: 0]. \n " ) ) ;
INITINTOPTION ( SheepGen , Eoi ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_SHEEP_GEN , _T ( " --sheep_gen " ) , - 1 , SO_REQ_SEP , " --sheep_gen=<val> Sheep generation of this flame [default: -1]. \n " ) ) ;
INITINTOPTION ( SheepId , Eoi ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_SHEEP_ID , _T ( " --sheep_id " ) , - 1 , SO_REQ_SEP , " --sheep_id=<val> Sheep ID of this flame [default: -1]. \n " ) ) ;
2015-06-17 23:05:53 -04:00
# ifdef _WIN32
2016-06-17 20:19:13 -04:00
INITINTOPTION ( Priority , Eoi ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_PRIORITY , _T ( " --priority " ) , int ( eThreadPriority : : NORMAL ) , SO_REQ_SEP , " --priority=<val> The priority of the CPU rendering threads from -2 - 2. This does not apply to OpenCL rendering. \n " ) ) ;
2015-06-17 23:05:53 -04:00
# else
2016-06-17 20:19:13 -04:00
INITINTOPTION ( Priority , Eoi ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_PRIORITY , _T ( " --priority " ) , int ( eThreadPriority : : NORMAL ) , SO_REQ_SEP , " --priority=<val> The priority of the CPU rendering threads, 1, 25, 50, 75, 99. This does not apply to OpenCL rendering. \n " ) ) ;
2015-06-17 23:05:53 -04:00
# endif
//Uint.
2016-06-17 20:19:13 -04:00
INITUINTOPTION ( ThreadCount , Eou ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_NTHREADS , _T ( " --nthreads " ) , 0 , SO_REQ_SEP , " --nthreads=<val> The number of threads to use [default: use all available cores]. \n " ) ) ;
INITUINTOPTION ( Strips , Eou ( eOptionUse : : OPT_USE_RENDER , eOptionIDs : : OPT_STRIPS , _T ( " --nstrips " ) , 1 , SO_REQ_SEP , " --nstrips=<val> The number of fractions to split a single render frame into. Useful for print size renders or low memory systems [default: 1]. \n " ) ) ;
INITUINTOPTION ( Supersample , Eou ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_SUPERSAMPLE , _T ( " --supersample " ) , 0 , SO_REQ_SEP , " --supersample=<val> The supersample value used to override the one specified in the file [default: 0 (use value from file), Range: 0 - 4]. \n " ) ) ;
INITUINTOPTION ( TemporalSamples , Eou ( eOptionUse : : OPT_USE_ANIMATE , eOptionIDs : : OPT_TEMPSAMPLES , _T ( " --ts " ) , 0 , SO_REQ_SEP , " --ts=<val> The temporal samples value used to override all of the temporal sample values specified in the file when animating [default: 0 (use value from file)]. \n " ) ) ;
INITUINTOPTION ( PrintEditDepth , Eou ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_PRINT_EDIT_DEPTH , _T ( " --print_edit_depth " ) , 0 , SO_REQ_SEP , " --print_edit_depth=<val> Depth to truncate <edit> tag structure when converting a flame to Xml. 0 prints all <edit> tags [default: 0]. \n " ) ) ;
INITUINTOPTION ( JpegQuality , Eou ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_JPEG , _T ( " --jpeg " ) , 95 , SO_REQ_SEP , " --jpeg=<val> Jpeg quality 0-100 for compression [default: 95]. \n " ) ) ;
INITUINTOPTION ( FirstFrame , Eou ( eOptionUse : : OPT_USE_ANIMATE , eOptionIDs : : OPT_BEGIN , _T ( " --begin " ) , UINT_MAX , SO_REQ_SEP , " --begin=<val> Time of first frame to render [default: first time specified in file]. \n " ) ) ;
INITUINTOPTION ( LastFrame , Eou ( eOptionUse : : OPT_USE_ANIMATE , eOptionIDs : : OPT_END , _T ( " --end " ) , UINT_MAX , SO_REQ_SEP , " --end=<val> Time of last frame to render [default: last time specified in the input file]. \n " ) ) ;
INITUINTOPTION ( Frame , Eou ( eOptionUse : : OPT_ANIM_GENOME , eOptionIDs : : OPT_FRAME , _T ( " --frame " ) , UINT_MAX , SO_REQ_SEP , " --frame=<val> Time of first and last frame (ie do one frame). \n " ) ) ;
INITUINTOPTION ( Dtime , Eou ( eOptionUse : : OPT_USE_ANIMATE , eOptionIDs : : OPT_DTIME , _T ( " --dtime " ) , 1 , SO_REQ_SEP , " --dtime=<val> Time between frames [default: 1]. \n " ) ) ;
2016-12-05 22:04:33 -05:00
INITUINTOPTION ( LoopFrames , Eou ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_LOOP_FRAMES , _T ( " --loopframes " ) , 20 , SO_REQ_SEP , " --loopframes=<val> Number of frames per loop in the animation [default: 20]. \n " ) ) ;
INITUINTOPTION ( InterpFrames , Eou ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_INTERP_FRAMES , _T ( " --interpframes " ) , 20 , SO_REQ_SEP , " --interpframes=<val> Number of frames per interpolation in the animation [default: 20]. \n " ) ) ;
INITUINTOPTION ( InterpLoops , Eou ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_INTERP_LOOPS , _T ( " --interploops " ) , 1 , SO_REQ_SEP , " --interploops=<val> The number of 360 degree loops to rotate when interpolating between keyframes [default: 1]. \n " ) ) ;
2016-06-17 20:19:13 -04:00
INITUINTOPTION ( Repeat , Eou ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_REPEAT , _T ( " --repeat " ) , 1 , SO_REQ_SEP , " --repeat=<val> Number of new flames to create. Ignored if sequence, inter or rotate were specified [default: 1]. \n " ) ) ;
INITUINTOPTION ( Tries , Eou ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_TRIES , _T ( " --tries " ) , 10 , SO_REQ_SEP , " --tries=<val> Number times to try creating a flame that meets the specified constraints. Ignored if sequence, inter or rotate were specified [default: 10]. \n " ) ) ;
INITUINTOPTION ( MaxXforms , Eou ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_MAX_XFORMS , _T ( " --maxxforms " ) , UINT_MAX , SO_REQ_SEP , " --maxxforms=<val> The maximum number of xforms allowed in the final output. \n " ) ) ;
INITUINTOPTION ( StartCount , Eou ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_START_COUNT , _T ( " --startcount " ) , 0 , SO_REQ_SEP , " --startcount=<val> The number to add to each flame name when generating a sequence. Useful for programs like ffmpeg which require numerically increasing filenames [default: 0]. \n " ) ) ;
INITUINTOPTION ( Padding , Eou ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_PADDING , _T ( " --padding " ) , 0 , SO_REQ_SEP , " --padding=<val> Override the amount of zero padding added to each flame name when generating a sequence. Useful for programs like ffmpeg which require fixed width filenames [default: 0 (auto calculate padding)]. \n " ) ) ;
2014-07-08 03:11:14 -04:00
//Double.
--User changes:
-Show common folder locations such as documents, downloads, pictures in the sidebar in all file dialogs.
-Warning message about exceeding memory in final render dialog now suggests strips as the solution to the problem.
-Strips now has a tooltip explaining what it does.
-Allow more digits in the spinners on the color section the flame tab.
-Add manually adjustable size spinners in the final render dialog. Percentage scale and absolute size are fully synced.
-Default prefix in final render is now the filename when doing animations (coming from sequence section of the library tab).
-Changed the elliptic variation back to using a less precise version for float, and a more precise version for double. The last release had it always using double.
-New applied xaos table that shows a read-only view of actual weights by taking the base xform weights and multiplying them by the xaos values.
-New table in the xaos tab that gives a graphical representation of the probability that each xform is chosen, with and without xaos.
-Add button to transpose the xaos rows and columns.
-Add support for importing .chaos files from Chaotica.
--Pasting back to Chaotica will work for most, but not all, variations due to incompatible parameter names in some.
-Curves are now splines instead of Bezier. This adds compatibility with Chaotica, but breaks it for Apophysis. Xmls are still pastable, but the color curves will look different.
--The curve editor on the palette tab can now add points by clicking on the lines and remove points by clicking on the points themselves, just like Chaotica.
--Splines are saved in four new xml fields: overall_curve, red_curve, green_curve and blue_curve.
-Allow for specifying the percentage of a sub batch each thread should iterate through per kernel call when running with OpenCL. This gives a roughly 1% performance increase due to having to make less kernel calls while iterating.
--This field is present for interactive editing (where it's not very useful) and in the final render dialog.
--On the command line, this is specified as --sbpctth for EmberRender and EmberAnimate.
-Allow double clicking to toggle the supersample field in the flame tab between 1 and 2 for easily checking the effect of the field.
-When showing affine values as polar coordinates, show angles normalized to 360 to match Chaotica.
-Fuse Count spinner now toggles between 15 and 100 when double clicking for easily checking the effect of the field.
-Added field for limiting the range in the x and y direction that the initial points are chosen from.
-Added a field called K2 which is an alternative way to set brightness, ignored when zero.
--This has no effect for many variations, but hs a noticeable effect for some.
-Added new variations:
arcsech
arcsech2
arcsinh
arctanh
asteria
block
bwraps_rand
circlecrop2
coth_spiral
crackle2
depth_blur
depth_blur2
depth_gaussian
depth_gaussian2
depth_ngon
depth_ngon2
depth_sine
depth_sine2
dragonfire
dspherical
dust
excinis
exp2
flipx
flowerdb
foci_p
gaussian
glynnia2
glynnsim4
glynnsim5
henon
henon
hex_rand
hex_truchet
hypershift
lazyjess
lens
lozi
lozi
modulusx
modulusy
oscilloscope2
point_symmetry
pointsymmetry
projective
pulse
rotate
scry2
shift
smartshape
spher
squares
starblur2
swirl3
swirl3r
tanh_spiral
target0
target2
tile_hlp
truchet_glyph
truchet_inv
truchet_knot
unicorngaloshen
vibration
vibration2
--hex_truchet, hex_rand should always use double. They are extremely sensitive.
--Bug fixes:
-Bounds sign was flipped for x coordinate of world space when center was not zero.
-Right clicking and dragging spinner showed menu on mouse up, even if it was very far away.
-Text boxes for size in final render dialog were hard to type in. Same bug as xform weight used to be so fix the same way.
-Fix spelling to be plural in toggle color speed box.
-Stop using the blank user palette to generate flames. Either put colored palettes in it, or exclude it from randoms.
-Clicking the random palette button for a palette file with only one palette in it would freeze the program.
-Clicking none scale in final render did not re-render the preview.
-Use less precision on random xaos. No need for 12 decimal places.
-The term sub batch is overloaded in the options dialog. Change the naming and tooltip of those settings for cpu and opencl.
--Also made clear in the tooltip for the default opencl quality setting that the value is per device.
-The arrows spinner in palette editor appears like a read-only label. Made it look like a spinner.
-Fix border colors for various spin boxes and table headers in the style sheet. Requires reload.
-Fix a bug in the bwraps variation which would produce different results than Chaotica and Apophysis.
-Synth was allowed to be selected for random flame generation when using an Nvidia card but it shouldn't have been because Nvidia has a hard time compiling synth.
-A casting bug in the OpenCL kernels for log scaling and density filtering was preventing successful compilations on Intel iGPUs. Fixed even though we don't support anything other than AMD and Nvidia.
-Palette rotation (click and drag) position was not being reset when loading a new flame.
-When the xform circles were hidden, opening and closing the options dialog would improperly reshow them.
-Double click toggle was broken on integer spin boxes.
-Fixed tab order of some controls.
-Creating a palette from a jpg in the palette editor only produced a single color.
--Needed to package imageformats/qjpeg.dll with the Windows installer.
-The basic memory benchmark test flame was not really testing memory. Make it more spread out.
-Remove the temporal samples field from the flame tab, it was never used because it's only an animation parameter which is specified in the final render dialog or on the command line with EmberAnimate.
--Code changes:
-Add IsEmpty() to Palette to determine if a palette is all black.
-Attempt to avoid selecting a blank palette in PaletteList::GetRandomPalette().
-Add function ScanForChaosNodes() and some associated helper functions in XmlToEmber.
-Make variation param name correction be case insensitive in XmlToEmber.
-Report error when assigning a variation param value in XmlToEmber.
-Add SubBatchPercentPerThread() method to RendererCL.
-Override enterEvent() and leaveEvent() in DoubleSpinBox and SpinBox to prevent the context menu from showing up on right mouse up after already leaving the spinner.
-Filtering the mouse wheel event in TableWidget no longer appears to be needed. It was probably an old Qt bug that has been fixed.
-Gui/ember syncing code in the final render dialog needed to be reworked to accommodate absolute sizes.
2019-04-13 22:00:46 -04:00
INITDOUBLEOPTION ( SizeScale , Eod ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_SS , _T ( " --ss " ) , 1.0 , SO_REQ_SEP , " --ss=<val> Size scale. All dimensions are scaled by this amount [default: 1.0]. \n " ) ) ;
INITDOUBLEOPTION ( WidthScale , Eod ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_WS , _T ( " --ws " ) , 1.0 , SO_REQ_SEP , " --ws=<val> Width scale. The width is scaled by this amount [default: 1.0]. \n " ) ) ;
INITDOUBLEOPTION ( HeightScale , Eod ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_HS , _T ( " --hs " ) , 1.0 , SO_REQ_SEP , " --hs=<val> Height scale. The height is scaled by this amount [default: 1.0]. \n " ) ) ;
INITDOUBLEOPTION ( QualityScale , Eod ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_QS , _T ( " --qs " ) , 1.0 , SO_REQ_SEP , " --qs=<val> Quality scale. All quality values are scaled by this amount [default: 1.0]. \n " ) ) ;
INITDOUBLEOPTION ( Quality , Eod ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_QUALITY , _T ( " --quality " ) , 0.0 , SO_REQ_SEP , " --quality=<val> Override the quality of the flame if not 0 [default: 0]. \n " ) ) ;
2019-04-15 02:46:45 -04:00
INITDOUBLEOPTION ( SBPctPerTh , Eod ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_SBPCTTH , _T ( " --sbpctth " ) , 0.025 , SO_REQ_SEP , " --sbpctth=<val> The percentage of a sub batch from 0.01 to 1.0 to complete per thread per kernel launch done in OpenCL rendering. This is for performance tuning with OpenCL and does not apply to CPU rendering [default: 0.025 (256 iters with the default sub batch size of 10k)]. \n " ) ) ;
--User changes:
-Show common folder locations such as documents, downloads, pictures in the sidebar in all file dialogs.
-Warning message about exceeding memory in final render dialog now suggests strips as the solution to the problem.
-Strips now has a tooltip explaining what it does.
-Allow more digits in the spinners on the color section the flame tab.
-Add manually adjustable size spinners in the final render dialog. Percentage scale and absolute size are fully synced.
-Default prefix in final render is now the filename when doing animations (coming from sequence section of the library tab).
-Changed the elliptic variation back to using a less precise version for float, and a more precise version for double. The last release had it always using double.
-New applied xaos table that shows a read-only view of actual weights by taking the base xform weights and multiplying them by the xaos values.
-New table in the xaos tab that gives a graphical representation of the probability that each xform is chosen, with and without xaos.
-Add button to transpose the xaos rows and columns.
-Add support for importing .chaos files from Chaotica.
--Pasting back to Chaotica will work for most, but not all, variations due to incompatible parameter names in some.
-Curves are now splines instead of Bezier. This adds compatibility with Chaotica, but breaks it for Apophysis. Xmls are still pastable, but the color curves will look different.
--The curve editor on the palette tab can now add points by clicking on the lines and remove points by clicking on the points themselves, just like Chaotica.
--Splines are saved in four new xml fields: overall_curve, red_curve, green_curve and blue_curve.
-Allow for specifying the percentage of a sub batch each thread should iterate through per kernel call when running with OpenCL. This gives a roughly 1% performance increase due to having to make less kernel calls while iterating.
--This field is present for interactive editing (where it's not very useful) and in the final render dialog.
--On the command line, this is specified as --sbpctth for EmberRender and EmberAnimate.
-Allow double clicking to toggle the supersample field in the flame tab between 1 and 2 for easily checking the effect of the field.
-When showing affine values as polar coordinates, show angles normalized to 360 to match Chaotica.
-Fuse Count spinner now toggles between 15 and 100 when double clicking for easily checking the effect of the field.
-Added field for limiting the range in the x and y direction that the initial points are chosen from.
-Added a field called K2 which is an alternative way to set brightness, ignored when zero.
--This has no effect for many variations, but hs a noticeable effect for some.
-Added new variations:
arcsech
arcsech2
arcsinh
arctanh
asteria
block
bwraps_rand
circlecrop2
coth_spiral
crackle2
depth_blur
depth_blur2
depth_gaussian
depth_gaussian2
depth_ngon
depth_ngon2
depth_sine
depth_sine2
dragonfire
dspherical
dust
excinis
exp2
flipx
flowerdb
foci_p
gaussian
glynnia2
glynnsim4
glynnsim5
henon
henon
hex_rand
hex_truchet
hypershift
lazyjess
lens
lozi
lozi
modulusx
modulusy
oscilloscope2
point_symmetry
pointsymmetry
projective
pulse
rotate
scry2
shift
smartshape
spher
squares
starblur2
swirl3
swirl3r
tanh_spiral
target0
target2
tile_hlp
truchet_glyph
truchet_inv
truchet_knot
unicorngaloshen
vibration
vibration2
--hex_truchet, hex_rand should always use double. They are extremely sensitive.
--Bug fixes:
-Bounds sign was flipped for x coordinate of world space when center was not zero.
-Right clicking and dragging spinner showed menu on mouse up, even if it was very far away.
-Text boxes for size in final render dialog were hard to type in. Same bug as xform weight used to be so fix the same way.
-Fix spelling to be plural in toggle color speed box.
-Stop using the blank user palette to generate flames. Either put colored palettes in it, or exclude it from randoms.
-Clicking the random palette button for a palette file with only one palette in it would freeze the program.
-Clicking none scale in final render did not re-render the preview.
-Use less precision on random xaos. No need for 12 decimal places.
-The term sub batch is overloaded in the options dialog. Change the naming and tooltip of those settings for cpu and opencl.
--Also made clear in the tooltip for the default opencl quality setting that the value is per device.
-The arrows spinner in palette editor appears like a read-only label. Made it look like a spinner.
-Fix border colors for various spin boxes and table headers in the style sheet. Requires reload.
-Fix a bug in the bwraps variation which would produce different results than Chaotica and Apophysis.
-Synth was allowed to be selected for random flame generation when using an Nvidia card but it shouldn't have been because Nvidia has a hard time compiling synth.
-A casting bug in the OpenCL kernels for log scaling and density filtering was preventing successful compilations on Intel iGPUs. Fixed even though we don't support anything other than AMD and Nvidia.
-Palette rotation (click and drag) position was not being reset when loading a new flame.
-When the xform circles were hidden, opening and closing the options dialog would improperly reshow them.
-Double click toggle was broken on integer spin boxes.
-Fixed tab order of some controls.
-Creating a palette from a jpg in the palette editor only produced a single color.
--Needed to package imageformats/qjpeg.dll with the Windows installer.
-The basic memory benchmark test flame was not really testing memory. Make it more spread out.
-Remove the temporal samples field from the flame tab, it was never used because it's only an animation parameter which is specified in the final render dialog or on the command line with EmberAnimate.
--Code changes:
-Add IsEmpty() to Palette to determine if a palette is all black.
-Attempt to avoid selecting a blank palette in PaletteList::GetRandomPalette().
-Add function ScanForChaosNodes() and some associated helper functions in XmlToEmber.
-Make variation param name correction be case insensitive in XmlToEmber.
-Report error when assigning a variation param value in XmlToEmber.
-Add SubBatchPercentPerThread() method to RendererCL.
-Override enterEvent() and leaveEvent() in DoubleSpinBox and SpinBox to prevent the context menu from showing up on right mouse up after already leaving the spinner.
-Filtering the mouse wheel event in TableWidget no longer appears to be needed. It was probably an old Qt bug that has been fixed.
-Gui/ember syncing code in the final render dialog needed to be reworked to accommodate absolute sizes.
2019-04-13 22:00:46 -04:00
INITDOUBLEOPTION ( DeMin , Eod ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_DE_MIN , _T ( " --demin " ) , - 1.0 , SO_REQ_SEP , " --demin=<val> Override the minimum size of the density estimator filter radius if not -1 [default: -1]. \n " ) ) ;
INITDOUBLEOPTION ( DeMax , Eod ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_DE_MAX , _T ( " --demax " ) , - 1.0 , SO_REQ_SEP , " --demax=<val> Override the maximum size of the density estimator filter radius if not -1 [default: -1]. \n " ) ) ;
INITDOUBLEOPTION ( AspectRatio , Eod ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_PIXEL_ASPECT , _T ( " --pixel_aspect " ) , 1.0 , SO_REQ_SEP , " --pixel_aspect=<val> Aspect ratio of pixels (width over height), eg. 0.90909 for NTSC [default: 1.0]. \n " ) ) ;
INITDOUBLEOPTION ( Stagger , Eod ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_STAGGER , _T ( " --stagger " ) , 0.0 , SO_REQ_SEP , " --stagger=<val> Affects simultaneity of xform interpolation during flame interpolation. \n "
" \t Represents how 'separate' the xforms are interpolated. Set to 1 for each \n "
" \t xform to be interpolated individually, fractions control interpolation overlap [default: 0]. \n " ) ) ;
2016-06-17 20:19:13 -04:00
INITDOUBLEOPTION ( AvgThresh , Eod ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_AVG_THRESH , _T ( " --avg " ) , 20.0 , SO_REQ_SEP , " --avg=<val> Minimum average pixel channel sum (r + g + b) threshold from 0 - 765. Ignored if sequence, inter or rotate were specified [default: 20]. \n " ) ) ;
INITDOUBLEOPTION ( BlackThresh , Eod ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_BLACK_THRESH , _T ( " --black " ) , 0.01 , SO_REQ_SEP , " --black=<val> Minimum number of allowed black pixels as a percentage from 0 - 1. Ignored if sequence, inter or rotate were specified [default: 0.01]. \n " ) ) ;
INITDOUBLEOPTION ( WhiteLimit , Eod ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_WHITE_LIMIT , _T ( " --white " ) , 0.05 , SO_REQ_SEP , " --white=<val> Maximum number of allowed white pixels as a percentage from 0 - 1. Ignored if sequence, inter or rotate were specified [default: 0.05]. \n " ) ) ;
INITDOUBLEOPTION ( Speed , Eod ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_SPEED , _T ( " --speed " ) , 0.1 , SO_REQ_SEP , " --speed=<val> Speed as a percentage from 0 - 1 that the affine transform of an existing flame mutates with the new flame. Ignored if sequence, inter or rotate were specified [default: 0.1]. \n " ) ) ;
INITDOUBLEOPTION ( OffsetX , Eod ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_OFFSETX , _T ( " --offsetx " ) , 0.0 , SO_REQ_SEP , " --offsetx=<val> Amount to jitter each flame horizontally when applying genome tools [default: 0]. \n " ) ) ;
INITDOUBLEOPTION ( OffsetY , Eod ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_OFFSETY , _T ( " --offsety " ) , 0.0 , SO_REQ_SEP , " --offsety=<val> Amount to jitter each flame vertically when applying genome tools [default: 0]. \n " ) ) ;
INITDOUBLEOPTION ( UseMem , Eod ( eOptionUse : : OPT_USE_RENDER , eOptionIDs : : OPT_USEMEM , _T ( " --use_mem " ) , 0.0 , SO_REQ_SEP , " --use_mem=<val> Number of bytes of memory to use [default: max system memory]. \n " ) ) ;
INITDOUBLEOPTION ( Loops , Eod ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_LOOPS , _T ( " --loops " ) , 1.0 , SO_REQ_SEP , " --loops=<val> Number of times to rotate each control point in sequence [default: 1]. \n " ) ) ;
2014-07-08 03:11:14 -04:00
//String.
2017-05-31 22:50:05 -04:00
INITSTRINGOPTION ( ScaleType , Eos ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_SCALE_TYPE , _T ( " --scaletype " ) , " none " , SO_REQ_SEP , " --scaletype The type of scaling to use with the --ws or --hs options. Valid values are --width --height [default: width]. \n " ) ) ;
2016-06-17 20:19:13 -04:00
INITSTRINGOPTION ( Device , Eos ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_OPENCL_DEVICE , _T ( " --device " ) , " 0 " , SO_REQ_SEP , " --device The comma-separated OpenCL device indices to use. Single device: 0 Multi device: 0,1,3,4 [default: 0]. \n " ) ) ;
INITSTRINGOPTION ( IsaacSeed , Eos ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_ISAAC_SEED , _T ( " --isaac_seed " ) , " " , SO_REQ_SEP , " --isaac_seed=<val> Character-based seed for the random number generator [default: random]. \n " ) ) ;
INITSTRINGOPTION ( Input , Eos ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_IN , _T ( " --in " ) , " " , SO_REQ_SEP , " --in=<val> Name of the input file. \n " ) ) ;
INITSTRINGOPTION ( Out , Eos ( eOptionUse : : OPT_USE_RENDER , eOptionIDs : : OPT_OUT , _T ( " --out " ) , " " , SO_REQ_SEP , " --out=<val> Name of a single output file. Not recommended when rendering more than one image. \n " ) ) ;
INITSTRINGOPTION ( Prefix , Eos ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_PREFIX , _T ( " --prefix " ) , " " , SO_REQ_SEP , " --prefix=<val> Prefix to prepend to all output files. \n " ) ) ;
INITSTRINGOPTION ( Suffix , Eos ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_SUFFIX , _T ( " --suffix " ) , " " , SO_REQ_SEP , " --suffix=<val> Suffix to append to all output files. \n " ) ) ;
2017-07-22 16:43:35 -04:00
# ifdef _WIN32
INITSTRINGOPTION ( Format , Eos ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_FORMAT , _T ( " --format " ) , " png " , SO_REQ_SEP , " --format=<val> Format of the output file. Valid values are: bmp, jpg, png or exr [default: png]. \n " ) ) ;
# else
INITSTRINGOPTION ( Format , Eos ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_FORMAT , _T ( " --format " ) , " png " , SO_REQ_SEP , " --format=<val> Format of the output file. Valid values are: jpg, png or exr [default: png]. \n " ) ) ;
# endif
2016-06-17 20:19:13 -04:00
INITSTRINGOPTION ( PalettePath , Eos ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_PALETTE_FILE , _T ( " --flam3_palettes " ) , " flam3-palettes.xml " , SO_REQ_SEP , " --flam3_palettes=<val> Path and name of the palette file [default: flam3-palettes.xml]. \n " ) ) ;
INITSTRINGOPTION ( Id , Eos ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_ID , _T ( " --id " ) , " " , SO_REQ_SEP , " --id=<val> ID to use in <edit> tags / image comments. \n " ) ) ;
INITSTRINGOPTION ( Url , Eos ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_URL , _T ( " --url " ) , " " , SO_REQ_SEP , " --url=<val> URL to use in <edit> tags / image comments. \n " ) ) ;
INITSTRINGOPTION ( Nick , Eos ( eOptionUse : : OPT_USE_ALL , eOptionIDs : : OPT_NICK , _T ( " --nick " ) , " " , SO_REQ_SEP , " --nick=<val> Nickname to use in <edit> tags / image comments. \n " ) ) ;
INITSTRINGOPTION ( Comment , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_COMMENT , _T ( " --comment " ) , " " , SO_REQ_SEP , " --comment=<val> Comment to use in <edit> tags. \n " ) ) ;
INITSTRINGOPTION ( TemplateFile , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_TEMPLATE , _T ( " --template " ) , " " , SO_REQ_SEP , " --template=<val> Apply defaults based on this flame. \n " ) ) ;
INITSTRINGOPTION ( Clone , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_CLONE , _T ( " --clone " ) , " " , SO_REQ_SEP , " --clone=<val> Clone random flame in input. \n " ) ) ;
INITSTRINGOPTION ( CloneAll , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_CLONE_ALL , _T ( " --clone_all " ) , " " , SO_REQ_SEP , " --clone_all=<val> Clones all flames in the input file. Useful for applying template to all flames. \n " ) ) ;
INITSTRINGOPTION ( CloneAction , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_CLONE_ACTION , _T ( " --clone_action " ) , " " , SO_REQ_SEP , " --clone_action=<val> A description of the clone action taking place. \n " ) ) ;
INITSTRINGOPTION ( Animate , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_ANIMATE , _T ( " --animate " ) , " " , SO_REQ_SEP , " --animate=<val> Interpolates between all flames in the input file, using times specified in file. \n " ) ) ;
INITSTRINGOPTION ( Mutate , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_MUTATE , _T ( " --mutate " ) , " " , SO_REQ_SEP , " --mutate=<val> Randomly mutate a random flame from the input file. \n " ) ) ;
INITSTRINGOPTION ( Cross0 , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_CROSS0 , _T ( " --cross0 " ) , " " , SO_REQ_SEP , " --cross0=<val> Randomly select one flame from the input file to genetically cross... \n " ) ) ;
INITSTRINGOPTION ( Cross1 , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_CROSS1 , _T ( " --cross1 " ) , " " , SO_REQ_SEP , " --cross1=<val> ...with one flame from this file. \n " ) ) ;
INITSTRINGOPTION ( Method , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_METHOD , _T ( " --method " ) , " " , SO_REQ_SEP , " --method=<val> Method used for genetic cross: alternate, interpolate, or union. For mutate: all_vars, one_xform, add_symmetry, post_xforms, color_palette, delete_xform, all_coefs [default: random]. \n " ) ) ; //Original ommitted this important documentation for mutate!
INITSTRINGOPTION ( Inter , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_INTER , _T ( " --inter " ) , " " , SO_REQ_SEP , " --inter=<val> Interpolate the input file. \n " ) ) ;
INITSTRINGOPTION ( Rotate , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_ROTATE , _T ( " --rotate " ) , " " , SO_REQ_SEP , " --rotate=<val> Rotate the input file. \n " ) ) ;
INITSTRINGOPTION ( Sequence , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_SEQUENCE , _T ( " --sequence " ) , " " , SO_REQ_SEP , " --sequence=<val> 360 degree rotation 'loops' times of each control point in the input file plus rotating transitions. \n " ) ) ;
INITSTRINGOPTION ( UseVars , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_USE_VARS , _T ( " --use_vars " ) , " " , SO_REQ_SEP , " --use_vars=<val> Comma separated list of variation #'s to use when generating a random flame. \n " ) ) ;
INITSTRINGOPTION ( DontUseVars , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_DONT_USE_VARS , _T ( " --dont_use_vars " ) , " " , SO_REQ_SEP , " --dont_use_vars=<val> Comma separated list of variation #'s to NOT use when generating a random flame. \n " ) ) ;
INITSTRINGOPTION ( Extras , Eos ( eOptionUse : : OPT_USE_GENOME , eOptionIDs : : OPT_EXTRAS , _T ( " --extras " ) , " " , SO_REQ_SEP , " --extras=<val> Extra attributes to place in the flame section of the Xml. \n " ) ) ;
2014-07-08 03:11:14 -04:00
}
/// <summary>
/// Parse and populate the supplied command line options for the specified program usage.
/// If --help or --version were specified, information will be printed
/// and parsing will cease.
/// </summary>
/// <param name="argc">The number of command line arguments passed</param>
/// <param name="argv">The command line arguments passed</param>
/// <param name="optUsage">The program for which these options are to be parsed and used.</param>
/// <returns>True if --help or --version specified, else false</returns>
bool Populate ( int argc , _TCHAR * argv [ ] , eOptionUse optUsage )
{
EmberOptions options ;
vector < CSimpleOpt : : SOption > sOptions = options . GetSimpleOptions ( ) ;
CSimpleOpt args ( argc , argv , sOptions . data ( ) ) ;
2016-12-05 22:04:33 -05:00
stringstream ss ;
2017-05-31 22:50:05 -04:00
ss . imbue ( std : : locale ( std : : locale ( ) , new NoDelimiters ( ) ) ) ;
2014-07-08 03:11:14 -04:00
//Process args.
while ( args . Next ( ) )
{
ESOError errorCode = args . LastError ( ) ;
if ( errorCode = = SO_SUCCESS )
{
2016-01-04 19:50:15 -05:00
eOptionIDs e = eOptionIDs ( args . OptionId ( ) ) ;
switch ( e )
2014-07-08 03:11:14 -04:00
{
2016-01-04 19:50:15 -05:00
case eOptionIDs : : OPT_HELP : //Bool args.
2014-07-08 03:11:14 -04:00
{
ShowUsage ( optUsage ) ;
return true ;
}
2016-01-04 19:50:15 -05:00
case eOptionIDs : : OPT_VERSION :
2014-07-08 03:11:14 -04:00
{
2016-02-12 00:38:21 -05:00
cout < < EmberVersion ( ) < < " \n " ;
2014-07-08 03:11:14 -04:00
return true ;
}
2016-01-04 19:50:15 -05:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_VERBOSE , Verbose ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_DEBUG , Debug ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_DUMP_ARGS , DumpArgs ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_PROGRESS , DoProgress ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_DUMP_OPENCL_INFO , OpenCLInfo ) ;
2016-02-15 15:02:37 -05:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_ALL_VARS , AllVars ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_REG_VARS , RegVars ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_PRE_VARS , PreVars ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_POST_VARS , PostVars ) ;
2016-05-15 02:33:08 -04:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_SUM_VARS , SumVars ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_ASSIGN_VARS , AssignVars ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_PPSUM_VARS , PpSumVars ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_PPASSIGN_VARS , PpAssignVars ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_DC_VARS , DcVars ) ;
2016-05-18 19:48:40 -04:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_STATE_VARS , StateVars ) ;
2016-05-15 02:33:08 -04:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_PAR_VARS , ParVars ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_NON_PAR_VARS , NonParVars ) ;
2016-01-04 19:50:15 -05:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_OPENCL , EmberCL ) ;
2016-04-11 21:15:14 -04:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_SP , Sp ) ;
2016-01-04 19:50:15 -05:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_EARLYCLIP , EarlyClip ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_POS_Y_UP , YAxisUp ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_TRANSPARENCY , Transparency ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_NAME_ENABLE , NameEnable ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_HEX_PALETTE , HexPalette ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_INSERT_PALETTE , InsertPalette ) ;
2017-07-22 16:43:35 -04:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_ENABLE_COMMENTS , EnableComments ) ;
2016-01-04 19:50:15 -05:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_WRITE_GENOME , WriteGenome ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_THREADED_WRITE , ThreadedWrite ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_ENCLOSED , Enclosed ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_NO_EDITS , NoEdits ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_UNSMOOTH_EDGE , UnsmoothEdge ) ;
2016-12-05 22:04:33 -05:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_CW_LOOPS , CwLoops ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_CW_INTERP_LOOPS , CwInterpLoops ) ;
2016-01-04 19:50:15 -05:00
PARSEBOOLOPTION ( eOptionIDs : : OPT_LOCK_ACCUM , LockAccum ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_DUMP_KERNEL , DumpKernel ) ;
2016-12-05 22:04:33 -05:00
PARSEOPTION ( eOptionIDs : : OPT_SYMMETRY , Symmetry ) ; //Int args
PARSEOPTION ( eOptionIDs : : OPT_SHEEP_GEN , SheepGen ) ;
PARSEOPTION ( eOptionIDs : : OPT_SHEEP_ID , SheepId ) ;
PARSEOPTION ( eOptionIDs : : OPT_PRIORITY , Priority ) ;
PARSEOPTION ( eOptionIDs : : OPT_NTHREADS , ThreadCount ) ; //uint args.
PARSEOPTION ( eOptionIDs : : OPT_STRIPS , Strips ) ;
PARSEOPTION ( eOptionIDs : : OPT_SUPERSAMPLE , Supersample ) ;
PARSEOPTION ( eOptionIDs : : OPT_TEMPSAMPLES , TemporalSamples ) ;
PARSEOPTION ( eOptionIDs : : OPT_PRINT_EDIT_DEPTH , PrintEditDepth ) ;
PARSEOPTION ( eOptionIDs : : OPT_JPEG , JpegQuality ) ;
PARSEOPTION ( eOptionIDs : : OPT_BEGIN , FirstFrame ) ;
PARSEOPTION ( eOptionIDs : : OPT_END , LastFrame ) ;
PARSEOPTION ( eOptionIDs : : OPT_FRAME , Frame ) ;
PARSEOPTION ( eOptionIDs : : OPT_DTIME , Dtime ) ;
PARSEOPTION ( eOptionIDs : : OPT_LOOP_FRAMES , LoopFrames ) ;
PARSEOPTION ( eOptionIDs : : OPT_INTERP_FRAMES , InterpFrames ) ;
PARSEOPTION ( eOptionIDs : : OPT_INTERP_LOOPS , InterpLoops ) ;
PARSEOPTION ( eOptionIDs : : OPT_REPEAT , Repeat ) ;
PARSEOPTION ( eOptionIDs : : OPT_TRIES , Tries ) ;
PARSEOPTION ( eOptionIDs : : OPT_MAX_XFORMS , MaxXforms ) ;
PARSEOPTION ( eOptionIDs : : OPT_START_COUNT , StartCount ) ;
PARSEOPTION ( eOptionIDs : : OPT_PADDING , Padding ) ;
2017-05-31 22:50:05 -04:00
PARSEOPTION ( eOptionIDs : : OPT_SS , SizeScale ) ; //Double args.
PARSEOPTION ( eOptionIDs : : OPT_WS , WidthScale ) ;
PARSEOPTION ( eOptionIDs : : OPT_HS , HeightScale ) ;
2016-12-05 22:04:33 -05:00
PARSEOPTION ( eOptionIDs : : OPT_QS , QualityScale ) ;
PARSEOPTION ( eOptionIDs : : OPT_QUALITY , Quality ) ;
2019-04-15 02:46:45 -04:00
PARSEOPTION ( eOptionIDs : : OPT_SBPCTTH , SBPctPerTh ) ;
2016-12-05 22:04:33 -05:00
PARSEOPTION ( eOptionIDs : : OPT_DE_MIN , DeMin ) ;
PARSEOPTION ( eOptionIDs : : OPT_DE_MAX , DeMax ) ;
PARSEOPTION ( eOptionIDs : : OPT_PIXEL_ASPECT , AspectRatio ) ;
PARSEOPTION ( eOptionIDs : : OPT_STAGGER , Stagger ) ;
PARSEOPTION ( eOptionIDs : : OPT_AVG_THRESH , AvgThresh ) ;
PARSEOPTION ( eOptionIDs : : OPT_BLACK_THRESH , BlackThresh ) ;
PARSEOPTION ( eOptionIDs : : OPT_WHITE_LIMIT , WhiteLimit ) ;
PARSEOPTION ( eOptionIDs : : OPT_SPEED , Speed ) ;
PARSEOPTION ( eOptionIDs : : OPT_OFFSETX , OffsetX ) ;
PARSEOPTION ( eOptionIDs : : OPT_OFFSETY , OffsetY ) ;
PARSEOPTION ( eOptionIDs : : OPT_USEMEM , UseMem ) ;
PARSEOPTION ( eOptionIDs : : OPT_LOOPS , Loops ) ;
2017-05-31 22:50:05 -04:00
PARSEOPTION ( eOptionIDs : : OPT_SCALE_TYPE , ScaleType ) ; //String args.
PARSEOPTION ( eOptionIDs : : OPT_OPENCL_DEVICE , Device ) ;
2016-12-05 22:04:33 -05:00
PARSEOPTION ( eOptionIDs : : OPT_ISAAC_SEED , IsaacSeed ) ;
PARSEOPTION ( eOptionIDs : : OPT_IN , Input ) ;
PARSEOPTION ( eOptionIDs : : OPT_OUT , Out ) ;
PARSEOPTION ( eOptionIDs : : OPT_PREFIX , Prefix ) ;
PARSEOPTION ( eOptionIDs : : OPT_SUFFIX , Suffix ) ;
PARSEOPTION ( eOptionIDs : : OPT_FORMAT , Format ) ;
PARSEOPTION ( eOptionIDs : : OPT_PALETTE_FILE , PalettePath ) ;
PARSEOPTION ( eOptionIDs : : OPT_ID , Id ) ;
PARSEOPTION ( eOptionIDs : : OPT_URL , Url ) ;
PARSEOPTION ( eOptionIDs : : OPT_NICK , Nick ) ;
PARSEOPTION ( eOptionIDs : : OPT_COMMENT , Comment ) ;
PARSEOPTION ( eOptionIDs : : OPT_TEMPLATE , TemplateFile ) ;
PARSEOPTION ( eOptionIDs : : OPT_CLONE , Clone ) ;
PARSEOPTION ( eOptionIDs : : OPT_CLONE_ALL , CloneAll ) ;
PARSEOPTION ( eOptionIDs : : OPT_CLONE_ACTION , CloneAction ) ;
PARSEOPTION ( eOptionIDs : : OPT_ANIMATE , Animate ) ;
PARSEOPTION ( eOptionIDs : : OPT_MUTATE , Mutate ) ;
PARSEOPTION ( eOptionIDs : : OPT_CROSS0 , Cross0 ) ;
PARSEOPTION ( eOptionIDs : : OPT_CROSS1 , Cross1 ) ;
PARSEOPTION ( eOptionIDs : : OPT_METHOD , Method ) ;
PARSEOPTION ( eOptionIDs : : OPT_INTER , Inter ) ;
PARSEOPTION ( eOptionIDs : : OPT_ROTATE , Rotate ) ;
PARSEOPTION ( eOptionIDs : : OPT_SEQUENCE , Sequence ) ;
PARSEOPTION ( eOptionIDs : : OPT_USE_VARS , UseVars ) ;
PARSEOPTION ( eOptionIDs : : OPT_DONT_USE_VARS , DontUseVars ) ;
PARSEOPTION ( eOptionIDs : : OPT_EXTRAS , Extras ) ;
2016-01-04 19:50:15 -05:00
2014-12-05 21:30:46 -05:00
default :
{
break ; //Do nothing.
}
2014-07-08 03:11:14 -04:00
}
}
else
{
2016-02-12 00:38:21 -05:00
cout < < " Invalid argument: " < < args . OptionText ( ) < < " \n " ;
cout < < " \t Reason: " < < GetLastErrorText ( errorCode ) < < " \n " ;
2014-07-08 03:11:14 -04:00
}
}
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
auto strings = Split ( Device ( ) , ' , ' ) ;
if ( ! strings . empty ( ) )
{
for ( auto & s : strings )
{
size_t device = 0 ;
istringstream istr ( s ) ;
istr > > device ;
if ( ! istr . bad ( ) & & ! istr . fail ( ) )
m_Devices . push_back ( device ) ;
else
cout < < " Failed to parse device index " < < s ;
}
}
2014-07-08 03:11:14 -04:00
return false ;
}
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
/// <summary>
/// Return a const ref to m_Devices.
/// </summary>
/// <returns>A const ref to the vector of absolute device indices to be used</returns>
const vector < size_t > & Devices ( )
{
return m_Devices ;
}
2014-07-08 03:11:14 -04:00
/// <summary>
/// Return a vector of all available options for the specified program.
/// </summary>
/// <param name="optUsage">The specified program usage</param>
/// <returns>A vector of all available options for the specified program</returns>
2016-01-04 19:50:15 -05:00
vector < CSimpleOpt : : SOption > GetSimpleOptions ( eOptionUse optUsage = eOptionUse : : OPT_USE_ALL )
2014-07-08 03:11:14 -04:00
{
vector < CSimpleOpt : : SOption > entries ;
CSimpleOpt : : SOption endOption = SO_END_OF_OPTIONS ;
entries . reserve ( 75 ) ;
2016-01-04 19:50:15 -05:00
for ( auto entry : m_BoolArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) entries . push_back ( entry - > m_Option ) ;
for ( auto entry : m_IntArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) entries . push_back ( entry - > m_Option ) ;
for ( auto entry : m_UintArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) entries . push_back ( entry - > m_Option ) ;
for ( auto entry : m_DoubleArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) entries . push_back ( entry - > m_Option ) ;
for ( auto entry : m_StringArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) entries . push_back ( entry - > m_Option ) ;
2014-07-08 03:11:14 -04:00
entries . push_back ( endOption ) ;
return entries ;
}
/// <summary>
/// Return a string with the descriptions of all available options for the specified program.
/// </summary>
/// <param name="optUsage">The specified program usage</param>
/// <returns>A string with the descriptions of all available options for the specified program</returns>
2016-01-04 19:50:15 -05:00
string GetUsage ( eOptionUse optUsage = eOptionUse : : OPT_USE_ALL )
2014-07-08 03:11:14 -04:00
{
ostringstream os ;
2016-02-12 00:38:21 -05:00
for ( auto entry : m_BoolArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_DocString < < " \n " ;
2016-01-04 19:50:15 -05:00
2016-02-12 00:38:21 -05:00
for ( auto entry : m_IntArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_DocString < < " \n " ;
2016-01-04 19:50:15 -05:00
2016-02-12 00:38:21 -05:00
for ( auto entry : m_UintArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_DocString < < " \n " ;
2016-01-04 19:50:15 -05:00
2016-02-12 00:38:21 -05:00
for ( auto entry : m_DoubleArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_DocString < < " \n " ;
2016-01-04 19:50:15 -05:00
2016-02-12 00:38:21 -05:00
for ( auto entry : m_StringArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_DocString < < " \n " ;
2014-07-08 03:11:14 -04:00
return os . str ( ) ;
}
/// <summary>
/// Return a string with all of the names and values for all available options for the specified program.
/// </summary>
/// <param name="optUsage">The specified program usage</param>
/// <returns>A string with all of the names and values for all available options for the specified program</returns>
2016-01-04 19:50:15 -05:00
string GetValues ( eOptionUse optUsage = eOptionUse : : OPT_USE_ALL )
2014-07-08 03:11:14 -04:00
{
ostringstream os ;
os < < std : : boolalpha ;
2016-01-04 19:50:15 -05:00
2016-02-12 00:38:21 -05:00
for ( auto entry : m_BoolArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_NameWithoutDashes < < " : " < < ( * entry ) ( ) < < " \n " ;
2016-01-04 19:50:15 -05:00
2016-02-12 00:38:21 -05:00
for ( auto entry : m_IntArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_NameWithoutDashes < < " : " < < ( * entry ) ( ) < < " \n " ;
2016-01-04 19:50:15 -05:00
2016-02-12 00:38:21 -05:00
for ( auto entry : m_UintArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_NameWithoutDashes < < " : " < < ( * entry ) ( ) < < " \n " ;
2016-01-04 19:50:15 -05:00
2016-02-12 00:38:21 -05:00
for ( auto entry : m_DoubleArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_NameWithoutDashes < < " : " < < ( * entry ) ( ) < < " \n " ;
2016-01-04 19:50:15 -05:00
2016-02-12 00:38:21 -05:00
for ( auto entry : m_StringArgs ) if ( et ( entry - > m_OptionUse ) & et ( optUsage ) ) os < < entry - > m_NameWithoutDashes < < " : " < < ( * entry ) ( ) < < " \n " ;
2014-07-08 03:11:14 -04:00
return os . str ( ) ;
}
/// <summary>
/// Print description string, version and description of all available options for the specified program.
/// </summary>
/// <param name="optUsage">The specified program usage</param>
void ShowUsage ( eOptionUse optUsage )
{
2016-02-12 00:38:21 -05:00
cout < < DescriptionString < < " version " < < EmberVersion ( ) < < " \n \n " ;
2014-07-08 03:11:14 -04:00
2016-01-04 19:50:15 -05:00
if ( optUsage = = eOptionUse : : OPT_USE_RENDER )
2014-07-08 03:11:14 -04:00
{
cout < < " Usage: \n "
2016-04-03 21:55:12 -04:00
# ifdef _WIN32
2017-07-22 16:43:35 -04:00
" \t EmberRender.exe --in=test.flame [--out=outfile --verbose --progress --opencl] \n \n " ;
2016-04-03 21:55:12 -04:00
# else
2017-07-22 16:43:35 -04:00
" \t emberrender --in=test.flame [--out=outfile --verbose --progress --opencl] \n \n " ;
2016-04-03 21:55:12 -04:00
# endif
2014-07-08 03:11:14 -04:00
}
2016-01-04 19:50:15 -05:00
else if ( optUsage = = eOptionUse : : OPT_USE_ANIMATE )
2014-07-08 03:11:14 -04:00
{
cout < < " Usage: \n "
2016-04-03 21:55:12 -04:00
# ifdef _WIN32
2017-07-22 16:43:35 -04:00
" \t EmberAnimate.exe --in=sequence.flame [--verbose --progress --opencl] \n \n " ;
2016-04-03 21:55:12 -04:00
# else
2017-07-22 16:43:35 -04:00
" \t emberanimate --in=sequence.flame [--verbose --progress --opencl] \n \n " ;
2016-04-03 21:55:12 -04:00
# endif
2014-07-08 03:11:14 -04:00
}
2016-01-04 19:50:15 -05:00
else if ( optUsage = = eOptionUse : : OPT_USE_GENOME )
2014-07-08 03:11:14 -04:00
{
cout < < " Usage: \n "
2016-04-03 21:55:12 -04:00
# ifdef _WIN32
" \t EmberGenome.exe --sequence=test.flame > sequenceout.flame \n \n " ;
# else
" \t embergenome --sequence=test.flame > sequenceout.flame \n \n " ;
# endif
2014-07-08 03:11:14 -04:00
}
2016-02-12 00:38:21 -05:00
cout < < GetUsage ( optUsage ) < < " \n " ;
2014-07-08 03:11:14 -04:00
}
/// <summary>
/// Return the last option parsing error text as a string.
/// </summary>
/// <param name="errorCode">The code of the last parsing error</param>
/// <returns>The last option parsing error text as a string</returns>
string GetLastErrorText ( int errorCode )
{
switch ( errorCode )
{
case SO_SUCCESS : return " Success " ;
2016-01-04 19:50:15 -05:00
2014-07-08 03:11:14 -04:00
case SO_OPT_INVALID : return " Unrecognized option " ;
2016-01-04 19:50:15 -05:00
2014-07-08 03:11:14 -04:00
case SO_OPT_MULTIPLE : return " Option matched multiple strings " ;
2016-01-04 19:50:15 -05:00
2014-07-08 03:11:14 -04:00
case SO_ARG_INVALID : return " Option does not accept argument " ;
2016-01-04 19:50:15 -05:00
2014-07-08 03:11:14 -04:00
case SO_ARG_INVALID_TYPE : return " Invalid argument format " ;
2016-01-04 19:50:15 -05:00
2014-07-08 03:11:14 -04:00
case SO_ARG_MISSING : return " Required argument is missing " ;
2016-01-04 19:50:15 -05:00
2014-07-08 03:11:14 -04:00
case SO_ARG_INVALID_DATA : return " Invalid argument data " ;
2016-01-04 19:50:15 -05:00
2014-07-08 03:11:14 -04:00
default : return " Unknown error " ;
}
}
//Break from the usual m_* notation for members here because
//each of these is a functor, so it looks nicer and is less typing
//to just say opt.Member().
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eob Help ; //Diagnostic bool.
Eob Version ;
Eob Verbose ;
Eob Debug ;
Eob DumpArgs ;
Eob DoProgress ;
Eob OpenCLInfo ;
2016-02-15 15:02:37 -05:00
Eob AllVars ;
Eob RegVars ;
Eob PreVars ;
Eob PostVars ;
2016-05-15 02:33:08 -04:00
Eob SumVars ;
Eob AssignVars ;
Eob PpSumVars ;
Eob PpAssignVars ;
Eob DcVars ;
2016-05-18 19:48:40 -04:00
Eob StateVars ;
2016-05-15 02:33:08 -04:00
Eob ParVars ;
Eob NonParVars ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eob EmberCL ; //Value bool.
2016-04-11 21:15:14 -04:00
Eob Sp ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eob EarlyClip ;
Eob YAxisUp ;
Eob Transparency ;
Eob NameEnable ;
Eob HexPalette ;
Eob InsertPalette ;
2017-07-22 16:43:35 -04:00
Eob EnableComments ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eob WriteGenome ;
Eob ThreadedWrite ;
Eob Enclosed ;
Eob NoEdits ;
Eob UnsmoothEdge ;
2016-12-05 22:04:33 -05:00
Eob CwLoops ;
Eob CwInterpLoops ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eob LockAccum ;
Eob DumpKernel ;
Eoi Symmetry ; //Value int.
Eoi SheepGen ;
Eoi SheepId ;
Eoi Priority ;
2016-04-11 21:15:14 -04:00
Eou ThreadCount ; //Value uint.
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eou Strips ;
Eou Supersample ;
2016-05-05 19:11:30 -04:00
Eou TemporalSamples ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eou Bits ;
Eou PrintEditDepth ;
Eou JpegQuality ;
Eou FirstFrame ;
Eou LastFrame ;
Eou Frame ;
Eou Dtime ;
2016-12-05 22:04:33 -05:00
Eou LoopFrames ;
Eou InterpFrames ;
Eou InterpLoops ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eou Repeat ;
Eou Tries ;
Eou MaxXforms ;
2016-06-11 20:47:03 -04:00
Eou StartCount ;
Eou Padding ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eod SizeScale ; //Value double.
2017-05-31 22:50:05 -04:00
Eod WidthScale ;
Eod HeightScale ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eod QualityScale ;
--User changes
-Allow for pausing the renderer in the main window. This makes is more efficient when entering many parameters, such as when following a tutorial.
-Add support for new variations: erf, gamma, jac_cn, jac_dn, jac_sn, logDB, pressure_wave, pRose3D, splits3D, w, waves2b, x, xerf, y, z.
-Inform user of the start and stop of file parsing in EmberAnimate because the files could potentially be very large.
-Move the follwing fields to a new table called Animation: Interpolation, Affine Interpolation, Temporal Samples, Temporal Filter Width, Temporal Filter Type.
-These currently have no effect on the interactive renderer and instead are used when running flames through EmberGenome to generate sequences, and then animating them in Fractorium or EmberAnimate.
-Add new parameter overrides for EmberRender and EmberAnimate which directly assign values to all flames being rendered, rather than scale:
--quality
--demin
--demax
--Bug fixes
-Left pad instead of right pad names of sequence outputs from EmberGenome.
-Unique file naming was broken for files which already had an underscore in them.
-Properly report that png is the default format of EmberRender and EmberAnimate output instead of erroneously claiming it was jpg.
-Make command line programs search these folders in this order for the palette file:
./
~/.fractorium
~/.config/fractorium
/usr/share/fractorium
/usr/local/share/fractorium
-Fix possible bad values in hexes.
-Better assignment of Z variables.
-Fix boarders due to use of poorly implemented rint() function from flam3. Use std::rint() now.
-wedge_sph was completely wrong due to having accidentally swapped the mapping of two parameters.
-Make juliascope juliascope_power parameter be of type REAL_NONZERO since it's used as a denominator.
-Make Z assignment compatible with the originals in:
-arch, bcircle, bCollide, bent, bent2, bisplit, blob, blur_linear, blur_square, bMod, boarders, boarders2, bSwirl, bTransform, butterfly, cardioid, cell, circleblur, circlize, circlize2, circus, collideoscope, cos, cosine, cosh, coth, cpow, cpow2, crescents, cropn, csc, csch, curl, curve, dc_gridout, deltaa, diamond, disc2, eclipse, eCollide, edisc, eJulia, elliptic, eMod, eMotion, ennepers, epispiral, ePush, eRotate, eScale, eSwirl, ex, exp, expo, exponential, fan, fdisc, fibonacci, fibonacci2, fisheye, flipcircle, flipy, flower, flux, funnel, glynnia, GlynnSim1, GlynnSim2, GlynnSim3, gridout, handkerchief, heart, hole, idisc, julia, julian2, juliaNab, kaleidoscope, lazyTravis, Lissajous, mask, MobiusN, mobius_strip, modulus, murl, murl2, npolar, ortho, oscilloscope, parabola, perspective, petal, phoenix_julia, pie (was also inconsistent between cpu and gpu), poincare, popcorn, popcorn2, power, pow_block, rational3, rays, rblur, rings, rippled, roundspher, sec, secant2, sigmoid, sin, sineblur, sinh, sinusgrid, sphericaln, spiralwing, spirograph, split, squarize, squirrel, squish, sschecks, starblur, stripes, stwin, super_shape, tan, tancos, tangent, tanh, TwinTrian, twoface, unpolar, waves, wavesn, wedge_julia, whorl, xheart, zblur, zscale.
--Code changes
-Generalize Variation::PrecalcHelper() and rename to PrePostPrecalcHelper().
--Do the same for the OpenCL version and rename it PrePostPrecalcOpenCLString().
-Rename Variation::m_AssignType to m_PrePostAssignType since it's only relevant to pre/post variations.
2016-01-29 20:02:15 -05:00
Eod Quality ;
Eod DeMin ;
Eod DeMax ;
--User changes:
-Show common folder locations such as documents, downloads, pictures in the sidebar in all file dialogs.
-Warning message about exceeding memory in final render dialog now suggests strips as the solution to the problem.
-Strips now has a tooltip explaining what it does.
-Allow more digits in the spinners on the color section the flame tab.
-Add manually adjustable size spinners in the final render dialog. Percentage scale and absolute size are fully synced.
-Default prefix in final render is now the filename when doing animations (coming from sequence section of the library tab).
-Changed the elliptic variation back to using a less precise version for float, and a more precise version for double. The last release had it always using double.
-New applied xaos table that shows a read-only view of actual weights by taking the base xform weights and multiplying them by the xaos values.
-New table in the xaos tab that gives a graphical representation of the probability that each xform is chosen, with and without xaos.
-Add button to transpose the xaos rows and columns.
-Add support for importing .chaos files from Chaotica.
--Pasting back to Chaotica will work for most, but not all, variations due to incompatible parameter names in some.
-Curves are now splines instead of Bezier. This adds compatibility with Chaotica, but breaks it for Apophysis. Xmls are still pastable, but the color curves will look different.
--The curve editor on the palette tab can now add points by clicking on the lines and remove points by clicking on the points themselves, just like Chaotica.
--Splines are saved in four new xml fields: overall_curve, red_curve, green_curve and blue_curve.
-Allow for specifying the percentage of a sub batch each thread should iterate through per kernel call when running with OpenCL. This gives a roughly 1% performance increase due to having to make less kernel calls while iterating.
--This field is present for interactive editing (where it's not very useful) and in the final render dialog.
--On the command line, this is specified as --sbpctth for EmberRender and EmberAnimate.
-Allow double clicking to toggle the supersample field in the flame tab between 1 and 2 for easily checking the effect of the field.
-When showing affine values as polar coordinates, show angles normalized to 360 to match Chaotica.
-Fuse Count spinner now toggles between 15 and 100 when double clicking for easily checking the effect of the field.
-Added field for limiting the range in the x and y direction that the initial points are chosen from.
-Added a field called K2 which is an alternative way to set brightness, ignored when zero.
--This has no effect for many variations, but hs a noticeable effect for some.
-Added new variations:
arcsech
arcsech2
arcsinh
arctanh
asteria
block
bwraps_rand
circlecrop2
coth_spiral
crackle2
depth_blur
depth_blur2
depth_gaussian
depth_gaussian2
depth_ngon
depth_ngon2
depth_sine
depth_sine2
dragonfire
dspherical
dust
excinis
exp2
flipx
flowerdb
foci_p
gaussian
glynnia2
glynnsim4
glynnsim5
henon
henon
hex_rand
hex_truchet
hypershift
lazyjess
lens
lozi
lozi
modulusx
modulusy
oscilloscope2
point_symmetry
pointsymmetry
projective
pulse
rotate
scry2
shift
smartshape
spher
squares
starblur2
swirl3
swirl3r
tanh_spiral
target0
target2
tile_hlp
truchet_glyph
truchet_inv
truchet_knot
unicorngaloshen
vibration
vibration2
--hex_truchet, hex_rand should always use double. They are extremely sensitive.
--Bug fixes:
-Bounds sign was flipped for x coordinate of world space when center was not zero.
-Right clicking and dragging spinner showed menu on mouse up, even if it was very far away.
-Text boxes for size in final render dialog were hard to type in. Same bug as xform weight used to be so fix the same way.
-Fix spelling to be plural in toggle color speed box.
-Stop using the blank user palette to generate flames. Either put colored palettes in it, or exclude it from randoms.
-Clicking the random palette button for a palette file with only one palette in it would freeze the program.
-Clicking none scale in final render did not re-render the preview.
-Use less precision on random xaos. No need for 12 decimal places.
-The term sub batch is overloaded in the options dialog. Change the naming and tooltip of those settings for cpu and opencl.
--Also made clear in the tooltip for the default opencl quality setting that the value is per device.
-The arrows spinner in palette editor appears like a read-only label. Made it look like a spinner.
-Fix border colors for various spin boxes and table headers in the style sheet. Requires reload.
-Fix a bug in the bwraps variation which would produce different results than Chaotica and Apophysis.
-Synth was allowed to be selected for random flame generation when using an Nvidia card but it shouldn't have been because Nvidia has a hard time compiling synth.
-A casting bug in the OpenCL kernels for log scaling and density filtering was preventing successful compilations on Intel iGPUs. Fixed even though we don't support anything other than AMD and Nvidia.
-Palette rotation (click and drag) position was not being reset when loading a new flame.
-When the xform circles were hidden, opening and closing the options dialog would improperly reshow them.
-Double click toggle was broken on integer spin boxes.
-Fixed tab order of some controls.
-Creating a palette from a jpg in the palette editor only produced a single color.
--Needed to package imageformats/qjpeg.dll with the Windows installer.
-The basic memory benchmark test flame was not really testing memory. Make it more spread out.
-Remove the temporal samples field from the flame tab, it was never used because it's only an animation parameter which is specified in the final render dialog or on the command line with EmberAnimate.
--Code changes:
-Add IsEmpty() to Palette to determine if a palette is all black.
-Attempt to avoid selecting a blank palette in PaletteList::GetRandomPalette().
-Add function ScanForChaosNodes() and some associated helper functions in XmlToEmber.
-Make variation param name correction be case insensitive in XmlToEmber.
-Report error when assigning a variation param value in XmlToEmber.
-Add SubBatchPercentPerThread() method to RendererCL.
-Override enterEvent() and leaveEvent() in DoubleSpinBox and SpinBox to prevent the context menu from showing up on right mouse up after already leaving the spinner.
-Filtering the mouse wheel event in TableWidget no longer appears to be needed. It was probably an old Qt bug that has been fixed.
-Gui/ember syncing code in the final render dialog needed to be reworked to accommodate absolute sizes.
2019-04-13 22:00:46 -04:00
Eod SBPctPerTh ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eod AspectRatio ;
Eod Stagger ;
Eod AvgThresh ;
Eod BlackThresh ;
Eod WhiteLimit ;
Eod Speed ;
Eod OffsetX ;
Eod OffsetY ;
Eod UseMem ;
Eod Loops ;
2017-05-31 22:50:05 -04:00
Eos ScaleType ; //Value string.
Eos Device ;
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
Eos IsaacSeed ;
Eos Input ;
Eos Out ;
Eos Prefix ;
Eos Suffix ;
Eos Format ;
Eos PalettePath ;
Eos Id ;
Eos Url ;
Eos Nick ;
Eos Comment ;
Eos TemplateFile ;
Eos Clone ;
Eos CloneAll ;
Eos CloneAction ;
Eos Animate ;
Eos Mutate ;
Eos Cross0 ;
Eos Cross1 ;
Eos Method ;
Eos Inter ;
Eos Rotate ;
Eos Sequence ;
Eos UseVars ;
Eos DontUseVars ;
Eos Extras ;
2014-07-08 03:11:14 -04:00
private :
--User changes
-Add support for multiple GPU devices.
--These options are present in the command line and in Fractorium.
-Change scheme of specifying devices from platform,device to just total device index.
--Single number on the command line.
--Change from combo boxes for device selection to a table of all devices in Fractorium.
-Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Bug fixes
-EmberAnimate, EmberRender, FractoriumSettings, FinalRenderDialog: Fix wrong order of arguments to Clamp() when assigning thread priority.
-VariationsDC.h: Fix NVidia OpenCL compilation error in DCTriangleVariation.
-FractoriumXformsColor.cpp: Checking for null pixmap pointer is not enough, must also check if the underlying buffer is null via call to QPixmap::isNull().
--Code changes
-Ember.h: Add case for FLAME_MOTION_NONE and default in ApplyFlameMotion().
-EmberMotion.h: Call base constructor.
-EmberPch.h: #pragma once only on Windows.
-EmberToXml.h:
--Handle different types of exceptions.
--Add default cases to ToString().
-Isaac.h: Remove unused variable in constructor.
-Point.h: Call base constructor in Color().
-Renderer.h/cpp:
--Add bool to Alloc() to only allocate memory for the histogram. Needed for multi-GPU.
--Make CoordMap() return a const ref, not a pointer.
-SheepTools.h:
--Use 64-bit types like the rest of the code already does.
--Fix some comment misspellings.
-Timing.h: Make BeginTime(), EndTime(), ElapsedTime() and Format() be const functions.
-Utils.h:
--Add new functions Equal() and Split().
--Handle more exception types in ReadFile().
--Get rid of most legacy blending of C and C++ argument parsing.
-XmlToEmber.h:
--Get rid of most legacy blending of C and C++ code from flam3.
--Remove some unused variables.
-EmberAnimate:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--If a render fails, exit since there is no point in continuing an animation with a missing frame.
--Pass variables to threaded save better, which most likely fixes a very subtle bug that existed before.
--Remove some unused variables.
-EmberGenome, EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
-EmberRender:
--Support multi-GPU processing that alternates full frames between devices.
--Use OpenCLInfo instead of OpenCLWrapper for --openclinfo option.
--Remove bucketT template parameter, and hard code float in its place.
--Only print values when not rendering with OpenCL, since they're always 0 in that case.
-EmberCLPch.h:
--#pragma once only on Windows.
--#include <atomic>.
-IterOpenCLKernelCreator.h: Add new kernel for summing two histograms. This is needed for multi-GPU.
-OpenCLWrapper.h:
--Move all OpenCL info related code into its own class OpenCLInfo.
--Add members to cache the values of global memory size and max allocation size.
-RendererCL.h/cpp:
--Redesign to accomodate multi-GPU.
--Constructor now takes a vector of devices.
--Remove DumpErrorReport() function, it's handled in the base.
--ClearBuffer(), ReadPoints(), WritePoints(), ReadHist() and WriteHist() now optionally take a device index as a parameter.
--MakeDmap() override and m_DmapCL member removed because it no longer applies since the histogram is always float since the last commit.
--Add new function SumDeviceHist() to sum histograms from two devices by first copying to a temporary on the host, then a temporary on the device, then summing.
--m_Calls member removed, as it's now per-device.
--OpenCLWrapper removed.
--m_Seeds member is now a vector of vector of seeds, to accomodate a separate and different array of seeds for each device.
--Added member m_Devices, a vector of unique_ptr of RendererCLDevice.
-EmberCommon.h
--Added Devices() function to convert from a vector of device indices to a vector of platform,device indices.
--Changed CreateRenderer() to accept a vector of devices to create a single RendererCL which will split work across multiple devices.
--Added CreateRenderers() function to accept a vector of devices to create multiple RendererCL, each which will render on a single device.
--Add more comments to some existing functions.
-EmberCommonPch.h: #pragma once only on Windows.
-EmberOptions.h:
--Remove --platform option, it's just sequential device number now with the --device option.
--Make --out be OPT_USE_RENDER instead of OPT_RENDER_ANIM since it's an error condition when animating. It makes no sense to write all frames to a single image.
--Add Devices() function to parse comma separated --device option string and return a vector of device indices.
--Make int and uint types be 64-bit, so intmax_t and size_t.
--Make better use of macros.
-JpegUtils.h: Make string parameters to WriteJpeg() and WritePng() be const ref.
-All project files: Turn off buffer security check option in Visual Studio (/Gs-)
-deployment.pri: Remove the line OTHER_FILES +=, it's pointless and was causing problems.
-Ember.pro, EmberCL.pro: Add CONFIG += plugin, otherwise it wouldn't link.
-EmberCL.pro: Add new files for multi-GPU support.
-build_all.sh: use -j4 and QMAKE=${QMAKE:/usr/bin/qmake}
-shared_settings.pri:
-Add version string.
-Remove old DESTDIR definitions.
-Add the following lines or else nothing would build:
CONFIG(release, debug|release) {
CONFIG += warn_off
DESTDIR = ../../../Bin/release
}
CONFIG(debug, debug|release) {
DESTDIR = ../../../Bin/debug
}
QMAKE_POST_LINK += $$quote(cp --update ../../../Data/flam3-palettes.xml $${DESTDIR}$$escape_expand(\n\t))
LIBS += -L/usr/lib -lpthread
-AboutDialog.ui: Another futile attempt to make it look correct on Linux.
-FinalRenderDialog.h/cpp:
--Add support for multi-GPU.
--Change from combo boxes for device selection to a table of all devices.
--Ensure device selection makes sense.
--Remove "FinalRender" prefix of various function names, it's implied given the context.
-FinalRenderEmberController.h/cpp:
--Add support for multi-GPU.
--Change m_FinishedImageCount to be atomic.
--Move CancelRender() from the base to FinalRenderEmberController<T>.
--Refactor RenderComplete() to omit any progress related functionality or image saving since it can be potentially ran in a thread.
--Consolidate setting various renderer fields into SyncGuiToRenderer().
-Fractorium.cpp: Allow for resizing of the options dialog to show the entire device table.
-FractoriumCommon.h: Add various functions to handle a table showing the available OpenCL devices on the system.
-FractoriumEmberController.h/cpp: Remove m_FinalImageIndex, it's no longer needed.
-FractoriumRender.cpp: Scale the interactive sub batch count and quality by the number of devices used.
-FractoriumSettings.h/cpp:
--Temporal samples defaults to 100 instead of 1000 which was needless overkill.
--Add multi-GPU support, remove old device,platform pair.
-FractoriumToolbar.cpp: Disable OpenCL toolbar button if there are no devices present on the system.
-FractoriumOptionsDialog.h/cpp:
--Add support for multi-GPU.
--Consolidate more assignments in DataToGui().
--Enable/disable CPU/OpenCL items in response to OpenCL checkbox event.
-Misc: Convert almost everything to size_t for unsigned, intmax_t for signed.
2015-09-12 21:33:45 -04:00
vector < size_t > m_Devices ;
vector < Eob * > m_BoolArgs ;
vector < Eoi * > m_IntArgs ;
vector < Eou * > m_UintArgs ;
vector < Eod * > m_DoubleArgs ;
vector < Eos * > m_StringArgs ;
2014-07-08 03:11:14 -04:00
} ;