root / Assets / Time of Day / Assets / Shaders / Stars.shader @ 175:f9f5640c2a3a
History | View | Annotate | Download (1.6 kB)
1 | // Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld' |
---|---|
2 | |
3 | Shader "Time of Day/Stars" |
4 | { |
5 | Properties |
6 | { |
7 | } |
8 | |
9 | CGINCLUDE |
10 | #include "UnityCG.cginc" |
11 | #include "TOD_Base.cginc" |
12 | |
13 | struct v2f { |
14 | float4 position : SV_POSITION; |
15 | half4 color : COLOR; |
16 | half3 tex : TEXCOORD0; |
17 | }; |
18 | |
19 | v2f vert(appdata_full v) { |
20 | v2f o; |
21 | |
22 | float tanFovHalf = 1.0 / max(0.1, UNITY_MATRIX_P[0][0]); // (r-l) / (2*n) |
23 | float radius = 4.0 * tanFovHalf / _ScreenParams.x; |
24 | float alpha = TOD_StarBrightness * TOD_StarVisibility * 0.00001 * v.color.a / (radius * radius); |
25 | float size = TOD_StarSize * radius; |
26 | |
27 | float3 u_vec = v.tangent; |
28 | float3 v_vec = cross(v.normal, v.tangent); |
29 | |
30 | float u_fac = v.texcoord.x - 0.5; |
31 | float v_fac = v.texcoord.y - 0.5; |
32 | |
33 | v.vertex.xyz -= u_vec * u_fac * size; |
34 | v.vertex.xyz -= v_vec * v_fac * size; |
35 | |
36 | o.position = TOD_TRANSFORM_VERT(v.vertex); |
37 | |
38 | float3 skyPos = mul(TOD_World2Sky, mul(unity_ObjectToWorld, v.vertex)).xyz; |
39 | |
40 | o.tex.xy = 2.0 * v.texcoord - 1.0; |
41 | o.tex.z = skyPos.y * 25; |
42 | |
43 | o.color = half4(alpha, alpha, alpha, 1); |
44 | |
45 | #if !TOD_OUTPUT_LINEAR |
46 | o.color = TOD_LINEAR2GAMMA(o.color); |
47 | #endif |
48 | |
49 | return o; |
50 | } |
51 | |
52 | half4 frag(v2f i) : COLOR { |
53 | half dist = length(i.tex.xy); |
54 | half spot = saturate(1.0 - dist); |
55 | half alpha = saturate(i.tex.z) * spot; |
56 | |
57 | return half4(i.color.rgb * alpha, i.color.a); |
58 | } |
59 | ENDCG |
60 | |
61 | SubShader |
62 | { |
63 | Tags |
64 | { |
65 | "Queue"="Background+20" |
66 | "RenderType"="Background" |
67 | "IgnoreProjector"="True" |
68 | } |
69 | |
70 | Pass |
71 | { |
72 | ZWrite Off |
73 | ZTest LEqual |
74 | Blend One One |
75 | Fog { Mode Off } |
76 | |
77 | CGPROGRAM |
78 | #pragma vertex vert |
79 | #pragma fragment frag |
80 | #pragma multi_compile _ TOD_OUTPUT_LINEAR |
81 | ENDCG |
82 | } |
83 | } |
84 | |
85 | Fallback Off |
86 | } |