--User changes
-Add new variations: bubbleT3D, crob, hexaplay3D, hexcrop, hexes, hexnix3D, loonie2, loonie3, nBlur, octapol and synth.
-Allow for pre/post versions of dc_bubble, dc_cylinder and dc_linear whereas before they were omitted.
-When saving a file with multiple embers in it, detect if time values are all the same and if so, start them at zero and increment by 1 for each ember.
-Allow for numerous quality increases to be coalesced into one. It will pick up at the end of the current render.
-Show selection highlight on variations tree in response to mouse hover. This makes it easier to see for which variation or param the current mouse wheel action will apply.
-Make default temporal samples be 100, whereas before it was 1000 which was overkill.
-Require the shift key to be held with delete for deleting an ember to prevent it from triggering when the user enters delete in the edit box.
-This wasn't otherwise fixable without writing a lot more code.
--Bug fixes
-EmberGenome was crashing when generating a sequence from a source file with more than 2 embers in it.
-EmberGenome was improperly handling the first frame of a merge after the last frame of the loop.
-These bugs were due to a previous commit. Revert parts of that commit.
-Prevent a zoom value of less than 0 when reading from xml.
-Slight optimization of the crescents, and mask variations, if the compiler wasn't doing it already.
-Unique file naming was broken because it was looking for _# and the default names ended with -#.
-Disallow renaming of an ember in the library tree to an empty string.
-Severe bug that prevented some variations from being read correctly from params generated outside this program.
-Severe OpenCL randomization bug. The first x coordinates of the first points in the first kernel call of the first ember of a render since the OpenCL renderer object was created were not random and were mostly -1.
-Severe bug when populating xform selection distributions that could sometimes cause a crash due to roundoff error. Fix by using double.
-Limit the max number of variations in a random ember to MAX_CL_VARS, which is 8. This ensures they'll look the same on CPU and GPU.
-Prevent user from saving stylesheet to default.qss, it's a special reserved filename.
--Code changes
-Generalize using the running sum output point inside of a variation for all cases: pre, reg and post.
-Allow for array variables in variations where the address of each element is stored in m_Params.
-Qualify all math functions with std::
-No longer use our own Clamp() in OpenCL, instead use the standard clamp().
-Redesign how functions are used in the variations OpenCL code.
-Add tests to EmberTester to verify some of the new functionality.
-Place more const and override qualifiers on functions where appropriate.
-Add a global rand with a lock to be used very sparingly.
-Use a map instead of a vector for bad param names in Xml parsing.
-Prefix affine interpolation mode defines with "AFFINE_" to make their purpose more clear.
-Allow for variations that change state during iteration by sending a separate copy of the ember to each rendering thread.
-Implement this same functionality with a local struct in OpenCL. It's members are the total of all variables that need to change state within an ember.
-Add Contains() function to Utils.h.
-EmberRender: print names of kernels being printed with --dump_kernel option.
-Clean up EmberTester to handle some of the recent changes.
-Fix various casts.
-Replace % 2 with & 1, even though the compiler was likely doing this already.
-Add new file Variations06.h to accommodate new variations.
-General cleanup.
2015-11-22 17:15:07 -05:00
|
|
|
/*---Base Style---
|
|
|
|
This is needed to deal with the large tabs in the fusion theme which is the default on Linux, and optional on Windows.
|
|
|
|
It's not needed for other themes.
|
|
|
|
You should keep this at the top of whatever custom style you make to ensure the tabs aren't unusually large.*/
|
|
|
|
QTabBar::tab { height: 5ex; }/*Do this for windows*/
|
|
|
|
/*QTabBar::tab { height: 3ex; }*//*Do this for linux*/
|
|
|
|
|
|
|
|
/*This is needed to give the labels on the status bar some padding.*/
|
|
|
|
QStatusBar QLabel { padding-left: 2px; padding-right: 2px; }
|
|
|
|
|
|
|
|
/*Specific styles below this line*/
|
|
|
|
|
|
|
|
QObject
|
|
|
|
{
|
|
|
|
background-color : rgb(53, 53, 53);
|
|
|
|
color: darkgray;
|
|
|
|
alternate-background-color: rgb(53, 53, 53);
|
|
|
|
selection-color: black;
|
|
|
|
selection-background-color: rgb(42, 130, 218);
|
|
|
|
}
|
|
|
|
|
|
|
|
QObject:disabled
|
|
|
|
{
|
|
|
|
color: rgb(35, 35, 35);
|
|
|
|
background-color: rgb(53, 53, 53);
|
|
|
|
border-color: rgb(35, 35, 35);
|
|
|
|
}
|
|
|
|
|
|
|
|
QDockWidget::float-button
|
|
|
|
{
|
|
|
|
background-color: gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QDockWidget::title
|
|
|
|
{
|
|
|
|
margin: 1px;
|
|
|
|
padding: 2px;
|
|
|
|
background-color: gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTabWidget::pane
|
|
|
|
{
|
|
|
|
border: 1px solid gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QPushButton
|
|
|
|
{
|
|
|
|
margin: 1px;
|
|
|
|
padding: 4px;
|
|
|
|
border: 1px solid gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QPushButton:pressed
|
|
|
|
{
|
|
|
|
background-color: gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QPushButton:focus
|
|
|
|
{
|
|
|
|
outline: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView QPushButton
|
|
|
|
{
|
|
|
|
border: 1px solid gray;
|
|
|
|
margin: 1px;
|
|
|
|
padding: 0px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QLineEdit, QTextEdit
|
|
|
|
{
|
|
|
|
border: 1px solid gray;
|
|
|
|
color: darkgray;
|
|
|
|
background-color: rgb(40, 40, 50);
|
|
|
|
selection-background-color: darkgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QToolTip
|
|
|
|
{
|
|
|
|
background-color: darkgray;
|
|
|
|
border: 1px solid darkgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QSpinBox,
|
|
|
|
QDoubleSpinBox
|
|
|
|
{
|
|
|
|
padding-right: 0px;
|
|
|
|
color: darkgray;
|
|
|
|
selection-background-color: darkgray;
|
|
|
|
font: 9pt "Segoe UI";/*For some reason the font changes if you set any style. Set this to whatever font is the default on your system*/
|
|
|
|
}
|
|
|
|
|
|
|
|
QCheckBox
|
|
|
|
{
|
|
|
|
spacing: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QCheckBox::indicator,
|
|
|
|
QTableView::indicator
|
|
|
|
{
|
|
|
|
border: none;
|
|
|
|
border-radius: 2px;
|
|
|
|
background-color: lightgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QCheckBox::indicator:enabled:unchecked,
|
|
|
|
QTableView::indicator:enabled:unchecked
|
|
|
|
{
|
|
|
|
background-color: lightgray;
|
|
|
|
image: url(:/Fractorium/Icons/checkbox_unchecked.png);
|
|
|
|
}
|
|
|
|
|
|
|
|
QCheckBox::indicator:enabled:checked,
|
|
|
|
QTableView::indicator:enabled:checked
|
|
|
|
{
|
|
|
|
background-color: lightgray;
|
|
|
|
image: url(:/Fractorium/Icons/checkbox_checked.png);
|
|
|
|
}
|
|
|
|
|
|
|
|
QCheckBox::indicator:disabled:unchecked,
|
|
|
|
QTableView::indicator:disabled:unchecked
|
|
|
|
{
|
|
|
|
background-color: gray;
|
|
|
|
image: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
QCheckBox::indicator:disabled:checked,
|
|
|
|
QTableView::indicator:disabled:checked
|
|
|
|
{
|
|
|
|
background-color: gray;
|
|
|
|
image: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
QRadioButton::indicator:checked
|
|
|
|
{
|
|
|
|
background-color: black;
|
|
|
|
border: 2px solid gray;
|
|
|
|
border-radius: 7px;
|
|
|
|
width: 8px;
|
|
|
|
height: 8px;
|
|
|
|
margin: 3px;
|
|
|
|
padding: 1px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QRadioButton::indicator:checked:disabled
|
|
|
|
{
|
|
|
|
background-color: rgb(35, 35, 35);
|
|
|
|
}
|
|
|
|
|
|
|
|
QRadioButton::indicator:unchecked
|
|
|
|
{
|
|
|
|
border: 2px solid gray;
|
|
|
|
border-radius: 7px;
|
|
|
|
width: 8px;
|
|
|
|
height: 8px;
|
|
|
|
margin: 3px;
|
|
|
|
padding: 1px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QComboBox
|
|
|
|
{
|
|
|
|
margin: 0px;
|
|
|
|
padding-left: 4px;
|
|
|
|
border: 1px solid gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QComboBox::down-arrow:enabled
|
|
|
|
{
|
|
|
|
border: 1px solid gray;
|
|
|
|
margin-right: 2px;
|
|
|
|
margin-top: 0px;
|
|
|
|
margin-bottom: 1px;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
QComboBox::down-arrow:disabled
|
|
|
|
{
|
|
|
|
border: 1px solid rgb(35, 35, 35);
|
|
|
|
margin-right: 2px;
|
|
|
|
margin-top: 0px;
|
|
|
|
margin-bottom: 1px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QComboBox::drop-down
|
|
|
|
{
|
|
|
|
border: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*For some reason this is needed with Fusion, but not with Windows*/
|
|
|
|
QComboBox::item:selected
|
|
|
|
{
|
|
|
|
selection-background-color: darkgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QComboBox QAbstractItemView
|
|
|
|
{
|
|
|
|
border: 1px solid gray;
|
|
|
|
outline: none;
|
|
|
|
selection-background-color: darkgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView QComboBox
|
|
|
|
{
|
|
|
|
margin: 1px;
|
|
|
|
padding: 0px;
|
|
|
|
padding-left: 3px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QGroupBox QComboBox
|
|
|
|
{
|
|
|
|
margin: 1px;
|
|
|
|
margin-bottom: 0px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView QComboBox::down-arrow
|
|
|
|
{
|
|
|
|
margin-top: 0px;
|
|
|
|
margin-right: 1px;
|
|
|
|
margin-bottom: 0px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QProgressBar
|
|
|
|
{
|
|
|
|
color: black;
|
|
|
|
background-color: gray;
|
|
|
|
border: 0px none gray;
|
|
|
|
border-radius: 3px;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
QProgressBar::chunk
|
|
|
|
{
|
|
|
|
border-radius: 3px;
|
|
|
|
background-color: lightgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QStatusBar QProgressBar
|
|
|
|
{
|
|
|
|
min-width: 300px;
|
|
|
|
max-width: 300px;
|
|
|
|
margin-right: 4px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QMenuBar
|
|
|
|
{
|
|
|
|
border-bottom: 1px solid gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QMenuBar::item
|
|
|
|
{
|
|
|
|
background-color: rgb(53, 53, 53);
|
|
|
|
}
|
|
|
|
|
|
|
|
QMenu::item:disabled
|
|
|
|
{
|
|
|
|
color: rgb(35, 35, 35);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
QMenu::item:enabled:selected
|
|
|
|
{
|
|
|
|
background-color: gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QMenu::item:disabled:selected
|
|
|
|
{
|
|
|
|
background-color: rgb(53, 53, 53);
|
|
|
|
}
|
|
|
|
|
|
|
|
QToolBar
|
|
|
|
{
|
|
|
|
border: 0px none gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QGroupBox
|
|
|
|
{
|
|
|
|
padding-top: 3px;
|
|
|
|
border: 2px solid gray;
|
|
|
|
border-radius: 4px;
|
|
|
|
margin-top: 3ex;
|
|
|
|
}
|
|
|
|
|
|
|
|
QGroupBox::title
|
|
|
|
{
|
|
|
|
subcontrol-origin: border;
|
|
|
|
subcontrol-position: top left;
|
|
|
|
margin-top: -1ex;
|
|
|
|
margin-left: 0px;
|
|
|
|
padding-right: 1px;
|
|
|
|
padding-left: 2px;
|
|
|
|
top: -2ex;
|
|
|
|
left: 8px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QListView
|
|
|
|
{
|
|
|
|
selection-color: black;
|
|
|
|
selection-background-color: darkgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QListView::item:selected
|
|
|
|
{
|
|
|
|
background-color: darkgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTreeView
|
|
|
|
{
|
|
|
|
border: 1px solid gray;
|
|
|
|
background-color: rgb(53, 53, 53);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*Setting this gives a more consistent look, but removes the ability to gray variations that are included in the xform*/
|
|
|
|
QTreeView::item
|
|
|
|
{
|
|
|
|
background-color: rgb(53, 53, 53);
|
|
|
|
color: darkgray;
|
|
|
|
outline: none;
|
|
|
|
margin-right: 1px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTreeView::item:hover
|
|
|
|
{
|
|
|
|
border: 0px none black;
|
|
|
|
background-color: gray;
|
|
|
|
outline: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTreeView::item:selected
|
|
|
|
{
|
|
|
|
border: 0px none black;
|
|
|
|
background-color: gray;
|
|
|
|
outline: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTreeView::branch:!has-children
|
|
|
|
{
|
|
|
|
background: rgb(53, 53, 53);
|
|
|
|
}
|
|
|
|
|
|
|
|
QTreeView::branch:has-children:closed
|
|
|
|
{
|
|
|
|
border: 1px solid darkgray;
|
|
|
|
background: gray;
|
|
|
|
margin: 2px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTreeView::branch:has-children:!closed
|
|
|
|
{
|
|
|
|
border: 1px solid lightgray;
|
|
|
|
background: gray;
|
|
|
|
margin-left: 1px;
|
|
|
|
margin-right: 0px;
|
|
|
|
margin-top: 3px;
|
|
|
|
margin-bottom: 3px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView
|
|
|
|
{
|
|
|
|
border-left: 0px none gray;
|
|
|
|
border-top: 0px none gray;
|
|
|
|
border-right: 0px none gray;
|
|
|
|
border-bottom: 0px none gray;
|
|
|
|
gridline-color: gray;
|
|
|
|
color: darkgray;
|
|
|
|
selection-color: darkgray;
|
|
|
|
selection-background-color: rgb(53, 53, 53);
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView QTableCornerButton::section:enabled
|
|
|
|
{
|
|
|
|
background-color: darkgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView QTableCornerButton::section:disabled
|
|
|
|
{
|
|
|
|
background-color: rgb(53, 53, 53);
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView::indicator:disabled
|
|
|
|
{
|
|
|
|
background-color: rgb(35, 35, 35);
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView:disabled
|
|
|
|
{
|
|
|
|
color: rgb(35, 35, 35);
|
|
|
|
border: none;
|
|
|
|
gridline-color: rgb(35, 35, 35);
|
|
|
|
}
|
|
|
|
|
|
|
|
QHeaderView::section::vertical:enabled
|
|
|
|
{
|
|
|
|
color: black;
|
|
|
|
background-color: gray;
|
|
|
|
border: none;
|
|
|
|
border-bottom: 1px solid gray;
|
|
|
|
padding: 4px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QHeaderView::section::horizontal:enabled
|
|
|
|
{
|
|
|
|
color: black;
|
|
|
|
background-color: darkgray;
|
|
|
|
border: 0px solid darkgray;
|
|
|
|
border-right: 1px solid gray;
|
|
|
|
padding: 4px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QHeaderView::section::vertical:disabled
|
|
|
|
{
|
|
|
|
color: rgb(35, 35, 35);
|
|
|
|
background-color: rgb(53, 53, 53);
|
|
|
|
border: 0px none darkgray;
|
|
|
|
border-bottom: 1px solid rgb(53, 53, 53);
|
|
|
|
padding: 4px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QHeaderView::section::horizontal:disabled
|
|
|
|
{
|
|
|
|
color:rgb(35, 35, 35);
|
|
|
|
background-color: rgb(53, 53, 53);
|
|
|
|
border: 0px none darkgray;
|
|
|
|
border-right: 1px solid rgb(53, 53, 53);
|
|
|
|
padding: 4px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::vertical
|
|
|
|
{
|
|
|
|
background-color: darkgray;
|
|
|
|
border: 0px solid darkgray;
|
|
|
|
width: 15px;
|
|
|
|
margin: 22px 0 22px 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::handle::vertical
|
|
|
|
{
|
|
|
|
background-color: gray;
|
|
|
|
border-top: 1px solid darkgray;
|
|
|
|
border-bottom: 1px solid darkgray;
|
|
|
|
min-height: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::add-line::vertical
|
|
|
|
{
|
|
|
|
border: 0px solid darkgray;
|
|
|
|
background-color: gray;
|
|
|
|
height: 22px;
|
|
|
|
subcontrol-position: bottom;
|
|
|
|
subcontrol-origin: margin;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::sub-line::vertical
|
|
|
|
{
|
|
|
|
border: 0px solid darkgray;
|
|
|
|
background-color: gray;
|
|
|
|
height: 22px;
|
|
|
|
subcontrol-position: top;
|
|
|
|
subcontrol-origin: margin;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::up-arrow::vertical, QScrollBar::down-arrow::vertical
|
|
|
|
{
|
|
|
|
border: 2px solid darkgray;
|
|
|
|
width: 5px;
|
|
|
|
height: 12px;
|
|
|
|
background-color: gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::add-page::vertical, QScrollBar::sub-page::vertical, QScrollBar::add-page::horizontal, QScrollBar::sub-page::horizontal
|
|
|
|
{
|
|
|
|
background-color: darkgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::horizontal
|
|
|
|
{
|
|
|
|
background-color: darkgray;
|
|
|
|
border: 0px solid darkgray;
|
|
|
|
height: 15px;
|
|
|
|
margin: 0px 20px 0 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::handle::horizontal
|
|
|
|
{
|
|
|
|
background-color: gray;
|
|
|
|
border-left: 1px solid darkgray;
|
|
|
|
border-right: 1px solid darkgray;
|
|
|
|
min-width: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::add-line::horizontal
|
|
|
|
{
|
|
|
|
border: 0px solid darkgray;
|
|
|
|
background-color: gray;
|
|
|
|
width: 20px;
|
|
|
|
subcontrol-position: right;
|
|
|
|
subcontrol-origin: margin;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::sub-line::horizontal
|
|
|
|
{
|
|
|
|
border: 0px solid darkgray;
|
|
|
|
background-color: gray;
|
|
|
|
width: 20px;
|
|
|
|
subcontrol-position: left;
|
|
|
|
subcontrol-origin: margin;
|
|
|
|
}
|
|
|
|
|
|
|
|
QScrollBar::left-arrow::horizontal, QScrollBar::right-arrow::horizontal
|
|
|
|
{
|
|
|
|
border: 2px solid darkgray;
|
|
|
|
width: 12px;
|
|
|
|
height: 5px;
|
|
|
|
background-color: gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QMenu::separator
|
|
|
|
{
|
|
|
|
height: 1px;
|
|
|
|
background-color: gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QToolBar::separator
|
|
|
|
{
|
|
|
|
width: 1px;
|
|
|
|
margin-top: 3px;
|
|
|
|
margin-bottom: 2px;
|
|
|
|
background-color: gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QStatusBar::item
|
|
|
|
{
|
|
|
|
border: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*Specific controls*/
|
|
|
|
QTableWidget#ColorTableHeader QHeaderView::section::horizontal,
|
|
|
|
QTableWidget#GeometryTableHeader QHeaderView::section::horizontal,
|
|
|
|
QTableWidget#FilterTableHeader QHeaderView::section::horizontal,
|
|
|
|
QTableWidget#IterationTableHeader QHeaderView::section::horizontal,
|
--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
|
|
|
QTableWidget#AnimationTableHeader QHeaderView::section::horizontal,
|
--User changes
-Add new variations: bubbleT3D, crob, hexaplay3D, hexcrop, hexes, hexnix3D, loonie2, loonie3, nBlur, octapol and synth.
-Allow for pre/post versions of dc_bubble, dc_cylinder and dc_linear whereas before they were omitted.
-When saving a file with multiple embers in it, detect if time values are all the same and if so, start them at zero and increment by 1 for each ember.
-Allow for numerous quality increases to be coalesced into one. It will pick up at the end of the current render.
-Show selection highlight on variations tree in response to mouse hover. This makes it easier to see for which variation or param the current mouse wheel action will apply.
-Make default temporal samples be 100, whereas before it was 1000 which was overkill.
-Require the shift key to be held with delete for deleting an ember to prevent it from triggering when the user enters delete in the edit box.
-This wasn't otherwise fixable without writing a lot more code.
--Bug fixes
-EmberGenome was crashing when generating a sequence from a source file with more than 2 embers in it.
-EmberGenome was improperly handling the first frame of a merge after the last frame of the loop.
-These bugs were due to a previous commit. Revert parts of that commit.
-Prevent a zoom value of less than 0 when reading from xml.
-Slight optimization of the crescents, and mask variations, if the compiler wasn't doing it already.
-Unique file naming was broken because it was looking for _# and the default names ended with -#.
-Disallow renaming of an ember in the library tree to an empty string.
-Severe bug that prevented some variations from being read correctly from params generated outside this program.
-Severe OpenCL randomization bug. The first x coordinates of the first points in the first kernel call of the first ember of a render since the OpenCL renderer object was created were not random and were mostly -1.
-Severe bug when populating xform selection distributions that could sometimes cause a crash due to roundoff error. Fix by using double.
-Limit the max number of variations in a random ember to MAX_CL_VARS, which is 8. This ensures they'll look the same on CPU and GPU.
-Prevent user from saving stylesheet to default.qss, it's a special reserved filename.
--Code changes
-Generalize using the running sum output point inside of a variation for all cases: pre, reg and post.
-Allow for array variables in variations where the address of each element is stored in m_Params.
-Qualify all math functions with std::
-No longer use our own Clamp() in OpenCL, instead use the standard clamp().
-Redesign how functions are used in the variations OpenCL code.
-Add tests to EmberTester to verify some of the new functionality.
-Place more const and override qualifiers on functions where appropriate.
-Add a global rand with a lock to be used very sparingly.
-Use a map instead of a vector for bad param names in Xml parsing.
-Prefix affine interpolation mode defines with "AFFINE_" to make their purpose more clear.
-Allow for variations that change state during iteration by sending a separate copy of the ember to each rendering thread.
-Implement this same functionality with a local struct in OpenCL. It's members are the total of all variables that need to change state within an ember.
-Add Contains() function to Utils.h.
-EmberRender: print names of kernels being printed with --dump_kernel option.
-Clean up EmberTester to handle some of the recent changes.
-Fix various casts.
-Replace % 2 with & 1, even though the compiler was likely doing this already.
-Add new file Variations06.h to accommodate new variations.
-General cleanup.
2015-11-22 17:15:07 -05:00
|
|
|
QTreeWidget#LibraryTree QHeaderView::section::horizontal
|
|
|
|
{
|
|
|
|
border-right: none;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableWidget#ColorTable,
|
|
|
|
QTableWidget#GeometryTable,
|
|
|
|
QTableWidget#FilterTable,
|
|
|
|
QTableWidget#IterationTable,
|
--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
|
|
|
QTableWidget#AnimationTable,
|
--User changes
-Add new variations: bubbleT3D, crob, hexaplay3D, hexcrop, hexes, hexnix3D, loonie2, loonie3, nBlur, octapol and synth.
-Allow for pre/post versions of dc_bubble, dc_cylinder and dc_linear whereas before they were omitted.
-When saving a file with multiple embers in it, detect if time values are all the same and if so, start them at zero and increment by 1 for each ember.
-Allow for numerous quality increases to be coalesced into one. It will pick up at the end of the current render.
-Show selection highlight on variations tree in response to mouse hover. This makes it easier to see for which variation or param the current mouse wheel action will apply.
-Make default temporal samples be 100, whereas before it was 1000 which was overkill.
-Require the shift key to be held with delete for deleting an ember to prevent it from triggering when the user enters delete in the edit box.
-This wasn't otherwise fixable without writing a lot more code.
--Bug fixes
-EmberGenome was crashing when generating a sequence from a source file with more than 2 embers in it.
-EmberGenome was improperly handling the first frame of a merge after the last frame of the loop.
-These bugs were due to a previous commit. Revert parts of that commit.
-Prevent a zoom value of less than 0 when reading from xml.
-Slight optimization of the crescents, and mask variations, if the compiler wasn't doing it already.
-Unique file naming was broken because it was looking for _# and the default names ended with -#.
-Disallow renaming of an ember in the library tree to an empty string.
-Severe bug that prevented some variations from being read correctly from params generated outside this program.
-Severe OpenCL randomization bug. The first x coordinates of the first points in the first kernel call of the first ember of a render since the OpenCL renderer object was created were not random and were mostly -1.
-Severe bug when populating xform selection distributions that could sometimes cause a crash due to roundoff error. Fix by using double.
-Limit the max number of variations in a random ember to MAX_CL_VARS, which is 8. This ensures they'll look the same on CPU and GPU.
-Prevent user from saving stylesheet to default.qss, it's a special reserved filename.
--Code changes
-Generalize using the running sum output point inside of a variation for all cases: pre, reg and post.
-Allow for array variables in variations where the address of each element is stored in m_Params.
-Qualify all math functions with std::
-No longer use our own Clamp() in OpenCL, instead use the standard clamp().
-Redesign how functions are used in the variations OpenCL code.
-Add tests to EmberTester to verify some of the new functionality.
-Place more const and override qualifiers on functions where appropriate.
-Add a global rand with a lock to be used very sparingly.
-Use a map instead of a vector for bad param names in Xml parsing.
-Prefix affine interpolation mode defines with "AFFINE_" to make their purpose more clear.
-Allow for variations that change state during iteration by sending a separate copy of the ember to each rendering thread.
-Implement this same functionality with a local struct in OpenCL. It's members are the total of all variables that need to change state within an ember.
-Add Contains() function to Utils.h.
-EmberRender: print names of kernels being printed with --dump_kernel option.
-Clean up EmberTester to handle some of the recent changes.
-Fix various casts.
-Replace % 2 with & 1, even though the compiler was likely doing this already.
-Add new file Variations06.h to accommodate new variations.
-General cleanup.
2015-11-22 17:15:07 -05:00
|
|
|
QTableWidget#XformWeightNameTable
|
|
|
|
{
|
|
|
|
border-left: 1px solid gray;
|
|
|
|
}
|
|
|
|
|
2016-03-28 21:49:10 -04:00
|
|
|
QTableWidget#SummaryTable
|
--User changes
-Add new variations: bubbleT3D, crob, hexaplay3D, hexcrop, hexes, hexnix3D, loonie2, loonie3, nBlur, octapol and synth.
-Allow for pre/post versions of dc_bubble, dc_cylinder and dc_linear whereas before they were omitted.
-When saving a file with multiple embers in it, detect if time values are all the same and if so, start them at zero and increment by 1 for each ember.
-Allow for numerous quality increases to be coalesced into one. It will pick up at the end of the current render.
-Show selection highlight on variations tree in response to mouse hover. This makes it easier to see for which variation or param the current mouse wheel action will apply.
-Make default temporal samples be 100, whereas before it was 1000 which was overkill.
-Require the shift key to be held with delete for deleting an ember to prevent it from triggering when the user enters delete in the edit box.
-This wasn't otherwise fixable without writing a lot more code.
--Bug fixes
-EmberGenome was crashing when generating a sequence from a source file with more than 2 embers in it.
-EmberGenome was improperly handling the first frame of a merge after the last frame of the loop.
-These bugs were due to a previous commit. Revert parts of that commit.
-Prevent a zoom value of less than 0 when reading from xml.
-Slight optimization of the crescents, and mask variations, if the compiler wasn't doing it already.
-Unique file naming was broken because it was looking for _# and the default names ended with -#.
-Disallow renaming of an ember in the library tree to an empty string.
-Severe bug that prevented some variations from being read correctly from params generated outside this program.
-Severe OpenCL randomization bug. The first x coordinates of the first points in the first kernel call of the first ember of a render since the OpenCL renderer object was created were not random and were mostly -1.
-Severe bug when populating xform selection distributions that could sometimes cause a crash due to roundoff error. Fix by using double.
-Limit the max number of variations in a random ember to MAX_CL_VARS, which is 8. This ensures they'll look the same on CPU and GPU.
-Prevent user from saving stylesheet to default.qss, it's a special reserved filename.
--Code changes
-Generalize using the running sum output point inside of a variation for all cases: pre, reg and post.
-Allow for array variables in variations where the address of each element is stored in m_Params.
-Qualify all math functions with std::
-No longer use our own Clamp() in OpenCL, instead use the standard clamp().
-Redesign how functions are used in the variations OpenCL code.
-Add tests to EmberTester to verify some of the new functionality.
-Place more const and override qualifiers on functions where appropriate.
-Add a global rand with a lock to be used very sparingly.
-Use a map instead of a vector for bad param names in Xml parsing.
-Prefix affine interpolation mode defines with "AFFINE_" to make their purpose more clear.
-Allow for variations that change state during iteration by sending a separate copy of the ember to each rendering thread.
-Implement this same functionality with a local struct in OpenCL. It's members are the total of all variables that need to change state within an ember.
-Add Contains() function to Utils.h.
-EmberRender: print names of kernels being printed with --dump_kernel option.
-Clean up EmberTester to handle some of the recent changes.
-Fix various casts.
-Replace % 2 with & 1, even though the compiler was likely doing this already.
-Add new file Variations06.h to accommodate new variations.
-General cleanup.
2015-11-22 17:15:07 -05:00
|
|
|
{
|
|
|
|
border-left: 1px solid gray;
|
|
|
|
}
|
|
|
|
|
2016-03-28 21:49:10 -04:00
|
|
|
/*Normally doesn't matter, but when a palette file doesn't have enough palettes in it to fill the whole table, it looks funny without a border*/
|
|
|
|
QTableWidget#PaletteListTable
|
|
|
|
{
|
|
|
|
border: 1px solid gray;
|
|
|
|
}
|
|
|
|
|
--User changes
-Add new variations: bubbleT3D, crob, hexaplay3D, hexcrop, hexes, hexnix3D, loonie2, loonie3, nBlur, octapol and synth.
-Allow for pre/post versions of dc_bubble, dc_cylinder and dc_linear whereas before they were omitted.
-When saving a file with multiple embers in it, detect if time values are all the same and if so, start them at zero and increment by 1 for each ember.
-Allow for numerous quality increases to be coalesced into one. It will pick up at the end of the current render.
-Show selection highlight on variations tree in response to mouse hover. This makes it easier to see for which variation or param the current mouse wheel action will apply.
-Make default temporal samples be 100, whereas before it was 1000 which was overkill.
-Require the shift key to be held with delete for deleting an ember to prevent it from triggering when the user enters delete in the edit box.
-This wasn't otherwise fixable without writing a lot more code.
--Bug fixes
-EmberGenome was crashing when generating a sequence from a source file with more than 2 embers in it.
-EmberGenome was improperly handling the first frame of a merge after the last frame of the loop.
-These bugs were due to a previous commit. Revert parts of that commit.
-Prevent a zoom value of less than 0 when reading from xml.
-Slight optimization of the crescents, and mask variations, if the compiler wasn't doing it already.
-Unique file naming was broken because it was looking for _# and the default names ended with -#.
-Disallow renaming of an ember in the library tree to an empty string.
-Severe bug that prevented some variations from being read correctly from params generated outside this program.
-Severe OpenCL randomization bug. The first x coordinates of the first points in the first kernel call of the first ember of a render since the OpenCL renderer object was created were not random and were mostly -1.
-Severe bug when populating xform selection distributions that could sometimes cause a crash due to roundoff error. Fix by using double.
-Limit the max number of variations in a random ember to MAX_CL_VARS, which is 8. This ensures they'll look the same on CPU and GPU.
-Prevent user from saving stylesheet to default.qss, it's a special reserved filename.
--Code changes
-Generalize using the running sum output point inside of a variation for all cases: pre, reg and post.
-Allow for array variables in variations where the address of each element is stored in m_Params.
-Qualify all math functions with std::
-No longer use our own Clamp() in OpenCL, instead use the standard clamp().
-Redesign how functions are used in the variations OpenCL code.
-Add tests to EmberTester to verify some of the new functionality.
-Place more const and override qualifiers on functions where appropriate.
-Add a global rand with a lock to be used very sparingly.
-Use a map instead of a vector for bad param names in Xml parsing.
-Prefix affine interpolation mode defines with "AFFINE_" to make their purpose more clear.
-Allow for variations that change state during iteration by sending a separate copy of the ember to each rendering thread.
-Implement this same functionality with a local struct in OpenCL. It's members are the total of all variables that need to change state within an ember.
-Add Contains() function to Utils.h.
-EmberRender: print names of kernels being printed with --dump_kernel option.
-Clean up EmberTester to handle some of the recent changes.
-Fix various casts.
-Replace % 2 with & 1, even though the compiler was likely doing this already.
-Add new file Variations06.h to accommodate new variations.
-General cleanup.
2015-11-22 17:15:07 -05:00
|
|
|
QTableWidget#SummaryTable QHeaderView::section::vertical
|
|
|
|
{
|
|
|
|
background-color: darkgray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableWidget#PaletteAdjustTable,
|
|
|
|
QTableWidget#PalettePreviewTable,
|
|
|
|
QTableWidget#XformColorIndexTable,
|
|
|
|
QTableWidget#XformColorValuesTable,
|
|
|
|
QTableWidget#InfoBoundsTable,
|
|
|
|
QTableWidget#OptionsXmlSavingTable,
|
|
|
|
QTableWidget#OptionsIdentityTable,
|
|
|
|
QTableWidget#FinalRenderSizeTable,
|
|
|
|
QTableWidget#FinalRenderParamsTable
|
|
|
|
{
|
|
|
|
border-left: 1px solid gray;
|
|
|
|
border-top: 1px solid gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QLineEdit#PaletteFilterLineEdit,
|
|
|
|
QLineEdit#VariationsFilterLineEdit
|
|
|
|
{
|
|
|
|
height: 20px;
|
|
|
|
min-height: 20px;
|
|
|
|
max-height: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QSpinBox#ThreadCountSpin,
|
|
|
|
QSpinBox#RandomCountSpin,
|
|
|
|
QSpinBox#CpuSubBatchSpin,
|
|
|
|
QSpinBox#OpenCLSubBatchSpin,
|
|
|
|
QSpinBox#FinalRenderCurrentSpin,
|
|
|
|
QSpinBox#FinalRenderThreadCountSpin
|
|
|
|
{
|
|
|
|
padding: 2px;
|
|
|
|
border: 1px solid gray;
|
|
|
|
}
|
|
|
|
|
|
|
|
QSpinBox#ThreadCountSpin:disabled,
|
|
|
|
QSpinBox#CpuSubBatchSpin:disabled,
|
|
|
|
QSpinBox#OpenCLSubBatchSpin:disabled,
|
|
|
|
QSpinBox#FinalRenderCurrentSpin:disabled,
|
|
|
|
QSpinBox#FinalRenderThreadCountSpin:disabled
|
|
|
|
{
|
|
|
|
padding: 2px;
|
|
|
|
border: 1px solid rgb(35, 35, 35);
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView#FinalRenderParamsTable QComboBox
|
|
|
|
{
|
|
|
|
margin-top: 0px;
|
|
|
|
margin-bottom: 0px;
|
|
|
|
}
|
|
|
|
|
|
|
|
QTableView#FinalRenderParamsTable QPushButton
|
|
|
|
{
|
|
|
|
margin-top: 1px;
|
|
|
|
margin-bottom: 2px;
|
|
|
|
padding: 0px;
|
|
|
|
}
|