-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVRUI-shared.cginc
More file actions
96 lines (70 loc) · 1.85 KB
/
VRUI-shared.cginc
File metadata and controls
96 lines (70 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
#ifndef VRUISHARED_CGINC
#define VRUISHARED_CGINC
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "UnityUI.cginc"
#pragma multi_compile __ UNITY_UI_ALPHACLIP
struct appdata_t
{
float4 vertex : POSITION;
float4 color : COLOR;
float2 texcoord : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
half2 texcoord : TEXCOORD0;
float4 worldPosition : TEXCOORD1;
};
fixed4 _Color;
fixed4 _TextureSampleAdd;
float4 _ClipRect;
v2f vert(appdata_t IN)
{
v2f OUT;
OUT.worldPosition = IN.vertex;
OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
OUT.texcoord = IN.texcoord;
#ifdef UNITY_HALF_TEXEL_OFFSET
OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);
#endif
OUT.color = IN.color * _Color;
return OUT;
}
sampler2D _MainTex;
#ifdef VRUI_OCCLUDED_ALPHA
float _OcclusionAlpha;
#endif
fixed4 frag(v2f IN) : SV_Target
{
#ifdef VRUI_OCCLUDED_STIPPLED
// Help from http://answers.unity3d.com/questions/39803/how-to-get-an-objects-position-in-screen-space-in.html
// get clip space coords of the origin:
float4 pixelCoordinates = UnityObjectToClipPos( IN.worldPosition );
// get screen coords from clip space coords:
pixelCoordinates.xy /= pixelCoordinates.w;
// Pixel corodinates
pixelCoordinates.xy = 0.5 * (pixelCoordinates.xy + 1.0) * _ScreenParams.xy;
if( uint(pixelCoordinates.x) % 2 == 0 )
{
discard;
}
if (uint(pixelCoordinates.y) % 2 == 0)
{
discard;
}
#endif
half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
#ifdef UNITY_UI_ALPHACLIP
clip (color.a - 0.001);
#endif
#ifdef VRUI_OCCLUDED_ALPHA
color.a *= _OcclusionAlpha;
#endif
return color;
}
#endif