aboutsummaryrefslogtreecommitdiff
path: root/examples/resources/shaders
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2016-02-20 01:09:47 +0100
committerRay <raysan5@gmail.com>2016-02-20 01:09:47 +0100
commit4b6e6d4dd45fc3a47b82af7eeb60871140a7eccf (patch)
treed9ee679c3b0bc5d4a20b31930994deb0e4c37948 /examples/resources/shaders
parentf582ab06add085594f2579ee6e7d625212abd204 (diff)
parent954ced21a42eb489ad382b4c00406a28778fee41 (diff)
downloadraylib-4b6e6d4dd45fc3a47b82af7eeb60871140a7eccf.tar.gz
raylib-4b6e6d4dd45fc3a47b82af7eeb60871140a7eccf.zip
Merge pull request #83 from raysan5/develop
Develop branch integration
Diffstat (limited to 'examples/resources/shaders')
-rw-r--r--examples/resources/shaders/base.vs5
-rw-r--r--examples/resources/shaders/bloom.fs2
-rw-r--r--examples/resources/shaders/grayscale.fs6
-rw-r--r--examples/resources/shaders/phong.fs76
-rw-r--r--examples/resources/shaders/phong.vs29
-rw-r--r--examples/resources/shaders/shapes_base.vs11
-rw-r--r--examples/resources/shaders/shapes_grayscale.fs6
-rw-r--r--examples/resources/shaders/swirl.fs8
8 files changed, 123 insertions, 20 deletions
diff --git a/examples/resources/shaders/base.vs b/examples/resources/shaders/base.vs
index 59eae0a0..b0f930b7 100644
--- a/examples/resources/shaders/base.vs
+++ b/examples/resources/shaders/base.vs
@@ -6,8 +6,7 @@ in vec3 vertexNormal;
out vec2 fragTexCoord;
-uniform mat4 projectionMatrix;
-uniform mat4 modelviewMatrix;
+uniform mat4 mvpMatrix;
// NOTE: Add here your custom variables
@@ -15,5 +14,5 @@ void main()
{
fragTexCoord = vertexTexCoord;
- gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
+ gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
} \ No newline at end of file
diff --git a/examples/resources/shaders/bloom.fs b/examples/resources/shaders/bloom.fs
index f9cebe18..2833ce33 100644
--- a/examples/resources/shaders/bloom.fs
+++ b/examples/resources/shaders/bloom.fs
@@ -5,7 +5,7 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
diff --git a/examples/resources/shaders/grayscale.fs b/examples/resources/shaders/grayscale.fs
index 38337e00..af50b8c1 100644
--- a/examples/resources/shaders/grayscale.fs
+++ b/examples/resources/shaders/grayscale.fs
@@ -5,16 +5,16 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
void main()
{
- vec4 base = texture2D(texture0, fragTexCoord)*tintColor;
+ vec4 base = texture2D(texture0, fragTexCoord)*fragTintColor;
// Convert to grayscale using NTSC conversion weights
float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
- fragColor = vec4(gray, gray, gray, tintColor.a);
+ fragColor = vec4(gray, gray, gray, fragTintColor.a);
} \ No newline at end of file
diff --git a/examples/resources/shaders/phong.fs b/examples/resources/shaders/phong.fs
new file mode 100644
index 00000000..f79413d9
--- /dev/null
+++ b/examples/resources/shaders/phong.fs
@@ -0,0 +1,76 @@
+#version 330
+
+// Vertex shader input data
+in vec2 fragTexCoord;
+in vec3 fragNormal;
+
+// Diffuse data
+uniform sampler2D texture0;
+uniform vec4 fragTintColor;
+
+// Light attributes
+uniform vec3 light_ambientColor = vec3(0.6, 0.3, 0.0);
+uniform vec3 light_diffuseColor = vec3(1.0, 0.5, 0.0);
+uniform vec3 light_specularColor = vec3(0.0, 1.0, 0.0);
+uniform float light_intensity = 1.0;
+uniform float light_specIntensity = 1.0;
+
+// Material attributes
+uniform vec3 mat_ambientColor = vec3(1.0, 1.0, 1.0);
+uniform vec3 mat_specularColor = vec3(1.0, 1.0, 1.0);
+uniform float mat_glossiness = 50.0;
+
+// World attributes
+uniform vec3 lightPos;
+uniform vec3 cameraPos;
+
+// Fragment shader output data
+out vec4 fragColor;
+
+vec3 AmbientLighting()
+{
+ return (mat_ambientColor*light_ambientColor);
+}
+
+vec3 DiffuseLighting(in vec3 N, in vec3 L)
+{
+ // Lambertian reflection calculation
+ float diffuse = clamp(dot(N, L), 0, 1);
+
+ return (fragTintColor.xyz*light_diffuseColor*light_intensity*diffuse);
+}
+
+vec3 SpecularLighting(in vec3 N, in vec3 L, in vec3 V)
+{
+ float specular = 0.0;
+
+ // Calculate specular reflection only if the surface is oriented to the light source
+ if (dot(N, L) > 0)
+ {
+ // Calculate half vector
+ vec3 H = normalize(L + V);
+
+ // Calculate specular intensity
+ specular = pow(dot(N, H), 3 + mat_glossiness);
+ }
+
+ return (mat_specularColor*light_specularColor*light_specIntensity*specular);
+}
+
+void main()
+{
+ // Normalize input vectors
+ vec3 L = normalize(lightPos);
+ vec3 V = normalize(cameraPos);
+ vec3 N = normalize(fragNormal);
+
+ vec3 ambient = AmbientLighting();
+ vec3 diffuse = DiffuseLighting(N, L);
+ vec3 specular = SpecularLighting(N, L, V);
+
+ // Get base color from texture
+ vec4 textureColor = texture(texture0, fragTexCoord);
+ vec3 finalColor = textureColor.rgb;
+
+ fragColor = vec4(finalColor * (ambient + diffuse + specular), textureColor.a);
+} \ No newline at end of file
diff --git a/examples/resources/shaders/phong.vs b/examples/resources/shaders/phong.vs
new file mode 100644
index 00000000..52cc2227
--- /dev/null
+++ b/examples/resources/shaders/phong.vs
@@ -0,0 +1,29 @@
+#version 330
+
+// Vertex input data
+in vec3 vertexPosition;
+in vec2 vertexTexCoord;
+in vec3 vertexNormal;
+
+// Projection and model data
+uniform mat4 mvpMatrix;
+
+uniform mat4 modelMatrix;
+//uniform mat4 viewMatrix; // Not used
+
+// Attributes to fragment shader
+out vec2 fragTexCoord;
+out vec3 fragNormal;
+
+void main()
+{
+ // Send texture coord to fragment shader
+ fragTexCoord = vertexTexCoord;
+
+ // Calculate view vector normal from model
+ mat3 normalMatrix = transpose(inverse(mat3(modelMatrix)));
+ fragNormal = normalize(normalMatrix*vertexNormal);
+
+ // Calculate final vertex position
+ gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
+} \ No newline at end of file
diff --git a/examples/resources/shaders/shapes_base.vs b/examples/resources/shaders/shapes_base.vs
index 78e543b7..ad272dc1 100644
--- a/examples/resources/shaders/shapes_base.vs
+++ b/examples/resources/shaders/shapes_base.vs
@@ -1,19 +1,18 @@
-#version 110
+#version 330
attribute vec3 vertexPosition;
attribute vec2 vertexTexCoord;
attribute vec4 vertexColor;
-uniform mat4 projectionMatrix;
-uniform mat4 modelviewMatrix;
+uniform mat4 mvpMatrix;
varying vec2 fragTexCoord;
-varying vec4 fragColor;
+varying vec4 fragTintColor;
void main()
{
fragTexCoord = vertexTexCoord;
- fragColor = vertexColor;
+ fragTintColor = vertexColor;
- gl_Position = projectionMatrix*modelviewMatrix*vec4(vertexPosition, 1.0);
+ gl_Position = mvpMatrix*vec4(vertexPosition, 1.0);
} \ No newline at end of file
diff --git a/examples/resources/shaders/shapes_grayscale.fs b/examples/resources/shaders/shapes_grayscale.fs
index 1b778871..0698e1bf 100644
--- a/examples/resources/shaders/shapes_grayscale.fs
+++ b/examples/resources/shaders/shapes_grayscale.fs
@@ -1,12 +1,12 @@
-#version 110
+#version 330
uniform sampler2D texture0;
varying vec2 fragTexCoord;
-varying vec4 fragColor;
+varying vec4 fragTintColor;
void main()
{
- vec4 base = texture2D(texture0, fragTexCoord)*fragColor;
+ vec4 base = texture2D(texture0, fragTexCoord)*fragTintColor;
// Convert to grayscale using NTSC conversion weights
float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114));
diff --git a/examples/resources/shaders/swirl.fs b/examples/resources/shaders/swirl.fs
index ba26cc05..f89ef406 100644
--- a/examples/resources/shaders/swirl.fs
+++ b/examples/resources/shaders/swirl.fs
@@ -5,17 +5,17 @@ in vec2 fragTexCoord;
out vec4 fragColor;
uniform sampler2D texture0;
-uniform vec4 tintColor;
+uniform vec4 fragTintColor;
// NOTE: Add here your custom variables
-const float renderWidth = 800; // HARDCODED for example!
-const float renderHeight = 480; // Use uniforms instead...
+const float renderWidth = 800.0; // HARDCODED for example!
+const float renderHeight = 480.0; // Use uniforms instead...
float radius = 250.0;
float angle = 0.8;
-uniform vec2 center = vec2(200, 200);
+uniform vec2 center = vec2(200.0, 200.0);
void main (void)
{