normalMapProceduralTexture.fragment.fx 700 B

123456789101112131415161718192021222324252627282930
  1. precision highp float;
  2. // Uniforms
  3. uniform sampler2D baseSampler;
  4. uniform float size;
  5. // Varyings
  6. varying vec2 vUV;
  7. // Constants
  8. const vec3 LUMA_COEFFICIENT = vec3(0.2126, 0.7152, 0.0722);
  9. float lumaAtCoord(vec2 coord)
  10. {
  11. vec3 pixel = texture2D(baseSampler, coord).rgb;
  12. float luma = dot(pixel, LUMA_COEFFICIENT);
  13. return luma;
  14. }
  15. void main()
  16. {
  17. float lumaU0 = lumaAtCoord(vUV + vec2(-1.0, 0.0) / size);
  18. float lumaU1 = lumaAtCoord(vUV + vec2( 1.0, 0.0) / size);
  19. float lumaV0 = lumaAtCoord(vUV + vec2( 0.0, -1.0) / size);
  20. float lumaV1 = lumaAtCoord(vUV + vec2( 0.0, 1.0) / size);
  21. vec2 slope = (vec2(lumaU0 - lumaU1, lumaV0 - lumaV1) + 1.0) * 0.5;
  22. gl_FragColor = vec4(slope, 1.0, 1.0);
  23. }