diff options
| author | yum <yum.food.vr@gmail.com> | 2026-04-10 18:07:03 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2026-04-10 18:07:03 -0700 |
| commit | 283b8f253cff4a0e39005ba675d7c2cd7ef3c123 (patch) | |
| tree | 20e5ae87e7492ab264622fa6d66e3b6385a2a9d0 /aperiodic_tiling.cginc | |
| parent | fb85bd97b4b1f033deb1f5d9e5e7e1921410ae2e (diff) | |
aperiodic: finish near verbatim port
Diffstat (limited to 'aperiodic_tiling.cginc')
| -rw-r--r-- | aperiodic_tiling.cginc | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/aperiodic_tiling.cginc b/aperiodic_tiling.cginc index fa69712..78c911d 100644 --- a/aperiodic_tiling.cginc +++ b/aperiodic_tiling.cginc @@ -7,23 +7,24 @@ // https://gglouser.github.io/cut-and-project-tiling/docs/intro.html#how-it-works // https://www.youtube.com/watch?v=hwMAOFb6yvA +#include "globals.cginc" #include "math.cginc" static const float M5 = sqrt(2.0 / 5.0); -float4 basis_u5_03 = M5 * float4( +static const float4 basis_u5_03 = M5 * float4( cos(0 * TAU / 10), cos(1 * TAU / 10), cos(2 * TAU / 10), cos(3 * TAU / 10)); -float basis_u5_44 = M5 * cos(4 * TAU / 10); +static const float basis_u5_44 = M5 * cos(4 * TAU / 10); -float4 basis_v5_03 = M5 * float4( +static const float4 basis_v5_03 = M5 * float4( sin(0 * TAU / 10), sin(1 * TAU / 10), sin(2 * TAU / 10), sin(3 * TAU / 10)); -float basis_v5_44 = M5 * sin(4 * TAU / 10); +static const float basis_v5_44 = M5 * sin(4 * TAU / 10); float dot5(float4 a03, float a44, float4 b03, float b44) { return dot(a03, b03) + a44 * b44; @@ -47,8 +48,8 @@ float2x2 inv2x2(float2x2 m) { float tile5(float4 p03, float p44, float2x2 m, float2 s, float4 a03, float a44, float4 b03, float b44) { float2 q = mul(s, m); - p03 -= (1 - a03 - b03) * round(q.x * basis_u5_03 + q.y * basis_v5_03); - p44 -= (1 - a44 - b44) * round(q.x * basis_u5_44 + q.y * basis_v5_44); + p03 -= (1.0 - a03 - b03) * round(q.x * basis_u5_03 + q.y * basis_v5_03); + p44 -= (1.0 - a44 - b44) * round(q.x * basis_u5_44 + q.y * basis_v5_44); float2 f = abs(mul(m, proj5(p03, p44)) - s); return max(0.0, 0.5 - max(f.x, f.y)); } @@ -69,7 +70,7 @@ float t5(float4 p03, float p44, float4 a03, float a44, float4 b03, float b44) { float3 dim5(float2 uv) { float4 p03 = uv.x * basis_u5_03 + uv.y * basis_v5_03; - float p44 = uv.x * basis_u5_44 + uv.y * basis_v5_44; + float p44 = uv.x * basis_u5_44 + uv.y * basis_v5_44; float2 u = float2(0, 1); float3 edge = float3(0.04, 0.1, 0.04); @@ -91,8 +92,10 @@ float3 dim5(float2 uv) { } void apply_aperiodic_tiling(float2 uv, inout float3 albedo) { +#if defined(_APERIODIC_TILING) + uv *= _Aperiodic_Tiling_Scale; albedo = dim5(uv); +#endif // _APERIODIC_TILING } #endif // __APERIODIC_TILING_INC - |
