You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
802 B

  1. Shader "Hidden/RGBToHSVNode"
  2. {
  3. Properties
  4. {
  5. _A ( "_RGB", 2D ) = "white" {}
  6. }
  7. SubShader
  8. {
  9. Pass
  10. {
  11. CGPROGRAM
  12. #include "UnityCG.cginc"
  13. #pragma vertex vert_img
  14. #pragma fragment frag
  15. uniform sampler2D _A;
  16. float4 frag ( v2f_img i ) : SV_Target
  17. {
  18. float3 rgb = tex2D ( _A, i.uv ).rgb;
  19. float4 K = float4( 0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0 );
  20. float4 p = lerp ( float4( rgb.bg, K.wz ), float4( rgb.gb, K.xy ), step ( rgb.b, rgb.g ) );
  21. float4 q = lerp ( float4( p.xyw, rgb.r ), float4( rgb.r, p.yzx ), step ( p.x, rgb.r ) );
  22. float d = q.x - min ( q.w, q.y );
  23. float e = 1.0e-10;
  24. float3 rgbTohsv = float3( abs ( q.z + ( q.w - q.y ) / ( 6.0 * d + e ) ), d / ( q.x + e ), q.x );
  25. return float4( GammaToLinearSpace(rgbTohsv), 1 );
  26. }
  27. ENDCG
  28. }
  29. }
  30. }