diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-30 05:55:41 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-06-30 05:55:41 +1000 |
commit | fd5247321f36e7cb50dd90cb9bd1b5d60a3a289f (patch) | |
tree | 8603fa144341728da19da8df5d6790be792ceef1 /assets/opensb/rendering | |
parent | d5fbd2001b0ad3591a7f969dfd75c809ab55b40e (diff) |
Split world & interface shaders
Diffstat (limited to 'assets/opensb/rendering')
-rw-r--r-- | assets/opensb/rendering/default.config | 9 | ||||
-rw-r--r-- | assets/opensb/rendering/default.frag | 27 | ||||
-rw-r--r-- | assets/opensb/rendering/default.vert | 35 | ||||
-rw-r--r-- | assets/opensb/rendering/world.config (renamed from assets/opensb/rendering/opengl20.config) | 8 | ||||
-rw-r--r-- | assets/opensb/rendering/world.frag (renamed from assets/opensb/rendering/opengl20.frag) | 4 | ||||
-rw-r--r-- | assets/opensb/rendering/world.vert (renamed from assets/opensb/rendering/opengl20.vert) | 0 |
6 files changed, 78 insertions, 5 deletions
diff --git a/assets/opensb/rendering/default.config b/assets/opensb/rendering/default.config new file mode 100644 index 0000000..5e51afc --- /dev/null +++ b/assets/opensb/rendering/default.config @@ -0,0 +1,9 @@ +{ + "effectParameters" : {}, + "effectTextures" : {}, + + "effectShaders" : { + "vertex" : "default.vert", + "fragment" : "default.frag" + } +}
\ No newline at end of file diff --git a/assets/opensb/rendering/default.frag b/assets/opensb/rendering/default.frag new file mode 100644 index 0000000..0ba2d60 --- /dev/null +++ b/assets/opensb/rendering/default.frag @@ -0,0 +1,27 @@ +#version 110 + +uniform sampler2D texture0; +uniform sampler2D texture1; +uniform sampler2D texture2; +uniform sampler2D texture3; + +varying vec2 fragmentTextureCoordinate; +varying float fragmentTextureIndex; +varying vec4 fragmentColor; + +void main() { + vec4 texColor; + if (fragmentTextureIndex > 2.9) { + texColor = texture2D(texture3, fragmentTextureCoordinate); + } else if (fragmentTextureIndex > 1.9) { + texColor = texture2D(texture2, fragmentTextureCoordinate); + } else if (fragmentTextureIndex > 0.9) { + texColor = texture2D(texture1, fragmentTextureCoordinate); + } else { + texColor = texture2D(texture0, fragmentTextureCoordinate); + } + if (texColor.a <= 0.0) + discard; + + gl_FragColor = texColor * fragmentColor; +}
\ No newline at end of file diff --git a/assets/opensb/rendering/default.vert b/assets/opensb/rendering/default.vert new file mode 100644 index 0000000..a8b2751 --- /dev/null +++ b/assets/opensb/rendering/default.vert @@ -0,0 +1,35 @@ +#version 110 + +uniform vec2 textureSize0; +uniform vec2 textureSize1; +uniform vec2 textureSize2; +uniform vec2 textureSize3; +uniform vec2 screenSize; +uniform mat3 vertexTransform; + +attribute vec2 vertexPosition; +attribute vec2 vertexTextureCoordinate; +attribute float vertexTextureIndex; +attribute vec4 vertexColor; +attribute float vertexParam1; + +varying vec2 fragmentTextureCoordinate; +varying float fragmentTextureIndex; +varying vec4 fragmentColor; + +void main() { + vec2 screenPosition = (vertexTransform * vec3(vertexPosition, 1.0)).xy; + + if (vertexTextureIndex > 2.9) { + fragmentTextureCoordinate = vertexTextureCoordinate / textureSize3; + } else if (vertexTextureIndex > 1.9) { + fragmentTextureCoordinate = vertexTextureCoordinate / textureSize2; + } else if (vertexTextureIndex > 0.9) { + fragmentTextureCoordinate = vertexTextureCoordinate / textureSize1; + } else { + fragmentTextureCoordinate = vertexTextureCoordinate / textureSize0; + } + fragmentTextureIndex = vertexTextureIndex; + fragmentColor = vertexColor; + gl_Position = vec4(screenPosition / screenSize * 2.0 - 1.0, 0.0, 1.0); +}
\ No newline at end of file diff --git a/assets/opensb/rendering/opengl20.config b/assets/opensb/rendering/world.config index 70ff6c7..8dcc3cb 100644 --- a/assets/opensb/rendering/opengl20.config +++ b/assets/opensb/rendering/world.config @@ -2,7 +2,7 @@ "effectParameters" : { "lightMapEnabled" : { "type" : "bool", - "default" : false, + "default" : true, "uniform" : "lightMapEnabled" }, "lightMapScale" : { @@ -38,7 +38,7 @@ }, "effectShaders" : { - "vertex" : "opengl20.vert", - "fragment" : "opengl20.frag" + "vertex" : "world.vert", + "fragment" : "world.frag" } -} +}
\ No newline at end of file diff --git a/assets/opensb/rendering/opengl20.frag b/assets/opensb/rendering/world.frag index a57c029..ed197c3 100644 --- a/assets/opensb/rendering/opengl20.frag +++ b/assets/opensb/rendering/world.frag @@ -77,7 +77,9 @@ void main() { vec4 finalColor = texColor * fragmentColor; float finalLightMapMultiplier = fragmentLightMapMultiplier * lightMapMultiplier; - if (lightMapEnabled && finalLightMapMultiplier > 0.0) + if (texColor.a == 0.99607843137) + finalColor.a = fragmentColor.a; + else if (lightMapEnabled && finalLightMapMultiplier > 0.0) finalColor.rgb *= sampleLightMap(fragmentLightMapCoordinate, 1.0 / lightMapSize).rgb * finalLightMapMultiplier; gl_FragColor = finalColor; }
\ No newline at end of file diff --git a/assets/opensb/rendering/opengl20.vert b/assets/opensb/rendering/world.vert index 67998bc..67998bc 100644 --- a/assets/opensb/rendering/opengl20.vert +++ b/assets/opensb/rendering/world.vert |