Spine-Common.cginc 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef SPINE_COMMON_INCLUDED
  2. #define SPINE_COMMON_INCLUDED
  3. #if defined(USE_LWRP)
  4. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  5. #define GammaToLinearSpace SRGBToLinear
  6. #define LinearToGammaSpace LinearToSRGB
  7. #elif defined(USE_URP)
  8. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl"
  9. #define GammaToLinearSpace SRGBToLinear
  10. #define LinearToGammaSpace LinearToSRGB
  11. #else
  12. #include "UnityCG.cginc"
  13. #endif
  14. inline half3 GammaToTargetSpace(half3 gammaColor) {
  15. #if UNITY_COLORSPACE_GAMMA
  16. return gammaColor;
  17. #else
  18. return GammaToLinearSpace(gammaColor);
  19. #endif
  20. }
  21. inline half3 TargetToGammaSpace(half3 targetColor) {
  22. #if UNITY_COLORSPACE_GAMMA
  23. return targetColor;
  24. #else
  25. return LinearToGammaSpace(targetColor);
  26. #endif
  27. }
  28. inline half4 PMAGammaToTargetSpace(half4 gammaPMAColor) {
  29. #if UNITY_COLORSPACE_GAMMA
  30. return gammaPMAColor;
  31. #else
  32. return gammaPMAColor.a == 0 ?
  33. half4(GammaToLinearSpace(gammaPMAColor.rgb), gammaPMAColor.a) :
  34. half4(GammaToLinearSpace(gammaPMAColor.rgb / gammaPMAColor.a) * gammaPMAColor.a, gammaPMAColor.a);
  35. #endif
  36. }
  37. // Saturated version to prevent numerical issues that occur at CanvasRenderer
  38. // shader during linear-space PMA vertex color correction (countering automatic Unity conversion).
  39. // Note: Only use this method when the original color.rgb values lie within [0,1] range and
  40. // it's not an HDR color. This method is usually suitable for vertex color.
  41. inline half4 PMAGammaToTargetSpaceSaturated(half4 gammaPMAColor) {
  42. #if UNITY_COLORSPACE_GAMMA
  43. return gammaPMAColor;
  44. #else
  45. return gammaPMAColor.a == 0 ?
  46. half4(GammaToLinearSpace(gammaPMAColor.rgb), gammaPMAColor.a) :
  47. half4(saturate(GammaToLinearSpace(gammaPMAColor.rgb / gammaPMAColor.a)) * gammaPMAColor.a, gammaPMAColor.a);
  48. #endif
  49. }
  50. #endif