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 ,
OPT_JPEG_COMMENTS ,
OPT_PNG_COMMENTS ,
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_BPC ,
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 ,
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 " ) ) ;
INITBOOLOPTION ( JpegComments , Eob ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_JPEG_COMMENTS , _T ( " --enable_jpg_comments " ) , false , SO_NONE , " --enable_jpg_comments Enables embedding the flame parameters and user identifying information in the jpeg header [default: false]. \n " ) ) ;
INITBOOLOPTION ( PngComments , Eob ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_PNG_COMMENTS , _T ( " --enable_png_comments " ) , false , SO_NONE , " --enable_png_comments Enables embedding the flame parameters and user identifying information in the png header [default: false]. \n " ) ) ;
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 ( BitsPerChannel , Eou ( eOptionUse : : OPT_RENDER_ANIM , eOptionIDs : : OPT_BPC , _T ( " --bpc " ) , 8 , SO_REQ_SEP , " --bpc=<val> Bits per channel. 8 or 16 for PNG, 8 for all others, always 8 with OpenCL [default: 8]. \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.
2016-12-05 22:04:33 -05: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 " ) ) ;
2017-05-31 22:50:05 -04:00
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 " ) ) ;
2016-12-05 22:04:33 -05:00
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 " ) ) ;
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 "
2016-01-04 19:50:15 -05:00
" \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 " ) ) ;
2016-12-05 22:04:33 -05:00
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 [default: png]. \n " ) ) ;
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 ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_JPEG_COMMENTS , JpegComments ) ;
PARSEBOOLOPTION ( eOptionIDs : : OPT_PNG_COMMENTS , PngComments ) ;
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_BPC , BitsPerChannel ) ;
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 ) ;
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
" \t EmberRender.exe --in=test.flame [--out=outfile --format=png --verbose --progress --opencl] \n \n " ;
# else
" \t emberrender --in=test.flame [--out=outfile --format=png --verbose --progress --opencl] \n \n " ;
# 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
" \t EmberAnimate.exe --in=sequence.flame [--format=png --verbose --progress --opencl] \n \n " ;
# else
" \t emberanimate --in=sequence.flame [--format=png --verbose --progress --opencl] \n \n " ;
# 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 ;
Eob JpegComments ;
Eob PngComments ;
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 BitsPerChannel ;
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
-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
} ;