depthOfFieldMerge.fragment.fx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. uniform sampler2D textureSampler;
  2. varying vec2 vUV;
  3. uniform sampler2D circleOfConfusionSampler;
  4. uniform sampler2D blurStep0;
  5. #if BLUR_LEVEL > 0
  6. uniform sampler2D blurStep1;
  7. #endif
  8. #if BLUR_LEVEL > 1
  9. uniform sampler2D blurStep2;
  10. #endif
  11. void main(void)
  12. {
  13. float coc = texture2D(circleOfConfusionSampler, vUV).r;
  14. #if BLUR_LEVEL == 0
  15. vec4 original = texture2D(textureSampler, vUV);
  16. vec4 blurred0 = texture2D(blurStep0, vUV);
  17. gl_FragColor = mix(original, blurred0, coc);
  18. #endif
  19. #if BLUR_LEVEL == 1
  20. if(coc < 0.5){
  21. vec4 original = texture2D(textureSampler, vUV);
  22. vec4 blurred1 = texture2D(blurStep1, vUV);
  23. gl_FragColor = mix(original, blurred1, coc/0.5);
  24. }else{
  25. vec4 blurred0 = texture2D(blurStep0, vUV);
  26. vec4 blurred1 = texture2D(blurStep1, vUV);
  27. gl_FragColor = mix(blurred1, blurred0, (coc-0.5)/0.5);
  28. }
  29. #endif
  30. #if BLUR_LEVEL == 2
  31. if(coc < 0.33){
  32. vec4 original = texture2D(textureSampler, vUV);
  33. vec4 blurred2 = texture2D(blurStep2, vUV);
  34. gl_FragColor = mix(original, blurred2, coc/0.33);
  35. }else if(coc < 0.66){
  36. vec4 blurred1 = texture2D(blurStep1, vUV);
  37. vec4 blurred2 = texture2D(blurStep2, vUV);
  38. gl_FragColor = mix(blurred2, blurred1, (coc-0.33)/0.33);
  39. }else{
  40. vec4 blurred0 = texture2D(blurStep0, vUV);
  41. vec4 blurred1 = texture2D(blurStep1, vUV);
  42. gl_FragColor = mix(blurred1, blurred0, (coc-0.66)/0.34);
  43. }
  44. #endif
  45. }