summaryrefslogtreecommitdiff
path: root/src/assets/shaders/plane
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets/shaders/plane')
-rw-r--r--src/assets/shaders/plane/frag.glsl23
-rw-r--r--src/assets/shaders/plane/vert.glsl11
2 files changed, 34 insertions, 0 deletions
diff --git a/src/assets/shaders/plane/frag.glsl b/src/assets/shaders/plane/frag.glsl
new file mode 100644
index 0000000..a323cc8
--- /dev/null
+++ b/src/assets/shaders/plane/frag.glsl
@@ -0,0 +1,23 @@
+uniform sampler2D texture_data;
+
+uniform vec2 texture_scale;
+uniform vec2 texture_offset;
+uniform float fog_distance;
+uniform vec3 fog_color;
+uniform float opacity;
+
+in float vertex_depth;
+
+void main()
+{
+ vec2 tcfull = vec2(vertex_texcoord.x, 1.0 - vertex_texcoord.y);
+ vec4 texel = texture(texture_data, tcfull * texture_scale + texture_offset);
+ if (fog_distance > 0.0) {
+ float t = clamp(vertex_depth / fog_distance, 0.0, 1.0);
+ texel.rgb = mix(texel.rgb, fog_color, t);
+ if (t == 1.0) texel.a = 1.0;
+ }
+ texel.a *= opacity;
+ if (texel.a == 0.0) discard;
+ frag_color = texel;
+}
diff --git a/src/assets/shaders/plane/vert.glsl b/src/assets/shaders/plane/vert.glsl
new file mode 100644
index 0000000..c8932a5
--- /dev/null
+++ b/src/assets/shaders/plane/vert.glsl
@@ -0,0 +1,11 @@
+out float vertex_depth;
+
+void main()
+{
+ vertex_texcoord = texcoord;
+ vec3 pos = (position * vec4(vertex, 1.0)).xyz;
+ vertex_fragpos = pos;
+ vec4 vpos = view * vec4(pos, 1.0);
+ vertex_depth = vpos.z;
+ gl_Position = projection * vpos;
+}