From 5937e2ccee80d9bfc3824e19382bc15ef34fa433 Mon Sep 17 00:00:00 2001 From: Valerie Date: Mon, 8 Apr 2024 19:20:45 -0400 Subject: [PATCH] added vertex warp shader and general cleanup --- shaders/composite.fsh | 1 - shaders/composite.vsh | 2 +- shaders/gbuffers_entities.fsh | 12 ++++++++++++ shaders/gbuffers_entities.vsh | 28 ++++++++++++++++++++++++++++ shaders/gbuffers_terrain.fsh | 12 ++++++++++++ shaders/gbuffers_terrain.vsh | 28 ++++++++++++++++++++++++++++ shaders/lang/en_US.lang | 3 ++- shaders/shaders.properties | 6 +++--- 8 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 shaders/gbuffers_entities.fsh create mode 100644 shaders/gbuffers_entities.vsh create mode 100644 shaders/gbuffers_terrain.fsh create mode 100644 shaders/gbuffers_terrain.vsh diff --git a/shaders/composite.fsh b/shaders/composite.fsh index 9b426e8..d885535 100644 --- a/shaders/composite.fsh +++ b/shaders/composite.fsh @@ -117,7 +117,6 @@ void main() { newcoord = (floor(newcoord * view) + offset) / view; #endif vec3 color = texture2D(gcolor, newcoord).rgb; - //gl_FragData[0] = vec4(vec3(color), 1.0); float mask; //vec3 ogRGB = texture2D(gcolor, texcoord).rgb; diff --git a/shaders/composite.vsh b/shaders/composite.vsh index 5a1b3f8..8de6c87 100644 --- a/shaders/composite.vsh +++ b/shaders/composite.vsh @@ -5,4 +5,4 @@ varying vec2 texcoord; void main() { gl_Position = ftransform(); texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; -} \ No newline at end of file +} diff --git a/shaders/gbuffers_entities.fsh b/shaders/gbuffers_entities.fsh new file mode 100644 index 0000000..292eef0 --- /dev/null +++ b/shaders/gbuffers_entities.fsh @@ -0,0 +1,12 @@ +#version 120 + +varying vec2 texcoord; +varying vec4 color; + +uniform sampler2D texture; + +void main() { + vec4 final = texture2D(texture, texcoord) * color; + gl_FragData[0] = final; +} + diff --git a/shaders/gbuffers_entities.vsh b/shaders/gbuffers_entities.vsh new file mode 100644 index 0000000..465bec4 --- /dev/null +++ b/shaders/gbuffers_entities.vsh @@ -0,0 +1,28 @@ +#version 120 + +varying vec2 texcoord; +varying vec4 color; + +uniform mat4 gbufferModelView, gbufferModelViewInverse; +uniform float viewWidth, viewHeight; + +#define pixelSize 2 // [1 2 4 8 16] +//#define vWarp // whether or not to warp vertices + +void main() { + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + color = gl_Color; + + #ifdef vWarp + vec2 screen = vec2(viewWidth / pixelSize, viewHeight / pixelSize); + vec4 position = gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex; + vec2 nearest = round(position.xy * screen) / screen; + position.xy = nearest; + //vec3 nearest = round(position.xyz * 100) / 100; + //position.xyz = nearest; + gl_Position = gl_ProjectionMatrix * gbufferModelView * position; + #else + gl_Position = ftransform(); + #endif +} + diff --git a/shaders/gbuffers_terrain.fsh b/shaders/gbuffers_terrain.fsh new file mode 100644 index 0000000..292eef0 --- /dev/null +++ b/shaders/gbuffers_terrain.fsh @@ -0,0 +1,12 @@ +#version 120 + +varying vec2 texcoord; +varying vec4 color; + +uniform sampler2D texture; + +void main() { + vec4 final = texture2D(texture, texcoord) * color; + gl_FragData[0] = final; +} + diff --git a/shaders/gbuffers_terrain.vsh b/shaders/gbuffers_terrain.vsh new file mode 100644 index 0000000..465bec4 --- /dev/null +++ b/shaders/gbuffers_terrain.vsh @@ -0,0 +1,28 @@ +#version 120 + +varying vec2 texcoord; +varying vec4 color; + +uniform mat4 gbufferModelView, gbufferModelViewInverse; +uniform float viewWidth, viewHeight; + +#define pixelSize 2 // [1 2 4 8 16] +//#define vWarp // whether or not to warp vertices + +void main() { + texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; + color = gl_Color; + + #ifdef vWarp + vec2 screen = vec2(viewWidth / pixelSize, viewHeight / pixelSize); + vec4 position = gbufferModelViewInverse * gl_ModelViewMatrix * gl_Vertex; + vec2 nearest = round(position.xy * screen) / screen; + position.xy = nearest; + //vec3 nearest = round(position.xyz * 100) / 100; + //position.xyz = nearest; + gl_Position = gl_ProjectionMatrix * gbufferModelView * position; + #else + gl_Position = ftransform(); + #endif +} + diff --git a/shaders/lang/en_US.lang b/shaders/lang/en_US.lang index df1b0aa..4b6f05a 100644 --- a/shaders/lang/en_US.lang +++ b/shaders/lang/en_US.lang @@ -15,5 +15,6 @@ option.valSteps=Value Depth screen.PSX=PSX option.vWarp=Vertex Warping -option.tWarp=Texture Warping +option.tWarp=Affine Textures +option.tWarp.comment=Emulates affine texture mapping responsible for warping textures on the PSX diff --git a/shaders/shaders.properties b/shaders/shaders.properties index bc65ca8..9488a64 100644 --- a/shaders/shaders.properties +++ b/shaders/shaders.properties @@ -1,7 +1,7 @@ sliders=pixelSize hueSteps satSteps valSteps rgbSteps -screen=pixelSize [COLOR] [PSX] +screen=pixelSize [COLOR] [PSX] -screen.COLOR=RGB rgbSteps pixelSize hueSteps satSteps valSteps -screen.PSX= +screen.COLOR=RGB rgbSteps hueSteps satSteps valSteps +screen.PSX=vWarp