convolute_optimized.frag 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #version 150
  2. out vec4 fragColor;
  3. in vec3 v_localPos;
  4. uniform samplerCube u_environmentMap;
  5. uniform float u_sampleQuality;
  6. void main ()
  7. {
  8. float nrSamples_2;
  9. float sampleDelta_3;
  10. vec3 right_4;
  11. vec3 up_5;
  12. vec3 irradiance_6;
  13. vec3 normal_7;
  14. vec3 tmpvar_8;
  15. tmpvar_8 = normalize(v_localPos);
  16. normal_7 = tmpvar_8;
  17. irradiance_6 = vec3(0.0, 0.0, 0.0);
  18. vec3 tmpvar_9;
  19. tmpvar_9 = normalize(((vec3(1.0, 0.0, 0.0) * tmpvar_8.zxy) - (vec3(0.0, 0.0, 1.0) * tmpvar_8.yzx)));
  20. right_4 = tmpvar_9;
  21. up_5 = normalize(((tmpvar_8.yzx * tmpvar_9.zxy) - (tmpvar_8.zxy * tmpvar_9.yzx)));
  22. sampleDelta_3 = u_sampleQuality;
  23. nrSamples_2 = 0.0;
  24. for (float phi_1 = 0.0; phi_1 < 6.283185; phi_1 = (phi_1 + sampleDelta_3)) {
  25. for (float theta_10 = 0.0; theta_10 < 1.570796; theta_10 = (theta_10 + sampleDelta_3)) {
  26. float tmpvar_11;
  27. tmpvar_11 = cos(theta_10);
  28. vec3 tmpvar_12;
  29. tmpvar_12.x = (sin(theta_10) * cos(phi_1));
  30. tmpvar_12.y = (sin(theta_10) * sin(phi_1));
  31. tmpvar_12.z = tmpvar_11;
  32. irradiance_6 = (irradiance_6 + ((texture (u_environmentMap,
  33. (((tmpvar_12.x * right_4) + (tmpvar_12.y * up_5)) + (tmpvar_11 * normal_7))
  34. ).xyz *
  35. cos(theta_10)
  36. ) * sin(theta_10)));
  37. nrSamples_2 += 1.0;
  38. };
  39. };
  40. irradiance_6 = (irradiance_6 * (3.141593 / nrSamples_2));
  41. vec4 tmpvar_13;
  42. tmpvar_13.w = 1.0;
  43. tmpvar_13.xyz = irradiance_6;
  44. fragColor = tmpvar_13;
  45. }