mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-06-30 13:26:02 -04:00
--User changes
-Support 4k monitors, and in general, properly scale any monitor that is not HD. -Allow for a spatial filter of radius zero, which means do not use a spatial filter. -Add new variations: concentric, cpow3, helicoid, helix, rand_cubes, sphereblur. -Use a new method for computing elliptic which is more precise. Developed by Discord user Claude. -Remove the 8 variation per xform limitation on the GPU. -Allow for loading the last flame file on startup, rather than randoms. -Use two different default quality values in the interactive renderer, one each for CPU and GPU. -Creating linked xforms was using non-standard behavior. Make it match Apo and also support creating multiple linked xforms at once. --Bug fixes -No variations in an xform used to have the same behavior as a single linear variation with weight 1. While sensible, this breaks backward compatibility. No variations now sets the output point to zeroes. -Prevent crashing the program when adjusting a value on the main window while a final render is in progress. -The xaos table was inverted. --Code changes -Convert projects to Visual Studio 2017. -Change bad vals from +- 1e10 to +-1e20. -Reintroduce the symmetry tag in xforms for legacy support in programs that do not use color_speed. -Compiler will not let us use default values in templated member functions anymore.
This commit is contained in:
@ -97,7 +97,7 @@ void FractoriumEmberControllerBase::UpdateRender(eProcessAction action)
|
||||
void FractoriumEmberControllerBase::DeleteRenderer()
|
||||
{
|
||||
Shutdown();
|
||||
m_Renderer.reset();
|
||||
m_Renderer = make_unique<EmberNs::Renderer<float, float>>();
|
||||
|
||||
if (GLController())
|
||||
GLController()->ClearWindow();
|
||||
@ -299,6 +299,9 @@ bool FractoriumEmberController<T>::SyncSizes()
|
||||
template <typename T>
|
||||
bool FractoriumEmberController<T>::Render()
|
||||
{
|
||||
if (!m_Renderer.get())
|
||||
return false;
|
||||
|
||||
m_Rendering = true;
|
||||
bool success = true;
|
||||
auto gl = m_Fractorium->ui.GLDisplay;
|
||||
@ -567,7 +570,7 @@ bool FractoriumEmberController<T>::CreateRenderer(eRendererType renderType, cons
|
||||
|
||||
if (m_RenderType == eRendererType::OPENCL_RENDERER)
|
||||
{
|
||||
auto val = 30 * m_Fractorium->m_Settings->Devices().size();
|
||||
auto val = m_Fractorium->m_Settings->OpenClQuality() * m_Fractorium->m_Settings->Devices().size();
|
||||
m_Fractorium->m_QualitySpin->DoubleClickZero(val);
|
||||
m_Fractorium->m_QualitySpin->DoubleClickNonZero(val);
|
||||
|
||||
@ -576,11 +579,12 @@ bool FractoriumEmberController<T>::CreateRenderer(eRendererType renderType, cons
|
||||
}
|
||||
else
|
||||
{
|
||||
m_Fractorium->m_QualitySpin->DoubleClickZero(10);
|
||||
m_Fractorium->m_QualitySpin->DoubleClickNonZero(10);
|
||||
auto quality = m_Fractorium->m_Settings->CpuQuality();
|
||||
m_Fractorium->m_QualitySpin->DoubleClickZero(quality);
|
||||
m_Fractorium->m_QualitySpin->DoubleClickNonZero(quality);
|
||||
|
||||
if (m_Fractorium->m_QualitySpin->value() > 10)
|
||||
m_Fractorium->m_QualitySpin->setValue(10);
|
||||
if (m_Fractorium->m_QualitySpin->value() > quality)
|
||||
m_Fractorium->m_QualitySpin->setValue(quality);
|
||||
}
|
||||
|
||||
m_Renderer->Callback(this);
|
||||
|
Reference in New Issue
Block a user