summaryrefslogtreecommitdiffstats
path: root/aperiodic_tiling.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2026-04-10 18:07:03 -0700
committeryum <yum.food.vr@gmail.com>2026-04-10 18:07:03 -0700
commit283b8f253cff4a0e39005ba675d7c2cd7ef3c123 (patch)
tree20e5ae87e7492ab264622fa6d66e3b6385a2a9d0 /aperiodic_tiling.cginc
parentfb85bd97b4b1f033deb1f5d9e5e7e1921410ae2e (diff)
aperiodic: finish near verbatim port
Diffstat (limited to 'aperiodic_tiling.cginc')
-rw-r--r--aperiodic_tiling.cginc19
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
-