Skip to content

Commit f504338

Browse files
committed
Port from GLSL code
1 parent ae40c85 commit f504338

File tree

9 files changed

+670
-3
lines changed

9 files changed

+670
-3
lines changed

.idea/.idea.unity-demoscene/.idea/contentModel.xml

Lines changed: 5 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Demoscene/Projects/2018-07-10-Cellular.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
%YAML 1.1
2+
%TAG !u! tag:unity3d.com,2011:
3+
--- !u!21 &2100000
4+
Material:
5+
serializedVersion: 6
6+
m_ObjectHideFlags: 0
7+
m_PrefabParentObject: {fileID: 0}
8+
m_PrefabInternal: {fileID: 0}
9+
m_Name: Cellular
10+
m_Shader: {fileID: 4800000, guid: 10f0c2c6f2f254cbc87ddcf5487f178b, type: 3}
11+
m_ShaderKeywords:
12+
m_LightmapFlags: 4
13+
m_EnableInstancingVariants: 0
14+
m_DoubleSidedGI: 0
15+
m_CustomRenderQueue: -1
16+
stringTagMap: {}
17+
disabledShaderPasses: []
18+
m_SavedProperties:
19+
serializedVersion: 3
20+
m_TexEnvs:
21+
- _BumpMap:
22+
m_Texture: {fileID: 0}
23+
m_Scale: {x: 1, y: 1}
24+
m_Offset: {x: 0, y: 0}
25+
- _DetailAlbedoMap:
26+
m_Texture: {fileID: 0}
27+
m_Scale: {x: 1, y: 1}
28+
m_Offset: {x: 0, y: 0}
29+
- _DetailMask:
30+
m_Texture: {fileID: 0}
31+
m_Scale: {x: 1, y: 1}
32+
m_Offset: {x: 0, y: 0}
33+
- _DetailNormalMap:
34+
m_Texture: {fileID: 0}
35+
m_Scale: {x: 1, y: 1}
36+
m_Offset: {x: 0, y: 0}
37+
- _EmissionMap:
38+
m_Texture: {fileID: 0}
39+
m_Scale: {x: 1, y: 1}
40+
m_Offset: {x: 0, y: 0}
41+
- _MainTex:
42+
m_Texture: {fileID: 0}
43+
m_Scale: {x: 1, y: 1}
44+
m_Offset: {x: 0, y: 0}
45+
- _MetallicGlossMap:
46+
m_Texture: {fileID: 0}
47+
m_Scale: {x: 1, y: 1}
48+
m_Offset: {x: 0, y: 0}
49+
- _OcclusionMap:
50+
m_Texture: {fileID: 0}
51+
m_Scale: {x: 1, y: 1}
52+
m_Offset: {x: 0, y: 0}
53+
- _ParallaxMap:
54+
m_Texture: {fileID: 0}
55+
m_Scale: {x: 1, y: 1}
56+
m_Offset: {x: 0, y: 0}
57+
m_Floats:
58+
- _BumpScale: 1
59+
- _Cutoff: 0.5
60+
- _DetailNormalMapScale: 1
61+
- _DstBlend: 0
62+
- _GlossMapScale: 1
63+
- _Glossiness: 0.5
64+
- _GlossyReflections: 1
65+
- _Metallic: 0
66+
- _Mode: 0
67+
- _OcclusionStrength: 1
68+
- _Parallax: 0.02
69+
- _SmoothnessTextureChannel: 0
70+
- _SpecularHighlights: 1
71+
- _SrcBlend: 1
72+
- _UVSec: 0
73+
- _ZWrite: 1
74+
m_Colors:
75+
- _Color: {r: 1, g: 1, b: 1, a: 1}
76+
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

