mirror of
https://bitbucket.org/mfeemster/fractorium.git
synced 2025-07-05 15:54:50 -04: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:
@ -41,7 +41,9 @@ static string ConstantDefinesString(bool doublePrecision)
|
||||
<< "typedef long intPrec;\n"
|
||||
<< "typedef ulong atomi;\n"
|
||||
<< "typedef double real_t;\n"
|
||||
<< "typedef float real_bucket_t;\n"//Assume buckets are always float, even though iter calcs are in double.
|
||||
<< "typedef double4 real4;\n"
|
||||
<< "typedef float4 real4_bucket;\n"//And here too.
|
||||
<< "#define EPS (DBL_EPSILON)\n"
|
||||
;
|
||||
}
|
||||
@ -50,7 +52,9 @@ static string ConstantDefinesString(bool doublePrecision)
|
||||
os << "typedef int intPrec;\n"
|
||||
"typedef uint atomi;\n"
|
||||
"typedef float real_t;\n"
|
||||
"typedef float real_bucket_t;\n"
|
||||
"typedef float4 real4;\n"
|
||||
"typedef float4 real4_bucket;\n"
|
||||
"#define EPS (FLT_EPSILON)\n"
|
||||
;
|
||||
}
|
||||
@ -284,9 +288,9 @@ struct ALIGN DensityFilterCL
|
||||
static const char* DensityFilterCLStructString =
|
||||
"typedef struct __attribute__ " ALIGN_CL " _DensityFilterCL\n"
|
||||
"{\n"
|
||||
" real_t m_Curve;\n"
|
||||
" real_t m_K1;\n"
|
||||
" real_t m_K2;\n"
|
||||
" real_bucket_t m_Curve;\n"
|
||||
" real_bucket_t m_K1;\n"
|
||||
" real_bucket_t m_K2;\n"
|
||||
" uint m_Supersample;\n"
|
||||
" uint m_SuperRasW;\n"
|
||||
" uint m_SuperRasH;\n"
|
||||
@ -340,11 +344,11 @@ static const char* SpatialFilterCLStructString =
|
||||
" uint m_DensityFilterOffset;\n"
|
||||
" uint m_Transparency;\n"
|
||||
" uint m_YAxisUp;\n"
|
||||
" real_t m_Vibrancy;\n"
|
||||
" real_t m_HighlightPower;\n"
|
||||
" real_t m_Gamma;\n"
|
||||
" real_t m_LinRange;\n"
|
||||
" real_t m_Background[4];\n"//For some reason, using float4/double4 here does not align no matter what. So just use an array of 4.
|
||||
" real_bucket_t m_Vibrancy;\n"
|
||||
" real_bucket_t m_HighlightPower;\n"
|
||||
" real_bucket_t m_Gamma;\n"
|
||||
" real_bucket_t m_LinRange;\n"
|
||||
" real_bucket_t m_Background[4];\n"//For some reason, using float4/double4 here does not align no matter what. So just use an array of 4.
|
||||
"} SpatialFilterCL;\n"
|
||||
"\n";
|
||||
|
||||
@ -383,5 +387,11 @@ static const char* UnionCLStructString =
|
||||
" real4 m_Real4;\n"
|
||||
" real_t m_Reals[4];\n"
|
||||
"} real4reals;\n"
|
||||
"\n"
|
||||
"typedef union\n"//Used to match the bucket template type.
|
||||
"{\n"
|
||||
" real4_bucket m_Real4;\n"
|
||||
" real_bucket_t m_Reals[4];\n"
|
||||
"} real4reals_bucket;\n"
|
||||
"\n";
|
||||
}
|
||||
|
Reference in New Issue
Block a user