mirror of
https://github.com/libretro/slang-shaders.git
synced 2024-05-20 13:08:14 -04:00
149 lines
6.2 KiB
C++
149 lines
6.2 KiB
C++
/////////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// The following lines are NOT runtime shader parameters and are mandatory.
|
|
// If you know what you are doing, edit them to change the shader behaviour.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////////
|
|
/////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// D3D/XBOX users should enable Direct3D workarounds to avoid glitches or crashes
|
|
// by removing the leading "//" from the following line:
|
|
|
|
// #define D3D_WORKAROUND
|
|
|
|
|
|
// STATIC FEATURES ENABLE/DISABLE
|
|
|
|
// Allow texture wrapping as a shader parameter, prepend // to gain some performance:
|
|
#define ALLOW_BG_IMAGE_TEXTURE_WRAP_IN_SHADER
|
|
|
|
|
|
// Enable lcd antighosting by using values > 0.0 (try around 0.25)
|
|
#define LCD_ANTIGHOSTING 0.0
|
|
|
|
|
|
|
|
// APPEARANCE SETTINGS ////////////////////////////////////////////////////////
|
|
|
|
// Haloing happens on a scanlined/gapped image or not
|
|
#define HALO_PRE_SCANLINE_GAP 0.0
|
|
|
|
|
|
// BEZEL STATIC CONFIG ////////////////////////////////////////////////////////
|
|
|
|
//The following defines the monitor frame resolution in textures/monitor_body_[curved/straight].png
|
|
//and are used to calculate the sampling lod.
|
|
//Change if you change the texture resolution or
|
|
//you can comment it to let the shader calculates them at runtime (heavier).
|
|
#define BEZEL_RES vec2(2927, 2178)
|
|
|
|
//The following can slightly correct bezel aspect
|
|
//eg: #define BEZEL_ASPECT_CORRECTION (1.0 - 0.004) will make it shorter.
|
|
#define BEZEL_ASPECT_CORRECTION (1.0)
|
|
|
|
//This is used to skip calculations in the reflection blur code.
|
|
//set it to minimum value that allows you to see reflection entirely
|
|
#define BEZEL_REFL_SKIP_SIZE 0.08
|
|
|
|
//This is the blank area (EXCLUDING any potential shadows) surrounding the bezel frame.
|
|
//Supposing a centered bezel:
|
|
// BEZEL_FRAME_SURROUND_MARGIN = (left margin in px*2) / bezel_texture_size width in px.
|
|
//It is used to skip drawing bg/fg or ambient light over the tube.
|
|
//set it to the minimum value which allows you to see ambient lights and background image around the frame.
|
|
#define BEZEL_FRAME_SURROUND_MARGIN 0.06
|
|
|
|
//to speedup things, bezel rende logic can be completely skipped in the inner tube, if we
|
|
//already know it is completely transparent.
|
|
//Set the following to the maximum value that allow you to see
|
|
//bezel borders and, if present in the source bezel texture, inner content/border shades
|
|
#define BEZEL_TUBE_BLANK_SIZE 0.88
|
|
|
|
//In the second reflection pass, the coordinates are zoomedout by the
|
|
//BEZEL_REFL_ZOOMOUT_ROOM so that the image is mirrored-repeated by retroarch.
|
|
//they are adjusted by an inverse amount in final pass to align them
|
|
//lowering this value makes more room for reflections, but this steals
|
|
//pixels for reflection resolution, so make it higher as possible as
|
|
//long as you can see the reflections on the reflective area without
|
|
//them blanking or repeating.
|
|
//Modifying it require you to tweak BEZEL_REFL_CORNER_BLANK_SIZE too.
|
|
#define BEZEL_REFL_ZOOMOUT_ROOM 0.8
|
|
|
|
|
|
// Define the size and the smoothness of the rectangle
|
|
// in the bezel corners that will hide and blur the reflections
|
|
#define BEZEL_REFL_CORNER_BLANK_SIZE 0.091
|
|
#define BEZEL_REFL_CORNER_BLANK_SHADE 0.055 // keep it > 0.0
|
|
|
|
|
|
//When colorizing the bezel via ambient light, it is possible to choose where
|
|
//the colorization ends. depending on the bezel texture/lut used, the following
|
|
//parameter wil allow to colorize top/bottom and left/right border with the
|
|
//same shade amount.
|
|
#define AMBI_OVER_BEZEL_AR_CORRECTION 0.98
|
|
|
|
|
|
|
|
// AMBIENT LIGHT STATIC CONFIG ##########################################################################################
|
|
|
|
// 0.0-1.0: sensitivity to scene change (ambilike stuff), 0.0 changes more
|
|
#define AMBI_SCENE_CHG_THRSHLD 0.07
|
|
// The following will allow to sample at reduced interval
|
|
// The scene change detection logic will take advantage of it
|
|
// So that quick fades will still be treated as scene changes
|
|
#define AMBI_AVGLUM_DIVIDER 3
|
|
|
|
// The following defines the speed of the color fades
|
|
// when changing scene. (range 0..1)
|
|
// It is wise to correlate it with avglum_divider
|
|
// try between (1/avglum_divider) and (1/avglum_divider)/3
|
|
//#define AMBI_FAST_STEP 0.125
|
|
#define AMBI_FAST_STEP 0.25
|
|
|
|
|
|
|
|
|
|
// GLOW STATIC CONFIG ##########################################################################################
|
|
|
|
//Setting the glow/halo sharpness parameter to this
|
|
//will skip the blurring phase and lowers the gpu use
|
|
//Set this to the same value as used for the maximum
|
|
//of IN_GLOW_W/H, HALO_SHARPNESS
|
|
#define GLOW_SHARP_MAX 7
|
|
|
|
//Minumum glow sharpness
|
|
//I set this to allow negative values for glow sharpness
|
|
//that will calc their values from light spread amount
|
|
#define MIN_IN_GLOW_SHARP 0.40
|
|
|
|
//Setting glow to blur bias parameter to this will skip the glow/blur
|
|
//mix code and just return the blurred image
|
|
//Set this to the same value as used for the maximum for IN_GLOW_BIAS pragma
|
|
#define IN_GLOW_BIAS_MAX 1.0
|
|
|
|
//Try to keep blur sizes consistent across input resolutions
|
|
#define SCALEMOD_X 360
|
|
#define SCALEMOD_Y 270
|
|
#define NEW_SCALEMOD_X (global.flick_and_noise_passSize.x/(360.0*2.0) / 2.2)
|
|
#define NEW_SCALEMOD_Y (global.flick_and_noise_passSize.y/(270.0*2.0) / 2.2)
|
|
|
|
|
|
// RESOLUTION SWITCH GLITCH EMULATION ##########################################################################################
|
|
//Where to sample alpha from avglum pass to understand if resolution has changed (very internal setting)
|
|
#define RESSWITCH_SAMPLING_POINT vec2(0.95)
|
|
//How much the resolution have to change for shake to be activated (in relation to the old size).
|
|
#define RESSWITCH_GLITCH_TRESHOLD 0.1
|
|
//How fast is the shake [0.01 -> 1]
|
|
#define RESSWITCH_SHAKE_SPEED 0.3
|
|
|
|
|
|
// MISC STATIC CONFIG ##########################################################################################
|
|
//Static dithering applied over vignette and spot
|
|
#define NOISEPOWER 5/1000.0
|
|
//Temporal noise strength applied on green channel when green is dark over ambient lights (multiplied by NOISEPOWER)
|
|
#define NOISEPOWER_AMBI_MUL 3.0
|
|
|
|
|
|
|
|
// STATIC CONFIG ENDS HERE ##########################################################################################
|