#version 430 core uniform vec3 lightDir; uniform vec2 resolution; in vec3 interpNormal; in vec3 localPos; float random2d(in vec2 point) { return fract(sin(dot(point.xy, vec2(12.9898, 78.233))) * 43758.5453123); } float perlinNoise(in vec2 point) { vec2 i = floor(point); vec2 f = fract(point); float corn1 = random2d(i); float corn2 = random2d(i + vec2(1.0, 0.0)); float corn3 = random2d(i + vec2(0.0, 1.0)); float corn4 = random2d(i + vec2(1.0, 1.0)); //interpolacja Hermite'a vec2 u = f * f *(3.0 - 2.0 * f); float p1 = mix(corn1, corn2, u.x); float p2 = (corn3 - corn1) * u.y * (1.0 - u.x); float p3 = (corn4 - corn2) * u.x * u.y; return p1 + p2 + p3; } void main() { vec3 normal = normalize(interpNormal); float diffuse = max(dot(normal, -lightDir), 0.0); vec2 point = gl_FragCoord.xy / resolution.xy + localPos.xy; vec2 pos = vec2(point * 0.3); float noise = perlinNoise(pos); vec3 color = (vec3(noise) * 2) * vec3(0.57, 0.55, 0.18); //gl_FragColor = vec4(vec3(color), 1.0); gl_FragColor = vec4(color.x * diffuse, color.y * diffuse, color.z * diffuse, 1.0); //if(sin(localPos.y) > 0) gl_FragColor = vec4(positiveColor.x * diffuse, positiveColor.y * diffuse, positiveColor.z * diffuse, 1.0); //else gl_FragColor = vec4(negativeColor.x * diffuse, negativeColor.y * diffuse, negativeColor.z * diffuse, 1.0); }