atmosphericScattering_optimized.frag 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #version 150
  2. uniform vec3 u_lightPos;
  3. uniform vec3 u_color1;
  4. uniform vec3 u_color2;
  5. uniform vec3 u_groundColor;
  6. uniform float u_g;
  7. uniform int u_useGround;
  8. in vec3 v_localPos;
  9. out vec3 fragColor;
  10. void main ()
  11. {
  12. vec3 tmpvar_1;
  13. tmpvar_1 = normalize(v_localPos);
  14. vec3 tmpvar_2;
  15. tmpvar_2 = normalize(u_lightPos);
  16. float tmpvar_3;
  17. tmpvar_3 = max (tmpvar_1.y, 0.0);
  18. float tmpvar_4;
  19. tmpvar_4 = (1.0 - tmpvar_3);
  20. float tmpvar_5;
  21. tmpvar_5 = (u_g * u_g);
  22. float tmpvar_6;
  23. tmpvar_6 = dot (tmpvar_2, tmpvar_1);
  24. vec3 tmpvar_7;
  25. tmpvar_7 = (((u_color1 +
  26. ((((1.5 *
  27. ((1.0 - tmpvar_5) / (2.0 + tmpvar_5))
  28. ) * (1.0 +
  29. (tmpvar_6 * tmpvar_6)
  30. )) / pow ((
  31. (1.0 + tmpvar_5)
  32. -
  33. ((2.0 * u_g) * tmpvar_6)
  34. ), 1.5)) * u_color2)
  35. ) + (
  36. ((1.0 - abs(tmpvar_2.y)) * u_color2)
  37. *
  38. pow (tmpvar_4, 16.0)
  39. )) + (pow (tmpvar_4, 16.0) * u_color2));
  40. if (((tmpvar_3 < 0.02) && (u_useGround != 0))) {
  41. float tmpvar_8;
  42. tmpvar_8 = min (max ((tmpvar_3 / 0.02), 0.0), 1.0);
  43. fragColor = mix (u_groundColor, tmpvar_7, vec3((tmpvar_8 * (tmpvar_8 * tmpvar_8))));
  44. } else {
  45. fragColor = tmpvar_7;
  46. };
  47. }