diff options
Diffstat (limited to 'src/assets/shaders/plane')
| -rw-r--r-- | src/assets/shaders/plane/frag.glsl | 23 | ||||
| -rw-r--r-- | src/assets/shaders/plane/vert.glsl | 11 |
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; +} |
