--User changes

-Better handling of crossed min/max DE filter values on the GUI.
 -Changes to spatial and density filter values will no longer restart the entire render.
 -Support reading cam_zoom from xml as zoom since JWildfire uses cam_zoom.
 -Change drag n drop behavior: the default is now to append, hold Ctrl to overwrite.
 -Set max value of zoom to 25 because it will crash with values around 28 or 29 due to numeric overflow when scaling quality.
 -Update links in About Dialog.
 -Rename some controls in Options Dialog.
 -Move the color curves control to the Palette tab.

--Bug fixes
 -Remove extra space in info tree text when dealing with a linked xform.
 -Update summary xform name field whenever xform name changes.
 -Get rid of selection border on summary tab xform tree cells.
 -Only add variations from Xml that have a non-zero weight. There seemed to be spurious flattens coming from Apo with a weight of 0.

--Code changes
 -Gutters are now a fixed size of 8 * supersample.
 -Use stl data() member to get pointer to first element instead of &vec[0].
 -Eliminate extra calls in renderer to ComputeBounds(), CreateSpatialFilter() and CreateTemporalFilter() to only be done at the start of a render.
 -Another attempt at vectorizing LogScaleDensityFilter(). Vectorizes, but not sure if it helps.
 -Some other loop optimizations in Renderer.
 -No longer check temporal samples in response to some control changes, they are always 1 in the interactive renderer.
This commit is contained in:
mfeemster
2016-03-28 18:49:10 -07:00
parent 19cb27b83a
commit e6882ee865
27 changed files with 456 additions and 390 deletions

View File

@ -68,7 +68,7 @@ public:
/// <summary>
/// Accessors.
/// </summary>
const byte* XformDistributions() const { return m_XformDistributions.empty() ? nullptr : &m_XformDistributions[0]; }
const byte* XformDistributions() const { return m_XformDistributions.empty() ? nullptr : m_XformDistributions.data(); }
size_t XformDistributionsSize() const { return m_XformDistributions.size(); }
/// <summary>
@ -308,9 +308,9 @@ public:
Point<T> tempPoint, p1;
auto xforms = ember.NonConstXforms();
if (ember.ProjBits())
if (ember.ProjBits())//No xaos, 3D.
{
if (ember.UseFinalXform())
if (ember.UseFinalXform())//No xaos, 3D, final.
{
p1 = samples[0];
@ -332,7 +332,7 @@ public:
ember.Proj(samples[i], rand);
}
}
else
else//No xaos, 3D, no final.
{
p1 = samples[0];
@ -355,9 +355,9 @@ public:
}
}
}
else
else//No xaos, no 3D.
{
if (ember.UseFinalXform())
if (ember.UseFinalXform())//No xaos, no 3D, final.
{
p1 = samples[0];
@ -377,7 +377,7 @@ public:
DoFinalXform(ember, p1, samples + i, rand);
}
}
else
else//No xaos, no 3D, no final.
{
p1 = samples[0];
@ -475,9 +475,9 @@ public:
Point<T> tempPoint, p1;
auto xforms = ember.NonConstXforms();
if (ember.ProjBits())
if (ember.ProjBits())//Xaos, 3D.
{
if (ember.UseFinalXform())
if (ember.UseFinalXform())//Xaos, 3D, final.
{
p1 = samples[0];
@ -506,7 +506,7 @@ public:
lastXformUsed = xformIndex + 1;//Store the last used transform.
}
}
else
else//Xaos, 3D, no final.
{
p1 = samples[0];
@ -536,9 +536,9 @@ public:
}
}
}
else
else//Xaos, no 3D.
{
if (ember.UseFinalXform())
if (ember.UseFinalXform())//Xaos, no 3D, final.
{
p1 = samples[0];
@ -565,7 +565,7 @@ public:
lastXformUsed = xformIndex + 1;//Store the last used transform.
}
}
else
else//Xaos, no 3D, no final.
{
p1 = samples[0];