Preview_RGBToHSVNode.shader 813 B

1234567891011121314151617181920212223242526272829303132333435363738
  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. #include "Preview.cginc"
  14. #pragma vertex vert_img
  15. #pragma fragment frag
  16. uniform sampler2D _A;
  17. float3 RGBToHSV(float3 c)
  18. {
  19. float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
  20. float4 p = lerp( float4( c.bg, K.wz ), float4( c.gb, K.xy ), step( c.b, c.g ) );
  21. float4 q = lerp( float4( p.xyw, c.r ), float4( c.r, p.yzx ), step( p.x, c.r ) );
  22. float d = q.x - min( q.w, q.y );
  23. float e = 1.0e-10;
  24. return float3( abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
  25. }
  26. float4 frag ( v2f_img i ) : SV_Target
  27. {
  28. float3 rgb = tex2D ( _A, i.uv ).rgb;
  29. return float4( RGBToHSV(rgb), 1 );
  30. }
  31. ENDCG
  32. }
  33. }
  34. }