mirror of
				https://bitbucket.org/mfeemster/fractorium.git
				synced 2025-11-03 17:50:27 -05:00 
			
		
		
		
	--User changes
-Remove Hue as a saved parameter, as well as animation parameters associated with it. It's now a GUI-only field that is never saved. -Make histogram, density filter buffer, and all associated fields always float, even when using double. In that case, only the iteration calculations are now double. Suggested by Thomas Ludwig. -Print all three kernels in EmberRender when the --dump_kernel option is specified. -Apply variations filter to randoms. --Bug fixes -Fix bug where hue was not being preserved when switching controllers and embers. Very hard to repro bug, but mostly overcome by eliminating hue as a saved parameter. --Code changes -De-templatized DEOpenCLKernelCreator and FinalAccumOpenCLKernelCreator. They now just take a bool as a parameter to specify double precision. -To accommodate the buffers being float, introduce a new #define types in EmberCL called real4_bucket, and real4reals_bucket. -Density and spatial filtering structs now use this type. -ConvertDensityFilter() and ConvertSpatialFilter() no longer return a value, they just assign to the member.
This commit is contained in:
		@ -27,7 +27,10 @@ void Fractorium::InitXformsVariationsUI()
 | 
			
		||||
void Fractorium::OnActionVariationsDialog(bool checked)
 | 
			
		||||
{
 | 
			
		||||
	if (m_VarDialog->exec())
 | 
			
		||||
	{
 | 
			
		||||
		m_Controller->FilteredVariations();
 | 
			
		||||
		Filter();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// <summary>
 | 
			
		||||
@ -77,6 +80,20 @@ void Fractorium::Filter()
 | 
			
		||||
	m_Controller->Filter(ui.VariationsFilterLineEdit->text());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <typename T>
 | 
			
		||||
void FractoriumEmberController<T>::FilteredVariations()
 | 
			
		||||
{
 | 
			
		||||
	auto& map = m_Fractorium->m_VarDialog->Map();
 | 
			
		||||
 | 
			
		||||
	m_FilteredVariations.clear();
 | 
			
		||||
	m_FilteredVariations.reserve(map.size());
 | 
			
		||||
 | 
			
		||||
	for (auto i = 0; i < m_VariationList.Size(); i++)
 | 
			
		||||
		if (auto var = m_VariationList.GetVariation(i))
 | 
			
		||||
			if (map.contains(var->Name().c_str()) && map[var->Name().c_str()].toBool())
 | 
			
		||||
				m_FilteredVariations.push_back(var->VariationId());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// <summary>
 | 
			
		||||
/// Dynamically populate the variation tree widget with VariationTreeWidgetItem and VariationTreeDoubleSpinBox
 | 
			
		||||
/// templated with the correct type.
 | 
			
		||||
@ -222,6 +239,7 @@ void FractoriumEmberController<T>::VariationSpinBoxValueChanged(double d)//Would
 | 
			
		||||
				if (xformVar)
 | 
			
		||||
					xform->DeleteVariationById(var->VariationId());
 | 
			
		||||
 | 
			
		||||
				//widgetItem->setBackgroundColor(0, Qt::darkGray);//Ensure background is always white if weight goes to zero.
 | 
			
		||||
				widgetItem->setBackgroundColor(0, QColor(255, 255, 255));//Ensure background is always white if weight goes to zero.
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
@ -238,6 +256,7 @@ void FractoriumEmberController<T>::VariationSpinBoxValueChanged(double d)//Would
 | 
			
		||||
 | 
			
		||||
					newVar->m_Weight = d;
 | 
			
		||||
					xform->AddVariation(newVar);
 | 
			
		||||
					//widgetItem->setBackgroundColor(0, Qt::darkGray);//Set background to gray when a variation has non-zero weight in this xform.
 | 
			
		||||
					widgetItem->setBackgroundColor(0, QColor(200, 200, 200));//Set background to gray when a variation has non-zero weight in this xform.
 | 
			
		||||
 | 
			
		||||
					//If they've added a new parametric variation, then grab the values currently in the spinners
 | 
			
		||||
@ -295,6 +314,7 @@ void FractoriumEmberController<T>::FillVariationTreeWithXform(Xform<T>* xform)
 | 
			
		||||
				item->setHidden(false);
 | 
			
		||||
 | 
			
		||||
			spinBox->SetValueStealth(var ? var->m_Weight : 0);//If the variation was present, set the spin box to its weight, else zero.
 | 
			
		||||
			//item->setBackgroundColor(0, var ? Qt::darkGray : Qt::lightGray);//Ensure background is always white if the value goes to zero, else gray if var present.
 | 
			
		||||
			item->setBackgroundColor(0, var ? QColor(200, 200, 200) : QColor(255, 255, 255));//Ensure background is always white if the value goes to zero, else gray if var present.
 | 
			
		||||
 | 
			
		||||
			for (uint j = 0; j < item->childCount(); j++)//Iterate through all of the children, which will be the params if it was a parametric variation.
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user