yum-archive/Tooner

A toon shader for Unity's BIRP.

git clone https://git.yummers.dev/yum-archive/Tooner

yumBegin work on aurora gimmickdd46f7e

master
1.4 KiB65 linesraw
1#include "globals.cginc"
2#include "interpolators.cginc"
3#include "math.cginc"
4#include "noise.cginc"
5#include "cnlohr.cginc"
6
7#ifndef __AURORA_INC
8#define __AURORA_INC
9
10struct AuroraPBR {
11  float4 albedo;
12  float3 diffuse;
13  float depth;
14};
15
16float2 rotate2D(float2 v, float theta) {
17  return mul(float2x2(
18        cos(theta), -sin(theta),
19        sin(theta), cos(theta)), v);
20}
21
22AuroraPBR getAurora(v2f i) {
23  AuroraPBR result;
24  result.albedo.a = 1;
25
26  // Map onto [-1, 1]
27  float t = _Time[1];
28  float2 uv = i.uv0;
29  float c = 0;
30
31  uv = rotate2D(uv, t * .101);
32  uv *= 0.9;
33  float c_term = sin(3.14159265 * uv.x * uv.x + t) - 0.25;
34  c = c_term * c_term;
35
36  uv = rotate2D(uv, -t * .67);
37  c_term = (sin(-3.14159265 * uv.x * uv.x * 4 + t/4) - 0.25) * .5;
38  c += c_term * c_term;
39
40  uv = rotate2D(uv, t * .31);
41  c += (sin(-3.14159265 * uv.y * uv.y * 16 + t/8) - 0.25) * .25;
42
43  uv = rotate2D(uv, t * .15);
44  c += (sin(-3.14159265 * uv.x * uv.y * 16 + t/16) - 0.25) * .125;
45
46  c *= 0.5;
47
48  c -= sin(3.14159265 * uv.x * uv.y * 16) * .5 + 0.5;
49
50  const float2 uv_c = i.uv0 * 2.0 - 1;
51  float center_distance_term = saturate(1.0 - dot(uv_c, uv_c));
52  c *= center_distance_term * center_distance_term * center_distance_term * center_distance_term;
53
54  result.albedo.rgb = saturate(c);
55
56  result.diffuse = 0;
57
58  float4 clip_pos = mul(UNITY_MATRIX_VP, float4(i.worldPos, 1.0));
59  result.depth = clip_pos.z / clip_pos.w;
60
61  return result;
62}
63
64#endif  // __AURORA_INC
65