diff options
Diffstat (limited to 'src/assets/shaders')
| -rw-r--r-- | src/assets/shaders/flat/frag.glsl | 11 | ||||
| -rw-r--r-- | src/assets/shaders/flat/vert.glsl | 4 | ||||
| -rw-r--r-- | src/assets/shaders/plane/frag.glsl | 23 | ||||
| -rw-r--r-- | src/assets/shaders/plane/vert.glsl | 11 |
4 files changed, 34 insertions, 15 deletions
diff --git a/src/assets/shaders/flat/frag.glsl b/src/assets/shaders/flat/frag.glsl deleted file mode 100644 index 7006a2b..0000000 --- a/src/assets/shaders/flat/frag.glsl +++ /dev/null @@ -1,11 +0,0 @@ -uniform sampler2D texture_data; - -void main() -{ - vec2 tcfull = vec2(vertex_texcoord.x, 1.0 - vertex_texcoord.y); - vec4 texel = texture(texture_data, tcfull); - if (texel.a != 1.0) { - discard; - } - frag_color = texel; -} diff --git a/src/assets/shaders/flat/vert.glsl b/src/assets/shaders/flat/vert.glsl deleted file mode 100644 index e324f7e..0000000 --- a/src/assets/shaders/flat/vert.glsl +++ /dev/null @@ -1,4 +0,0 @@ -void main() -{ - default_main(); -}
\ No newline at end of file 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; +} |
