diff options
Diffstat (limited to 'assets/shaders')
-rwxr-xr-x | assets/shaders/Chunk_FS.glsl | 22 | ||||
-rwxr-xr-x | assets/shaders/Chunk_VS.glsl | 35 | ||||
-rwxr-xr-x | assets/shaders/Font_FS.glsl | 28 | ||||
-rwxr-xr-x | assets/shaders/Font_VS.glsl | 13 | ||||
-rwxr-xr-x | assets/shaders/Gui_FS.glsl | 11 | ||||
-rwxr-xr-x | assets/shaders/Gui_VS.glsl | 12 | ||||
-rwxr-xr-x | assets/shaders/Quad_FS.glsl | 11 | ||||
-rwxr-xr-x | assets/shaders/Quad_VS.glsl | 12 |
8 files changed, 144 insertions, 0 deletions
diff --git a/assets/shaders/Chunk_FS.glsl b/assets/shaders/Chunk_FS.glsl new file mode 100755 index 0000000..fa1d5f6 --- /dev/null +++ b/assets/shaders/Chunk_FS.glsl @@ -0,0 +1,22 @@ +#version 130
+#extension GL_EXT_texture_array : enable
+
+in vec2 pass_textureCoordinates;
+in float visibility;
+in float pass_layer;
+in float pass_baseLightingValue;
+
+out vec4 out_Color;
+
+uniform sampler2DArray modelTexture;
+uniform vec3 tint;
+uniform vec3 skyColor;
+
+void main(void){
+ vec4 textureColour = texture2DArray(modelTexture,vec3(pass_textureCoordinates, pass_layer));
+ if(textureColour.a<0.5) discard;
+ out_Color = textureColour;
+ out_Color.rgb += tint.xyz;
+ out_Color.rgb *= pass_baseLightingValue;
+ out_Color = mix(vec4(skyColor.x,skyColor.y,skyColor.z,1.0),out_Color, visibility);
+}
\ No newline at end of file diff --git a/assets/shaders/Chunk_VS.glsl b/assets/shaders/Chunk_VS.glsl new file mode 100755 index 0000000..6c5e3dc --- /dev/null +++ b/assets/shaders/Chunk_VS.glsl @@ -0,0 +1,35 @@ +#version 130
+
+in vec3 position;
+in vec2 textureCoordinates;
+in float baseLightingValue;
+in float layer;
+
+out vec2 pass_textureCoordinates;
+out float pass_baseLightingValue;
+out float pass_layer;
+out float visibility;
+
+uniform mat4 transformationMatrix;
+uniform mat4 projectionMatrix;
+uniform mat4 viewMatrix;
+uniform vec3 playerPosition;
+uniform int renderDistance;
+
+const float density = 0.5;
+const float gradient = 1.5;
+
+void main(void){
+ vec4 worldPosition = transformationMatrix * vec4(position,1.0);
+ gl_Position = projectionMatrix * viewMatrix * worldPosition;
+ pass_textureCoordinates = textureCoordinates;
+ pass_layer = layer;
+ pass_baseLightingValue = baseLightingValue;
+
+ float distance = sqrt(pow(worldPosition.x - playerPosition.x, 2)+ pow(worldPosition.z - playerPosition.z,2));
+ visibility = 1;
+ if(distance / 16 > renderDistance-2){
+ visibility = 1-(distance - (16*(renderDistance-2)))/16.0;
+ }
+ visibility = clamp(visibility,0.0,1.0);
+}
diff --git a/assets/shaders/Font_FS.glsl b/assets/shaders/Font_FS.glsl new file mode 100755 index 0000000..2b6f33b --- /dev/null +++ b/assets/shaders/Font_FS.glsl @@ -0,0 +1,28 @@ +#version 330
+
+in vec2 pass_textureCoords;
+
+out vec4 out_color;
+
+uniform vec3 color;
+uniform sampler2D fontAtlas;
+
+const float width = 0.5;
+const float edge = 0.1;
+
+const float borderWidth = 0.0;
+const float borderEdge = 0.5;
+
+const vec2 offset = vec2(0, 0.0);
+
+const vec3 outlineColour = vec3(1.0,0.0,0.0);
+
+void main(void){
+ float distance = 1.0 - texture(fontAtlas, pass_textureCoords).a;
+ float alpha = 1.0 - smoothstep(width, width + edge, distance);
+ float distance2 = 1.0 - texture(fontAtlas, pass_textureCoords + offset).a;
+ float outlineAlpha = 1.0 - smoothstep(borderWidth, borderWidth + borderEdge, distance2);
+ float overallAlpha = alpha + (1.0 - alpha) * outlineAlpha;
+ vec3 overallColor = mix(outlineColour, color, alpha / overallAlpha);
+ out_color = vec4(overallColor, overallAlpha);
+}
diff --git a/assets/shaders/Font_VS.glsl b/assets/shaders/Font_VS.glsl new file mode 100755 index 0000000..400061e --- /dev/null +++ b/assets/shaders/Font_VS.glsl @@ -0,0 +1,13 @@ +#version 330
+
+in vec2 position;
+in vec2 textureCoords;
+
+out vec2 pass_textureCoords;
+
+uniform vec2 translation;
+
+void main(void){
+ gl_Position = vec4(position + translation * vec2(2.0, -2.0), 0.0, 1.0);
+ pass_textureCoords = textureCoords;
+}
diff --git a/assets/shaders/Gui_FS.glsl b/assets/shaders/Gui_FS.glsl new file mode 100755 index 0000000..a9fc342 --- /dev/null +++ b/assets/shaders/Gui_FS.glsl @@ -0,0 +1,11 @@ +#version 140
+
+in vec2 textureCoords;
+
+out vec4 out_Color;
+
+uniform sampler2D guiTexture;
+
+void main(void){
+ out_Color = texture(guiTexture,vec2(textureCoords.x, textureCoords.y));
+}
diff --git a/assets/shaders/Gui_VS.glsl b/assets/shaders/Gui_VS.glsl new file mode 100755 index 0000000..0bd6d2c --- /dev/null +++ b/assets/shaders/Gui_VS.glsl @@ -0,0 +1,12 @@ +#version 140
+
+in vec2 position;
+
+out vec2 textureCoords;
+
+uniform mat4 transformationMatrix;
+
+void main(void){
+ gl_Position = transformationMatrix * vec4(position.x , position.y, 0.0, 1.0);
+ textureCoords = vec2((position.x+1.0)/2.0, 1 - (position.y+1.0)/2.0);
+}
diff --git a/assets/shaders/Quad_FS.glsl b/assets/shaders/Quad_FS.glsl new file mode 100755 index 0000000..b1f17b3 --- /dev/null +++ b/assets/shaders/Quad_FS.glsl @@ -0,0 +1,11 @@ +#version 140
+
+in vec2 textureCoords;
+
+out vec4 out_Color;
+
+uniform vec4 color;
+
+void main(void){
+ out_Color = color;
+}
diff --git a/assets/shaders/Quad_VS.glsl b/assets/shaders/Quad_VS.glsl new file mode 100755 index 0000000..0bd6d2c --- /dev/null +++ b/assets/shaders/Quad_VS.glsl @@ -0,0 +1,12 @@ +#version 140
+
+in vec2 position;
+
+out vec2 textureCoords;
+
+uniform mat4 transformationMatrix;
+
+void main(void){
+ gl_Position = transformationMatrix * vec4(position.x , position.y, 0.0, 1.0);
+ textureCoords = vec2((position.x+1.0)/2.0, 1 - (position.y+1.0)/2.0);
+}
|