Assets/Demoscene/Projects/2018-07-10-Cellular/Cellular.mat.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
Shader "Unlit/Cellular"
2+
{
3+
Properties
4+
{
5+
_MainTex ("Texture", 2D) = "white" {}
6+
}
7+
SubShader
8+
{
9+
Tags { "RenderType"="Opaque" }
10+
LOD 100
11+
12+
Pass
13+
{
14+
CGPROGRAM
15+
#pragma vertex vert
16+
#pragma fragment frag
17+
// make fog work
18+
#pragma multi_compile_fog
19+
20+
#include "UnityCG.cginc"
21+
22+
struct appdata
23+
{
24+
float4 vertex : POSITION;
25+
float2 uv : TEXCOORD0;
26+
};
27+
28+
struct v2f
29+
{
30+
float2 uv : TEXCOORD0;
31+
UNITY_FOG_COORDS(1)
32+
float4 vertex : SV_POSITION;
33+
};
34+
35+
sampler2D _MainTex;
36+
float4 _MainTex_ST;
37+
38+
float3 mod_emu(float3 x, float y)
39+
{
40+
return x - y * floor(x / y);
41+
}
42+
43+
float3 f_permute(in float3 _x)
44+
{
45+
return mod_emu((((34.0 * _x) + 1.0) * _x), 289.0);
46+
}
47+
48+
float2 f_cellular(in float3 _P)
49+
{
50+
float3 _Pi = mod_emu(floor(_P), 289.0);
51+
float3 _Pf = (frac(_P) - 0.5);
52+
float3 _Pfx = (_Pf.x + float3(1.0, 0.0, -1.0));
53+
float3 _Pfy = (_Pf.y + float3(1.0, 0.0, -1.0));
54+
float3 _Pfz = (_Pf.z + float3(1.0, 0.0, -1.0));
55+
float3 _p = f_permute((_Pi.x + float3(-1.0, 0.0, 1.0)));
56+
float3 _p1 = f_permute(((_p + _Pi.y) - 1.0));
57+
float3 _p2 = f_permute((_p + _Pi.y));
58+
float3 _p3 = f_permute(((_p + _Pi.y) + 1.0));
59+
float3 _p11 = f_permute(((_p1 + _Pi.z) - 1.0));
60+
float3 _p12 = f_permute((_p1 + _Pi.z));
61+
float3 _p13 = f_permute(((_p1 + _Pi.z) + 1.0));
62+
float3 _p21 = f_permute(((_p2 + _Pi.z) - 1.0));
63+
float3 _p22 = f_permute((_p2 + _Pi.z));
64+
float3 _p23 = f_permute(((_p2 + _Pi.z) + 1.0));
65+
float3 _p31 = f_permute(((_p3 + _Pi.z) - 1.0));
66+
float3 _p32 = f_permute((_p3 + _Pi.z));
67+
float3 _p33 = f_permute(((_p3 + _Pi.z) + 1.0));
68+
float3 _ox11 = (frac((_p11 * 0.14285715)) - 0.42857143);
69+
float3 _oy11 = ((mod_emu(floor((_p11 * 0.14285715)), 7.0) * 0.14285715) - 0.42857143);
70+
float3 _oz11 = ((floor((_p11 * 0.020408163)) * 0.16666667) - 0.41666666);
71+
float3 _ox12 = (frac((_p12 * 0.14285715)) - 0.42857143);
72+
float3 _oy12 = ((mod_emu(floor((_p12 * 0.14285715)), 7.0) * 0.14285715) - 0.42857143);
73+
float3 _oz12 = ((floor((_p12 * 0.020408163)) * 0.16666667) - 0.41666666);
74+
float3 _ox13 = (frac((_p13 * 0.14285715)) - 0.42857143);
75+
float3 _oy13 = ((mod_emu(floor((_p13 * 0.14285715)), 7.0) * 0.14285715) - 0.42857143);
76+
float3 _oz13 = ((floor((_p13 * 0.020408163)) * 0.16666667) - 0.41666666);
77+
float3 _ox21 = (frac((_p21 * 0.14285715)) - 0.42857143);
78+
float3 _oy21 = ((mod_emu(floor((_p21 * 0.14285715)), 7.0) * 0.14285715) - 0.42857143);
79+
float3 _oz21 = ((floor((_p21 * 0.020408163)) * 0.16666667) - 0.41666666);
80+
float3 _ox22 = (frac((_p22 * 0.14285715)) - 0.42857143);
81+
float3 _oy22 = ((mod_emu(floor((_p22 * 0.14285715)), 7.0) * 0.14285715) - 0.42857143);
82+
float3 _oz22 = ((floor((_p22 * 0.020408163)) * 0.16666667) - 0.41666666);
83+
float3 _ox23 = (frac((_p23 * 0.14285715)) - 0.42857143);
84+
float3 _oy23 = ((mod_emu(floor((_p23 * 0.14285715)), 7.0) * 0.14285715) - 0.42857143);
85+
float3 _oz23 = ((floor((_p23 * 0.020408163)) * 0.16666667) - 0.41666666);
86+
float3 _ox31 = (frac((_p31 * 0.14285715)) - 0.42857143);
87+
float3 _oy31 = ((mod_emu(floor((_p31 * 0.14285715)), 7.0) * 0.14285715) - 0.42857143);
88+
float3 _oz31 = ((floor((_p31 * 0.020408163)) * 0.16666667) - 0.41666666);
89+
float3 _ox32 = (frac((_p32 * 0.14285715)) - 0.42857143);
90+
float3 _oy32 = ((mod_emu(floor((_p32 * 0.14285715)), 7.0) * 0.14285715) - 0.42857143);
91+
float3 _oz32 = ((floor((_p32 * 0.020408163)) * 0.16666667) - 0.41666666);
92+
float3 _ox33 = (frac((_p33 * 0.14285715)) - 0.42857143);
93+
float3 _oy33 = ((mod_emu(floor((_p33 * 0.14285715)), 7.0) * 0.14285715) - 0.42857143);
94+
float3 _oz33 = ((floor((_p33 * 0.020408163)) * 0.16666667) - 0.41666666);
95+
float3 _dx11 = (_Pfx + (1.0 * _ox11));
96+
float3 _dy11 = (_Pfy.x + (1.0 * _oy11));
97+
float3 _dz11 = (_Pfz.x + (1.0 * _oz11));
98+
float3 _dx12 = (_Pfx + (1.0 * _ox12));
99+
float3 _dy12 = (_Pfy.x + (1.0 * _oy12));
100+
float3 _dz12 = (_Pfz.y + (1.0 * _oz12));
101+
float3 _dx13 = (_Pfx + (1.0 * _ox13));
102+
float3 _dy13 = (_Pfy.x + (1.0 * _oy13));
103+
float3 _dz13 = (_Pfz.z + (1.0 * _oz13));
104+
float3 _dx21 = (_Pfx + (1.0 * _ox21));
105+
float3 _dy21 = (_Pfy.y + (1.0 * _oy21));
106+
float3 _dz21 = (_Pfz.x + (1.0 * _oz21));
107+
float3 _dx22 = (_Pfx + (1.0 * _ox22));
108+
float3 _dy22 = (_Pfy.y + (1.0 * _oy22));
109+
float3 _dz22 = (_Pfz.y + (1.0 * _oz22));
110+
float3 _dx23 = (_Pfx + (1.0 * _ox23));
111+
float3 _dy23 = (_Pfy.y + (1.0 * _oy23));
112+
float3 _dz23 = (_Pfz.z + (1.0 * _oz23));
113+
float3 _dx31 = (_Pfx + (1.0 * _ox31));
114+
float3 _dy31 = (_Pfy.z + (1.0 * _oy31));
115+
float3 _dz31 = (_Pfz.x + (1.0 * _oz31));
116+
float3 _dx32 = (_Pfx + (1.0 * _ox32));
117+
float3 _dy32 = (_Pfy.z + (1.0 * _oy32));
118+
float3 _dz32 = (_Pfz.y + (1.0 * _oz32));
119+
float3 _dx33 = (_Pfx + (1.0 * _ox33));
120+
float3 _dy33 = (_Pfy.z + (1.0 * _oy33));
121+
float3 _dz33 = (_Pfz.z + (1.0 * _oz33));
122+
float3 _d11 = (((_dx11 * _dx11) + (_dy11 * _dy11)) + (_dz11 * _dz11));
123+
float3 _d12 = (((_dx12 * _dx12) + (_dy12 * _dy12)) + (_dz12 * _dz12));
124+
float3 _d13 = (((_dx13 * _dx13) + (_dy13 * _dy13)) + (_dz13 * _dz13));
125+
float3 _d21 = (((_dx21 * _dx21) + (_dy21 * _dy21)) + (_dz21 * _dz21));
126+
float3 _d22 = (((_dx22 * _dx22) + (_dy22 * _dy22)) + (_dz22 * _dz22));
127+
float3 _d23 = (((_dx23 * _dx23) + (_dy23 * _dy23)) + (_dz23 * _dz23));
128+
float3 _d31 = (((_dx31 * _dx31) + (_dy31 * _dy31)) + (_dz31 * _dz31));
129+
float3 _d32 = (((_dx32 * _dx32) + (_dy32 * _dy32)) + (_dz32 * _dz32));
130+
float3 _d33 = (((_dx33 * _dx33) + (_dy33 * _dy33)) + (_dz33 * _dz33));
131+
float3 _d1a = min(_d11, _d12);
132+
(_d12 = max(_d11, _d12));
133+
(_d11 = min(_d1a, _d13));
134+
(_d13 = max(_d1a, _d13));
135+
(_d12 = min(_d12, _d13));
136+
float3 _d2a = min(_d21, _d22);
137+
(_d22 = max(_d21, _d22));
138+
(_d21 = min(_d2a, _d23));
139+
(_d23 = max(_d2a, _d23));
140+
(_d22 = min(_d22, _d23));
141+
float3 _d3a = min(_d31, _d32);
142+
(_d32 = max(_d31, _d32));
143+
(_d31 = min(_d3a, _d33));
144+
(_d33 = max(_d3a, _d33));
145+
(_d32 = min(_d32, _d33));
146+
float3 _da = min(_d11, _d21);
147+
(_d21 = max(_d11, _d21));
148+
(_d11 = min(_da, _d31));
149+
(_d31 = max(_da, _d31));
150+
float2 s452 = {0, 0};
151+
if ((_d11.x < _d11.y))
152+
{
153+
(s452 = _d11.xy);
154+
}
155+
else
156+
{
157+
(s452 = _d11.yx);
158+
}
159+
(_d11.xy = s452);
160+
float2 s453 = {0, 0};
161+
if ((_d11.x < _d11.z))
162+
{
163+
(s453 = _d11.xz);
164+
}
165+
else
166+
{
167+
(s453 = _d11.zx);
168+
}
169+
(_d11.xz = s453);
170+
(_d12 = min(_d12, _d21));
171+
(_d12 = min(_d12, _d22));
172+
(_d12 = min(_d12, _d31));
173+
(_d12 = min(_d12, _d32));
174+
(_d11.yz = min(_d11.yz, _d12.xy));
175+
(_d11.y = min(_d11.y, _d12.z));
176+
(_d11.y = min(_d11.y, _d11.z));
177+
return sqrt(_d11.xy);
178+
}
179+
180+
v2f vert (appdata v)
181+
{
182+
v2f o;
183+
o.vertex = UnityObjectToClipPos(v.vertex);
184+
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
185+
UNITY_TRANSFER_FOG(o,o.vertex);
186+
return o;
187+
}
188+
189+
fixed4 frag (v2f i) : SV_Target
190+
{
191+
// sample the texture
192+
//fixed4 col = tex2D(_MainTex, i.uv);
193+
// apply fog
194+
//UNITY_APPLY_FOG(i.fogCoord, col);
195+
196+
float2 _st = i.uv;
197+
(_st *= 10.0);
198+
float2 _F = f_cellular(float3(_st, _Time.y));
199+
float _dots = smoothstep(0.050000001, 0.1, _F.x);
200+
float _n = (_F.y - _F.x);
201+
(_n *= _dots);
202+
203+
return fixed4(_n, _n, _n, 1.0);
204+
}
205+
ENDCG
206+
}
207+
}
208+
}

Assets/Demoscene/Projects/2018-07-10-Cellular/Cellular.shader.meta

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)