Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/assets/opensb/rendering
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-04-15 17:46:44 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2024-04-15 17:46:44 +1000
commit63c9e3ec8b51a9d96872a054a0d35e8591b3535d (patch)
tree7d5cfaea0e13eb34cc6db25df6054cae1a04677c /assets/opensb/rendering
parent2a4bd826052102a0bb8858355e42b9cba06f2991 (diff)
only round vertices if AA is on
[skip ci]
Diffstat (limited to 'assets/opensb/rendering')
-rw-r--r--assets/opensb/rendering/effects/interface.config8
-rw-r--r--assets/opensb/rendering/effects/interface.vert13
-rw-r--r--assets/opensb/rendering/effects/world.config5
-rw-r--r--assets/opensb/rendering/effects/world.vert13
4 files changed, 29 insertions, 10 deletions
diff --git a/assets/opensb/rendering/effects/interface.config b/assets/opensb/rendering/effects/interface.config
index 4616e72..f153068 100644
--- a/assets/opensb/rendering/effects/interface.config
+++ b/assets/opensb/rendering/effects/interface.config
@@ -1,7 +1,13 @@
{
"blitFrameBuffer" : "main",
- "effectParameters" : {},
+ "effectParameters" : {
+ "vertexRounding" : {
+ "type" : "bool",
+ "default" : false,
+ "uniform" : "vertexRounding"
+ }
+ },
"effectTextures" : {},
"effectShaders" : {
diff --git a/assets/opensb/rendering/effects/interface.vert b/assets/opensb/rendering/effects/interface.vert
index 14a7cea..dfd94d4 100644
--- a/assets/opensb/rendering/effects/interface.vert
+++ b/assets/opensb/rendering/effects/interface.vert
@@ -6,6 +6,7 @@ uniform vec2 textureSize2;
uniform vec2 textureSize3;
uniform vec2 screenSize;
uniform mat3 vertexTransform;
+uniform bool vertexRounding;
in vec2 vertexPosition;
in vec4 vertexColor;
@@ -19,10 +20,14 @@ out vec4 fragmentColor;
void main() {
vec2 screenPosition = (vertexTransform * vec3(vertexPosition, 1.0)).xy;
gl_Position = vec4(screenPosition / screenSize * 2.0 - 1.0, 0.0, 1.0);
- if (((vertexData >> 3) & 0x1) == 1)
- screenPosition.x = round(screenPosition.x);
- if (((vertexData >> 4) & 0x1) == 1)
- screenPosition.y = round(screenPosition.y);
+
+ if (vertexRounding) {
+ if (((vertexData >> 3) & 0x1) == 1)
+ screenPosition.x = round(screenPosition.x);
+ if (((vertexData >> 4) & 0x1) == 1)
+ screenPosition.y = round(screenPosition.y);
+ }
+
int vertexTextureIndex = vertexData & 0x3;
if (vertexTextureIndex == 3)
fragmentTextureCoordinate = vertexTextureCoordinate / textureSize3;
diff --git a/assets/opensb/rendering/effects/world.config b/assets/opensb/rendering/effects/world.config
index d8ec1a9..3a55cfe 100644
--- a/assets/opensb/rendering/effects/world.config
+++ b/assets/opensb/rendering/effects/world.config
@@ -21,6 +21,11 @@
"type" : "float",
"default" : 1.0,
"uniform" : "lightMapMultiplier"
+ },
+ "vertexRounding" : {
+ "type" : "bool",
+ "default" : false,
+ "uniform" : "vertexRounding"
}
},
diff --git a/assets/opensb/rendering/effects/world.vert b/assets/opensb/rendering/effects/world.vert
index ce8a9fc..f41c0a8 100644
--- a/assets/opensb/rendering/effects/world.vert
+++ b/assets/opensb/rendering/effects/world.vert
@@ -6,6 +6,7 @@ uniform vec2 textureSize2;
uniform vec2 textureSize3;
uniform vec2 screenSize;
uniform mat3 vertexTransform;
+uniform bool vertexRounding;
uniform vec2 lightMapSize;
uniform vec2 lightMapScale;
uniform vec2 lightMapOffset;
@@ -24,11 +25,13 @@ out vec2 fragmentLightMapCoordinate;
void main() {
vec2 screenPosition = (vertexTransform * vec3(vertexPosition, 1.0)).xy;
- if (((vertexData >> 3) & 0x1) == 1)
- screenPosition.x = round(screenPosition.x);
- if (((vertexData >> 4) & 0x1) == 1)
- screenPosition.y = round(screenPosition.y);
-
+ if (vertexRounding) {
+ if (((vertexData >> 3) & 0x1) == 1)
+ screenPosition.x = round(screenPosition.x);
+ if (((vertexData >> 4) & 0x1) == 1)
+ screenPosition.y = round(screenPosition.y);
+ }
+
fragmentLightMapMultiplier = float((vertexData >> 2) & 0x1);
int vertexTextureIndex = vertexData & 0x3;
fragmentLightMapCoordinate = (screenPosition / lightMapScale) - lightMapOffset * lightMapSize / screenSize;