
////----------//
///**GLOBAL**///
//----------////
//-Global Defines-//

//>GemFX Suite General Settings<\\
//-Commentary:The GemFX Suite contains various lightning and motion shader. (Adv) Motion Blur, Motion Focus and Ambient Light are GEMFX shader. Beginning from Bloom, all following shader are derived from MasterEffect.


////---------------//
///**MOTION_BLUR**///
//---------------////
#define USE_MOTION_BLUR 0 //[MotionBlur] //-Motion Blur: Cheap pseudo mution blur

//>Motion Blur Settings<\\
#define mbRecall 0.40 //[0.00:1.00] //-Motion blur intensity
#define mbSoftness 1.00 //[0.00:2.00] //-Blur strength of consequential streaks
#define MotionBlur_TimeOut 0 //[0:100000] //-Defined Toggle Key will activate the shader until time (in ms) runs out. "0" deactivates the timeout feature.
#define MotionBlur_ToggleKey RFX_ToggleKey //[undef] //-


////-------------------//
///**ADV_MOTION_BLUR**///
//-------------------////
#define USE_ADV_MOTION_BLUR 0 //[AdvMotionBlur] //-Advanced Motion Blur: More accurate and advanced motion blur.

//>Advanced Motion Blur Settings<\\
#define ambDepth_Check 0 //[0:1] //-Depth dependent motion blur
#define ambDepthRatio 0.7 //[0.0:1.0] //-Amount of addition MB due to distance; Lower Value => Higher Amount
#define ambRecall 0.4 //[0.0:1.0] //-Increases detection level of relevant smart motion blur
#define ambPrecision 0.0 //[0.0:1.0] //-Increases relevance level of detected smart motion blur
#define ambSoftness 3.5 //[0.0:10.0] //-Softness of consequential streaks
#define ambSmartMult 3.5 //[0.0:10.0] //-Multiplication of relevant smart motion blur
#define ambIntensity 0.07 //[0.00:1.00] //-Intensity of base motion blur effect
#define ambSmartInt 0.94 //[0.00:1.00] //-Intensity of smart motion blur effect
#define AdvancedMB_TimeOut 0 //[0:100000] //-Defined Toggle Key will activate the shader until time (in ms) runs out. "0" deactivates the timeout feature.
#define AdvancedMB_ToggleKey RFX_ToggleKey //[undef] //-No description given


////----------------//
///**MOTION_FOCUS**///
//----------------////
#define USE_MOTION_FOCUS 0 //[MotionFocus] //-Smart movement of the camera following motion on the screen for a cinematic look

//>Motion Focus<\\
#define mfDebug 0 //[0:1] //-Activates debug mode of MF, top 4 bars show motion in each screen section, the center points show strength and direction of zoom
#define mfFocusStrength 1.00 //[0.00:1.00] //-The intensity with which the camera will follow motion
#define mfZoomStrength 0.60 //[0.00:1.00] //-The intensity of camera zoom to objects in motion
#define MotionFocus_TimeOut 0 //[0:100000] //-Defined Toggle Key will activate the shader until time (in ms) runs out. "0" deactivates the timeout feature.
#define MotionFocus_ToggleKey RFX_ToggleKey //[undef] //-


////-----------------//
///**AMBIENT_LIGHT**///
//-----------------////
#define USE_AMBIENT_LIGHT 0 //[AmbientLight] //-Ambient Light: Adds scene dependent ambient light with specific dirt and lens effects

//>Ambient Light Settings<\\
#define alDebug 0 //[0:1] //-Activates debug mode of AL, upper bar shows detected light, lower bar shows adaptation
#define alInt 10.15 //[0.00:20.00] //-Base intensity of AL
#define alThreshold 15.00 //[0.00:100.00] //-Reduces intensity for not bright light

//>AL Adaptation Parameters<\\
#define AL_Adaptation 1 //[0:1] //-Activates adaptation algorithm for the following features
#define AL_HQAdapt 0 //[0:1] //-Determines the accuracy of the adaptation algorithm
#define alAdapt 0.70 //[0.00:4.00] //-Intensity of AL correction for bright light
#define alAdaptBaseMult 1.00 //[0.00:4.00] //-Multiplier for adaption applied to the original image
#define alAdaptBaseBlackLvL 2 //[0|1|2|3|4] //-Distinction level of black and white (lower => less distinct)
#define alAdaptBloomMult 1.0 //[0.0:4.0] //-Multiplier for adaption applied to the bloom shader
#define alAdaptFlareMult 3.0 //[0.0:4.0] //-Multiplier for adaption applied to the anam flare shader
#define AL_HeatHazeControle 1 //[0:1] //-Controles the HeatHaze effect with the AL shader
#define Depth_HeatHazeControle 1 //[0:1] //-Controles the HeatHaze effect with the depth buffer
#define alAdaptHeatMult 1.0 //[0.0:1.0] //-Multiplier for adaption applied to the HeatHaze shader

