helperFunctions.fx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const float PI = 3.1415926535897932384626433832795;
  2. const float LinearEncodePowerApprox = 2.2;
  3. const float GammaEncodePowerApprox = 1.0 / LinearEncodePowerApprox;
  4. const vec3 LuminanceEncodeApprox = vec3(0.2126, 0.7152, 0.0722);
  5. mat3 transposeMat3(mat3 inMatrix) {
  6. vec3 i0 = inMatrix[0];
  7. vec3 i1 = inMatrix[1];
  8. vec3 i2 = inMatrix[2];
  9. mat3 outMatrix = mat3(
  10. vec3(i0.x, i1.x, i2.x),
  11. vec3(i0.y, i1.y, i2.y),
  12. vec3(i0.z, i1.z, i2.z)
  13. );
  14. return outMatrix;
  15. }
  16. float computeFallOff(float value, vec2 clipSpace, float frustumEdgeFalloff)
  17. {
  18. float mask = smoothstep(1.0, 1.0 - frustumEdgeFalloff, dot(clipSpace, clipSpace));
  19. return mix(1.0, value, mask);
  20. }
  21. vec3 applyEaseInOut(vec3 x){
  22. return x * x * (3.0 - 2.0 * x);
  23. }
  24. vec3 toLinearSpace(vec3 color)
  25. {
  26. return pow(color, vec3(LinearEncodePowerApprox));
  27. }
  28. vec3 toGammaSpace(vec3 color)
  29. {
  30. return pow(color, vec3(GammaEncodePowerApprox));
  31. }
  32. float square(float value)
  33. {
  34. return value * value;
  35. }
  36. float getLuminance(vec3 color)
  37. {
  38. return clamp(dot(color, LuminanceEncodeApprox), 0., 1.);
  39. }