diff --git a/shaders/final.fsh b/shaders/final.fsh new file mode 100644 index 0000000..bd1ba82 --- /dev/null +++ b/shaders/final.fsh @@ -0,0 +1,47 @@ +#version 120 + +#define pixelSize // [1 2 4 8 16] +//#define hBlur + +varying vec2 texcoord; + +uniform sampler2D gcolor; +uniform float viewWidth; + +#ifdef hBlur + +vec2 neighbor = vec2(1 / viewWidth, 0); + +float avg(float l, float c, float r) { + return (l + c + r) / 3; +} + +void main() { + vec3 color = texture2D(gcolor, texcoord).rgb; + + vec2 left = texcoord - neighbor; + vec2 right = texcoord + neighbor; + vec3 lColor; + if(left.x >= 0) + lColor = texture2D(gcolor, left).rgb; + else + lColor = color; + + vec3 rColor; + if(right.x <= viewWidth) + rColor = texture2D(gcolor, right).rgb; + else + rColor = color; + + vec3 blurred = vec3(avg(lColor.r, color.r, rColor.r), avg(lColor.g, color.g, rColor.g), avg(lColor.b, color.b, rColor.b)); + gl_FragData[0] = vec4(blurred, 1); +} + +#else + +void main() { + gl_FragData[0] = texture2D(gcolor, texcoord); +} + +#endif + diff --git a/shaders/final.vsh b/shaders/final.vsh new file mode 100644 index 0000000..5f61fc7 --- /dev/null +++ b/shaders/final.vsh @@ -0,0 +1,3 @@ +#version 120 + +#include "/module/empty.vert" diff --git a/shaders/lang/en_US.lang b/shaders/lang/en_US.lang index 07b7127..63e555e 100644 --- a/shaders/lang/en_US.lang +++ b/shaders/lang/en_US.lang @@ -3,6 +3,7 @@ profile.DEFAULT=Default profile.AEON=Aeon Upstream profile.DOS=DOS profile.PSX=PSX +profile.REALITY=Project Reality profile.VR32=VR32 option.pixelSize=Downscaling @@ -22,9 +23,13 @@ option.hueSteps=Hue Depth option.satSteps=Saturation Depth option.valSteps=Value Depth -screen.PSX=PSX +screen.SCREEN=Screen + +screen.CONSOLE=Consoles + +screen.PSX=PSX (1994) option.vWarp=Vertex Warping -option.vWarp.comment=Emulates screen-space vertex snapping responsible for vertex wobble on the PSX +option.vWarp.comment=Emulates screen-space vertex snapping responsible for vertex wobble on the Playstation value.vWarp.0=Off value.vWarp.1=Minimal (1x) value.vWarp.2=Low (2x) @@ -33,7 +38,11 @@ value.vWarp.8=High (8x) value.vWarp.16=Extreme (16x) value.vWarp.32=Silly (32x) option.tWarp=Texture Warping -option.tWarp.comment=Emulates affine texture mapping responsible for warping textures on the PSX +option.tWarp.comment=Emulates affine texture mapping responsible for warping textures on the Playstation + +screen.REALITY=Project Reality (1996) +option.hBlur=Horizontal Blur +option.hBlur.comment=Emulates the blur responsible for reducing LCD clarity on the N64 screen.FX=FX option.dof=Depth of Field diff --git a/shaders/shaders.properties b/shaders/shaders.properties index 6889ba6..806d7b5 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -1,24 +1,31 @@ sliders=pixelSize hueSteps satSteps valSteps rgbSteps vWarp # -- PROFILES -- -profile.DEFAULT=pixelSize=2 colorMode=0 dithering hueSteps=4 satSteps=4 valSteps=4 vWarp=0 !tWarp -profile.AEON=pixelSize=1 colorMode=0 dithering hueSteps=8 satSteps=4 valSteps=4 vWarp=0 !tWarp -profile.DOS=pixelSize=4 colorMode=1 dithering rgbSteps=2 vWarp=1 !tWarp -profile.PSX=pixelSize=2 colorMode=1 !dithering rgbSteps=16 vWarp=2 tWarp -profile.VR32=pixelSize=8 colorMode=0 !dithering hueSteps=2 satSteps=2 valSteps=2 vWarp=1 !tWarp +profile.DEFAULT=pixelSize=2 colorMode=0 dithering hueSteps=4 satSteps=4 valSteps=4 vWarp=0 !tWarp !hBlur +profile.AEON=pixelSize=1 colorMode=0 dithering hueSteps=8 satSteps=4 valSteps=4 vWarp=0 !tWarp !hBlur +profile.DOS=pixelSize=4 colorMode=1 dithering rgbSteps=2 vWarp=1 !tWarp !hBlur +profile.PSX=pixelSize=2 colorMode=1 !dithering rgbSteps=16 vWarp=2 tWarp !hBlur +profile.REALITY=profile.PSX !tWarp hBlur +profile.VR32=pixelSize=8 colorMode=0 !dithering hueSteps=2 satSteps=2 valSteps=2 vWarp=1 !tWarp !hBlur # -- SCREENS -- # default -screen= pixelSize [COLOR] [PSX] [FX] +screen= pixelSize [COLOR] [SCREEN] [CONSOLE] [FX] # colors screen.COLOR.columns=3 screen.COLOR=colorMode dithering rgbSteps hueSteps satSteps valSteps -# psx -screen.PSX=vWarp tWarp +# screen effects +screen.SCREEN= -# fx +# console effects +screen.CONSOLE.columns=1 +screen.CONSOLE=[PSX] [REALITY] +screen.PSX=vWarp tWarp # playstation +screen.REALITY=hBlur # nintendo 64 + +# custom effects screen.FX=dof dofRes worldCurvature # -- CONDITIONALS --