mirror of
				https://github.com/raysan5/raylib.git
				synced 2025-10-26 12:27:01 +00:00 
			
		
		
		
	Updated shaders with comments
This commit is contained in:
		| @@ -33,5 +33,5 @@ void main() | |||||||
|     else if (texelColor.r < 0.5) tc = sum*sum*0.009 + texelColor; |     else if (texelColor.r < 0.5) tc = sum*sum*0.009 + texelColor; | ||||||
|     else tc = sum*sum*0.0075 + texelColor; |     else tc = sum*sum*0.0075 + texelColor; | ||||||
|      |      | ||||||
|     finalColor = tc; |     gl_FragColor = tc; | ||||||
| } | } | ||||||
| @@ -20,7 +20,7 @@ float angle = 0.8; | |||||||
|  |  | ||||||
| uniform vec2 center = vec2(200.0, 200.0); | uniform vec2 center = vec2(200.0, 200.0); | ||||||
|  |  | ||||||
| void main (void) | void main() | ||||||
| { | { | ||||||
|     vec2 texSize = vec2(renderWidth, renderHeight); |     vec2 texSize = vec2(renderWidth, renderHeight); | ||||||
|     vec2 tc = fragTexCoord*texSize; |     vec2 tc = fragTexCoord*texSize; | ||||||
|   | |||||||
| @@ -29,6 +29,9 @@ uniform float matGlossiness = 50.0; | |||||||
| uniform vec3 lightPosition; | uniform vec3 lightPosition; | ||||||
| uniform vec3 cameraPosition; | uniform vec3 cameraPosition; | ||||||
|  |  | ||||||
|  | // Fragment shader output data | ||||||
|  | out vec4 fragColor; | ||||||
|  |  | ||||||
| // Calculate ambient lighting component | // Calculate ambient lighting component | ||||||
| vec3 AmbientLighting() | vec3 AmbientLighting() | ||||||
| { | { | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ float angle = 0.8; | |||||||
|  |  | ||||||
| uniform vec2 center = vec2(200.0, 200.0); | uniform vec2 center = vec2(200.0, 200.0); | ||||||
|  |  | ||||||
| void main (void) | void main() | ||||||
| { | { | ||||||
|     vec2 texSize = vec2(renderWidth, renderHeight); |     vec2 texSize = vec2(renderWidth, renderHeight); | ||||||
|     vec2 tc = fragTexCoord*texSize; |     vec2 tc = fragTexCoord*texSize; | ||||||
|   | |||||||
| @@ -1,20 +1,26 @@ | |||||||
| #version 100 | #version 100 | ||||||
|  |  | ||||||
|  | // Input vertex attributes | ||||||
| attribute vec3 vertexPosition; | attribute vec3 vertexPosition; | ||||||
| attribute vec2 vertexTexCoord; | attribute vec2 vertexTexCoord; | ||||||
| attribute vec3 vertexNormal; | attribute vec3 vertexNormal; | ||||||
|  | attribute vec4 vertexColor; | ||||||
|  |  | ||||||
| varying vec2 fragTexCoord; | // Input uniform values | ||||||
|  |  | ||||||
| uniform mat4 mvpMatrix; | uniform mat4 mvpMatrix; | ||||||
|  |  | ||||||
|  | // Output vertex attributes (to fragment shader) | ||||||
|  | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables  | // NOTE: Add here your custom variables  | ||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|     vec3 normal = vertexNormal; |     // Send vertex attributes to fragment shader | ||||||
|      |  | ||||||
|     fragTexCoord = vertexTexCoord; |     fragTexCoord = vertexTexCoord; | ||||||
|  |     fragColor = vertexColor; | ||||||
|      |      | ||||||
|  |     // Calculate final vertex position | ||||||
|     gl_Position = mvpMatrix*vec4(vertexPosition, 1.0); |     gl_Position = mvpMatrix*vec4(vertexPosition, 1.0); | ||||||
| } | } | ||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
| @@ -22,21 +25,13 @@ void main() | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     if (texture2D(texture0, fragTexCoord).r < 0.3) |     // Texel color fetching from texture sampler | ||||||
|     { |     vec4 texelColor = texture(texture0, fragTexCoord); | ||||||
|         tc = sum*sum*0.012 + texture2D(texture0, fragTexCoord); |      | ||||||
|     } |     // Calculate final fragment color | ||||||
|     else |     if (texelColor.r < 0.3) tc = sum*sum*0.012 + texelColor; | ||||||
|     { |     else if (texelColor.r < 0.5) tc = sum*sum*0.009 + texelColor; | ||||||
|         if (texture2D(texture0, fragTexCoord).r < 0.5) |     else tc = sum*sum*0.0075 + texelColor; | ||||||
|         { |  | ||||||
|             tc = sum*sum*0.009 + texture2D(texture0, fragTexCoord); |  | ||||||
|         } |  | ||||||
|         else |  | ||||||
|         { |  | ||||||
|             tc = sum*sum*0.0075 + texture2D(texture0, fragTexCoord); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|      |      | ||||||
|     gl_FragColor = tc; |     gl_FragColor = tc; | ||||||
| } | } | ||||||
| @@ -2,7 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
| @@ -16,6 +20,7 @@ float weight[3] = float[]( 0.2270270270, 0.3162162162, 0.0702702703 ); | |||||||
|  |  | ||||||
| void main()  | void main()  | ||||||
| {  | {  | ||||||
|  |     // Texel color fetching from texture sampler | ||||||
|     vec3 tc = texture2D(texture0, fragTexCoord).rgb*weight[0]; |     vec3 tc = texture2D(texture0, fragTexCoord).rgb*weight[0]; | ||||||
|  |  | ||||||
|     for (int i = 1; i < 3; i++)  |     for (int i = 1; i < 3; i++)  | ||||||
|   | |||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
| @@ -46,7 +49,7 @@ vec4 PostFX(sampler2D tex, vec2 uv) | |||||||
|     return c; |     return c; | ||||||
| } | } | ||||||
|  |  | ||||||
| void main(void) | void main() | ||||||
| { | { | ||||||
|     vec3 tc = PostFX(texture0, fragTexCoord).rgb; |     vec3 tc = PostFX(texture0, fragTexCoord).rgb; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
| @@ -11,10 +14,12 @@ uniform vec4 fragTintColor; | |||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|     vec4 base = texture2D(texture0, fragTexCoord)*fragTintColor; |     // Texel color fetching from texture sampler | ||||||
|  |     vec4 texelColor = texture(texture0, fragTexCoord)*fragTintColor*fragColor; | ||||||
|      |      | ||||||
|     // Convert to grayscale using NTSC conversion weights |     // Convert texel color to grayscale using NTSC conversion weights | ||||||
|     float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114)); |     float gray = dot(texelColor.rgb, vec3(0.299, 0.587, 0.114)); | ||||||
|      |      | ||||||
|     gl_FragColor = vec4(gray, gray, gray, fragTintColor.a); |     // Calculate final fragment color | ||||||
|  |     gl_FragColor = vec4(gray, gray, gray, texelColor.a); | ||||||
| } | } | ||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
| @@ -14,7 +17,7 @@ float frequency = 720/3.0; | |||||||
|  |  | ||||||
| uniform float time; | uniform float time; | ||||||
|  |  | ||||||
| void main (void) | void main() | ||||||
| { | { | ||||||
| /* | /* | ||||||
|     // Scanlines method 1 |     // Scanlines method 1 | ||||||
|   | |||||||
| @@ -2,26 +2,30 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| const float renderWidth = 1280;  | const float renderWidth = 800.0;      // HARDCODED for example! | ||||||
| const float renderHeight = 720;  | const float renderHeight = 480.0;     // Use uniforms instead... | ||||||
|  |  | ||||||
| float radius = 250.0; | float radius = 250.0; | ||||||
| float angle = 0.8; | float angle = 0.8; | ||||||
|  |  | ||||||
| uniform vec2 center = vec2(200, 200); | uniform vec2 center = vec2(200.0, 200.0); | ||||||
|  |  | ||||||
| void main (void) | void main() | ||||||
| { | { | ||||||
|     vec2 texSize = vec2(renderWidth, renderHeight); |     vec2 texSize = vec2(renderWidth, renderHeight); | ||||||
|     vec2 tc = fragTexCoord*texSize; |     vec2 tc = fragTexCoord*texSize; | ||||||
|     tc -= center; |     tc -= center; | ||||||
|  |      | ||||||
|     float dist = length(tc); |     float dist = length(tc); | ||||||
|  |  | ||||||
|     if (dist < radius)  |     if (dist < radius)  | ||||||
|   | |||||||
| @@ -2,8 +2,11 @@ | |||||||
|  |  | ||||||
| precision mediump float; | precision mediump float; | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| varying vec2 fragTexCoord; | varying vec2 fragTexCoord; | ||||||
|  | varying vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
| @@ -11,6 +14,7 @@ uniform vec4 fragTintColor; | |||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|  |     // Texel color fetching from texture sampler | ||||||
|     vec4 texelColor = texture2D(texture0, fragTexCoord); |     vec4 texelColor = texture2D(texture0, fragTexCoord); | ||||||
|      |      | ||||||
|     // NOTE: Implement here your fragment shader code |     // NOTE: Implement here your fragment shader code | ||||||
|   | |||||||
| @@ -1,18 +1,26 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes | ||||||
| in vec3 vertexPosition; | in vec3 vertexPosition; | ||||||
| in vec2 vertexTexCoord; | in vec2 vertexTexCoord; | ||||||
| in vec3 vertexNormal; | in vec3 vertexNormal; | ||||||
|  | in vec4 vertexColor; | ||||||
|  |  | ||||||
| out vec2 fragTexCoord; | // Input uniform values | ||||||
|  |  | ||||||
| uniform mat4 mvpMatrix; | uniform mat4 mvpMatrix; | ||||||
|  |  | ||||||
|  | // Output vertex attributes (to fragment shader) | ||||||
|  | out vec2 fragTexCoord; | ||||||
|  | out vec4 fragColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables  | // NOTE: Add here your custom variables  | ||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|  |     // Send vertex attributes to fragment shader | ||||||
|     fragTexCoord = vertexTexCoord; |     fragTexCoord = vertexTexCoord; | ||||||
|  |     fragColor = vertexColor; | ||||||
|      |      | ||||||
|  |     // Calculate final vertex position | ||||||
|     gl_Position = mvpMatrix*vec4(vertexPosition, 1.0); |     gl_Position = mvpMatrix*vec4(vertexPosition, 1.0); | ||||||
| } | } | ||||||
| @@ -1,12 +1,16 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| void main() | void main() | ||||||
| @@ -18,25 +22,17 @@ void main() | |||||||
|     { |     { | ||||||
|         for (int j = -3; j < 3; j++) |         for (int j = -3; j < 3; j++) | ||||||
|         { |         { | ||||||
|             sum += texture(texture0, fragTexCoord + vec2(j, i)*0.004) * 0.25; |             sum += texture(texture0, fragTexCoord + vec2(j, i)*0.004)*0.25; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     if (texture(texture0, fragTexCoord).r < 0.3) |     // Texel color fetching from texture sampler | ||||||
|     { |     vec4 texelColor = texture(texture0, fragTexCoord); | ||||||
|         tc = sum*sum*0.012 + texture(texture0, fragTexCoord); |  | ||||||
|     } |  | ||||||
|     else |  | ||||||
|     { |  | ||||||
|         if (texture(texture0, fragTexCoord).r < 0.5) |  | ||||||
|         { |  | ||||||
|             tc = sum*sum*0.009 + texture(texture0, fragTexCoord); |  | ||||||
|         } |  | ||||||
|         else |  | ||||||
|         { |  | ||||||
|             tc = sum*sum*0.0075 + texture(texture0, fragTexCoord); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|      |      | ||||||
|     fragColor = tc; |     // Calculate final fragment color | ||||||
|  |     if (texelColor.r < 0.3) tc = sum*sum*0.012 + texelColor; | ||||||
|  |     else if (texelColor.r < 0.5) tc = sum*sum*0.009 + texelColor; | ||||||
|  |     else tc = sum*sum*0.0075 + texelColor; | ||||||
|  |  | ||||||
|  |     finalColor = tc; | ||||||
| } | } | ||||||
| @@ -1,12 +1,16 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| const float renderWidth = 1280.0; | const float renderWidth = 1280.0; | ||||||
| @@ -17,13 +21,14 @@ float weight[3] = float[](0.2270270270, 0.3162162162, 0.0702702703); | |||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|     vec3 tc = texture(texture0, fragTexCoord).rgb*weight[0]; |     // Texel color fetching from texture sampler | ||||||
|  |     vec3 texelColor = texture(texture0, fragTexCoord).rgb*weight[0]; | ||||||
|      |      | ||||||
|     for (int i = 1; i < 3; i++)  |     for (int i = 1; i < 3; i++)  | ||||||
|     { |     { | ||||||
|         tc += texture(texture0, fragTexCoord + vec2(offset[i])/renderWidth, 0.0).rgb*weight[i]; |         texelColor += texture(texture0, fragTexCoord + vec2(offset[i])/renderWidth, 0.0).rgb*weight[i]; | ||||||
|         tc += texture(texture0, fragTexCoord - vec2(offset[i])/renderWidth, 0.0).rgb*weight[i]; |         texelColor += texture(texture0, fragTexCoord - vec2(offset[i])/renderWidth, 0.0).rgb*weight[i]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fragColor = vec4(tc, 1.0); |     finalColor = vec4(texelColor, 1.0); | ||||||
| } | } | ||||||
| @@ -1,12 +1,16 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| float hatchOffsetY = 5.0; | float hatchOffsetY = 5.0; | ||||||
| @@ -27,18 +31,18 @@ void main() | |||||||
|  |  | ||||||
|     if (lum < lumThreshold02)  |     if (lum < lumThreshold02)  | ||||||
|     { |     { | ||||||
|         if (mod(gl_FragCoord .x - gl_FragCoord .y, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0); |         if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (lum < lumThreshold03)  |     if (lum < lumThreshold03)  | ||||||
|     { |     { | ||||||
|         if (mod(gl_FragCoord .x + gl_FragCoord .y - hatchOffsetY, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0); |         if (mod(gl_FragCoord.x + gl_FragCoord.y - hatchOffsetY, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (lum < lumThreshold04)  |     if (lum < lumThreshold04)  | ||||||
|     { |     { | ||||||
|         if (mod(gl_FragCoord .x - gl_FragCoord .y - hatchOffsetY, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0); |         if (mod(gl_FragCoord.x - gl_FragCoord.y - hatchOffsetY, 10.0) == 0.0) tc = vec3(0.0, 0.0, 0.0); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fragColor = vec4(tc, 1.0); |     finalColor = vec4(tc, 1.0); | ||||||
| } | } | ||||||
| @@ -1,12 +1,16 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| const float renderWidth = 1280.0; | const float renderWidth = 1280.0; | ||||||
| @@ -46,9 +50,9 @@ vec4 PostFX(sampler2D tex, vec2 uv) | |||||||
|     return c; |     return c; | ||||||
| } | } | ||||||
|  |  | ||||||
| void main(void) | void main() | ||||||
| { | { | ||||||
|     vec3 tc = PostFX(texture0, fragTexCoord).rgb; |     vec3 tc = PostFX(texture0, fragTexCoord).rgb; | ||||||
|  |  | ||||||
|     fragColor = vec4(tc, 1.0); |     finalColor = vec4(tc, 1.0); | ||||||
| } | } | ||||||
							
								
								
									
										27
									
								
								shaders/glsl330/depth.fs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								shaders/glsl330/depth.fs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
|  | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Input uniform values | ||||||
|  | uniform sampler2D texture0;     // Depth texture | ||||||
|  | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
|  | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
|  | void main() | ||||||
|  | { | ||||||
|  |     float zNear = 0.01; // camera z near | ||||||
|  |     float zFar = 10.0;  // camera z far | ||||||
|  |     float z = texture(texture0, fragTexCoord).x; | ||||||
|  |  | ||||||
|  |     // Linearize depth value | ||||||
|  |     float depth = (2.0*zNear)/(zFar + zNear - z*(zFar - zNear)); | ||||||
|  |      | ||||||
|  |     // Calculate final fragment color | ||||||
|  |     finalColor = vec4(depth, depth, depth, 1.0f); | ||||||
|  | } | ||||||
| @@ -1,20 +1,26 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|     vec4 base = texture(texture0, fragTexCoord)*fragTintColor; |     // Texel color fetching from texture sampler | ||||||
|  |     vec4 texelColor = texture(texture0, fragTexCoord)*fragTintColor*fragColor; | ||||||
|      |      | ||||||
|     // Convert to grayscale using NTSC conversion weights |     // Convert texel color to grayscale using NTSC conversion weights | ||||||
|     float gray = dot(base.rgb, vec3(0.299, 0.587, 0.114)); |     float gray = dot(texelColor.rgb, vec3(0.299, 0.587, 0.114)); | ||||||
|      |      | ||||||
|     fragColor = vec4(gray, gray, gray, fragTintColor.a); |     // Calculate final fragment color | ||||||
|  |     finalColor = vec4(gray, gray, gray, texelColor.a); | ||||||
| } | } | ||||||
| @@ -1,76 +1,85 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
| // Vertex shader input data | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
| in vec3 fragNormal; | in vec3 fragNormal; | ||||||
|  |  | ||||||
| // Diffuse data | // Input uniform values | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
| // Light attributes | // Output fragment color | ||||||
| uniform vec3 light_ambientColor = vec3(0.6, 0.3, 0); | out vec4 finalColor; | ||||||
| uniform vec3 light_diffuseColor = vec3(1, 0.5, 0); |  | ||||||
| uniform vec3 light_specularColor = vec3(0, 1, 0); |  | ||||||
| uniform float light_intensity = 1; |  | ||||||
| uniform float light_specIntensity = 1; |  | ||||||
|  |  | ||||||
| // Material attributes | // NOTE: Add here your custom variables | ||||||
| uniform vec3 mat_ambientColor = vec3(1, 1, 1); |  | ||||||
| uniform vec3 mat_specularColor = vec3(1, 1, 1); |  | ||||||
| uniform float mat_glossiness = 50; |  | ||||||
|  |  | ||||||
| // World attributes | // Light uniform values | ||||||
| uniform vec3 lightPos; | uniform vec3 lightAmbientColor = vec3(0.6, 0.3, 0.0); | ||||||
| uniform vec3 cameraPos; | uniform vec3 lightDiffuseColor = vec3(1.0, 0.5, 0.0); | ||||||
|  | uniform vec3 lightSpecularColor = vec3(0.0, 1.0, 0.0); | ||||||
|  | uniform float lightIntensity = 1.0; | ||||||
|  | uniform float lightSpecIntensity = 1.0; | ||||||
|  |  | ||||||
|  | // Material uniform values | ||||||
|  | uniform vec3 matAmbientColor = vec3(1.0, 1.0, 1.0); | ||||||
|  | uniform vec3 matSpecularColor = vec3(1.0, 1.0, 1.0); | ||||||
|  | uniform float matGlossiness = 50.0; | ||||||
|  |  | ||||||
|  | // World uniform values | ||||||
|  | uniform vec3 lightPosition; | ||||||
|  | uniform vec3 cameraPosition; | ||||||
|  |  | ||||||
| // Fragment shader output data | // Fragment shader output data | ||||||
| out vec4 fragColor; | out vec4 fragColor; | ||||||
|  |  | ||||||
|  | // Calculate ambient lighting component | ||||||
| vec3 AmbientLighting() | vec3 AmbientLighting() | ||||||
| { | { | ||||||
|    return mat_ambientColor * light_ambientColor; |     return (matAmbientColor*lightAmbientColor); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // Calculate diffuse lighting component | ||||||
| vec3 DiffuseLighting(in vec3 N, in vec3 L) | vec3 DiffuseLighting(in vec3 N, in vec3 L) | ||||||
| { | { | ||||||
|     // Lambertian reflection calculation |     // Lambertian reflection calculation | ||||||
|     float diffuse = clamp(dot(N, L), 0, 1); |     float diffuse = clamp(dot(N, L), 0, 1); | ||||||
|  |  | ||||||
|    return tintColor.xyz * light_diffuseColor * light_intensity * diffuse; |     return (fragTintColor.xyz*lightDiffuseColor*lightIntensity*diffuse); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // Calculate specular lighting component | ||||||
| vec3 SpecularLighting(in vec3 N, in vec3 L, in vec3 V) | vec3 SpecularLighting(in vec3 N, in vec3 L, in vec3 V) | ||||||
| { | { | ||||||
|    float specular = 0; |     float specular = 0.0; | ||||||
|  |  | ||||||
|     // Calculate specular reflection only if the surface is oriented to the light source |     // Calculate specular reflection only if the surface is oriented to the light source | ||||||
|    if(dot(N, L) > 0) |     if (dot(N, L) > 0) | ||||||
|     { |     { | ||||||
|         // Calculate half vector |         // Calculate half vector | ||||||
|         vec3 H = normalize(L + V); |         vec3 H = normalize(L + V); | ||||||
|  |  | ||||||
|         // Calculate specular intensity |         // Calculate specular intensity | ||||||
|       specular = pow(dot(N, H), 3 + mat_glossiness); |         specular = pow(dot(N, H), 3 + matGlossiness); | ||||||
|     } |     } | ||||||
|     |     | ||||||
|    return mat_specularColor * light_specularColor * light_specIntensity * specular; |     return (matSpecularColor*lightSpecularColor*lightSpecIntensity*specular); | ||||||
| } | } | ||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|     // Normalize input vectors |     // Normalize input vectors | ||||||
|     vec3 L = normalize(lightPos); |     vec3 L = normalize(lightPosition); | ||||||
|     vec3 V = normalize(cameraPos); |     vec3 V = normalize(cameraPosition); | ||||||
|     vec3 N = normalize(fragNormal); |     vec3 N = normalize(fragNormal); | ||||||
|      |      | ||||||
|  |     // Calculate lighting components  | ||||||
|     vec3 ambient = AmbientLighting(); |     vec3 ambient = AmbientLighting(); | ||||||
|     vec3 diffuse = DiffuseLighting(N, L); |     vec3 diffuse = DiffuseLighting(N, L); | ||||||
|     vec3 specular = SpecularLighting(N, L, V); |     vec3 specular = SpecularLighting(N, L, V); | ||||||
|      |      | ||||||
|     // Get base color from texture |     // Texel color fetching from texture sampler | ||||||
|     vec4 textureColor = texture(texture0, fragTexCoord); |     vec4 texelColor = texture(texture0, fragTexCoord); | ||||||
|     vec3 finalColor = textureColor.rgb; |  | ||||||
|  |  | ||||||
|     fragColor = vec4(finalColor * (ambient + diffuse + specular), textureColor.a); |     // Calculate final fragment color | ||||||
|  |     finalColor = vec4(texelColor.rgb*(ambient + diffuse + specular), texelColor.a); | ||||||
| } | } | ||||||
| @@ -1,21 +1,23 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
| // Vertex input data | // Input vertex attributes | ||||||
| in vec3 vertexPosition; | in vec3 vertexPosition; | ||||||
| in vec2 vertexTexCoord; | in vec2 vertexTexCoord; | ||||||
| in vec3 vertexNormal; | in vec3 vertexNormal; | ||||||
|  |  | ||||||
| // Projection and model data | // Input uniform values | ||||||
| uniform mat4 mvpMatrix; | uniform mat4 mvpMatrix; | ||||||
| uniform mat4 modelMatrix; |  | ||||||
|  |  | ||||||
| // Attributes to fragment shader | // Output vertex attributes (to fragment shader) | ||||||
| out vec2 fragTexCoord; | out vec2 fragTexCoord; | ||||||
| out vec3 fragNormal; | out vec3 fragNormal; | ||||||
|  |  | ||||||
|  | // NOTE: Add here your custom variables | ||||||
|  | uniform mat4 modelMatrix; | ||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|     // Send texture coord to fragment shader |     // Send vertex attributes to fragment shader | ||||||
|     fragTexCoord = vertexTexCoord; |     fragTexCoord = vertexTexCoord; | ||||||
|  |  | ||||||
|     // Calculate view vector normal from model |     // Calculate view vector normal from model | ||||||
|   | |||||||
| @@ -1,12 +1,16 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| const float renderWidth = 1280.0; | const float renderWidth = 1280.0; | ||||||
| @@ -24,5 +28,5 @@ void main() | |||||||
|  |  | ||||||
|     vec3 tc = texture(texture0, coord).rgb; |     vec3 tc = texture(texture0, coord).rgb; | ||||||
|  |  | ||||||
|     fragColor = vec4(tc, 1.0); |     finalColor = vec4(tc, 1.0); | ||||||
| } | } | ||||||
| @@ -1,12 +1,16 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| float gamma = 0.6; | float gamma = 0.6; | ||||||
| @@ -14,13 +18,14 @@ float numColors = 8.0; | |||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|     vec3 color = texture(texture0, fragTexCoord.xy).rgb; |     // Texel color fetching from texture sampler | ||||||
|  |     vec3 texelColor = texture(texture0, fragTexCoord.xy).rgb; | ||||||
|      |      | ||||||
|     color = pow(color, vec3(gamma, gamma, gamma)); |     texelColor = pow(texelColor, vec3(gamma, gamma, gamma)); | ||||||
|     color = color*numColors; |     texelColor = texelColor*numColors; | ||||||
|     color = floor(color); |     texelColor = floor(texelColor); | ||||||
|     color = color/numColors; |     texelColor = texelColor/numColors; | ||||||
|     color = pow(color, vec3(1.0/gamma)); |     texelColor = pow(texelColor, vec3(1.0/gamma)); | ||||||
|      |      | ||||||
|     fragColor = vec4(color, 1.0); |     finalColor = vec4(texelColor, 1.0); | ||||||
| } | } | ||||||
| @@ -1,27 +1,32 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|     vec3 color = texture(texture0, fragTexCoord).rgb; |     // Texel color fetching from texture sampler | ||||||
|  |     vec3 texelColor = texture(texture0, fragTexCoord).rgb; | ||||||
|     vec3 colors[3]; |     vec3 colors[3]; | ||||||
|     colors[0] = vec3(0.0, 0.0, 1.0); |     colors[0] = vec3(0.0, 0.0, 1.0); | ||||||
|     colors[1] = vec3(1.0, 1.0, 0.0); |     colors[1] = vec3(1.0, 1.0, 0.0); | ||||||
|     colors[2] = vec3(1.0, 0.0, 0.0); |     colors[2] = vec3(1.0, 0.0, 0.0); | ||||||
|      |      | ||||||
|     float lum = (color.r + color.g + color.b)/3.0; |     float lum = (texelColor.r + texelColor.g + texelColor.b)/3.0; | ||||||
|      |      | ||||||
|     int ix = (lum < 0.5)? 0:1; |     int ix = (lum < 0.5)? 0:1; | ||||||
|      |      | ||||||
|     vec3 tc = mix(colors[ix], colors[ix + 1], (lum - float(ix)*0.5)/0.5); |     vec3 tc = mix(colors[ix], colors[ix + 1], (lum - float(ix)*0.5)/0.5); | ||||||
|      |      | ||||||
|     fragColor = vec4(tc, 1.0); |     finalColor = vec4(tc, 1.0); | ||||||
| } | } | ||||||
| @@ -1,12 +1,16 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| float offset = 0.0; | float offset = 0.0; | ||||||
| @@ -14,7 +18,7 @@ float frequency = 720.0/3.0; | |||||||
|  |  | ||||||
| uniform float time; | uniform float time; | ||||||
|  |  | ||||||
| void main (void) | void main() | ||||||
| { | { | ||||||
| /* | /* | ||||||
|     // Scanlines method 1 |     // Scanlines method 1 | ||||||
| @@ -35,7 +39,8 @@ void main (void) | |||||||
|     float globalPos = (fragTexCoord.y + offset) * frequency; |     float globalPos = (fragTexCoord.y + offset) * frequency; | ||||||
|     float wavePos = cos((fract(globalPos) - 0.5)*3.14); |     float wavePos = cos((fract(globalPos) - 0.5)*3.14); | ||||||
|      |      | ||||||
|     vec4 color = texture(texture0, fragTexCoord); |     // Texel color fetching from texture sampler | ||||||
|  |     vec4 texelColor = texture(texture0, fragTexCoord); | ||||||
|  |  | ||||||
|     fragColor = mix(vec4(0.0, 0.3, 0.0, 0.0), color, wavePos); |     finalColor = mix(vec4(0.0, 0.3, 0.0, 0.0), texelColor, wavePos); | ||||||
| } | } | ||||||
| @@ -1,27 +1,32 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| const float renderWidth = 1280.0;  | const float renderWidth = 800.0;      // HARDCODED for example! | ||||||
| const float renderHeight = 720.0;  | const float renderHeight = 480.0;     // Use uniforms instead... | ||||||
|  |  | ||||||
| float radius = 250.0; | float radius = 250.0; | ||||||
| float angle = 0.8; | float angle = 0.8; | ||||||
|  |  | ||||||
| uniform vec2 center = vec2(200.0, 200.0); | uniform vec2 center = vec2(200.0, 200.0); | ||||||
|  |  | ||||||
| void main (void) | void main() | ||||||
| { | { | ||||||
|     vec2 texSize = vec2(renderWidth, renderHeight); |     vec2 texSize = vec2(renderWidth, renderHeight); | ||||||
|     vec2 tc = fragTexCoord*texSize; |     vec2 tc = fragTexCoord*texSize; | ||||||
|     tc -= center; |     tc -= center; | ||||||
|  |      | ||||||
|     float dist = length(tc); |     float dist = length(tc); | ||||||
|  |  | ||||||
|     if (dist < radius)  |     if (dist < radius)  | ||||||
| @@ -37,5 +42,5 @@ void main (void) | |||||||
|     tc += center; |     tc += center; | ||||||
|     vec3 color = texture(texture0, tc/texSize).rgb; |     vec3 color = texture(texture0, tc/texSize).rgb; | ||||||
|  |  | ||||||
|     fragColor = vec4(color, 1.0);; |     finalColor = vec4(color, 1.0);; | ||||||
| } | } | ||||||
| @@ -1,19 +1,24 @@ | |||||||
| #version 330 | #version 330 | ||||||
|  |  | ||||||
|  | // Input vertex attributes (from vertex shader) | ||||||
| in vec2 fragTexCoord; | in vec2 fragTexCoord; | ||||||
|  | in vec4 fragColor; | ||||||
|  |  | ||||||
| out vec4 fragColor; | // Input uniform values | ||||||
|  |  | ||||||
| uniform sampler2D texture0; | uniform sampler2D texture0; | ||||||
| uniform vec4 fragTintColor; | uniform vec4 fragTintColor; | ||||||
|  |  | ||||||
|  | // Output fragment color | ||||||
|  | out vec4 finalColor; | ||||||
|  |  | ||||||
| // NOTE: Add here your custom variables | // NOTE: Add here your custom variables | ||||||
|  |  | ||||||
| void main() | void main() | ||||||
| { | { | ||||||
|  |     // Texel color fetching from texture sampler | ||||||
|     vec4 texelColor = texture(texture0, fragTexCoord); |     vec4 texelColor = texture(texture0, fragTexCoord); | ||||||
|      |      | ||||||
|     // NOTE: Implement here your fragment shader code |     // NOTE: Implement here your fragment shader code | ||||||
|      |      | ||||||
|     fragColor = texelColor*fragTintColor; |     finalColor = texelColor*fragTintColor; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 raysan5
					raysan5