//>Additional AL Settings<\\
#define AL_Dirt 1 //[0:1] //-No description given
#define AL_DirtTex 0 //[0:1] //-Defines if dirt texture is used as overlay
#define AL_Vibrance 0 //[0:1] //-Vibrance of dirt effect
#define AL_Adaptive 0 //[0|1|2] //-0 = Warm, 1 = Cold, 2 = Light Dependent
#define alDirtInt 1.0 //[0.0:2.0] //-Intensity of dirt effect
#define alDirtOVInt 1.0 //[0.0:2.0] //-Intensity of colored dirt effect
#define AL_Lens 0 //[0:1] //-Lens effect based on AL
#define alLensThresh 0.5 //[0.0:1.0] //-Reduces intensity of lens effect for not bright light
#define alLensInt 2.0 //[0.0:10.0] //-Intensity of lens effect
#define AmbientLight_TimeOut 0 //[0:100000] //-Defined Toggle Key will activate the shader until time (in ms) runs out. "0" deactivates the timeout feature.

//>Additional AL Settings<\\
#define AmbientLight_ToggleKey RFX_ToggleKey //[undef] //-


////---------//
///**BLOOM**///
//---------////
#define USE_BLOOM 0 //[Bloom] //-Bloom, based on MasterEffects & asmodean bloom

//>Bloom Settings<\\
#define GFX_HDR_MODE 0 //[0|1|2] //-HDR Level Rendering bitrate. 0 = RGBA8, 1 = RGBA16F, 2 = RGBA32F
#define BLOOM_MIXMODE 2 //[1|2|3|4] //-1 = Linear add | 2 = Screen add | 3 = Screen/Lighten/Opacity | 4 = Lighten
#define fBloomThreshold 0.8 //[0.1:1.0] //-Every pixel brighter than this value triggers bloom.
#define fBloomAmount 0.8 //[0.0:20.0] //-Intensity of bloom.
#define fBloomSaturation 0.8 //[0.0:2.0] //-Bloom saturation. 0.0 means white bloom, 2.0 means very very colorful bloom.
#define fBloomTint float3(0.7,0.8,1.0) //[0.0:1.0] //-R, G and B components of bloom tintcolor the bloom color gets shifted to. X = Red, Y = Green, Z = Blue.
#define Bloom_TimeOut 0 //[0:100000] //-Defined Toggle Key will activate the shader until time (in ms) runs out. "0" deactivates the timeout feature.
#define Bloom_ToggleKey RFX_ToggleKey //[undef] //-Toggle key for Bloom and Bloom dependent shaders.


////------------//
///**LENSDIRT**///
//------------////
#define USE_LENSDIRT 0 //[Bloom] //-Lensdirt: Simulates a dirty camera lens. IMPORTANT: bloom threshold and amount have influence on the intensity of the dirt!

//>Lens Dirt Settings<\\
#define fLensdirtIntensity 0.4 //[0.0:2.0] //-Intensity of lensdirt.
#define fLensdirtSaturation 2.0 //[0.0:2.0] //-Color saturation of lensdirt.
#define fLensdirtTint float3(1.0,1.0,1.0) //[0.0:1.0] //-R, G and B components of lensdirt tintcolor the lensdirt color gets shifted to. X = Red, Y = Green, Z = Blue.
#define iLensdirtMixmode 1 //[1:4] //-1: Linear add | 2: Screen add | 3: Screen/Lighten/Opacity | 4: Lighten
#define lensDirtTex "GFX_origdirt.png" //[undef] //-


////----------------------//
///**GAUSSIAN_ANAMFLARE**///
//----------------------////
#define USE_GAUSSIAN_ANAMFLARE 1 //[Bloom] //-Gaussian Anamflare: Applies a horizontal light beam to bright pixels.

