PointerShader.shader 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. Shader "Rokid/Dot"
  2. {
  3. Properties
  4. {
  5. _Color ("Color", Color) = (1, 1, 1, 1)
  6. _InnerDiameter ("InnerDiameter", Range(0, 10.0)) = 1.5
  7. _OuterDiameter ("OuterDiameter", Range(0.00872665, 10.0)) = 2.0
  8. _DistanceInMeters ("DistanceInMeters", Range(0.0, 10000.0)) = 2.0
  9. }
  10. SubShader
  11. {
  12. Tags { "Queue" = "Overlay" "IgnoreProjector" = "True" "RenderType" = "Transparent" }
  13. Pass
  14. {
  15. Blend SrcAlpha OneMinusSrcAlpha, OneMinusDstAlpha One
  16. AlphaTest Off
  17. Cull Back
  18. Lighting Off
  19. ZWrite Off
  20. ZTest Always
  21. Fog
  22. {
  23. Mode Off
  24. }
  25. CGPROGRAM
  26. #pragma vertex vert
  27. #pragma fragment frag
  28. #include "UnityCG.cginc"
  29. uniform float4 _Color;
  30. uniform float _InnerDiameter;
  31. uniform float _OuterDiameter;
  32. uniform float _DistanceInMeters;
  33. struct vertexInput
  34. {
  35. float4 vertex: POSITION;
  36. };
  37. struct fragmentInput
  38. {
  39. float4 position: SV_POSITION;
  40. };
  41. fragmentInput vert(vertexInput i)
  42. {
  43. float scale = lerp(_OuterDiameter, _InnerDiameter, i.vertex.z);
  44. float3 vert_out = float3(i.vertex.x * scale, i.vertex.y * scale, _DistanceInMeters);
  45. fragmentInput o;
  46. o.position = UnityObjectToClipPos(vert_out);
  47. return o;
  48. }
  49. fixed4 frag(fragmentInput i): SV_Target
  50. {
  51. fixed4 ret = _Color;
  52. return ret;
  53. }
  54. ENDCG
  55. }
  56. }
  57. }