├── .gitignore
├── Editor.meta
├── Editor
├── Data.meta
└── Data
│ ├── Nodes.meta
│ └── Nodes
│ ├── Math.meta
│ ├── Math
│ ├── Interpolation.meta
│ └── Interpolation
│ │ ├── Easing.meta
│ │ └── Easing
│ │ ├── EasingNode.cs
│ │ ├── EasingNode.cs.meta
│ │ ├── EasingType.cs
│ │ └── EasingType.cs.meta
│ ├── Procedural.meta
│ └── Procedural
│ ├── Shape.meta
│ └── Shape
│ ├── StarNode.cs
│ └── StarNode.cs.meta
├── LICENSE
├── LICENSE.meta
├── README.md
└── README.md.meta
/.gitignore:
--------------------------------------------------------------------------------
1 | /[Ll]ibrary/
2 | /[Tt]emp/
3 | /[Oo]bj/
4 | /[Bb]uild/
5 | /[Bb]uilds/
6 | /Assets/AssetStoreTools*
7 |
8 | # Visual Studio 2015 cache directory
9 | /.vs/
10 |
11 | # Autogenerated VS/MD/Consulo solution and project files
12 | ExportedObj/
13 | .consulo/
14 | *.csproj
15 | *.unityproj
16 | *.sln
17 | *.suo
18 | *.tmp
19 | *.user
20 | *.userprefs
21 | *.pidb
22 | *.booproj
23 | *.svd
24 | *.pdb
25 |
26 | # Unity3D generated meta files
27 | *.pidb.meta
28 |
29 | # Unity3D Generated File On Crash Reports
30 | sysinfo.txt
31 |
32 | # Builds
33 | *.apk
34 | *.unitypackage
35 |
--------------------------------------------------------------------------------
/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 78030e0dcea2f87449599131c22f9517
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Data.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0034c817d2db82345be7c15969c06ea5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 13ad3b80943135a4c939b74b77e2463e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Math.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 64034ffb894c6124eb17db0be1eaf3b0
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Math/Interpolation.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9d183bc05f89cde4eb4e84e3833bd019
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Math/Interpolation/Easing.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7cdceb9ffd6e2f8468d2a954ddc697c5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Math/Interpolation/Easing/EasingNode.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using UnityEditor.Graphing;
3 | using UnityEditor.ShaderGraph;
4 | using UnityEditor.ShaderGraph.Drawing.Controls;
5 | using UnityEngine;
6 |
7 | [Title("Math", "Interpolation", "Easing")]
8 | public class EasingNode : CodeFunctionNode
9 | {
10 | public override bool hasPreview { get { return true; } }
11 |
12 | public EasingNode()
13 | {
14 | name = "Easing";
15 | }
16 |
17 | public override string documentationURL
18 | {
19 | get { return "https://github.com/andydbc/shadergraph-custom-nodes"; }
20 | }
21 |
22 | [SerializeField]
23 | EasingType m_EasingType = EasingType.Linear;
24 |
25 | [EnumControl("Type")]
26 | public EasingType Type
27 | {
28 | get { return m_EasingType; }
29 | set
30 | {
31 | if (m_EasingType == value)
32 | return;
33 |
34 | m_EasingType = value;
35 | Dirty(ModificationScope.Graph);
36 | }
37 | }
38 |
39 | string GetTypeName()
40 | {
41 | return System.Enum.GetName(typeof(EasingType), m_EasingType);
42 | }
43 |
44 | protected override MethodInfo GetFunctionToConvert()
45 | {
46 | return GetType().GetMethod(string.Format("Easing_{0}", GetTypeName()), BindingFlags.Static | BindingFlags.NonPublic);
47 | }
48 |
49 | static string Easing_Linear(
50 | [Slot(0, Binding.None)] Vector1 In,
51 | [Slot(2, Binding.None)] out Vector1 Out)
52 | {
53 | return "{ Out = In; }";
54 | }
55 |
56 | static string Easing_QuadraticIn(
57 | [Slot(0, Binding.None)] Vector1 In,
58 | [Slot(2, Binding.None)] out Vector1 Out)
59 | {
60 | return @"{
61 | Out = In * In;
62 | }";
63 | }
64 |
65 | static string Easing_QuadraticOut(
66 | [Slot(0, Binding.None)] Vector1 In,
67 | [Slot(2, Binding.None)] out Vector1 Out)
68 | {
69 | return @"{
70 | Out = -In * (In - 2.0);
71 | }";
72 | }
73 |
74 | static string Easing_QuadraticInOut(
75 | [Slot(0, Binding.None)] Vector1 In,
76 | [Slot(2, Binding.None)] out Vector1 Out)
77 | {
78 | return @"{
79 | float p = 2.0 * In * In;
80 | Out = In < 0.5 ? p : -p + (4.0 * In) - 1.0;
81 | }";
82 | }
83 |
84 | static string Easing_CubicIn(
85 | [Slot(0, Binding.None)] Vector1 In,
86 | [Slot(2, Binding.None)] out Vector1 Out)
87 | {
88 | return @"{
89 | Out = In * In * In;
90 | }";
91 | }
92 |
93 | static string Easing_CubicOut(
94 | [Slot(0, Binding.None)] Vector1 In,
95 | [Slot(2, Binding.None)] out Vector1 Out)
96 | {
97 | return @"{
98 | float f = In - 1.0;
99 | Out = f * f * f + 1.0;
100 | }";
101 | }
102 |
103 | static string Easing_CubicInOut(
104 | [Slot(0, Binding.None)] Vector1 In,
105 | [Slot(2, Binding.None)] out Vector1 Out)
106 | {
107 | return @"{
108 | Out = In < 0.5
109 | ? 4.0 * In * In * In
110 | : 0.5 * pow(2.0 * In - 2.0, 3.0) + 1.0;
111 | }";
112 | }
113 |
114 | static string Easing_QuarticIn(
115 | [Slot(0, Binding.None)] Vector1 In,
116 | [Slot(2, Binding.None)] out Vector1 Out)
117 | {
118 | return @"{
119 | Out = pow(In, 4.0);
120 | }";
121 | }
122 |
123 | static string Easing_QuarticOut(
124 | [Slot(0, Binding.None)] Vector1 In,
125 | [Slot(2, Binding.None)] out Vector1 Out)
126 | {
127 | return @"{
128 | Out = pow(In - 1.0, 3.0) * (1.0 - In) + 1.0;
129 | }";
130 | }
131 |
132 | static string Easing_QuarticInOut(
133 | [Slot(0, Binding.None)] Vector1 In,
134 | [Slot(2, Binding.None)] out Vector1 Out)
135 | {
136 | return @"{
137 | Out = In < 0.5
138 | ? +8.0 * pow(In, 4.0)
139 | : -8.0 * pow(In - 1.0, 4.0) + 1.0;
140 | }";
141 | }
142 |
143 | static string Easing_QuinticIn(
144 | [Slot(0, Binding.None)] Vector1 In,
145 | [Slot(2, Binding.None)] out Vector1 Out)
146 | {
147 | return @"{
148 | Out = pow(In, 5.0);
149 | }";
150 | }
151 |
152 | static string Easing_QuinticOut(
153 | [Slot(0, Binding.None)] Vector1 In,
154 | [Slot(2, Binding.None)] out Vector1 Out)
155 | {
156 | return @"{
157 | float f = In - 1;
158 | Out = f * f * f * f * f + 1;
159 | }";
160 | }
161 |
162 | static string Easing_QuinticInOut(
163 | [Slot(0, Binding.None)] Vector1 In,
164 | [Slot(2, Binding.None)] out Vector1 Out)
165 | {
166 | return @"{
167 | float f = (2.0 * In) - 2.0;
168 | Out = In < 0.5
169 | ? 16 * pow(In, 5)
170 | : 0.5 * pow(f, 5) + 1.0;
171 | }";
172 | }
173 |
174 | static string Easing_SinIn(
175 | [Slot(0, Binding.None)] Vector1 In,
176 | [Slot(2, Binding.None)] out Vector1 Out)
177 | {
178 | return @"{
179 | float half_pi = 1.5707963267948966;
180 | Out = sin((In - 1.0) * half_pi) + 1.0;
181 | }";
182 | }
183 |
184 | static string Easing_SinOut(
185 | [Slot(0, Binding.None)] Vector1 In,
186 | [Slot(2, Binding.None)] out Vector1 Out)
187 | {
188 | return @"{
189 | float half_pi = 1.5707963267948966;
190 | Out = sin(In * half_pi);
191 | }";
192 | }
193 |
194 | static string Easing_SinInOut(
195 | [Slot(0, Binding.None)] Vector1 In,
196 | [Slot(2, Binding.None)] out Vector1 Out)
197 | {
198 | return @"{
199 | float pi = 3.141592653589793;
200 | Out = -0.5 * (cos(pi * In) - 1.0);
201 | }";
202 | }
203 |
204 | static string Easing_ExponentialIn(
205 | [Slot(0, Binding.None)] Vector1 In,
206 | [Slot(2, Binding.None)] out Vector1 Out)
207 | {
208 | return @"{
209 | Out = (In == 0.0)
210 | ? In
211 | : pow(2.0, 10.0 * (In - 1.0));
212 | }";
213 | }
214 |
215 | static string Easing_ExponentialOut(
216 | [Slot(0, Binding.None)] Vector1 In,
217 | [Slot(2, Binding.None)] out Vector1 Out)
218 | {
219 | return @"{
220 | Out = (In == 1.0)
221 | ? In
222 | : 1.0 - pow(2.0, -10.0 * In);
223 | }";
224 | }
225 |
226 | static string Easing_ExponentialInOut(
227 | [Slot(0, Binding.None)] Vector1 In,
228 | [Slot(2, Binding.None)] out Vector1 Out)
229 | {
230 | return @"{
231 | Out = In == 0.0 || In == 1.0
232 | ? In
233 | : In < 0.5
234 | ? +0.5 * pow(2.0, (20.0 * In) - 10.0)
235 | : -0.5 * pow(2.0, 10.0 - (In * 20.0)) + 1.0;
236 | }";
237 | }
238 |
239 | static string Easing_CircularIn(
240 | [Slot(0, Binding.None)] Vector1 In,
241 | [Slot(2, Binding.None)] out Vector1 Out)
242 | {
243 | return @"{
244 | Out = 1.0 - sqrt(1.0 - In * In);
245 | }";
246 | }
247 |
248 | static string Easing_CircularOut(
249 | [Slot(0, Binding.None)] Vector1 In,
250 | [Slot(2, Binding.None)] out Vector1 Out)
251 | {
252 | return @"{
253 | Out = sqrt((2.0 - In) * In);
254 | }";
255 | }
256 |
257 | static string Easing_CircularInOut(
258 | [Slot(0, Binding.None)] Vector1 In,
259 | [Slot(2, Binding.None)] out Vector1 Out)
260 | {
261 | return @"{
262 | Out = In < 0.5
263 | ? 0.5 * (1.0 - sqrt(1.0 - 4.0 * In * In))
264 | : 0.5 * (sqrt((3.0 - 2.0 * In) * (2.0 * In - 1.0)) + 1.0);
265 | }";
266 | }
267 |
268 | static string Easing_ElasticIn(
269 | [Slot(0, Binding.None)] Vector1 In,
270 | [Slot(2, Binding.None)] out Vector1 Out)
271 | {
272 | return @"{
273 | float half_pi = 1.5707963267948966;
274 | Out = sin(13.0 * In * half_pi) * pow(2.0, 10.0 * (In - 1.0));
275 | }";
276 | }
277 |
278 | static string Easing_ElasticOut(
279 | [Slot(0, Binding.None)] Vector1 In,
280 | [Slot(2, Binding.None)] out Vector1 Out)
281 | {
282 | return @"{
283 | float half_pi = 1.5707963267948966;
284 | Out = sin(-13.0 * (In + 1.0) * half_pi) * pow(2.0, -10.0 * In) + 1.0;
285 | }";
286 | }
287 |
288 | static string Easing_ElasticInOut(
289 | [Slot(0, Binding.None)] Vector1 In,
290 | [Slot(2, Binding.None)] out Vector1 Out)
291 | {
292 | return @"{
293 | float half_pi = 1.5707963267948966;
294 | Out = In < 0.5
295 | ? 0.5 * sin(+13.0 * half_pi * 2.0 * In) * pow(2.0, 10.0 * (2.0 * In - 1.0))
296 | : 0.5 * sin(-13.0 * half_pi * ((2.0 * In - 1.0) + 1.0)) * pow(2.0, -10.0 * (2.0 * In - 1.0)) + 1.0;
297 | }";
298 | }
299 |
300 | static string Easing_BackIn(
301 | [Slot(0, Binding.None)] Vector1 In,
302 | [Slot(2, Binding.None)] out Vector1 Out)
303 | {
304 | return @"{
305 | float pi = 3.141592653589793;
306 | Out = pow(In, 3.0) - In * sin(In * pi);
307 | }";
308 | }
309 |
310 | static string Easing_BackOut(
311 | [Slot(0, Binding.None)] Vector1 In,
312 | [Slot(2, Binding.None)] out Vector1 Out)
313 | {
314 | return @"{
315 | float pi = 3.141592653589793;
316 | float f = 1.0 - In;
317 | Out = 1.0 - (pow(f, 3.0) - f * sin(f * pi));
318 | }";
319 | }
320 |
321 | static string Easing_BackInOut(
322 | [Slot(0, Binding.None)] Vector1 In,
323 | [Slot(2, Binding.None)] out Vector1 Out)
324 | {
325 | return @"{
326 | float pi = 3.141592653589793;
327 | float f = In < 0.5
328 | ? 2.0 * In
329 | : 1.0 - (2.0 * In - 1.0);
330 |
331 | float g = pow(f, 3.0) - f * sin(f * pi);
332 |
333 | Out = In < 0.5
334 | ? 0.5 * g
335 | : 0.5 * (1.0 - g) + 0.5;
336 | }";
337 | }
338 |
339 | static string Easing_BounceIn(
340 | [Slot(0, Binding.None)] Vector1 In,
341 | [Slot(2, Binding.None)] out Vector1 Out)
342 | {
343 | return @"{
344 | Out = 1.0 - easing_custom_bounce_out(1.0 - In);
345 | }";
346 | }
347 |
348 | static string Easing_BounceOut(
349 | [Slot(0, Binding.None)] Vector1 In,
350 | [Slot(2, Binding.None)] out Vector1 Out)
351 | {
352 | return @"{
353 | Out = easing_custom_bounce_out(In);
354 | }";
355 | }
356 |
357 | static string Easing_BounceInOut(
358 | [Slot(0, Binding.None)] Vector1 In,
359 | [Slot(2, Binding.None)] out Vector1 Out)
360 | {
361 | return @"{
362 | Out = In < 0.5
363 | ? 0.5 * (1.0 - easing_custom_bounce_out(1.0 - In * 2.0))
364 | : 0.5 * easing_custom_bounce_out(In * 2.0 - 1.0) + 0.5;
365 | }";
366 | }
367 |
368 | public override void GenerateNodeFunction(FunctionRegistry registry, GenerationMode generationMode)
369 | {
370 | registry.ProvideFunction("easing_custom_bounce_out", s => s.Append(@"
371 | float easing_custom_bounce_out(float t)
372 | {
373 | const float a = 4.0 / 11.0;
374 | const float b = 8.0 / 11.0;
375 | const float c = 9.0 / 10.0;
376 |
377 | const float ca = 4356.0 / 361.0;
378 | const float cb = 35442.0 / 1805.0;
379 | const float cc = 16061.0 / 1805.0;
380 |
381 | float t2 = t * t;
382 |
383 | return t < a
384 | ? 7.5625 * t2
385 | : t < b
386 | ? 9.075 * t2 - 9.9 * t + 3.4
387 | : t < c
388 | ? ca * t2 - cb * t + cc
389 | : 10.8 * t * t - 20.52 * t + 10.72;
390 | }
391 | "));
392 |
393 | base.GenerateNodeFunction(registry, generationMode);
394 | }
395 | }
396 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Math/Interpolation/Easing/EasingNode.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a065ee78f18ede54b8fd806d2155bc0c
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Math/Interpolation/Easing/EasingType.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | public enum EasingType
6 | {
7 | Linear,
8 | QuadraticIn,
9 | QuadraticOut,
10 | QuadraticInOut,
11 | CubicIn,
12 | CubicOut,
13 | CubicInOut,
14 | QuarticIn,
15 | QuarticOut,
16 | QuarticInOut,
17 | QuinticIn,
18 | QuinticOut,
19 | QuinticInOut,
20 | SinIn,
21 | SinOut,
22 | SinInOut,
23 | ExponentialIn,
24 | ExponentialOut,
25 | ExponentialInOut,
26 | CircularIn,
27 | CircularOut,
28 | CircularInOut,
29 | ElasticIn,
30 | ElasticOut,
31 | ElasticInOut,
32 | BackIn,
33 | BackOut,
34 | BackInOut,
35 | BounceIn,
36 | BounceOut,
37 | BounceInOut
38 | }
39 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Math/Interpolation/Easing/EasingType.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3bf8d51e44b0b7241b1c8e362960c213
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Procedural.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8836fa75365fffa43afbc0cbb378b453
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Procedural/Shape.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a67f1967f86cb0d4d8dea31e0683558c
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Procedural/Shape/StarNode.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using UnityEditor.ShaderGraph;
3 | using UnityEngine;
4 |
5 | [Title("Procedural", "Shape", "Star")]
6 | public class StarNode : CodeFunctionNode
7 | {
8 | public override bool hasPreview { get { return true; } }
9 |
10 | public StarNode()
11 | {
12 | name = "Star";
13 | }
14 |
15 | public override string documentationURL
16 | {
17 | get { return "https://github.com/andydbc/shadergraph-custom-nodes"; }
18 | }
19 |
20 | protected override MethodInfo GetFunctionToConvert()
21 | {
22 | return GetType().GetMethod("StarFunction", BindingFlags.Static | BindingFlags.NonPublic);
23 | }
24 |
25 | static string StarFunction(
26 | [Slot(0, Binding.MeshUV0)] Vector2 UV,
27 | [Slot(1, Binding.None, 6, 0, 0, 0)] Vector1 Sides,
28 | [Slot(2, Binding.None, 0.5f, 0, 0, 0)] Vector1 Scale,
29 | [Slot(3, Binding.None)] out DynamicDimensionVector Out)
30 | {
31 | return @"
32 | {
33 | // based on : https://www.shadertoy.com/view/ldyczd
34 |
35 | float pi = 3.14159265359;
36 |
37 | {precision} N = Sides;
38 | {precision} r = .5;
39 | {precision}2 U = ((UV - 0.5) * 2.) * 1/Scale;
40 |
41 | {precision} a = atan2(U.x, U.y);
42 | {precision} l = length(U);
43 | {precision} b = pi/N;
44 | {precision} tb = tan(b);
45 |
46 | {precision} s = (r * tb)/(sqrt(1.+tb*tb)-r);
47 |
48 | {precision} b2 = 2.*b;
49 | a = (a-b2*floor(a/b2)) -b;
50 | U = l * float2(cos(a),sin(a)) / cos(b);
51 | U.y = abs(U.y);
52 | U.x -= 1.;
53 |
54 | Out = step(0.001, -(s*U.x+U.y)/sqrt(1.+s*s));
55 | }";
56 | }
57 | }
--------------------------------------------------------------------------------
/Editor/Data/Nodes/Procedural/Shape/StarNode.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bf23cc68526c3b247a4d7d6e8a57dc07
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Andy Duboc
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/LICENSE.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4d229bc703360034ca99e9e0db055347
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Shader Graph Nodes
2 |
3 | Collection of Shader Graph custom nodes.
4 |
5 | ### Math > Interpolation > Easing
6 |
7 | Add support for Robert Penner's easing function.
8 |
9 |
10 |
11 | ### Procedural > Shape > Star
12 |
13 | Add support for a procedural star shape
14 |
15 |
16 |
17 | ## System Requirements
18 |
19 | - Unity 2018.1 or later
20 |
21 | ## License
22 |
23 | Licensed under the [Open Source MIT license](http://en.wikipedia.org/wiki/MIT_License).
24 |
--------------------------------------------------------------------------------
/README.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 98efe624029c2bb48bdf0a4a25052c33
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------