From 9407da0461eb61359b708a0e8df3fd6bcb8656d4 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 14 Sep 2026 14:32:19 +0200 Subject: [PATCH] Match float min, max, clamp, and saturate to DXIL FMin/FMax/Saturate dxc lowers float min/max/clamp to dx.op FMin/FMax (36/35) and saturate to dx.op Saturate (7). DXIL.rst defines them: FMin(a, b) is a < b ? a : b, FMax(a, b) is a >= b ? a : b, a NaN operand returns the other, and Saturate is FMin(1, FMax(0, x)). C# used MathF.Min/Max, which pass NaN through and order signed zeros, so saturate(NaN) was NaN instead of 0. Every float overload now follows the spec, normalize uses the same max as its mirror, and the mirror's saturate spells Saturate's operand order (which maps -0 to +0, where clamp(x, 0, 1) keeps -0). Non-NaN results change only in the sign of a zero. design.md records the rules and that dxc marks float math fast, so GPU NaN results are not guaranteed. Co-Authored-By: Claude Opus 5 --- packages/cultmath/docs/design.md | 12 +++++++++- packages/cultmath/shaders/CultMath.hlsl | 9 ++++---- packages/cultmath/src/CultMath/math.cs | 21 ++++++++++-------- .../CultMath.Tests/HlslSemanticsTests.cs | 14 ++++++++++++ .../Runtime/Plugins/CultMath.dll | Bin 296448 -> 296960 bytes .../Runtime/Plugins/CultMath.pdb | Bin 140892 -> 140892 bytes .../Shaders/CultMath.hlsl | 9 ++++---- 7 files changed, 47 insertions(+), 18 deletions(-) diff --git a/packages/cultmath/docs/design.md b/packages/cultmath/docs/design.md index ee209fd4..9153b63d 100644 --- a/packages/cultmath/docs/design.md +++ b/packages/cultmath/docs/design.md @@ -46,9 +46,19 @@ That makes these HLSL rules, not options: sides rather than leaning on implicit scalar splat. - Intrinsics return HLSL's types and edge cases: `sign` returns `int`/`intN` (NaN gives 0); `step(y, x)` is `x < y ? 0 : 1` (NaN gives 1), which is how dxc - lowers it, in C# and in the HLSL mirror; `any`/`all` accept numeric vectors (a component is true when it is + lowers it, in C# and in the HLSL mirror; float `min`, `max`, `clamp`, and + `saturate` follow the DXIL `FMin`/`FMax`/`Saturate` operations dxc emits for + them: `min(a, b)` is `a < b ? a : b`, `max(a, b)` is `a >= b ? a : b`, a NaN + operand returns the other (so `saturate(NaN)` is 0), `clamp(x, a, b)` is + `min(max(x, a), b)`, and `saturate(x)` is `min(1, max(0, x))`, which maps -0 + to +0; `any`/`all` accept numeric vectors (a component is true when it is not 0); `min`, `max`, and `abs` on int vectors return int vectors. +dxc marks float arithmetic and compares `fast` (no NaNs) unless a value is +`precise`, so drivers may optimize NaN handling away and NaN results on real +GPUs are not guaranteed. CultMath defines the CPU result by dxc's lowering and +the DXIL operation spec (DirectXShaderCompiler `docs/DXIL.rst`). + Deferred until a consumer needs them: `float4x4`, `transpose`, `determinant`, and HLSL's one-based `_11`..`_33` element names. diff --git a/packages/cultmath/shaders/CultMath.hlsl b/packages/cultmath/shaders/CultMath.hlsl index 15137c4d..365705f5 100644 --- a/packages/cultmath/shaders/CultMath.hlsl +++ b/packages/cultmath/shaders/CultMath.hlsl @@ -26,10 +26,11 @@ float2 cultmath_clamp(float2 value, float2 minimum, float2 maximum) { return min float3 cultmath_clamp(float3 value, float3 minimum, float3 maximum) { return min(max(value, minimum), maximum); } float4 cultmath_clamp(float4 value, float4 minimum, float4 maximum) { return min(max(value, minimum), maximum); } -float cultmath_saturate(float value) { return cultmath_clamp(value, 0.0, 1.0); } -float2 cultmath_saturate(float2 value) { return cultmath_clamp(value, float2(0.0, 0.0), float2(1.0, 1.0)); } -float3 cultmath_saturate(float3 value) { return cultmath_clamp(value, float3(0.0, 0.0, 0.0), float3(1.0, 1.0, 1.0)); } -float4 cultmath_saturate(float4 value) { return cultmath_clamp(value, float4(0.0, 0.0, 0.0, 0.0), float4(1.0, 1.0, 1.0, 1.0)); } +// DXIL Saturate is FMin(1, FMax(0, x)); dxc lowers min/max to the same FMin/FMax, NaN rules included. +float cultmath_saturate(float value) { return min(1.0, max(0.0, value)); } +float2 cultmath_saturate(float2 value) { return min(float2(1.0, 1.0), max(float2(0.0, 0.0), value)); } +float3 cultmath_saturate(float3 value) { return min(float3(1.0, 1.0, 1.0), max(float3(0.0, 0.0, 0.0), value)); } +float4 cultmath_saturate(float4 value) { return min(float4(1.0, 1.0, 1.0, 1.0), max(float4(0.0, 0.0, 0.0, 0.0), value)); } float cultmath_lerp(float start, float end, float amount) { return start + (end - start) * amount; } float2 cultmath_lerp(float2 start, float2 end, float2 amount) { return start + (end - start) * amount; } diff --git a/packages/cultmath/src/CultMath/math.cs b/packages/cultmath/src/CultMath/math.cs index 4414cd3a..99ad5ecb 100644 --- a/packages/cultmath/src/CultMath/math.cs +++ b/packages/cultmath/src/CultMath/math.cs @@ -106,7 +106,9 @@ public static partial class math public static float3 frac(float3 value) => value - floor(value); public static float4 frac(float4 value) => value - floor(value); - public static float min(float left, float right) => MathF.Min(left, right); + // dxc lowers float min/max/clamp to DXIL FMin/FMax (saturate to Saturate, defined as FMin(1, FMax(0, x))). + // DXIL.rst: FMin(a, b) is a < b ? a : b, FMax(a, b) is a >= b ? a : b, and a NaN operand returns the other. + public static float min(float left, float right) => left < right || float.IsNaN(right) ? left : right; public static int min(int left, int right) => Math.Min(left, right); public static float2 min(float2 left, float2 right) => new(min(left.x, right.x), min(left.y, right.y)); public static float3 min(float3 left, float3 right) => new(min(left.x, right.x), min(left.y, right.y), min(left.z, right.z)); @@ -115,7 +117,7 @@ public static partial class math public static int3 min(int3 left, int3 right) => new(min(left.x, right.x), min(left.y, right.y), min(left.z, right.z)); public static int4 min(int4 left, int4 right) => new(min(left.x, right.x), min(left.y, right.y), min(left.z, right.z), min(left.w, right.w)); - public static float max(float left, float right) => MathF.Max(left, right); + public static float max(float left, float right) => left >= right || float.IsNaN(right) ? left : right; public static int max(int left, int right) => Math.Max(left, right); public static float2 max(float2 left, float2 right) => new(max(left.x, right.x), max(left.y, right.y)); public static float3 max(float3 left, float3 right) => new(max(left.x, right.x), max(left.y, right.y), max(left.z, right.z)); @@ -129,10 +131,11 @@ public static partial class math public static float3 clamp(float3 value, float3 minimum, float3 maximum) => min(max(value, minimum), maximum); public static float4 clamp(float4 value, float4 minimum, float4 maximum) => min(max(value, minimum), maximum); - public static float saturate(float value) => clamp(value, 0.0f, 1.0f); - public static float2 saturate(float2 value) => clamp(value, 0.0f, 1.0f); - public static float3 saturate(float3 value) => clamp(value, 0.0f, 1.0f); - public static float4 saturate(float4 value) => clamp(value, 0.0f, 1.0f); + // DXIL Saturate is FMin(1, FMax(0, x)); that operand order, unlike clamp(x, 0, 1), maps -0 to +0. + public static float saturate(float value) => min(1.0f, max(0.0f, value)); + public static float2 saturate(float2 value) => min(1.0f, max(0.0f, value)); + public static float3 saturate(float3 value) => min(1.0f, max(0.0f, value)); + public static float4 saturate(float4 value) => min(1.0f, max(0.0f, value)); public static float lerp(float start, float end, float amount) => start + (end - start) * amount; public static double lerp(double start, double end, double amount) => start + (end - start) * amount; @@ -202,9 +205,9 @@ public static partial class math public static float distance(float3 left, float3 right) => length(left - right); public static float distance(float4 left, float4 right) => length(left - right); - public static float2 normalize(float2 value) => value / MathF.Max(length(value), 1.0e-20f); - public static float3 normalize(float3 value) => value / MathF.Max(length(value), 1.0e-20f); - public static float4 normalize(float4 value) => value / MathF.Max(length(value), 1.0e-20f); + public static float2 normalize(float2 value) => value / max(length(value), 1.0e-20f); + public static float3 normalize(float3 value) => value / max(length(value), 1.0e-20f); + public static float4 normalize(float4 value) => value / max(length(value), 1.0e-20f); public static quaternion normalize(quaternion value) { var length = MathF.Sqrt(value.x * value.x + value.y * value.y + value.z * value.z + value.w * value.w); diff --git a/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs b/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs index 03e729a5..65845fc9 100644 --- a/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs +++ b/packages/cultmath/tests/CultMath.Tests/HlslSemanticsTests.cs @@ -165,6 +165,20 @@ public sealed class HlslSemanticsTests Assert.Equal(1.0f, math.step(float.NaN, 1.0f)); Assert.Equal(1.0f, math.step(1.0f, 1.0f)); + // DXIL FMin/FMax/Saturate: a NaN operand returns the other; max(a, b) is a >= b ? a : b. + Assert.Equal(1.0f, math.min(float.NaN, 1.0f)); + Assert.Equal(1.0f, math.min(1.0f, float.NaN)); + Assert.Equal(1.0f, math.max(float.NaN, 1.0f)); + Assert.Equal(1.0f, math.max(1.0f, float.NaN)); + Assert.True(float.IsNaN(math.max(float.NaN, float.NaN))); + Assert.Equal(2.0f, math.clamp(float.NaN, 2.0f, 3.0f)); + Assert.Equal(new float3(0.0f, 1.0f, 0.0f), math.saturate(new float3(float.NaN, 2.0f, -1.0f))); + Assert.Equal(new float2(-1.0f, 4.0f), math.max(new float2(float.NaN, 4.0f), new float2(-1.0f, float.NaN))); + static int Bits(float value) => BitConverter.SingleToInt32Bits(value); + Assert.Equal(Bits(-0.0f), Bits(math.max(-0.0f, 0.0f))); + Assert.Equal(Bits(0.0f), Bits(math.min(-0.0f, 0.0f))); + Assert.Equal(Bits(0.0f), Bits(math.saturate(-0.0f))); + Assert.Equal(0, math.sign(float.NaN)); Assert.Equal(-1, math.sign(-0.5f)); Assert.Equal(new int3(-1, 0, 1), math.sign(new float3(-2.0f, 0.0f, 4.0f))); diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.dll b/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.dll index 6f9fa0c69d0f19bdbd38975ad5ca0cc3b64e8732..f76850f776c92794db748acec93708535076841a 100644 GIT binary patch delta 91045 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 delta 91002 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 diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.pdb b/packages/cultmath/unity/org.gamecult.cultmath/Runtime/Plugins/CultMath.pdb index ee7e9b82ad6550d82a6e8adc9a08733ed816e5af..66902438d3a06e3be893c11616ec478a9ceb80b6 100644 GIT binary patch delta 2429 zcmZY8eM}Q)0LSs?jwy6PgwobZfr0{aysSb6g#sE8MPU<#L>J7^uqj3ysOUhzdmg|S zR8&x`PEi*nM&0HNb4+m>6%?eH`L<;dvpF=;Ae)MA^JU9^&vR#Dwm&}oKF@Ra+_k;7 z$K}!E^4L;tXuUV*(H~3mQyRWJI(bj2fJSJ7 zFW@+Q2kp=eH{cfBg?@Mnf5V{jdg28}2!K$Cf>=m`RG105PynUCpys?@A$1t+gwNm* z9D@^Z7CPYy`~4#s=z{@x0b!jck^$K;2R?)XD28&VhK;ZdcEbVq9KMEA&<3tf zlR~az&;xhi0X%`1@Wv$*@dN|-LkL8|7)XRkka5YEWJ4kR22bH7xOMrGH^B$YV1=+Q z1Brrom;f0NJulxt3NWaEYS;kvuoL#dL1>1PaJI`xI^a6og$FPI&p~n-i3bb?69hmA zL_iFrxVB2Nzuioxxy)n+%!U>ifc$PVX@?(S;bk*f0;O;h?lo6Uy8TS@c7BvBDahSq z=}feV5OQMZAd*QWj0g#WlmD5wzCLfcFN z!rX%n-c?&U z168n4#Rq7$sD-YL;d2XJH%4uZ*7c%+bmJ7h9!P7`)o#+dS?d<9b<@@3^`cg~Esf8u zv>`+7c2waDPHka_)}5K^37?Ak(Z&QmkEVN)c+==!(OkMO$BA?7 zb;HHPz$ag6lVN=FjXL4i7)eh$c;gh>Dh5;ODPFfsdPc_&_|P`H+IFoML@l%t)dp`h6^45207IUX8Wr30XjI=#t1V*;!7V?W`;&0`S2o`mPM>Lgo;}|}$XNQ1GuU6AZ;sG;kYt(Y$UOcMCzJ31+=khm zd;R5bWuk5{@s`OTLf6Q|1J|J&SsHeTLHet~dpaLHE^jsy3%>lkc$ugx@BeRQu1?3# z(UH7Y=PY<_g}>DRRuJcjnpu&8?b7APH?cbV!_I4v;*r!9c+VW zFss!rv`M?rX3SPp z$-a%}89C+y`3Qb#kNX^)6^;ip|W(YZKC4wo`pb_B^aZc;_dh!8nm{uifo BY}Wt) delta 2490 zcmZY9eNYr-0LSrXmlQ6s;JCx{I5}R#u@gHGMd5gHOcF&C#nDDa9bZC|5fw}kF86sr z5fBwYJyCqem&zQ&5)sD?Phvqu=xFI^)zIpZo6f>^{58?JezX z9_?)&rB1`ro4vDAy3!_A?3r`u?8fD%?B7nT+EO}LTK!pV|Iv!GUQgCS32cQ*sDfkg zIh=(?XoDNj4tL=pJb{1Ul?FZW1Or%LAcVqjh=H*%1!hA!WCMl52E9T`v9Sa8!BIE? zr{O#_!PoE|+=hGb82$!BBQ6F5Arj)?ZFmQ!!)!={3|I+kpa3?(cGv@l8x=h{jt%1l z+%e36#gGL~SO+fn22a@{;A44^qfqH0xYj6uXpcA^`ImnlA1E2>p1c42PK{Skk2{09A!aPU^B?}+9 zkPjuW6)K?$a++{KxCI^13El7D<-lGvf&o|dNP0PooAAV>%BNhL4J;t zz6|#!gw(#?izE{XTZH(*ng5LIULM!njFs_8pT z8sr{OQTA@?kCm=_iyvflMP1)rR&>AdX%DF`4EO4omFrqCs3s*<3Oc9wE{W=miy1Q_ zcbe|tU9P&$sjmA_Bv6^;jw=LG zI)zsWq)coC(mYWUT|12LFwu3x)fQ-7FX~T=#_@T7TAZYIgVqwQ8?|nltnS||YNcBe z`PfR!CaNvxRWPwto7kpxd$M|fOVmtvM)Pqv-4)B5NGnC>(A}|~UW7!`{kpy+P$r&u zh|%9cwq9$4s2{x$ z&gcE;MXi@a4YYYQpEuAJt*xRqdU*t&x6vzFua5B36S9zA)5Vg0GI3@4$ws9;fgcn` ze@O7gP9wd8n=s16oh0%P{-ymgp4Xe+v-A4V`=TMVQ`Af!iZ9npyC(4cX8K6$Z(1LV zhhnC`YwZ@b(I@<&TX26*r}2e0`lr^vrlsK}7)g6vK^8g9G+5_B;$)&DbNNT4Ol$*i z85ZW+XOV46yskI#l1VQ@3uNMf^UxBOfE8jR@x?}x&Ku9mi%rIa4?iwSChE-e|IN(O z>G&}^GXKRf3tpPxw>p5mAL)sj*b)WHwQtIwEq{~m4P}|)n~7jqqF(HSp?u!TR*LaZ zwo25&vPHvLj{56jx$3WrIYk56nlQdDj47h=jEY)Wo_3ymySst|9Bi$au(ASe$9ho* zD-;c6#oCEBXeTNW4Pl!`@(V<=&7$L2si={a#qfC}D;L$XZJ~TTfNd8Y%v_>+wj)$g zcT{LQc8UhE-Qq7E!S;wIvb~}~Y@as2UzD;+@H5C)6i>kX4HbPxeI=KVvLAEyl5|jvpY?GIownxXoq_TAO)w%h**N zt@p>v%5J;*Tjd*)kL!_Dp7F*=@gKmRH%e=i)@bqa+VdO^TL9jQym(hefNYZ{)l>w? PMQ)O_CU~G6B}?RApC@%s diff --git a/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl b/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl index 15137c4d..365705f5 100644 --- a/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl +++ b/packages/cultmath/unity/org.gamecult.cultmath/Shaders/CultMath.hlsl @@ -26,10 +26,11 @@ float2 cultmath_clamp(float2 value, float2 minimum, float2 maximum) { return min float3 cultmath_clamp(float3 value, float3 minimum, float3 maximum) { return min(max(value, minimum), maximum); } float4 cultmath_clamp(float4 value, float4 minimum, float4 maximum) { return min(max(value, minimum), maximum); } -float cultmath_saturate(float value) { return cultmath_clamp(value, 0.0, 1.0); } -float2 cultmath_saturate(float2 value) { return cultmath_clamp(value, float2(0.0, 0.0), float2(1.0, 1.0)); } -float3 cultmath_saturate(float3 value) { return cultmath_clamp(value, float3(0.0, 0.0, 0.0), float3(1.0, 1.0, 1.0)); } -float4 cultmath_saturate(float4 value) { return cultmath_clamp(value, float4(0.0, 0.0, 0.0, 0.0), float4(1.0, 1.0, 1.0, 1.0)); } +// DXIL Saturate is FMin(1, FMax(0, x)); dxc lowers min/max to the same FMin/FMax, NaN rules included. +float cultmath_saturate(float value) { return min(1.0, max(0.0, value)); } +float2 cultmath_saturate(float2 value) { return min(float2(1.0, 1.0), max(float2(0.0, 0.0), value)); } +float3 cultmath_saturate(float3 value) { return min(float3(1.0, 1.0, 1.0), max(float3(0.0, 0.0, 0.0), value)); } +float4 cultmath_saturate(float4 value) { return min(float4(1.0, 1.0, 1.0, 1.0), max(float4(0.0, 0.0, 0.0, 0.0), value)); } float cultmath_lerp(float start, float end, float amount) { return start + (end - start) * amount; } float2 cultmath_lerp(float2 start, float2 end, float2 amount) { return start + (end - start) * amount; }