{
aPrefixString += TCollection_AsciiString ("\n#define TWO_SIDED_BXDF");
}
+
+ switch (myRaytraceParameters.ToneMappingMethod)
+ {
+ case Graphic3d_ToneMappingMethod_Disabled:
+ break;
+ case Graphic3d_ToneMappingMethod_Filmic:
+ aPrefixString += TCollection_AsciiString ("\n#define TONE_MAPPING_FILMIC");
+ break;
+ }
}
return aPrefixString;
aToRebuildShaders = Standard_True;
}
+ if (myRenderParams.ToneMappingMethod != myRaytraceParameters.ToneMappingMethod)
+ {
+ myRaytraceParameters.ToneMappingMethod = myRenderParams.ToneMappingMethod;
+ aToRebuildShaders = true;
+ }
+
if (aToRebuildShaders)
{
// Reject accumulated frames
myOutImageProgram->SetUniform (theGlContext, "uDebugAdaptive", myRenderParams.ShowSamplingTiles ? 1 : 0);
}
+ if (myRaytraceParameters.GlobalIllumination)
+ {
+ myOutImageProgram->SetUniform(theGlContext, "uExposure", myRenderParams.Exposure);
+ switch (myRaytraceParameters.ToneMappingMethod)
+ {
+ case Graphic3d_ToneMappingMethod_Disabled:
+ break;
+ case Graphic3d_ToneMappingMethod_Filmic:
+ myOutImageProgram->SetUniform (theGlContext, "uWhitePoint", myRenderParams.WhitePoint);
+ break;
+ }
+ }
+
if (theReadDrawFbo != NULL)
{
theReadDrawFbo->BindBuffer (theGlContext);