yum-archive/Tooner
A toon shader for Unity's BIRP.
git clone https://git.yummers.dev/yum-archive/Tooner
dd46f7e
master
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