UMP-ARVideoCanvas.shader 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
  2. Shader "UMP/ARVideoCanvas"
  3. {
  4. Properties
  5. {
  6. _MainTex ("Video Texture", 2D) = "white" {}
  7. _Color("Tint", Color) = (1, 1, 1, 1)
  8. _BorderColor("Border Color", Color) = (0, 0, 0, 0)
  9. _BorderOffsetLeft("Border Offset Left", Range(0, 0.5)) = 0.001
  10. _BorderOffsetRight("Border Offset Right", Range(0, 0.5)) = 0.001
  11. _BorderOffsetTop("Border Offset Top", Range(0, 0.5)) = 0.001
  12. _BorderOffsetBottom("Border Offset Bottom", Range(0, 0.5)) = 0.001
  13. _AlphaPower("Alpha Power", Float) = 1
  14. }
  15. SubShader
  16. {
  17. Tags
  18. {
  19. "Queue"="Transparent"
  20. "RenderType"="Transparent"
  21. }
  22. Cull Off
  23. Lighting Off
  24. ZWrite Off
  25. Blend SrcAlpha OneMinusSrcAlpha
  26. Pass
  27. {
  28. CGPROGRAM
  29. #pragma vertex vert
  30. #pragma fragment frag
  31. #include "UnityCG.cginc"
  32. struct appdata_t
  33. {
  34. float4 vertex : POSITION;
  35. float2 texcoord : TEXCOORD0;
  36. };
  37. struct v2f
  38. {
  39. float4 vertex : SV_POSITION;
  40. half2 texcoord : TEXCOORD0;
  41. };
  42. sampler2D _MainTex;
  43. float4 _MainTex_ST;
  44. fixed4 _Color;
  45. fixed4 _BorderColor;
  46. float _BorderOffsetLeft;
  47. float _BorderOffsetRight;
  48. float _BorderOffsetTop;
  49. float _BorderOffsetBottom;
  50. float _AlphaPower;
  51. float _BorderUWidth;
  52. float _BorderVWidth;
  53. v2f vert(appdata_t v)
  54. {
  55. v2f o;
  56. o.vertex = UnityObjectToClipPos(v.vertex);
  57. o.texcoord = v.texcoord;
  58. return o;
  59. }
  60. fixed4 frag(v2f i) : COLOR
  61. {
  62. fixed4 c = _BorderColor;
  63. if (i.texcoord.x > _BorderUWidth && i.texcoord.x < 1 - _BorderUWidth &&
  64. i.texcoord.y > _BorderVWidth && i.texcoord.y < 1 - _BorderVWidth)
  65. {
  66. float2 texCoord = float2((i.texcoord.x - _BorderUWidth) * (1 / (1 - (_BorderUWidth * 2))), (i.texcoord.y - _BorderVWidth) / (1 - (_BorderVWidth * 2)));
  67. if (texCoord.x > _BorderOffsetLeft && texCoord.x < 1 - _BorderOffsetRight &&
  68. texCoord.y > _BorderOffsetBottom && texCoord.y < 1 - _BorderOffsetTop)
  69. {
  70. float2 texTrans = TRANSFORM_TEX(texCoord, _MainTex);
  71. c = tex2D(_MainTex, texTrans) * _Color;
  72. c.a = c.a * _AlphaPower;
  73. }
  74. }
  75. return c;// pow(c, 2.2f);
  76. }
  77. ENDCG
  78. }
  79. }
  80. }