//>Gaussian Anamorphic Lens Flare Settings<\\
#define fAnamFlareThreshold 0.90 //[0.10:1.00] //-Every pixel brighter than this value gets a flare.
#define fAnamFlareWideness 2.4 //[1.0:2.5] //-Horizontal wideness of flare. Don't set too high, otherwise the single samples are visible
#define fAnamFlareAmount 14.5 //[1.0:20.0] //-Intensity of anamorphic flare.
#define fAnamFlareCurve 1.2 //[1.0:2.0] //-Intensity curve of flare with distance from source
#define fAnamFlareColor float3(0.012,0.313,0.588) //[0.000:1.000] //-R, G and B components of anamorphic flare. Flare is always same color.


////-------------//
///**LENZFLARE**///
//-------------////
#define USE_LENZFLARE 0 //[Bloom] //-Lenz Flare: Boris Vorontsov's Skyrim Lensflare with custom offsets, ported to MasterEffect.

//>Lenz Flare Settings<\\
#define LENZ_DEPTH_CHECK 1 //[0:1] //-If 1, only pixels with depth = 1 get lens flare, this prevents white objects from getting flare source which would normally happen in LDR
#define fLenzIntensity 1.0 //[0.2:3.0] //-power of lens flare effect
#define fLenzThreshold 0.8 //[0.6:1.0] //-Minimum brightness an object must have to cast lensflare


////----------------//
///**CHAPMAN_LENS**///
//----------------////
#define USE_CHAPMAN_LENS 0 //[Bloom] //-Chapman's lensflare: Simple lensflare shader with one big halo.

//>Chapman Lens Settings<\\
#define CHAPMAN_DEPTH_CHECK 1 //[0:1] //-if 1, only pixels with depth = 1 get lensflares, this prevents white objects from getting lensflare source which would normally happen in LDR
#define ChapFlareTreshold 0.90 //[0.70:0.99] //-Brightness threshold for lensflare generation. Everything brighter than this value gets a flare.
#define ChapFlareCount 15 //[1:20] //-Number of single halos to be generated. If set to 0, only the curved halo around is visible.
#define ChapFlareDispersal 0.25 //[0.25:1.00] //-Distance from screen center (and from themselves) the flares are generated. 		
#define ChapFlareSize 0.45 //[0.20:0.80] //-Distance (from screen center) the halo and flares are generated.
#define ChapFlareCA float3(0.00,0.01,0.02) //[-0.50:0.50] //-Offset of RGB components of flares as modifier for Chromatic abberation. Same 3 values means no CA.
#define ChapFlareIntensity 100.0 //[5.0:200.0] //-Intensity of flares and halo, remember that higher threshold lowers intensity, you might play with both values to get desired result.


////-----------//
///**GODRAYS**///
//-----------////
#define USE_GODRAYS 0 //[Bloom] //-Godrays: Adds some light rays rotating around screen center.

//>God Rays Settings<\\
#define GODRAY_DEPTH_CHECK 1 //[0:1] //-if 1, only pixels with depth = 1 get godrays, this prevents white objects from getting godray source which would normally happen in LDR
#define fGodrayDecay 0.9900 //[0.5000:0.9999] //-How fast they decay. It's logarithmic, 1.0 means infinite long rays which will cover whole screen
#define fGodrayExposure 1.0 //[0.7:1.5] //-Upscales the godray's brightness
#define fGodrayWeight 1.25 //[0.80:1.70] //-weighting
#define fGodrayDensity 1.0 //[0.2:2.0] //-Density of rays, higher means more and brighter rays
#define fGodrayThreshold 0.9 //[0.6:1.0] //-Minimum brightness an object must have to cast godrays
#define iGodraySamples 128 //[undef] //-2^x format values; How many samples the godrays get


////-------------//
///**ANAMFLARE**///
//-------------////
#define USE_ANAMFLARE 0 //[Bloom] //-Anamorphic Lensflare: adds some horizontal light flare, simulating the use of an anamorphic lens while recording.

//>Anamorphic Lens Flare<\\
#define FLARE_DEPTH_CHECK 1 //[0:1] //-if 1, only pixels with depth = 1 get an anamflare, this prevents white objects from getting flare source which would normally happen in LDR
#define fFlareLuminance 0.095 //[0.000:1.000] //-bright pass luminance value 
#define fFlareBlur 200.0 //[1.0:10000.0] //-manages the size of the flare
#define fFlareIntensity 2.07 //[0.20:5.00] //-effect intensity
#define fFlareTint float3(0.137,0.216,1.000) //[0.000:2.000] //-effect tint RGB

