diff options
| author | yum <yum.food.vr@gmail.com> | 2025-06-04 15:15:35 -0700 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-06-04 15:15:35 -0700 |
| commit | 50b0b6c8b292e966a43fe56c6e0bf0a20c1d5b62 (patch) | |
| tree | 5ce9ac08e15f016ad5ece59073883cc36f8f1bc4 /custom30.cginc | |
| parent | 22125db9ed9241cd6613b344a4fa7a99c72b3cfa (diff) | |
More ssao and c30 cleanups
Diffstat (limited to 'custom30.cginc')
| -rw-r--r-- | custom30.cginc | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/custom30.cginc b/custom30.cginc index be4bd4c..2bf8ec2 100644 --- a/custom30.cginc +++ b/custom30.cginc @@ -58,7 +58,24 @@ float distance_from_hex_comb( float half_period = period * 0.5; float3 which = abs(floor((p_hex + half_period) / period)); - p_hex = glsl_mod(p_hex + half_period, period) - half_period; + + // The original code here was this: + // p_hex = glsl_mod(p_hex + half_period, period) - half_period; + // + // But you can simplify it. Given the definition of glsl_mod: + // #define glsl_mod(x,y) (((x)-(y)*floor((x)/(y)))) + // + // You can plug in terms: + // (p_hex + half_period) - (period) * floor((p_hex + half_period) / period) + // = p_hex + half_period - period * floor(p_hex/period + 0.5) + // + // For all x, + // round(x) = floor(x + 0.5) + // + // Continuing to simplify: + // (p_hex + half_period - period * round(p_hex/period)) - half_period + // = p_hex - period * round(p_hex / period) + p_hex = p_hex - period * round(p_hex / period); p.xy = hex_to_cart(p_hex); @@ -181,13 +198,13 @@ Custom30Output BasicCube(v2f i) { clip(epsilon - d); #endif float3 objPos = ro + rd * d_acc; - o.objPos = objPos; // Transform from SDF space back to object space float3 objSpacePos = objPos + (i.objPos + frag_to_origin); + o.objPos = objSpacePos; float4 clipPos = UnityObjectToClipPos(objSpacePos); o.depth = clipPos.z / clipPos.w; - float3 sdfNormal = BasicCube_normal(objPos) * float3(-1, 1, 1); + float3 sdfNormal = BasicCube_normal(objPos); o.normal = UnityObjectToWorldNormal(sdfNormal); return o; @@ -242,9 +259,9 @@ Custom30Output BasicWedge(v2f i) { clip(epsilon - d); #endif float3 objPos = ro + rd * d_acc; - o.objPos = objPos; // Transform from SDF space back to object space float3 objSpacePos = objPos + (i.objPos + frag_to_origin); + o.objPos = objSpacePos; float4 clipPos = UnityObjectToClipPos(objSpacePos); o.depth = clipPos.z / clipPos.w; @@ -327,9 +344,8 @@ Custom30Output BasicPlatform(v2f i) { clip(epsilon - d); #endif float3 objPos = ro + rd * d_acc; - o.objPos = objPos; - // Transform from SDF space back to object space float3 objSpacePos = objPos + (i.objPos + frag_to_origin); + o.objPos = objSpacePos; float4 clipPos = UnityObjectToClipPos(objSpacePos); o.depth = clipPos.z / clipPos.w; |
