shaders 3.0.452 → 3.1.454
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +2 -2
- package/dist/core/{AngularBlur-BGPN-q7Q.js → AngularBlur-CIw_xeFr.js} +25 -31
- package/dist/core/Arc-Dh0gjBrJ.js +183 -0
- package/dist/core/{Ascii-MEJdXy2h.js → Ascii-CUk527uY.js} +34 -46
- package/dist/core/{Aurora-BAafQuBz.js → Aurora-CTWNhlNr.js} +14 -15
- package/dist/core/{BarShift-nVtvlHii.js → BarShift-BrOamln6.js} +24 -122
- package/dist/core/BarnDoors-D_lVAMPJ.js +170 -0
- package/dist/core/{Beam-D7IyWHAx.js → Beam-CgpfMTUq.js} +45 -461
- package/dist/core/{Bend-RtDgo8kD.js → Bend-CRuu6NuH.js} +13 -57
- package/dist/core/{Blob-DH-MnnS6.js → Blob-1mhEIcv5.js} +3 -3
- package/dist/core/BlockDissolve-DwWPjla0.js +178 -0
- package/dist/core/{BlockNoise-Drf4_hBO.js → BlockNoise-BMt760_p.js} +36 -113
- package/dist/core/{BlueNoise-CEwncn_5.js → BlueNoise-Cfo_HthN.js} +24 -46
- package/dist/core/Blur-Bc8evwsz.js +428 -0
- package/dist/core/{Boids-D0-S7SI7.js → Boids-CtvT1VsV.js} +105 -427
- package/dist/core/{BokehBlur-CXBx5wog.js → BokehBlur-CWQm00ut.js} +37 -214
- package/dist/core/{BrickPattern-BKuDn_RF.js → BrickPattern-DomddM0C.js} +89 -335
- package/dist/core/{BrightnessContrast-ph33aPUw.js → BrightnessContrast-Bs8AV0he.js} +16 -15
- package/dist/core/{BrushedMetal-CDtIZKcg.js → BrushedMetal-BAgNgeo1.js} +246 -798
- package/dist/core/{Bulge-fgRLH3BN.js → Bulge-CdhRTWSH.js} +13 -71
- package/dist/core/{CRTScreen-CSRu7VZT.js → CRTScreen-BxnPxDw9.js} +1 -1
- package/dist/core/{CarbonFiber-DXa8yomK.js → CarbonFiber-mK6eHIpy.js} +189 -736
- package/dist/core/{Chalkboard-UKLkHrLB.js → Chalkboard-BizZEHlC.js} +2 -2
- package/dist/core/{ChannelBlur-Bfl6C2nt.js → ChannelBlur-Oz40DKPZ.js} +15 -39
- package/dist/core/{CheckerWipe-DDUBzOJZ.js → CheckerWipe-yv4dK6n5.js} +83 -211
- package/dist/core/Checkerboard-Ynfnt3oJ.js +158 -0
- package/dist/core/{Chevron-Bc0h2Rzv.js → Chevron-CEwNP2vt.js} +46 -117
- package/dist/core/{ChromaFlow-wBzMJ-PA.js → ChromaFlow-BXw1jQkn.js} +3 -3
- package/dist/core/{ChromaticAberration--78QtyKl.js → ChromaticAberration-CWhYEGDU.js} +2 -2
- package/dist/core/Chrome-DoPYr4Kd.js +3438 -0
- package/dist/core/Circle-DGvP0Svo.js +267 -0
- package/dist/core/{ColorWheel-BLgkdEmc.js → ColorWheel-BCReEdLZ.js} +48 -63
- package/dist/core/{CompressionArtifacts-C61W9yw2.js → CompressionArtifacts-Cm0iOzys.js} +2 -2
- package/dist/core/{ConcentricSpin-BA-pPXA5.js → ConcentricSpin-B3GHzoS1.js} +37 -146
- package/dist/core/{ConicGradient-DD2NOoA2.js → ConicGradient-C3zzgyV4.js} +25 -143
- package/dist/core/{ContourLines-rxGkKb2q.js → ContourLines-DDzxvg9k.js} +5 -66
- package/dist/core/{CornerPin-CHkM91UE.js → CornerPin-VFPI_Jzq.js} +9 -54
- package/dist/core/Crescent-DL6EeZZp.js +187 -0
- package/dist/core/Cross-DQIgZt-C.js +188 -0
- package/dist/core/{Crystal-0oIYL_aS.js → Crystal-B9DIgDD7.js} +81 -262
- package/dist/core/{CurlNoise-BJCULaf9.js → CurlNoise-D6kSV8PJ.js} +40 -98
- package/dist/core/{CursorRipples-BLDfv2sS.js → CursorRipples-C1hLNWzZ.js} +63 -60
- package/dist/core/{CursorTrail-ByRtE4T-.js → CursorTrail-CPW8orHG.js} +66 -52
- package/dist/core/{DataMosh-zH8BS7dt.js → DataMosh-CjVK_gxL.js} +23 -56
- package/dist/core/{DiamondGradient-D6_jgke5.js → DiamondGradient-BkrLPdAd.js} +43 -186
- package/dist/core/{DiamondWipe-CeJJPxX6.js → DiamondWipe-Cscn7Dyy.js} +45 -205
- package/dist/core/{DiffuseBlur-CPniI-42.js → DiffuseBlur-DUBfHpUN.js} +8 -11
- package/dist/core/{DisplacementMap-CCnnAPvB.js → DisplacementMap-B-cVoGbC.js} +4 -3
- package/dist/core/{Dither-WIfj4N7O.js → Dither-B4lhnNLA.js} +9 -12
- package/dist/core/{DotGrid-BhzPWYK4.js → DotGrid-CJJXTOk6.js} +78 -355
- package/dist/core/{DropShadow-D-YFgaHS.js → DropShadow-B4msUftn.js} +31 -32
- package/dist/core/{Duotone-lXgv9Fip.js → Duotone-DF3dn0kC.js} +11 -8
- package/dist/core/Ellipse-WuGsM7Gr.js +168 -0
- package/dist/core/{Emboss-UmDoGSQF.js → Emboss-D5RYAc-U.js} +14 -35
- package/dist/core/{Engraving-CN0OrgUo.js → Engraving-DNNHKvIr.js} +12 -12
- package/dist/core/{ErosionNoise-Wu1fxJfJ.js → ErosionNoise-w1aTuwY4.js} +35 -98
- package/dist/core/{Exposure-B5oEoUk-.js → Exposure-BSsbosYN.js} +15 -11
- package/dist/core/{FallingLines-CsNVa3dc.js → FallingLines-C1YT49dj.js} +13 -14
- package/dist/core/{FilmGrain-Br5EDq0B.js → FilmGrain-BeZQzxdU.js} +21 -15
- package/dist/core/{FilmStock-BzaKrJRG.js → FilmStock-Bgn9OyQY.js} +9 -734
- package/dist/core/{Flip-HRnCpBGd.js → Flip-DJuox9qR.js} +11 -25
- package/dist/core/{FloatingParticles-DNGXQrHG.js → FloatingParticles-Ch5OJjCc.js} +128 -447
- package/dist/core/{FlowField-rJGiwKMI.js → FlowField-Cime_Fqy.js} +6 -5
- package/dist/core/Flower--1qeeCuA.js +187 -0
- package/dist/core/{FlowingGradient-CD6_NVZB.js → FlowingGradient-DL1e3OKu.js} +12 -17
- package/dist/core/{FlutedGlass-CrKD5b4k.js → FlutedGlass-CqSVa4kd.js} +5 -4
- package/dist/core/Fog-DvOvVKbF.js +2261 -0
- package/dist/core/{Form3D-DQ7SxWFV.js → Form3D-CabM27VZ.js} +152 -838
- package/dist/core/{FractalNoise-DOU_jooR.js → FractalNoise-Bu8FbMYX.js} +57 -321
- package/dist/core/{Frost-BEnyt-CW.js → Frost-BnE3EI6s.js} +77 -170
- package/dist/core/{GaborNoise-CMt5270_.js → GaborNoise-BZFyQbDr.js} +36 -99
- package/dist/core/{Glass-CSJ1vRoj.js → Glass-DPa3OWjZ.js} +15 -27
- package/dist/core/{GlassTiles-C3w1jqsb.js → GlassTiles-B4Y8x78X.js} +3 -2
- package/dist/core/{Glitch-BxP1fWwQ.js → Glitch-nokyLk8Q.js} +1 -1
- package/dist/core/Glow-C3VfGUb6.js +198 -0
- package/dist/core/{Godrays-DsolPk6B.js → Godrays-fglKeS0z.js} +37 -72
- package/dist/core/{Goo-Db0tOvqs.js → Goo-BPaUKk1S.js} +13 -42
- package/dist/core/{GradientMap-BfpgWnfm.js → GradientMap-DQ4IbzIx.js} +23 -17
- package/dist/core/{Grayscale-DTrRYf14.js → Grayscale-Bpp1Q2KT.js} +9 -11
- package/dist/core/Grid-BneV9T3T.js +684 -0
- package/dist/core/{GridDistortion-Du7cRxX_.js → GridDistortion-CAKSKhII.js} +8 -53
- package/dist/core/{Group-BKumfLn_.js → Group-UvbIuzy-.js} +1 -1
- package/dist/core/{HTMLInCanvas-CtKAkjSy.js → HTMLInCanvas-CMxSuq5H.js} +16 -27
- package/dist/core/{Halftone-CwWlH4Zi.js → Halftone-SiFx0wAg.js} +4 -3
- package/dist/core/Heart-DLQnxsbQ.js +144 -0
- package/dist/core/{Heatmap-D-61Tysu.js → Heatmap-Bp0wi8r1.js} +14 -31
- package/dist/core/{HexGrid-BxgXRDm3.js → HexGrid-LGx240mZ.js} +82 -486
- package/dist/core/{Hologram-DIgdhf5F.js → Hologram-B-090nzV.js} +14 -48
- package/dist/core/{Holographic-BNMw20mj.js → Holographic-CSIQUm1_.js} +90 -298
- package/dist/core/{HueShift-CiG-leUg.js → HueShift-B7l4vcZP.js} +17 -14
- package/dist/core/ImageTexture-D41xKACO.js +58 -0
- package/dist/core/InkFlow-Bd4RXQmm.js +1159 -0
- package/dist/core/{Invert-QtF0OVwG.js → Invert-CEfJB0WN.js} +9 -11
- package/dist/core/IrisWipe-O6dc-Aq2.js +163 -0
- package/dist/core/{IsometricCubes-C87okilH.js → IsometricCubes-BQFwe-5s.js} +106 -473
- package/dist/core/{Kaleidoscope-Ue2Atc25.js → Kaleidoscope-DQFV4-lX.js} +15 -71
- package/dist/core/{KeyFrames-Bb_6EmyV.js → KeyFrames-BjH6gHSf.js} +32 -67
- package/dist/core/{LensDistortion-DxhU8nws.js → LensDistortion-BcodYk7_.js} +3 -3
- package/dist/core/{LensFlare-YXo4zdAn.js → LensFlare-B4F0dq7O.js} +106 -348
- package/dist/core/{LightEdge-BzESg64B.js → LightEdge-l2zPIeMQ.js} +14 -31
- package/dist/core/{LightLeak-BQKAeM6h.js → LightLeak-BSy19CB6.js} +49 -333
- package/dist/core/Line-CRGYWOyW.js +1428 -0
- package/dist/core/{LinearBlur-DaAraWV3.js → LinearBlur-DGfbbIWb.js} +20 -31
- package/dist/core/{LinearGradient-CL5FnVfT.js → LinearGradient-DOWwm0bP.js} +59 -110
- package/dist/core/LinearWipe-0nTDgTcZ.js +162 -0
- package/dist/core/{LiquidMetal-BRhwukdo.js → LiquidMetal-BbyxqZoO.js} +180 -347
- package/dist/core/{Liquify-p_Gz_FHr.js → Liquify-Bg2tEc64.js} +10 -54
- package/dist/core/{MagneticFilings-DOvxWL0a.js → MagneticFilings-5NVqpsrW.js} +123 -416
- package/dist/core/{Marble-CkYRfCV8.js → Marble-CzoJcXvo.js} +14 -15
- package/dist/core/{Mirror-CxoKC1gR.js → Mirror-B_2eQT6d.js} +11 -67
- package/dist/core/{MultiPointGradient-B4qZwcHL.js → MultiPointGradient-NJZfFGVb.js} +27 -140
- package/dist/core/{Neon-C2QmSiyi.js → Neon-m8PtEGdE.js} +14 -33
- package/dist/core/{NoiseDissolve-DaNRO71N.js → NoiseDissolve-DxvqR71w.js} +21 -129
- package/dist/core/{ObjectTracker-e4hHSKMw.js → ObjectTracker-DlVNN9LJ.js} +41 -51
- package/dist/core/{PagePeel-DT6GI9mV.js → PagePeel-BZOvdHFV.js} +3 -2
- package/dist/core/{Paper-QrPBpeei.js → Paper-Bn3DETI2.js} +2 -2
- package/dist/core/Parallelogram-a6zB6mY9.js +187 -0
- package/dist/core/{ParticleField-B1nL_L7A.js → ParticleField-CUtlCqxz.js} +172 -385
- package/dist/core/{ParticleFlow-w2G9pdt5.js → ParticleFlow-Ck5Ta_Rj.js} +250 -2572
- package/dist/core/{Particles-BsxM8Kbc.js → Particles-rnTAu4Mr.js} +366 -475
- package/dist/core/{PerlinNoise-DqZj-I8R.js → PerlinNoise-BUbmE_JA.js} +36 -113
- package/dist/core/{Perspective-BzxylO20.js → Perspective-S94umCQn.js} +17 -71
- package/dist/core/{PixelSort-Dm2iMElk.js → PixelSort-CF0-TpU7.js} +2 -2
- package/dist/core/{PixelThrow-gRTKhK8X.js → PixelThrow-B7Ry665b.js} +7 -651
- package/dist/core/{Pixelate-B8ZnTAOo.js → Pixelate-BLdO8qAT.js} +1 -1
- package/dist/core/Plasma-DOH9gxWt.js +355 -0
- package/dist/core/{Plastic-DMJ99k56.js → Plastic-CQNoTl22.js} +86 -271
- package/dist/core/{PolarCoordinates-DOhGjR_6.js → PolarCoordinates-DZNOyHmN.js} +15 -72
- package/dist/core/Polygon-BM3xGxOC.js +231 -0
- package/dist/core/{Posterize-OvT-UsAO.js → Posterize-BJl7Irml.js} +51 -18
- package/dist/core/{Prism-DYBxTA6Z.js → Prism-CaJyExNA.js} +3 -3
- package/dist/core/{ProgressiveBlur-Da5uOM1i.js → ProgressiveBlur-B1Ur87dm.js} +56 -368
- package/dist/core/{RadialGradient-o_6P-7Dn.js → RadialGradient-C1Fb8TaL.js} +44 -185
- package/dist/core/RadialWipe-CA5xWWPN.js +222 -0
- package/dist/core/RandomBars-B7ZwitL3.js +238 -0
- package/dist/core/{ReactionDiffusion-DWTCvJJu.js → ReactionDiffusion--54drNkY.js} +403 -1270
- package/dist/core/{RectangularCoordinates-PM_QP9Cg.js → RectangularCoordinates-BEOFurXt.js} +14 -70
- package/dist/core/{ReflectivePlane-BpXGIShc.js → ReflectivePlane-wERmyiKx.js} +12 -77
- package/dist/core/{Repeater-CE4LJUbK.js → Repeater-Cy8up7cj.js} +2 -2
- package/dist/core/{Ring-DObEwgX4.js → Ring-Cogdtn-0.js} +19 -134
- package/dist/core/{RippleWipe-DQNw1oen.js → RippleWipe-fJwyE4vj.js} +24 -273
- package/dist/core/{Ripples-DKMqucX3.js → Ripples-BSHfhVG1.js} +3 -3
- package/dist/core/RoundedRect-D3intNNI.js +188 -0
- package/dist/core/{Saturation-BA0cEqnb.js → Saturation-D42Bfc5P.js} +14 -12
- package/dist/core/{Scratches-CvOYMmEB.js → Scratches-Ih3Kx_UW.js} +5 -5
- package/dist/core/{Sharpness-B25UDMka.js → Sharpness-Dyh6312-.js} +11 -11
- package/dist/core/{Shatter-BSaxWBf3.js → Shatter-Qc5aMkWj.js} +3 -4
- package/dist/core/{SimplexNoise-X8ctCpRm.js → SimplexNoise-E7ssgWPN.js} +37 -179
- package/dist/core/{SineWave-BZpbJLxE.js → SineWave-CnPtZLSs.js} +6 -5
- package/dist/core/{SliceWipe-CgUPHf9K.js → SliceWipe-Byb46V6I.js} +15 -25
- package/dist/core/Smoke-5x6IAk2_.js +1265 -0
- package/dist/core/SmokeFill-DOQpTlCv.js +3192 -0
- package/dist/core/SmokeFlow-B4fdM2M-.js +903 -0
- package/dist/core/{Solarize-BFDNOt5j.js → Solarize-BB0bXhP0.js} +15 -15
- package/dist/core/{SolidColor-dYxjV0YF.js → SolidColor-D-6N9JmI.js} +1 -1
- package/dist/core/{Spherize-B6SvuqQJ.js → Spherize-aWpru70e.js} +2 -2
- package/dist/core/{Spiral-CPZP_vQa.js → Spiral-Dbm2j7mM.js} +5 -4
- package/dist/core/Star-XtB9FBhQ.js +187 -0
- package/dist/core/{Stone-4agvCnSU.js → Stone-i7v3RIb9.js} +2 -2
- package/dist/core/{Strands-CmapxVwQ.js → Strands-BFaZBnNo.js} +6 -5
- package/dist/core/{Stretch-C1LWL_wK.js → Stretch-BKg0gjm4.js} +15 -72
- package/dist/core/{Stripes-EOLd6RRs.js → Stripes-B_SkTR2m.js} +83 -378
- package/dist/core/{StudioBackground-C7jsxhTF.js → StudioBackground-CUsUWJ2L.js} +14 -133
- package/dist/core/{SunBurst-CW8v2t1A.js → SunBurst-DiqSzz5A.js} +34 -52
- package/dist/core/{Surface3D-GduOaT4l.js → Surface3D-DxzfMHn2.js} +15 -21
- package/dist/core/{Swirl-DOWMWPUy.js → Swirl-DBxZ6Wud.js} +3 -3
- package/dist/core/Teardrop-CnhwMyQx.js +168 -0
- package/dist/core/{Text-BcmS8Qpt.js → Text-Cb6QJNWo.js} +51 -70
- package/dist/core/{ThinFilm-CA62fdTo.js → ThinFilm-B7CTONK1.js} +28 -176
- package/dist/core/{TiltShift-CYsneEnY.js → TiltShift-DqEFOoJG.js} +62 -368
- package/dist/core/{TimeTrail-UGRKixHj.js → TimeTrail-G_JamlY8.js} +28 -73
- package/dist/core/{Tint-DjGTug2D.js → Tint-Dj1rSoJ0.js} +14 -21
- package/dist/core/{Trapezoid-bgyR835g.js → Trapezoid-D2PMU9G3.js} +40 -160
- package/dist/core/{TriangularGrid-CUSkwEhh.js → TriangularGrid-C3DBCmaj.js} +69 -349
- package/dist/core/{Tritone-0AbzRJ53.js → Tritone-DfULv51I.js} +11 -8
- package/dist/core/{Truchet-C3rl-XiI.js → Truchet-yjZm8xe3.js} +73 -172
- package/dist/core/{Twirl-CPZBpUkY.js → Twirl-DfRsql00.js} +11 -67
- package/dist/core/{VHS-BIeq0vbY.js → VHS-Z23X9XD6.js} +1 -1
- package/dist/core/VenetianBlinds-CCucT73e.js +188 -0
- package/dist/core/Vesica-BIGpXjWv.js +168 -0
- package/dist/core/{Vibrance-gTtCSaNa.js → Vibrance-CtlvCONz.js} +15 -11
- package/dist/core/VideoTexture-DW6bQduh.js +58 -0
- package/dist/core/{Vignette-y7R3ujxN.js → Vignette-Dz3pPnPR.js} +24 -21
- package/dist/core/Voronoi-5QA-0zme.js +363 -0
- package/dist/core/{Water-BvymB3Av.js → Water-DlvNrnrU.js} +84 -269
- package/dist/core/{Watercolor-C7vDF39A.js → Watercolor-BWx4xdwk.js} +3 -3
- package/dist/core/{WaveDistortion-DMfhW-zm.js → WaveDistortion-CRQzZDLP.js} +18 -66
- package/dist/core/{WaveletNoise-CqnpQKOm.js → WaveletNoise-CZS67VBU.js} +36 -99
- package/dist/core/{Weave-CcYi9PzL.js → Weave-DpwAU5Rn.js} +77 -254
- package/dist/core/WebcamTexture-DauLQjCl.js +130 -0
- package/dist/core/{Wool-CpI-Xd6P.js → Wool-CEaWGZB1.js} +2 -2
- package/dist/core/WorleyNoise-CjRMr7xP.js +558 -0
- package/dist/core/{ZoomBlur-CSFf3Q4x.js → ZoomBlur-DgG9JA7a.js} +18 -29
- package/dist/core/aa-C8WSqiNB.js +1094 -0
- package/dist/core/{agents-BuYW06Wk.js → agents-C_kohsYu.js} +1 -1
- package/dist/core/bevel-ogqjoZKV.js +121 -0
- package/dist/core/{blur-BAqURXkj.js → blur-CZuIxzX6.js} +1782 -3
- package/dist/core/canvasRaster-BB2bNhS7.js +80 -0
- package/dist/core/cells-CM9mfnTr.js +1042 -0
- package/dist/core/cellular-qYnxKdPx.js +1593 -0
- package/dist/core/constants-DoOzbl5b.js +9 -0
- package/dist/core/{sdf-B5E-Vv1j.js → device-B0ZwBfOg.js} +107 -6
- package/dist/core/{edges-Dm0I-Ud7.js → edges-CD7gCAto.js} +665 -1
- package/dist/core/fields-CC0756V2.js +1311 -0
- package/dist/core/geom-90G-d_hc.js +1036 -0
- package/dist/core/{glass-ClmiwTb0.js → glass-D8xs_kIG.js} +1 -1
- package/dist/core/gpu/compute.d.ts +80 -9
- package/dist/core/gpu/compute.d.ts.map +1 -1
- package/dist/core/gpu/contract.d.ts +22 -1
- package/dist/core/gpu/contract.d.ts.map +1 -1
- package/dist/core/gpu/kit/aa.d.ts +111 -0
- package/dist/core/gpu/kit/aa.d.ts.map +1 -0
- package/dist/core/gpu/kit/blur.d.ts +288 -9
- package/dist/core/gpu/kit/blur.d.ts.map +1 -1
- package/dist/core/gpu/kit/cells.d.ts +136 -0
- package/dist/core/gpu/kit/cells.d.ts.map +1 -0
- package/dist/core/gpu/kit/cellular.d.ts +102 -0
- package/dist/core/gpu/kit/cellular.d.ts.map +1 -0
- package/dist/core/gpu/kit/constants.d.ts +52 -0
- package/dist/core/gpu/kit/constants.d.ts.map +1 -0
- package/dist/core/gpu/kit/effects/bevel.d.ts +5 -0
- package/dist/core/gpu/kit/effects/bevel.d.ts.map +1 -0
- package/dist/core/gpu/kit/effects/index.d.ts +3 -3
- package/dist/core/gpu/kit/effects/index.d.ts.map +1 -1
- package/dist/core/gpu/kit/effects/raymarch3d.d.ts +17 -34
- package/dist/core/gpu/kit/effects/raymarch3d.d.ts.map +1 -1
- package/dist/core/gpu/kit/effects/thinFilm.d.ts +3 -1
- package/dist/core/gpu/kit/effects/thinFilm.d.ts.map +1 -1
- package/dist/core/gpu/kit/fields.d.ts +143 -0
- package/dist/core/gpu/kit/fields.d.ts.map +1 -0
- package/dist/core/gpu/kit/geom.d.ts +129 -0
- package/dist/core/gpu/kit/geom.d.ts.map +1 -0
- package/dist/core/gpu/kit/host/canvasRaster.d.ts +104 -0
- package/dist/core/gpu/kit/host/canvasRaster.d.ts.map +1 -0
- package/dist/core/gpu/kit/host/mediaLifecycle.d.ts +173 -0
- package/dist/core/gpu/kit/host/mediaLifecycle.d.ts.map +1 -0
- package/dist/core/gpu/kit/host/pointer.d.ts +155 -0
- package/dist/core/gpu/kit/host/pointer.d.ts.map +1 -0
- package/dist/core/gpu/kit/index.d.ts +10 -0
- package/dist/core/gpu/kit/index.d.ts.map +1 -1
- package/dist/core/gpu/kit/lightfields.d.ts +114 -0
- package/dist/core/gpu/kit/lightfields.d.ts.map +1 -0
- package/dist/core/gpu/kit/lighting.d.ts +115 -0
- package/dist/core/gpu/kit/lighting.d.ts.map +1 -0
- package/dist/core/gpu/kit/media.d.ts +44 -0
- package/dist/core/gpu/kit/media.d.ts.map +1 -1
- package/dist/core/gpu/kit/noiseColor.d.ts +19 -4
- package/dist/core/gpu/kit/noiseColor.d.ts.map +1 -1
- package/dist/core/gpu/kit/reveal.d.ts +75 -0
- package/dist/core/gpu/kit/reveal.d.ts.map +1 -0
- package/dist/core/gpu/kit/sampling.d.ts +43 -0
- package/dist/core/gpu/kit/sampling.d.ts.map +1 -1
- package/dist/core/gpu/kit/sdf.d.ts +23 -0
- package/dist/core/gpu/kit/sdf.d.ts.map +1 -1
- package/dist/core/gpu/kit/sdf3d.d.ts +54 -1
- package/dist/core/gpu/kit/sdf3d.d.ts.map +1 -1
- package/dist/core/gpu/kit/tone.d.ts +100 -0
- package/dist/core/gpu/kit/tone.d.ts.map +1 -0
- package/dist/core/gpu/porters.d.ts +11 -1
- package/dist/core/gpu/porters.d.ts.map +1 -1
- package/dist/core/gpu/scaffolds/agentSystem.d.ts +244 -0
- package/dist/core/gpu/scaffolds/agentSystem.d.ts.map +1 -0
- package/dist/core/gpu/scaffolds/feedbackSim.d.ts +102 -0
- package/dist/core/gpu/scaffolds/feedbackSim.d.ts.map +1 -0
- package/dist/core/gpu/scaffolds/fluids.d.ts +170 -0
- package/dist/core/gpu/scaffolds/fluids.d.ts.map +1 -0
- package/dist/core/gpu/scaffolds/lateBoundChild.d.ts +51 -0
- package/dist/core/gpu/scaffolds/lateBoundChild.d.ts.map +1 -0
- package/dist/core/gpu/scaffolds/pointwiseFilter.d.ts +77 -0
- package/dist/core/gpu/scaffolds/pointwiseFilter.d.ts.map +1 -0
- package/dist/core/gpu/scaffolds/rttFilter.d.ts +35 -0
- package/dist/core/gpu/scaffolds/rttFilter.d.ts.map +1 -0
- package/dist/core/gpu/scaffolds/sdfShape.d.ts +98 -0
- package/dist/core/gpu/scaffolds/sdfShape.d.ts.map +1 -0
- package/dist/core/gpu/scaffolds/shared.d.ts +16 -0
- package/dist/core/gpu/scaffolds/shared.d.ts.map +1 -0
- package/dist/core/gpu/scaffolds/simShared.d.ts +61 -0
- package/dist/core/gpu/scaffolds/simShared.d.ts.map +1 -0
- package/dist/core/gpu/scaffolds/uvRemapShader.d.ts +134 -0
- package/dist/core/gpu/scaffolds/uvRemapShader.d.ts.map +1 -0
- package/dist/core/index.js +227 -212
- package/dist/core/lightfields-ffHoLyJn.js +1550 -0
- package/dist/core/lighting-D3jc6qOc.js +1270 -0
- package/dist/core/{media-_wFh8vJm.js → media-fQMXfvXd.js} +31 -2
- package/dist/core/mediaLifecycle-yHZ8w5aj.js +314 -0
- package/dist/core/{noise-C_ZfgxTN.js → noise-Bd6IGS0W.js} +1 -1
- package/dist/core/{noiseColor-Buljb-6r.js → noiseColor-DRDY44sf.js} +2 -2
- package/dist/core/noiseColor-DYhX5Js1.js +28 -0
- package/dist/core/{noiseStylize-7YW6DiP4.js → noiseStylize-CkeVSB9C.js} +2 -2
- package/dist/core/pointer-DGDGF-yO.js +88 -0
- package/dist/core/porters-DUtQounc.js +12220 -0
- package/dist/core/propConfigs-k3hs8KYL.js +190 -0
- package/dist/core/registry.js +222 -209
- package/dist/core/reveal-DhktaT1C.js +1071 -0
- package/dist/core/{shapeEffectBounds-CjOvQ3n3.js → sdf3d-CP87OlsQ.js} +18752 -18710
- package/dist/core/shaderRegistry-CRAdWHAK.js +431 -0
- package/dist/core/shaderRegistry.d.ts.map +1 -1
- package/dist/core/shaders/AngularBlur/index.d.ts +8 -4
- package/dist/core/shaders/AngularBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/AngularBlur/index.js +7 -5
- package/dist/core/shaders/Arc/index.d.ts +0 -65
- package/dist/core/shaders/Arc/index.d.ts.map +1 -1
- package/dist/core/shaders/Arc/index.js +6 -7
- package/dist/core/shaders/Ascii/index.d.ts.map +1 -1
- package/dist/core/shaders/Ascii/index.js +8 -5
- package/dist/core/shaders/Aurora/index.d.ts.map +1 -1
- package/dist/core/shaders/Aurora/index.js +9 -6
- package/dist/core/shaders/BarShift/index.d.ts +1 -7
- package/dist/core/shaders/BarShift/index.d.ts.map +1 -1
- package/dist/core/shaders/BarShift/index.js +8 -6
- package/dist/core/shaders/BarnDoors/index.d.ts.map +1 -1
- package/dist/core/shaders/BarnDoors/index.js +8 -5
- package/dist/core/shaders/Beam/index.d.ts.map +1 -1
- package/dist/core/shaders/Beam/index.js +9 -5
- package/dist/core/shaders/Bend/index.d.ts +0 -6
- package/dist/core/shaders/Bend/index.d.ts.map +1 -1
- package/dist/core/shaders/Bend/index.js +7 -5
- package/dist/core/shaders/Blob/index.js +6 -5
- package/dist/core/shaders/BlockDissolve/index.d.ts.map +1 -1
- package/dist/core/shaders/BlockDissolve/index.js +9 -6
- package/dist/core/shaders/BlockNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/BlockNoise/index.js +13 -8
- package/dist/core/shaders/BlueNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/BlueNoise/index.js +13 -8
- package/dist/core/shaders/Blur/index.d.ts +6 -6
- package/dist/core/shaders/Blur/index.d.ts.map +1 -1
- package/dist/core/shaders/Blur/index.js +7 -6
- package/dist/core/shaders/Boids/index.d.ts.map +1 -1
- package/dist/core/shaders/Boids/index.js +9 -8
- package/dist/core/shaders/BokehBlur/index.d.ts +16 -16
- package/dist/core/shaders/BokehBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/BokehBlur/index.js +8 -6
- package/dist/core/shaders/BrickPattern/index.d.ts.map +1 -1
- package/dist/core/shaders/BrickPattern/index.js +10 -5
- package/dist/core/shaders/BrightnessContrast/index.d.ts.map +1 -1
- package/dist/core/shaders/BrightnessContrast/index.js +6 -5
- package/dist/core/shaders/BrushedMetal/index.d.ts +13 -1
- package/dist/core/shaders/BrushedMetal/index.d.ts.map +1 -1
- package/dist/core/shaders/BrushedMetal/index.js +12 -11
- package/dist/core/shaders/Bulge/index.d.ts +2 -16
- package/dist/core/shaders/Bulge/index.d.ts.map +1 -1
- package/dist/core/shaders/Bulge/index.js +6 -5
- package/dist/core/shaders/CRTScreen/index.js +6 -5
- package/dist/core/shaders/CarbonFiber/index.d.ts +13 -1
- package/dist/core/shaders/CarbonFiber/index.d.ts.map +1 -1
- package/dist/core/shaders/CarbonFiber/index.js +12 -11
- package/dist/core/shaders/Chalkboard/index.js +6 -5
- package/dist/core/shaders/ChannelBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/ChannelBlur/index.js +7 -6
- package/dist/core/shaders/CheckerWipe/index.d.ts.map +1 -1
- package/dist/core/shaders/CheckerWipe/index.js +8 -5
- package/dist/core/shaders/Checkerboard/index.d.ts +0 -2
- package/dist/core/shaders/Checkerboard/index.d.ts.map +1 -1
- package/dist/core/shaders/Checkerboard/index.js +9 -6
- package/dist/core/shaders/Chevron/index.d.ts.map +1 -1
- package/dist/core/shaders/Chevron/index.js +8 -5
- package/dist/core/shaders/ChromaFlow/index.js +6 -6
- package/dist/core/shaders/ChromaticAberration/index.js +6 -5
- package/dist/core/shaders/Chrome/index.d.ts +152 -0
- package/dist/core/shaders/Chrome/index.d.ts.map +1 -0
- package/dist/core/shaders/Chrome/index.js +14 -0
- package/dist/core/shaders/Circle/index.d.ts +0 -50
- package/dist/core/shaders/Circle/index.d.ts.map +1 -1
- package/dist/core/shaders/Circle/index.js +6 -7
- package/dist/core/shaders/ColorWheel/index.d.ts.map +1 -1
- package/dist/core/shaders/ColorWheel/index.js +8 -5
- package/dist/core/shaders/CompressionArtifacts/index.js +6 -5
- package/dist/core/shaders/ConcentricSpin/index.d.ts +3 -17
- package/dist/core/shaders/ConcentricSpin/index.d.ts.map +1 -1
- package/dist/core/shaders/ConcentricSpin/index.js +8 -6
- package/dist/core/shaders/ConicGradient/index.d.ts.map +1 -1
- package/dist/core/shaders/ConicGradient/index.js +10 -5
- package/dist/core/shaders/ContourLines/index.d.ts +1 -1
- package/dist/core/shaders/ContourLines/index.d.ts.map +1 -1
- package/dist/core/shaders/ContourLines/index.js +7 -5
- package/dist/core/shaders/CornerPin/index.d.ts +0 -6
- package/dist/core/shaders/CornerPin/index.d.ts.map +1 -1
- package/dist/core/shaders/CornerPin/index.js +6 -5
- package/dist/core/shaders/Crescent/index.d.ts +0 -71
- package/dist/core/shaders/Crescent/index.d.ts.map +1 -1
- package/dist/core/shaders/Crescent/index.js +6 -7
- package/dist/core/shaders/Cross/index.d.ts +0 -71
- package/dist/core/shaders/Cross/index.d.ts.map +1 -1
- package/dist/core/shaders/Cross/index.js +6 -7
- package/dist/core/shaders/Crystal/index.d.ts.map +1 -1
- package/dist/core/shaders/Crystal/index.js +11 -11
- package/dist/core/shaders/CurlNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/CurlNoise/index.js +13 -8
- package/dist/core/shaders/CursorRipples/index.d.ts.map +1 -1
- package/dist/core/shaders/CursorRipples/index.js +7 -5
- package/dist/core/shaders/CursorTrail/index.d.ts.map +1 -1
- package/dist/core/shaders/CursorTrail/index.js +7 -5
- package/dist/core/shaders/DataMosh/index.d.ts.map +1 -1
- package/dist/core/shaders/DataMosh/index.js +6 -5
- package/dist/core/shaders/DiamondGradient/index.d.ts.map +1 -1
- package/dist/core/shaders/DiamondGradient/index.js +10 -5
- package/dist/core/shaders/DiamondWipe/index.d.ts.map +1 -1
- package/dist/core/shaders/DiamondWipe/index.js +8 -5
- package/dist/core/shaders/DiffuseBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/DiffuseBlur/index.js +6 -5
- package/dist/core/shaders/DisplacementMap/index.d.ts.map +1 -1
- package/dist/core/shaders/DisplacementMap/index.js +7 -5
- package/dist/core/shaders/Dither/index.d.ts.map +1 -1
- package/dist/core/shaders/Dither/index.js +6 -5
- package/dist/core/shaders/DotGrid/index.d.ts +0 -1
- package/dist/core/shaders/DotGrid/index.d.ts.map +1 -1
- package/dist/core/shaders/DotGrid/index.js +11 -6
- package/dist/core/shaders/DropShadow/index.d.ts.map +1 -1
- package/dist/core/shaders/DropShadow/index.js +8 -5
- package/dist/core/shaders/Duotone/index.d.ts.map +1 -1
- package/dist/core/shaders/Duotone/index.js +6 -5
- package/dist/core/shaders/Ellipse/index.d.ts +0 -65
- package/dist/core/shaders/Ellipse/index.d.ts.map +1 -1
- package/dist/core/shaders/Ellipse/index.js +6 -7
- package/dist/core/shaders/Emboss/index.d.ts.map +1 -1
- package/dist/core/shaders/Emboss/index.js +8 -10
- package/dist/core/shaders/Engraving/index.d.ts.map +1 -1
- package/dist/core/shaders/Engraving/index.js +8 -6
- package/dist/core/shaders/ErosionNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/ErosionNoise/index.js +13 -8
- package/dist/core/shaders/Exposure/index.d.ts.map +1 -1
- package/dist/core/shaders/Exposure/index.js +6 -5
- package/dist/core/shaders/FallingLines/index.d.ts.map +1 -1
- package/dist/core/shaders/FallingLines/index.js +8 -5
- package/dist/core/shaders/FilmGrain/index.d.ts.map +1 -1
- package/dist/core/shaders/FilmGrain/index.js +6 -5
- package/dist/core/shaders/FilmStock/index.d.ts +9 -10
- package/dist/core/shaders/FilmStock/index.d.ts.map +1 -1
- package/dist/core/shaders/FilmStock/index.js +7 -6
- package/dist/core/shaders/Flip/index.d.ts.map +1 -1
- package/dist/core/shaders/Flip/index.js +6 -5
- package/dist/core/shaders/FloatingParticles/index.d.ts.map +1 -1
- package/dist/core/shaders/FloatingParticles/index.js +9 -8
- package/dist/core/shaders/FlowField/index.d.ts.map +1 -1
- package/dist/core/shaders/FlowField/index.js +8 -6
- package/dist/core/shaders/Flower/index.d.ts +0 -71
- package/dist/core/shaders/Flower/index.d.ts.map +1 -1
- package/dist/core/shaders/Flower/index.js +6 -7
- package/dist/core/shaders/FlowingGradient/index.d.ts.map +1 -1
- package/dist/core/shaders/FlowingGradient/index.js +8 -6
- package/dist/core/shaders/FlutedGlass/index.d.ts.map +1 -1
- package/dist/core/shaders/FlutedGlass/index.js +7 -5
- package/dist/core/shaders/Fog/index.d.ts +1 -9
- package/dist/core/shaders/Fog/index.d.ts.map +1 -1
- package/dist/core/shaders/Fog/index.js +8 -5
- package/dist/core/shaders/Form3D/index.d.ts.map +1 -1
- package/dist/core/shaders/Form3D/index.js +7 -5
- package/dist/core/shaders/FractalNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/FractalNoise/index.js +12 -7
- package/dist/core/shaders/Frost/index.d.ts.map +1 -1
- package/dist/core/shaders/Frost/index.js +11 -11
- package/dist/core/shaders/GaborNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/GaborNoise/index.js +13 -8
- package/dist/core/shaders/Glass/index.d.ts.map +1 -1
- package/dist/core/shaders/Glass/index.js +9 -11
- package/dist/core/shaders/GlassTiles/index.d.ts.map +1 -1
- package/dist/core/shaders/GlassTiles/index.js +7 -5
- package/dist/core/shaders/Glitch/index.js +6 -5
- package/dist/core/shaders/Glow/index.d.ts +22 -26
- package/dist/core/shaders/Glow/index.d.ts.map +1 -1
- package/dist/core/shaders/Glow/index.js +7 -6
- package/dist/core/shaders/Godrays/index.d.ts.map +1 -1
- package/dist/core/shaders/Godrays/index.js +9 -5
- package/dist/core/shaders/Goo/index.d.ts.map +1 -1
- package/dist/core/shaders/Goo/index.js +9 -10
- package/dist/core/shaders/GradientMap/index.d.ts.map +1 -1
- package/dist/core/shaders/GradientMap/index.js +7 -5
- package/dist/core/shaders/Grayscale/index.d.ts.map +1 -1
- package/dist/core/shaders/Grayscale/index.js +6 -5
- package/dist/core/shaders/Grid/index.d.ts +0 -1
- package/dist/core/shaders/Grid/index.d.ts.map +1 -1
- package/dist/core/shaders/Grid/index.js +11 -6
- package/dist/core/shaders/GridDistortion/index.d.ts +0 -6
- package/dist/core/shaders/GridDistortion/index.d.ts.map +1 -1
- package/dist/core/shaders/GridDistortion/index.js +6 -5
- package/dist/core/shaders/Group/index.js +6 -5
- package/dist/core/shaders/HTMLInCanvas/index.d.ts.map +1 -1
- package/dist/core/shaders/HTMLInCanvas/index.js +7 -5
- package/dist/core/shaders/Halftone/index.d.ts.map +1 -1
- package/dist/core/shaders/Halftone/index.js +7 -5
- package/dist/core/shaders/Heart/index.d.ts +0 -59
- package/dist/core/shaders/Heart/index.d.ts.map +1 -1
- package/dist/core/shaders/Heart/index.js +6 -7
- package/dist/core/shaders/Heatmap/index.d.ts.map +1 -1
- package/dist/core/shaders/Heatmap/index.js +10 -11
- package/dist/core/shaders/HexGrid/index.d.ts.map +1 -1
- package/dist/core/shaders/HexGrid/index.js +10 -5
- package/dist/core/shaders/Hologram/index.d.ts.map +1 -1
- package/dist/core/shaders/Hologram/index.js +10 -11
- package/dist/core/shaders/Holographic/index.d.ts.map +1 -1
- package/dist/core/shaders/Holographic/index.js +11 -11
- package/dist/core/shaders/HueShift/index.d.ts.map +1 -1
- package/dist/core/shaders/HueShift/index.js +7 -5
- package/dist/core/shaders/ImageTexture/index.d.ts +0 -6
- package/dist/core/shaders/ImageTexture/index.d.ts.map +1 -1
- package/dist/core/shaders/ImageTexture/index.js +6 -7
- package/dist/core/shaders/InkFlow/index.d.ts +1 -9
- package/dist/core/shaders/InkFlow/index.d.ts.map +1 -1
- package/dist/core/shaders/InkFlow/index.js +7 -5
- package/dist/core/shaders/Invert/index.d.ts.map +1 -1
- package/dist/core/shaders/Invert/index.js +6 -5
- package/dist/core/shaders/IrisWipe/index.d.ts.map +1 -1
- package/dist/core/shaders/IrisWipe/index.js +8 -5
- package/dist/core/shaders/IsometricCubes/index.d.ts.map +1 -1
- package/dist/core/shaders/IsometricCubes/index.js +10 -5
- package/dist/core/shaders/Kaleidoscope/index.d.ts +2 -16
- package/dist/core/shaders/Kaleidoscope/index.d.ts.map +1 -1
- package/dist/core/shaders/Kaleidoscope/index.js +7 -5
- package/dist/core/shaders/KeyFrames/index.d.ts.map +1 -1
- package/dist/core/shaders/KeyFrames/index.js +7 -5
- package/dist/core/shaders/LensDistortion/index.js +6 -6
- package/dist/core/shaders/LensFlare/index.d.ts.map +1 -1
- package/dist/core/shaders/LensFlare/index.js +10 -5
- package/dist/core/shaders/LightEdge/index.d.ts.map +1 -1
- package/dist/core/shaders/LightEdge/index.js +10 -11
- package/dist/core/shaders/LightLeak/index.d.ts.map +1 -1
- package/dist/core/shaders/LightLeak/index.js +10 -6
- package/dist/core/shaders/Line/index.d.ts +72 -0
- package/dist/core/shaders/Line/index.d.ts.map +1 -0
- package/dist/core/shaders/Line/index.js +8 -0
- package/dist/core/shaders/LinearBlur/index.d.ts +2 -1
- package/dist/core/shaders/LinearBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/LinearBlur/index.js +8 -5
- package/dist/core/shaders/LinearGradient/index.d.ts.map +1 -1
- package/dist/core/shaders/LinearGradient/index.js +8 -5
- package/dist/core/shaders/LinearWipe/index.d.ts.map +1 -1
- package/dist/core/shaders/LinearWipe/index.js +8 -5
- package/dist/core/shaders/LiquidMetal/index.d.ts +13 -1
- package/dist/core/shaders/LiquidMetal/index.d.ts.map +1 -1
- package/dist/core/shaders/LiquidMetal/index.js +12 -11
- package/dist/core/shaders/Liquify/index.d.ts +0 -6
- package/dist/core/shaders/Liquify/index.d.ts.map +1 -1
- package/dist/core/shaders/Liquify/index.js +6 -5
- package/dist/core/shaders/MagneticFilings/index.d.ts.map +1 -1
- package/dist/core/shaders/MagneticFilings/index.js +9 -8
- package/dist/core/shaders/Marble/index.d.ts.map +1 -1
- package/dist/core/shaders/Marble/index.js +9 -6
- package/dist/core/shaders/Mirror/index.d.ts +2 -16
- package/dist/core/shaders/Mirror/index.d.ts.map +1 -1
- package/dist/core/shaders/Mirror/index.js +7 -5
- package/dist/core/shaders/MultiPointGradient/index.d.ts.map +1 -1
- package/dist/core/shaders/MultiPointGradient/index.js +7 -5
- package/dist/core/shaders/Neon/index.d.ts.map +1 -1
- package/dist/core/shaders/Neon/index.js +6 -9
- package/dist/core/shaders/NoiseDissolve/index.d.ts.map +1 -1
- package/dist/core/shaders/NoiseDissolve/index.js +9 -6
- package/dist/core/shaders/ObjectTracker/index.d.ts.map +1 -1
- package/dist/core/shaders/ObjectTracker/index.js +9 -6
- package/dist/core/shaders/PagePeel/index.d.ts.map +1 -1
- package/dist/core/shaders/PagePeel/index.js +7 -5
- package/dist/core/shaders/Paper/index.js +7 -6
- package/dist/core/shaders/Parallelogram/index.d.ts +0 -71
- package/dist/core/shaders/Parallelogram/index.d.ts.map +1 -1
- package/dist/core/shaders/Parallelogram/index.js +6 -7
- package/dist/core/shaders/ParticleField/index.d.ts.map +1 -1
- package/dist/core/shaders/ParticleField/index.js +9 -8
- package/dist/core/shaders/ParticleFlow/index.d.ts +1 -6
- package/dist/core/shaders/ParticleFlow/index.d.ts.map +1 -1
- package/dist/core/shaders/ParticleFlow/index.js +9 -8
- package/dist/core/shaders/Particles/index.d.ts.map +1 -1
- package/dist/core/shaders/Particles/index.js +10 -11
- package/dist/core/shaders/PerlinNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/PerlinNoise/index.js +13 -8
- package/dist/core/shaders/Perspective/index.d.ts +0 -12
- package/dist/core/shaders/Perspective/index.d.ts.map +1 -1
- package/dist/core/shaders/Perspective/index.js +7 -5
- package/dist/core/shaders/PixelSort/index.js +6 -5
- package/dist/core/shaders/PixelThrow/index.d.ts +8 -9
- package/dist/core/shaders/PixelThrow/index.d.ts.map +1 -1
- package/dist/core/shaders/PixelThrow/index.js +6 -6
- package/dist/core/shaders/Pixelate/index.js +6 -5
- package/dist/core/shaders/Plasma/index.d.ts +2 -2
- package/dist/core/shaders/Plasma/index.d.ts.map +1 -1
- package/dist/core/shaders/Plasma/index.js +12 -6
- package/dist/core/shaders/Plastic/index.d.ts.map +1 -1
- package/dist/core/shaders/Plastic/index.js +11 -11
- package/dist/core/shaders/PolarCoordinates/index.d.ts +2 -16
- package/dist/core/shaders/PolarCoordinates/index.d.ts.map +1 -1
- package/dist/core/shaders/PolarCoordinates/index.js +7 -5
- package/dist/core/shaders/Polygon/index.d.ts +0 -71
- package/dist/core/shaders/Polygon/index.d.ts.map +1 -1
- package/dist/core/shaders/Polygon/index.js +6 -7
- package/dist/core/shaders/Posterize/index.d.ts.map +1 -1
- package/dist/core/shaders/Posterize/index.js +6 -5
- package/dist/core/shaders/Prism/index.d.ts +2 -1
- package/dist/core/shaders/Prism/index.d.ts.map +1 -1
- package/dist/core/shaders/Prism/index.js +6 -5
- package/dist/core/shaders/ProgressiveBlur/index.d.ts +16 -16
- package/dist/core/shaders/ProgressiveBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/ProgressiveBlur/index.js +8 -6
- package/dist/core/shaders/RadialGradient/index.d.ts.map +1 -1
- package/dist/core/shaders/RadialGradient/index.js +10 -5
- package/dist/core/shaders/RadialWipe/index.d.ts.map +1 -1
- package/dist/core/shaders/RadialWipe/index.js +8 -5
- package/dist/core/shaders/RandomBars/index.d.ts.map +1 -1
- package/dist/core/shaders/RandomBars/index.js +9 -6
- package/dist/core/shaders/ReactionDiffusion/index.d.ts.map +1 -1
- package/dist/core/shaders/ReactionDiffusion/index.js +8 -5
- package/dist/core/shaders/RectangularCoordinates/index.d.ts +2 -16
- package/dist/core/shaders/RectangularCoordinates/index.d.ts.map +1 -1
- package/dist/core/shaders/RectangularCoordinates/index.js +7 -5
- package/dist/core/shaders/ReflectivePlane/index.d.ts.map +1 -1
- package/dist/core/shaders/ReflectivePlane/index.js +7 -6
- package/dist/core/shaders/Repeater/index.js +6 -5
- package/dist/core/shaders/Ring/index.d.ts +0 -59
- package/dist/core/shaders/Ring/index.d.ts.map +1 -1
- package/dist/core/shaders/Ring/index.js +6 -7
- package/dist/core/shaders/RippleWipe/index.d.ts.map +1 -1
- package/dist/core/shaders/RippleWipe/index.js +8 -5
- package/dist/core/shaders/Ripples/index.js +6 -5
- package/dist/core/shaders/RoundedRect/index.d.ts +0 -71
- package/dist/core/shaders/RoundedRect/index.d.ts.map +1 -1
- package/dist/core/shaders/RoundedRect/index.js +6 -7
- package/dist/core/shaders/Saturation/index.d.ts.map +1 -1
- package/dist/core/shaders/Saturation/index.js +6 -5
- package/dist/core/shaders/Scratches/index.js +10 -8
- package/dist/core/shaders/Sharpness/index.d.ts.map +1 -1
- package/dist/core/shaders/Sharpness/index.js +6 -5
- package/dist/core/shaders/Shatter/index.js +6 -6
- package/dist/core/shaders/SimplexNoise/index.d.ts +0 -18
- package/dist/core/shaders/SimplexNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/SimplexNoise/index.js +13 -7
- package/dist/core/shaders/SineWave/index.d.ts.map +1 -1
- package/dist/core/shaders/SineWave/index.js +7 -5
- package/dist/core/shaders/SliceWipe/index.d.ts.map +1 -1
- package/dist/core/shaders/SliceWipe/index.js +7 -5
- package/dist/core/shaders/Smoke/index.d.ts +1 -9
- package/dist/core/shaders/Smoke/index.d.ts.map +1 -1
- package/dist/core/shaders/Smoke/index.js +7 -5
- package/dist/core/shaders/SmokeFill/index.d.ts +1 -9
- package/dist/core/shaders/SmokeFill/index.d.ts.map +1 -1
- package/dist/core/shaders/SmokeFill/index.js +9 -10
- package/dist/core/shaders/SmokeFlow/index.d.ts +1 -9
- package/dist/core/shaders/SmokeFlow/index.d.ts.map +1 -1
- package/dist/core/shaders/SmokeFlow/index.js +7 -5
- package/dist/core/shaders/Solarize/index.d.ts.map +1 -1
- package/dist/core/shaders/Solarize/index.js +6 -5
- package/dist/core/shaders/SolidColor/index.js +2 -2
- package/dist/core/shaders/Spherize/index.js +6 -5
- package/dist/core/shaders/Spiral/index.d.ts.map +1 -1
- package/dist/core/shaders/Spiral/index.js +7 -5
- package/dist/core/shaders/Star/index.d.ts +0 -71
- package/dist/core/shaders/Star/index.d.ts.map +1 -1
- package/dist/core/shaders/Star/index.js +6 -7
- package/dist/core/shaders/Stone/index.js +4 -4
- package/dist/core/shaders/Strands/index.d.ts.map +1 -1
- package/dist/core/shaders/Strands/index.js +7 -5
- package/dist/core/shaders/Stretch/index.d.ts +2 -16
- package/dist/core/shaders/Stretch/index.d.ts.map +1 -1
- package/dist/core/shaders/Stretch/index.js +7 -5
- package/dist/core/shaders/Stripes/index.d.ts +0 -1
- package/dist/core/shaders/Stripes/index.d.ts.map +1 -1
- package/dist/core/shaders/Stripes/index.js +10 -6
- package/dist/core/shaders/StudioBackground/index.d.ts.map +1 -1
- package/dist/core/shaders/StudioBackground/index.js +9 -5
- package/dist/core/shaders/SunBurst/index.d.ts.map +1 -1
- package/dist/core/shaders/SunBurst/index.js +9 -5
- package/dist/core/shaders/Surface3D/index.d.ts.map +1 -1
- package/dist/core/shaders/Surface3D/index.js +8 -7
- package/dist/core/shaders/Swirl/index.js +6 -5
- package/dist/core/shaders/Teardrop/index.d.ts +0 -65
- package/dist/core/shaders/Teardrop/index.d.ts.map +1 -1
- package/dist/core/shaders/Teardrop/index.js +6 -7
- package/dist/core/shaders/Text/index.d.ts.map +1 -1
- package/dist/core/shaders/Text/index.js +10 -6
- package/dist/core/shaders/ThinFilm/index.d.ts.map +1 -1
- package/dist/core/shaders/ThinFilm/index.js +8 -9
- package/dist/core/shaders/TiltShift/index.d.ts +16 -16
- package/dist/core/shaders/TiltShift/index.d.ts.map +1 -1
- package/dist/core/shaders/TiltShift/index.js +8 -6
- package/dist/core/shaders/TimeTrail/index.d.ts.map +1 -1
- package/dist/core/shaders/TimeTrail/index.js +6 -6
- package/dist/core/shaders/Tint/index.d.ts.map +1 -1
- package/dist/core/shaders/Tint/index.js +6 -5
- package/dist/core/shaders/Trapezoid/index.d.ts +0 -71
- package/dist/core/shaders/Trapezoid/index.d.ts.map +1 -1
- package/dist/core/shaders/Trapezoid/index.js +6 -7
- package/dist/core/shaders/TriangularGrid/index.d.ts.map +1 -1
- package/dist/core/shaders/TriangularGrid/index.js +10 -5
- package/dist/core/shaders/Tritone/index.d.ts.map +1 -1
- package/dist/core/shaders/Tritone/index.js +6 -5
- package/dist/core/shaders/Truchet/index.d.ts.map +1 -1
- package/dist/core/shaders/Truchet/index.js +10 -5
- package/dist/core/shaders/Twirl/index.d.ts +2 -16
- package/dist/core/shaders/Twirl/index.d.ts.map +1 -1
- package/dist/core/shaders/Twirl/index.js +6 -5
- package/dist/core/shaders/VHS/index.js +6 -5
- package/dist/core/shaders/VenetianBlinds/index.d.ts.map +1 -1
- package/dist/core/shaders/VenetianBlinds/index.js +8 -5
- package/dist/core/shaders/Vesica/index.d.ts +0 -65
- package/dist/core/shaders/Vesica/index.d.ts.map +1 -1
- package/dist/core/shaders/Vesica/index.js +6 -7
- package/dist/core/shaders/Vibrance/index.d.ts.map +1 -1
- package/dist/core/shaders/Vibrance/index.js +6 -5
- package/dist/core/shaders/VideoTexture/index.d.ts +0 -25
- package/dist/core/shaders/VideoTexture/index.d.ts.map +1 -1
- package/dist/core/shaders/VideoTexture/index.js +7 -7
- package/dist/core/shaders/Vignette/index.d.ts.map +1 -1
- package/dist/core/shaders/Vignette/index.js +6 -5
- package/dist/core/shaders/Voronoi/index.d.ts.map +1 -1
- package/dist/core/shaders/Voronoi/index.js +11 -5
- package/dist/core/shaders/Water/index.d.ts.map +1 -1
- package/dist/core/shaders/Water/index.js +11 -11
- package/dist/core/shaders/Watercolor/index.js +7 -6
- package/dist/core/shaders/WaveDistortion/index.d.ts +0 -6
- package/dist/core/shaders/WaveDistortion/index.d.ts.map +1 -1
- package/dist/core/shaders/WaveDistortion/index.js +7 -5
- package/dist/core/shaders/WaveletNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/WaveletNoise/index.js +13 -8
- package/dist/core/shaders/Weave/index.d.ts.map +1 -1
- package/dist/core/shaders/Weave/index.js +10 -5
- package/dist/core/shaders/WebcamTexture/index.d.ts +0 -6
- package/dist/core/shaders/WebcamTexture/index.d.ts.map +1 -1
- package/dist/core/shaders/WebcamTexture/index.js +8 -7
- package/dist/core/shaders/Wool/index.js +4 -4
- package/dist/core/shaders/WorleyNoise/index.d.ts +2 -2
- package/dist/core/shaders/WorleyNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/WorleyNoise/index.js +12 -5
- package/dist/core/shaders/ZoomBlur/index.d.ts +2 -1
- package/dist/core/shaders/ZoomBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/ZoomBlur/index.js +7 -5
- package/dist/core/tone-DPUvX6X0.js +705 -0
- package/dist/core/utilities/halfUvProps.d.ts +35 -0
- package/dist/core/utilities/halfUvProps.d.ts.map +1 -0
- package/dist/core/utilities/measure.d.ts.map +1 -1
- package/dist/core/utilities/propConfigs.d.ts +106 -0
- package/dist/core/utilities/propConfigs.d.ts.map +1 -0
- package/dist/core/utilities/transformations/index.js +1 -1
- package/dist/js/bundle.js +168 -168
- package/dist/js/createShader.js +1 -1
- package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/js/utils/generatePresetCode.js +54 -0
- package/dist/react/Chrome.js +226 -0
- package/dist/react/Line.js +226 -0
- package/dist/react/Preview.js +2 -0
- package/dist/react/Shader.js +1 -1
- package/dist/react/bundle.js +176 -176
- package/dist/react/components/BrushedMetal.d.ts +3 -1
- package/dist/react/components/BrushedMetal.d.ts.map +1 -1
- package/dist/react/components/CarbonFiber.d.ts +3 -1
- package/dist/react/components/CarbonFiber.d.ts.map +1 -1
- package/dist/react/components/Chrome.d.ts +46 -0
- package/dist/react/components/Chrome.d.ts.map +1 -0
- package/dist/react/components/Line.d.ts +40 -0
- package/dist/react/components/Line.d.ts.map +1 -0
- package/dist/react/components/LiquidMetal.d.ts +3 -1
- package/dist/react/components/LiquidMetal.d.ts.map +1 -1
- package/dist/react/engine/Preview.d.ts.map +1 -1
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +3 -1
- package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/react/utils/generatePresetCode.js +54 -0
- package/dist/registry.js +1471 -338
- package/dist/solid/components/BrushedMetal.d.ts +3 -1
- package/dist/solid/components/BrushedMetal.d.ts.map +1 -1
- package/dist/solid/components/CarbonFiber.d.ts +3 -1
- package/dist/solid/components/CarbonFiber.d.ts.map +1 -1
- package/dist/solid/components/Chrome.d.ts +43 -0
- package/dist/solid/components/Chrome.d.ts.map +1 -0
- package/dist/solid/components/Chrome.js +232 -0
- package/dist/solid/components/Line.d.ts +37 -0
- package/dist/solid/components/Line.d.ts.map +1 -0
- package/dist/solid/components/Line.js +232 -0
- package/dist/solid/components/LiquidMetal.d.ts +3 -1
- package/dist/solid/components/LiquidMetal.d.ts.map +1 -1
- package/dist/solid/engine/Preview.d.ts.map +1 -1
- package/dist/solid/engine/Preview.js +203 -199
- package/dist/solid/engine/Shader.js +1 -1
- package/dist/solid/index.d.ts +2 -0
- package/dist/solid/index.d.ts.map +1 -1
- package/dist/solid/index.js +333 -329
- package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/solid/utils/generatePresetCode.js +54 -0
- package/dist/svelte/components/BrushedMetal.svelte.d.ts +2 -0
- package/dist/svelte/components/CarbonFiber.svelte.d.ts +2 -0
- package/dist/svelte/components/Chrome.svelte.d.ts +33 -0
- package/dist/svelte/components/Line.svelte.d.ts +27 -0
- package/dist/svelte/components/LiquidMetal.svelte.d.ts +2 -0
- package/dist/svelte/index.d.ts +2 -0
- package/dist/svelte/index.js +2313 -1899
- package/dist/svelte/source/components/BrushedMetal.svelte +2 -0
- package/dist/svelte/source/components/CarbonFiber.svelte +2 -0
- package/dist/svelte/source/components/Chrome.svelte +357 -0
- package/dist/svelte/source/components/Line.svelte +351 -0
- package/dist/svelte/source/components/LiquidMetal.svelte +2 -0
- package/dist/svelte/source/engine/Preview.svelte +4 -0
- package/dist/svelte/source/index.js +2 -0
- package/dist/svelte/utils/generatePresetCode.js +54 -0
- package/dist/vue/BrushedMetal.vue_vue_type_script_setup_true_lang.js +2 -0
- package/dist/vue/CarbonFiber.vue_vue_type_script_setup_true_lang.js +2 -0
- package/dist/vue/Chrome.js +3 -0
- package/dist/vue/Chrome.vue_vue_type_script_setup_true_lang.js +247 -0
- package/dist/vue/Line.js +3 -0
- package/dist/vue/Line.vue_vue_type_script_setup_true_lang.js +234 -0
- package/dist/vue/LiquidMetal.vue_vue_type_script_setup_true_lang.js +2 -0
- package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +4 -0
- package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/vue/components/BrushedMetal.vue.d.ts +2 -0
- package/dist/vue/components/BrushedMetal.vue.d.ts.map +1 -1
- package/dist/vue/components/CarbonFiber.vue.d.ts +2 -0
- package/dist/vue/components/CarbonFiber.vue.d.ts.map +1 -1
- package/dist/vue/components/Chrome.vue.d.ts +68 -0
- package/dist/vue/components/Chrome.vue.d.ts.map +1 -0
- package/dist/vue/components/Line.vue.d.ts +62 -0
- package/dist/vue/components/Line.vue.d.ts.map +1 -0
- package/dist/vue/components/LiquidMetal.vue.d.ts +2 -0
- package/dist/vue/components/LiquidMetal.vue.d.ts.map +1 -1
- package/dist/vue/index.d.ts +2 -0
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.js +3 -1
- package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/vue/utils/generatePresetCode.js +54 -0
- package/package.json +17 -1
- package/dist/core/Arc-B3WUGG1Z.js +0 -331
- package/dist/core/BarnDoors-D6E5jOl2.js +0 -447
- package/dist/core/BlockDissolve-DIGuzCsR.js +0 -365
- package/dist/core/Blur-BbEw_oFx.js +0 -701
- package/dist/core/Checkerboard-CjRqLaQW.js +0 -709
- package/dist/core/Circle-sKqyx9pq.js +0 -358
- package/dist/core/Crescent-SDicMQui.js +0 -335
- package/dist/core/Cross-Bv1j7D12.js +0 -335
- package/dist/core/Ellipse-B1QfTjTA.js +0 -316
- package/dist/core/Flower-DGCyfNeJ.js +0 -335
- package/dist/core/Fog-uK8ECyzk.js +0 -5667
- package/dist/core/Glow-6yyCrCzW.js +0 -2051
- package/dist/core/Grid-COJiaxy5.js +0 -1346
- package/dist/core/Heart-C-BeqQH8.js +0 -297
- package/dist/core/ImageTexture-56vkFGyi.js +0 -183
- package/dist/core/InkFlow-DgS686Pl.js +0 -4983
- package/dist/core/IrisWipe-BEtEyvcI.js +0 -418
- package/dist/core/LinearWipe-xR6RSzjC.js +0 -423
- package/dist/core/Parallelogram-C_WrJLLX.js +0 -335
- package/dist/core/Plasma-BEub5fXm.js +0 -715
- package/dist/core/Polygon-D0hD4asI.js +0 -379
- package/dist/core/RadialWipe-gmGpyKWI.js +0 -528
- package/dist/core/RandomBars-CrDa3Bam.js +0 -490
- package/dist/core/RoundedRect-CFd87T89.js +0 -336
- package/dist/core/Smoke-B7xEP6sH.js +0 -5003
- package/dist/core/SmokeFill-B0nTuWPV.js +0 -7118
- package/dist/core/SmokeFlow-B0Li2heA.js +0 -4610
- package/dist/core/Star-CcfONMfP.js +0 -335
- package/dist/core/Teardrop-D4g6UQ84.js +0 -316
- package/dist/core/VenetianBlinds-sWQYWM0-.js +0 -459
- package/dist/core/Vesica-CG1x-_aG.js +0 -316
- package/dist/core/VideoTexture-DqfCv_YE.js +0 -927
- package/dist/core/Voronoi--B90OaVd.js +0 -935
- package/dist/core/WebcamTexture-C_tF_65y.js +0 -220
- package/dist/core/WorleyNoise-DqYFie3m.js +0 -1667
- package/dist/core/compute-DYJOCqJI.js +0 -31
- package/dist/core/dataEncoding-CEmpiitu.js +0 -24
- package/dist/core/device-BODv_4aH.js +0 -10
- package/dist/core/gpu/kit/effects/prism.d.ts +0 -111
- package/dist/core/gpu/kit/effects/prism.d.ts.map +0 -1
- package/dist/core/naturalSize-B679wTgN.js +0 -24
- package/dist/core/noiseColor-88y7I7KI.js +0 -103
- package/dist/core/porters-DnWlc17D.js +0 -991
- package/dist/core/shaderRegistry-DwraFv9_.js +0 -427
- /package/dist/core/{fonts-DFuXI3Hk.js → fonts-ScBvKolx.js} +0 -0
- /package/dist/core/{transformations-CsPUHppB.js → transformations-B-zNWNdd.js} +0 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { TgpuBindGroupLayout } from 'typegpu';
|
|
2
|
+
import { AnyWgslStruct, Infer } from 'typegpu/data';
|
|
3
|
+
import { ComputeStep, KitComputePipeline } from '../compute';
|
|
4
|
+
import { GpuFragmentParams, KitTexture } from '../contract';
|
|
5
|
+
import { d } from '../kit';
|
|
6
|
+
|
|
7
|
+
/** A value with a lower setting for coarse-pointer (phone/tablet) GPUs. */
|
|
8
|
+
export interface DeviceTier {
|
|
9
|
+
desktop: number;
|
|
10
|
+
mobile: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Pick the coarse-pointer or the desktop value.
|
|
14
|
+
*
|
|
15
|
+
* BUILD-TIME CONSTANT BY DESIGN for a resolution: the accumulator length lives in a module-scope
|
|
16
|
+
* `tgpu.bindGroupLayout`, so it must be decided at import time, not per composition. SSR and the
|
|
17
|
+
* GPU-free tests resolve to `desktop`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveDeviceTier(tier: DeviceTier): number;
|
|
20
|
+
/**
|
|
21
|
+
* The square render/accumulator resolution for this device tier.
|
|
22
|
+
*
|
|
23
|
+
* PAIR THIS WITH A FIXED `SIZE_REF_RES`. Agent body sizes are authored in texels, so deriving them
|
|
24
|
+
* from the live (tiered) resolution makes the same preset render a *larger* flock on a phone —
|
|
25
|
+
* fewer texels across the same canvas means each texel covers more screen. Size math must divide by
|
|
26
|
+
* {@link SIZE_REF_RES}; only the buffer/texture extents use the tiered value.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveRenderRes(tier: DeviceTier): number;
|
|
29
|
+
/** The fixed resolution agent sizes are authored against, decoupling them from {@link resolveRenderRes}. */
|
|
30
|
+
export declare const SIZE_REF_RES = 1024;
|
|
31
|
+
/**
|
|
32
|
+
* Fixed-point gains for the atomic energy accumulators.
|
|
33
|
+
*
|
|
34
|
+
* The resolve's alpha curve is `1 − e^(−1.6·E)` with `E = raw/255`, which reaches 1.0 only
|
|
35
|
+
* asymptotically. A HARD shape's interior returns coverage exactly 1, so at a gain of 255 its
|
|
36
|
+
* centre would resolve to `1 − e^(−1.6)` ≈ 0.80 — a solid dot rendering 80% grey. `HARD`
|
|
37
|
+
* over-drives the scale by 2.5× so those interiors saturate; `SOFT` keeps the true scale because a
|
|
38
|
+
* Gaussian skirt is *supposed* to top out below opaque.
|
|
39
|
+
*/
|
|
40
|
+
export declare const FIXED_POINT_GAINS: {
|
|
41
|
+
readonly HARD: 637;
|
|
42
|
+
readonly SOFT: 255;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* The R2 sequence's irrational strides (the 2D "plastic constant" generalization of the golden
|
|
46
|
+
* ratio): `frac(0.5 + i·α)` gives quasi-uniform coverage for ANY prefix of `i`, so a count slider
|
|
47
|
+
* can grow or shrink the population without re-seeding and without leaving holes. Positions derived
|
|
48
|
+
* from the index alone need no storage.
|
|
49
|
+
*/
|
|
50
|
+
export declare const R2_ALPHA: readonly [0.7548776662466927, 0.5698402909980532];
|
|
51
|
+
/**
|
|
52
|
+
* The R3 sequence's strides — the same construction one dimension up. Used per FRAME rather than
|
|
53
|
+
* per agent: stepping a sub-cell offset along R3 dithers a voxel lattice evenly over time, which is
|
|
54
|
+
* what keeps a density grid from standing in coherent moiré with a shape boundary.
|
|
55
|
+
*/
|
|
56
|
+
export declare const R3_ALPHA: readonly [0.8191725133961645, 0.6710436067037893, 0.5497004779019703];
|
|
57
|
+
/** Per-frame values every agent shader derives from the renderer's frame params. */
|
|
58
|
+
export interface AgentFrame {
|
|
59
|
+
/** Frame delta clamped to [1ms, 33ms] — one stalled frame must not teleport the simulation. */
|
|
60
|
+
dt: number;
|
|
61
|
+
/** Viewport aspect (guarded against a zero-height canvas). */
|
|
62
|
+
aspect: number;
|
|
63
|
+
pointerX: number;
|
|
64
|
+
pointerY: number;
|
|
65
|
+
}
|
|
66
|
+
/** The subset of the renderer's frame params an agent simulation reads. */
|
|
67
|
+
export interface AgentFrameParams {
|
|
68
|
+
pointer?: {
|
|
69
|
+
x: number;
|
|
70
|
+
y: number;
|
|
71
|
+
};
|
|
72
|
+
deltaTime?: number;
|
|
73
|
+
dimensions?: {
|
|
74
|
+
width: number;
|
|
75
|
+
height: number;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Normalize the renderer's frame params: dt clamp, aspect, pointer defaults.
|
|
80
|
+
*
|
|
81
|
+
* The dt clamp is load-bearing in both directions. The floor stops a division blowing up on a
|
|
82
|
+
* 0ms frame; the 33ms ceiling means a tab-switch or a long GC pause advances the sim by one slow
|
|
83
|
+
* frame instead of integrating a one-second step and throwing every agent off-screen.
|
|
84
|
+
*
|
|
85
|
+
* `fallbackAspect` is what a shader wants when the canvas has no height yet — 16/9 for a
|
|
86
|
+
* generator that fills the viewport, 1 for one whose grid is refit to the aspect each frame.
|
|
87
|
+
*/
|
|
88
|
+
export declare function readAgentFrame(frameParams: unknown, fallbackAspect?: number): AgentFrame;
|
|
89
|
+
/**
|
|
90
|
+
* The numeric prop reader every one of these shaders declared inline (10 copies).
|
|
91
|
+
*
|
|
92
|
+
* Why a fallback per call rather than reading the prop's declared default: a dynamic prop (a range
|
|
93
|
+
* map, a mouse binding) can resolve to a non-number for a frame, and a kernel uniform must never
|
|
94
|
+
* receive `undefined`.
|
|
95
|
+
*/
|
|
96
|
+
export declare function makeCpuValueGetter(getCpuValue: (prop: string) => unknown): (key: string, fallback: number) => number;
|
|
97
|
+
/** Clamp a raw count prop into `[min, cap]` — the runtime cap, never the prop's declared range. */
|
|
98
|
+
export declare function clampAgentCount(raw: number, min: number, cap: number): number;
|
|
99
|
+
/** Inclusive texel bounds of a splat window, already clipped to the accumulator. */
|
|
100
|
+
export declare const SplatWindow: d.WgslStruct<{
|
|
101
|
+
x0: d.I32;
|
|
102
|
+
x1: d.I32;
|
|
103
|
+
y0: d.I32;
|
|
104
|
+
y1: d.I32;
|
|
105
|
+
}>;
|
|
106
|
+
/**
|
|
107
|
+
* The splat window for an agent living in WORLD space — x ∈ [0, aspect], y ∈ [0, 1], 1 unit == the
|
|
108
|
+
* canvas height — splatting into a SQUARE `res × res` accumulator.
|
|
109
|
+
*
|
|
110
|
+
* Two things make this worth having in one place. First, the window is sized to the agent's ACTUAL
|
|
111
|
+
* reach rather than a fixed box, which is a correctness fix and not just an optimization: a fixed
|
|
112
|
+
* ±16-texel window hard-clipped large `arrow` / `streak` / `glow` shapes into squares. Second, the
|
|
113
|
+
* radius is PER AXIS. The accumulator is square but the world domain is `aspect` wide, so one
|
|
114
|
+
* x-texel covers `aspect` times as much world as a y-texel — hence the divide. Getting that wrong
|
|
115
|
+
* is invisible at 1:1 and stretches every agent on a wide canvas.
|
|
116
|
+
*
|
|
117
|
+
* `reach` is the world-space accept radius (shape extent + AA margin). Clipping happens once here,
|
|
118
|
+
* so the caller's inner loop carries no bounds test, and an off-screen agent clips to an empty
|
|
119
|
+
* range — which is also the off-target early-out.
|
|
120
|
+
*/
|
|
121
|
+
export declare const worldSplatWindow: import('typegpu').TgpuFn<(pos: d.Vec2f, reach: d.F32, aspect: d.F32, res: d.F32) => d.WgslStruct<{
|
|
122
|
+
x0: d.I32;
|
|
123
|
+
x1: d.I32;
|
|
124
|
+
y0: d.I32;
|
|
125
|
+
y1: d.I32;
|
|
126
|
+
}>>;
|
|
127
|
+
/**
|
|
128
|
+
* The splat window for an agent already projected to TEXEL coordinates, with an isotropic radius
|
|
129
|
+
* (the projected-3D consumers, whose render target has square texels so no aspect term survives).
|
|
130
|
+
*
|
|
131
|
+
* `last` is the inclusive maximum texel per axis, passed rather than derived because the target
|
|
132
|
+
* extent can be a per-frame uniform (a target fitted to the frame aspect).
|
|
133
|
+
*/
|
|
134
|
+
export declare const texelSplatWindow: import('typegpu').TgpuFn<(center: d.Vec2f, rad: d.I32, last: d.Vec2i) => d.WgslStruct<{
|
|
135
|
+
x0: d.I32;
|
|
136
|
+
x1: d.I32;
|
|
137
|
+
y0: d.I32;
|
|
138
|
+
y1: d.I32;
|
|
139
|
+
}>>;
|
|
140
|
+
/**
|
|
141
|
+
* Accumulated energy → coverage alpha: `1 − e^(−k·energy)`. Saturating, so overlapping agents
|
|
142
|
+
* deepen toward opaque without ever clipping, and empty texels resolve to exactly 0 (fully
|
|
143
|
+
* transparent gaps, so the field composites over anything).
|
|
144
|
+
*
|
|
145
|
+
* WHY THE READ-THEN-ZERO ISN'T HERE. Every consumer's resolve reads its accumulator with
|
|
146
|
+
* `atomicLoad` and immediately `atomicStore`s 0 — one thread owns each cell and nothing else is in
|
|
147
|
+
* flight, so that needs no exchange and replaces a separate full-target clear pass. It cannot be
|
|
148
|
+
* shared as a `tgpu.fn` because WGSL cannot take a storage array as a function parameter, so the
|
|
149
|
+
* two-line load/store stays in each shader, next to the layout entry it names.
|
|
150
|
+
*/
|
|
151
|
+
export declare const energyCoverageAlpha: import('typegpu').TgpuFn<(energy: d.F32, k: d.F32) => d.F32>;
|
|
152
|
+
/**
|
|
153
|
+
* Semi-implicit Euler with exponential drag and a speed clamp — the integrator the force-based
|
|
154
|
+
* consumers share.
|
|
155
|
+
*
|
|
156
|
+
* Semi-implicit (velocity updated first, then position from the NEW velocity) is what keeps an
|
|
157
|
+
* underdamped spring stable at the frame rates a browser actually delivers; explicit Euler gains
|
|
158
|
+
* energy and eventually explodes. `dragMul` is `exp(−drag·dt)` computed on the CPU, so the decay is
|
|
159
|
+
* frame-rate independent rather than a per-frame multiply. The clamp is a safety net, not a feel
|
|
160
|
+
* knob: without it one bad frame's force can launch an agent out of the domain entirely.
|
|
161
|
+
*/
|
|
162
|
+
export declare const integrateSemiImplicitEuler: import('typegpu').TgpuFn<(vel: d.Vec3f, force: d.Vec3f, dt: d.F32, dragMul: d.F32, maxSpeed: d.F32) => d.Vec3f>;
|
|
163
|
+
/** How many threads a step dispatches. */
|
|
164
|
+
export type AgentThreads =
|
|
165
|
+
/** The runtime agent count, passed to `frame({count})`. */
|
|
166
|
+
'agents'
|
|
167
|
+
/** `maxAgents` — the static bound, for a one-shot init/re-seed over every slot. */
|
|
168
|
+
| 'max'
|
|
169
|
+
/** A per-frame 2D grid, passed to `frame({grid})`. */
|
|
170
|
+
| 'grid'
|
|
171
|
+
/** A fixed size given by `size` (a full render target, a voxel grid). */
|
|
172
|
+
| 'fixed';
|
|
173
|
+
export interface AgentPipelineSpec {
|
|
174
|
+
/** A module-scope `tgpu.fn` kernel: `(i)` for 1D dispatch, `(x, y)` for `'grid'` / 2D `'fixed'`. */
|
|
175
|
+
kernel: ((i: number) => void) | ((x: number, y: number) => void);
|
|
176
|
+
threads: AgentThreads;
|
|
177
|
+
/** Required for `threads: 'fixed'`; its length picks the 1D or 2D dispatch. */
|
|
178
|
+
size?: [number] | [number, number];
|
|
179
|
+
/** Chain `extraBindGroup` onto this pipeline (a shape family's own SDF resources). */
|
|
180
|
+
extra?: boolean;
|
|
181
|
+
}
|
|
182
|
+
export interface AgentSystemConfig<TParams extends AnyWgslStruct> {
|
|
183
|
+
/**
|
|
184
|
+
* The shader's module-scope bind group layout. Buffers are allocated by introspecting it, and
|
|
185
|
+
* the kernels reference it directly — so its key names are the WGSL identifiers.
|
|
186
|
+
*/
|
|
187
|
+
layout: TgpuBindGroupLayout;
|
|
188
|
+
/** Schema of the layout's `uniform` entry — the per-frame CPU-derived inputs. */
|
|
189
|
+
params: TParams;
|
|
190
|
+
/** The output storage texture the resolve writes and the fragment samples. */
|
|
191
|
+
output: {
|
|
192
|
+
/** Layout key of the `storageTexture` entry. */
|
|
193
|
+
key: string;
|
|
194
|
+
/** Key in the returned `outputs` record (what the fragment reads off `computeOutputs`). */
|
|
195
|
+
name: string;
|
|
196
|
+
size: [number, number];
|
|
197
|
+
format: 'rgba16float';
|
|
198
|
+
};
|
|
199
|
+
/** The static dispatch/loop bound — how many slots the state buffers hold. */
|
|
200
|
+
maxAgents: number;
|
|
201
|
+
/** Effective count ceiling per device tier. The prop's declared range is unchanged. */
|
|
202
|
+
countCap?: DeviceTier;
|
|
203
|
+
/** Layout keys bound late, from another node's output (a child RTT). See `bindExternal`. */
|
|
204
|
+
externalKeys?: readonly string[];
|
|
205
|
+
/** A second bind group chained onto every pipeline marked `extra: true`. */
|
|
206
|
+
extraBindGroup?: unknown;
|
|
207
|
+
pipelines: Record<string, AgentPipelineSpec>;
|
|
208
|
+
/** Per-frame execution order (keys of `pipelines`). */
|
|
209
|
+
program: readonly string[];
|
|
210
|
+
/** Key of the one-shot step run before the first frame's program, and again on a reseed. */
|
|
211
|
+
initStep?: string;
|
|
212
|
+
}
|
|
213
|
+
export interface AgentSystem<TParams extends AnyWgslStruct> {
|
|
214
|
+
/** Spread into the compute hook's `outputs`. */
|
|
215
|
+
outputs: Record<string, KitTexture>;
|
|
216
|
+
/** Write the whole per-frame uniform struct (strict layout — a plain struct has no partial patch). */
|
|
217
|
+
writeParams: (values: Infer<TParams>) => void;
|
|
218
|
+
/** The effective agent-count ceiling for this device. */
|
|
219
|
+
readonly countCap: number;
|
|
220
|
+
/** Clamp a raw count prop into `[min, countCap]`. */
|
|
221
|
+
resolveCount: (raw: number, min?: number) => number;
|
|
222
|
+
/** The created pipelines, by config key — for a shader that needs to dispatch one itself. */
|
|
223
|
+
pipelines: Record<string, KitComputePipeline>;
|
|
224
|
+
/** Bind the late-arriving external resources (call from `bindInputs`). */
|
|
225
|
+
bindExternal: (entries: Record<string, unknown>) => void;
|
|
226
|
+
/**
|
|
227
|
+
* The frame's compute steps, with the one-shot init prepended on the first call (and whenever
|
|
228
|
+
* `reseed` changes). `null` until every external key is bound.
|
|
229
|
+
*/
|
|
230
|
+
frame: (opts?: {
|
|
231
|
+
count?: number;
|
|
232
|
+
grid?: [number, number];
|
|
233
|
+
reseed?: number;
|
|
234
|
+
}) => ComputeStep[] | null;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Build the runtime side of an agent simulation: state buffers, the output texture, the uniform,
|
|
238
|
+
* the bind group, the guarded pipelines, and the per-frame step list.
|
|
239
|
+
*
|
|
240
|
+
* Returns `null` when there is no GPU device (SSR, the GPU-free resolve tests) — the caller returns
|
|
241
|
+
* `null` from its `compute` hook and the fragment falls back.
|
|
242
|
+
*/
|
|
243
|
+
export declare function createAgentSystem<TParams extends AnyWgslStruct>(params: GpuFragmentParams, config: AgentSystemConfig<TParams>): AgentSystem<TParams> | null;
|
|
244
|
+
//# sourceMappingURL=agentSystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentSystem.d.ts","sourceRoot":"","sources":["../../../src/gpu/scaffolds/agentSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { ComputeStep, PingPongPair } from '../compute';
|
|
2
|
+
import { GpuFragmentParams, KitTexture } from '../contract';
|
|
3
|
+
|
|
4
|
+
export { createPingPongPair, type PingPongPair } from '../compute';
|
|
5
|
+
/** Texture size as `[width, height]`, or one number for a square. */
|
|
6
|
+
export type SimSize = number | readonly [number, number];
|
|
7
|
+
/** One side of the ping-pong: the state texture plus any extra lockstep-swapping slots. */
|
|
8
|
+
export interface SimSlot {
|
|
9
|
+
/** The state texture for this side. */
|
|
10
|
+
state: unknown;
|
|
11
|
+
/** Extra per-side textures declared via `extraSlots`, keyed by their declared name. */
|
|
12
|
+
extra: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
/** What `bindGroups` / `staticGroups` get to build bind groups from. */
|
|
15
|
+
export interface SimBindContext {
|
|
16
|
+
/** The child RTT, already typed for `root.createBindGroup`. */
|
|
17
|
+
childTexture: never;
|
|
18
|
+
/** The display copy the fragment samples (a write-only storage target for the kernel). */
|
|
19
|
+
display: unknown;
|
|
20
|
+
/** Orientation-independent textures declared via `textures`, keyed by name. */
|
|
21
|
+
textures: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/** What the per-frame callback gets. */
|
|
24
|
+
export interface SimTick<TGroups, TStatic> {
|
|
25
|
+
/** Bind groups for the CURRENT orientation. */
|
|
26
|
+
groups: TGroups;
|
|
27
|
+
/** Orientation-independent bind groups (from `staticGroups`), or `undefined` if none declared. */
|
|
28
|
+
shared: TStatic;
|
|
29
|
+
/** Frame delta, clamped to `maxDeltaTime` and multiplied by the `speedProp` value. */
|
|
30
|
+
dt: number;
|
|
31
|
+
/** Sum of every `dt` so far — the sim's own clock, unaffected by the global time uniform. */
|
|
32
|
+
localTime: number;
|
|
33
|
+
/** The raw frame delta before clamping and speed scaling. */
|
|
34
|
+
rawDeltaTime: number;
|
|
35
|
+
}
|
|
36
|
+
export interface FeedbackTrailSimOptions<TGroups, TStatic> {
|
|
37
|
+
/** State + display resolution. */
|
|
38
|
+
size: SimSize;
|
|
39
|
+
/** Storage format for state, display and extra textures. Must be a core storage format. */
|
|
40
|
+
format: 'rgba16float' | 'rgba32float';
|
|
41
|
+
/**
|
|
42
|
+
* Extra texture pairs that swap in LOCKSTEP with the state (TimeTrail's previous-live-frame
|
|
43
|
+
* copy). Value is that slot's size — pass `[1, 1]` for a stub a compile-time-disabled kernel
|
|
44
|
+
* variant never touches but the bind group still has to fill.
|
|
45
|
+
*/
|
|
46
|
+
extraSlots?: Record<string, SimSize>;
|
|
47
|
+
/** Orientation-independent extra textures (KeyFrames' feature grid). */
|
|
48
|
+
textures?: Record<string, SimSize>;
|
|
49
|
+
/** Prop whose value scales `dt`. Omit for an unscaled (real-time) sim. */
|
|
50
|
+
speedProp?: string;
|
|
51
|
+
/** Upper bound on the frame delta before speed scaling. Defaults to 0.05 s. */
|
|
52
|
+
maxDeltaTime?: number;
|
|
53
|
+
/** Build the bind groups for one orientation. Called twice (once per orientation), late. */
|
|
54
|
+
bindGroups: (ctx: SimBindContext, read: SimSlot, write: SimSlot) => TGroups;
|
|
55
|
+
/** Build orientation-independent bind groups. Called once, late. */
|
|
56
|
+
staticGroups?: (ctx: SimBindContext) => TStatic;
|
|
57
|
+
}
|
|
58
|
+
export interface FeedbackTrailSim<TGroups, TStatic> {
|
|
59
|
+
/** The child's RTT handle — put it in `outputs` so the fragment samples it rather than re-RTTing. */
|
|
60
|
+
readonly childTexture: KitTexture;
|
|
61
|
+
/** The registered display copy — put it in `outputs`; the fragment samples this. */
|
|
62
|
+
readonly display: KitTexture;
|
|
63
|
+
/** The raw state pair, for a shader that needs the textures directly. */
|
|
64
|
+
readonly pair: PingPongPair<SimSlot>;
|
|
65
|
+
/** Hand straight to the compute node's `bindInputs`. */
|
|
66
|
+
bindInputs: (resolve: (key: string) => {
|
|
67
|
+
texture: unknown;
|
|
68
|
+
} | undefined) => void;
|
|
69
|
+
/**
|
|
70
|
+
* The body of `getComputeNodes`. Returns `null` before the child RTT is bound. Otherwise
|
|
71
|
+
* advances the clock, invokes `frame`, and swaps the ping-pong — but only if `frame` returned
|
|
72
|
+
* steps, so an idle-skip frame leaves the orientation untouched.
|
|
73
|
+
*/
|
|
74
|
+
tick: (frameParams: unknown, frame: (t: SimTick<TGroups, TStatic>) => ComputeStep[] | null) => ComputeStep[] | null;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Allocate and wire a state-texture feedback simulation. Returns `null` when there is no child or
|
|
78
|
+
* no GPU device, which is the "fragment falls back to a passthrough" branch every consumer has.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* const sim = createFeedbackTrailSim(params, {
|
|
82
|
+
* size: STATE_RES,
|
|
83
|
+
* format: 'rgba16float',
|
|
84
|
+
* speedProp: 'speed',
|
|
85
|
+
* bindGroups: ({childTexture, display}, read, write) =>
|
|
86
|
+
* root.createBindGroup(moshLayout, {
|
|
87
|
+
* src: childTexture, prev: read.state, next: write.state, display,
|
|
88
|
+
* params: paramsBuf.buffer,
|
|
89
|
+
* } as never),
|
|
90
|
+
* })
|
|
91
|
+
* if (!sim) return null
|
|
92
|
+
* return {
|
|
93
|
+
* outputs: {childTexture: sim.childTexture, display: sim.display},
|
|
94
|
+
* bindInputs: sim.bindInputs,
|
|
95
|
+
* getComputeNodes: (fp) => sim.tick(fp, ({groups, dt, localTime}) => {
|
|
96
|
+
* paramsBuf.write({time: localTime, dt, ...})
|
|
97
|
+
* return [pipeline.with(groups)]
|
|
98
|
+
* }),
|
|
99
|
+
* }
|
|
100
|
+
*/
|
|
101
|
+
export declare function createFeedbackTrailSim<TGroups, TStatic = undefined>(params: GpuFragmentParams, opts: FeedbackTrailSimOptions<TGroups, TStatic>): FeedbackTrailSim<TGroups, TStatic> | null;
|
|
102
|
+
//# sourceMappingURL=feedbackSim.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedbackSim.d.ts","sourceRoot":"","sources":["../../../src/gpu/scaffolds/feedbackSim.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { d } from '../kit';
|
|
2
|
+
import { ComputeStep, KitComputePipeline } from '../compute';
|
|
3
|
+
import { TgpuRoot } from 'typegpu';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The storage-texture form every fluid consumer publishes through: rgba16float, write-only. Half
|
|
7
|
+
* floats are enough for a velocity or dye field and they give the fragment hardware-bilinear
|
|
8
|
+
* filtering on the upsample, which a 32-bit format would not on most Android GPUs.
|
|
9
|
+
*/
|
|
10
|
+
export type FluidStorageTexture = d.textureStorage2d<'rgba16float', 'write-only'>;
|
|
11
|
+
/** The solve uniforms every kernel set reads. */
|
|
12
|
+
export interface FluidSolveParams {
|
|
13
|
+
readonly dt: number;
|
|
14
|
+
readonly curlStrength: number;
|
|
15
|
+
readonly velFade: number;
|
|
16
|
+
}
|
|
17
|
+
/** The additional uniforms the dye passes read. */
|
|
18
|
+
export interface FluidDyeParams extends FluidSolveParams {
|
|
19
|
+
readonly dyeFade: number;
|
|
20
|
+
readonly colorDecay: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The union of every layout entry the solver can touch.
|
|
24
|
+
*
|
|
25
|
+
* Which entries are actually required depends on the options, and TypeScript cannot express
|
|
26
|
+
* "`dyeA` is required iff `dye !== 'none'`" across one signature — so the builder takes the core
|
|
27
|
+
* shape and casts once internally. A layout missing an entry its options need fails at
|
|
28
|
+
* `tgpu.resolve` time, which every consumer's resolve gate exercises.
|
|
29
|
+
*/
|
|
30
|
+
export interface FluidSolverLayout {
|
|
31
|
+
readonly $: {
|
|
32
|
+
readonly velA: d.v4f[];
|
|
33
|
+
readonly velB: d.v4f[];
|
|
34
|
+
readonly pressure: number[];
|
|
35
|
+
readonly divergence: number[];
|
|
36
|
+
readonly params: FluidSolveParams;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** The output pass's layout: the dye buffer read-only, plus the storage texture it publishes to. */
|
|
40
|
+
export interface FluidOutputLayout {
|
|
41
|
+
readonly $: {
|
|
42
|
+
readonly dyeA: d.v4f[];
|
|
43
|
+
readonly outTex: FluidStorageTexture;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* How the grid edges behave.
|
|
48
|
+
*
|
|
49
|
+
* - `clamped` — neighbour lookups clamp to the grid, and the divergence pass reflects the wall-normal
|
|
50
|
+
* velocity at the border (free-slip): the fluid is in a box.
|
|
51
|
+
* - `toroidal` — neighbour lookups and advection backtraces wrap modulo N: the field is seamless and
|
|
52
|
+
* has no walls at all. Fog uses this so its cloud has no visible frame.
|
|
53
|
+
*/
|
|
54
|
+
export type FluidBoundary = 'clamped' | 'toroidal';
|
|
55
|
+
/**
|
|
56
|
+
* What the dye field carries.
|
|
57
|
+
*
|
|
58
|
+
* - `none` — velocity only. The consumer reads the field for something else (ParticleFlow advects
|
|
59
|
+
* particles through it), so there is no dye to advect, copy or publish.
|
|
60
|
+
* - `densityAge` — `x` = density, `y` = age in [0, 1]. The fragment colours density by age, which is
|
|
61
|
+
* what gives smoke its fresh→aged ramp.
|
|
62
|
+
* - `rgb` — `xyz` = colour. The dye IS the picture (InkFlow).
|
|
63
|
+
*/
|
|
64
|
+
export type FluidDyeMode = 'none' | 'densityAge' | 'rgb';
|
|
65
|
+
export interface StableFluidsOptions {
|
|
66
|
+
/** Grid resolution per axis. The kernels are dispatched 2D over N×N. */
|
|
67
|
+
n: number;
|
|
68
|
+
/**
|
|
69
|
+
* Prefix for every kernel's `$name`. Kernel names appear in the emitted WGSL, so this is what
|
|
70
|
+
* keeps each consumer's snapshots stable and keeps two fluid shaders in one tree from colliding
|
|
71
|
+
* on WGSL identifiers (C3).
|
|
72
|
+
*/
|
|
73
|
+
namePrefix: string;
|
|
74
|
+
boundary: FluidBoundary;
|
|
75
|
+
dye: FluidDyeMode;
|
|
76
|
+
/** Divide advected dye by `1 + dyeFade·dt` and floor it at zero. Fog's fog is permanent. */
|
|
77
|
+
dyeDissipation?: boolean;
|
|
78
|
+
/** Advance the age channel by `dt · 0.4 · colorDecay` (capped at 1). `densityAge` only. */
|
|
79
|
+
ageAdvance?: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Gate the fluid on `maskBuf.x`: cells outside the mask are solid walls in the divergence pass,
|
|
82
|
+
* and advected velocity/dye is zeroed there. SmokeFill uses it to confine smoke to a shape.
|
|
83
|
+
* `clamped` only — a toroidal field with interior walls is not a configuration we ship.
|
|
84
|
+
*/
|
|
85
|
+
solidMask?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Clamp the post-projection velocity magnitude to this many grid cells per second. Fog needs it
|
|
88
|
+
* because a permanent, never-dissipating field can otherwise accumulate enough energy over
|
|
89
|
+
* minutes to advect further than one cell per step and go unstable.
|
|
90
|
+
*/
|
|
91
|
+
velocityCap?: number;
|
|
92
|
+
/** Also `textureStore` the solved velocity into `velOutTex` from the copy pass. */
|
|
93
|
+
publishVelocityTexture?: boolean;
|
|
94
|
+
/** Per-frame pressure retention in the divergence pass (the warm start). Default 0.8. */
|
|
95
|
+
pressureDecay?: number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The neighbour flat index for a (row, col) plus a (di, dj) offset, under the given boundary mode.
|
|
99
|
+
* Exported for consumers whose own kernels need the same lookup (a mask or obstacle pass).
|
|
100
|
+
*/
|
|
101
|
+
export declare function neighbourIndex(n: number, boundary: FluidBoundary): import('typegpu').TgpuFn<(ii: d.I32, ji: d.I32, di: d.I32, dj: d.I32) => d.U32>;
|
|
102
|
+
/** The kernel set for one configuration. Absent members are the ones the options exclude. */
|
|
103
|
+
export interface StableFluidsKernels {
|
|
104
|
+
curl: (cx: number, cy: number) => void;
|
|
105
|
+
vorticity: (cx: number, cy: number) => void;
|
|
106
|
+
divergence: (cx: number, cy: number) => void;
|
|
107
|
+
jacobi: (cx: number, cy: number) => void;
|
|
108
|
+
gradSubtract: (cx: number, cy: number) => void;
|
|
109
|
+
advectVel: (cx: number, cy: number) => void;
|
|
110
|
+
copyVel: (cx: number, cy: number) => void;
|
|
111
|
+
advectDye?: (cx: number, cy: number) => void;
|
|
112
|
+
copyDye?: (cx: number, cy: number) => void;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Bake the solver kernels against a consumer's layout.
|
|
116
|
+
*
|
|
117
|
+
* Call this at MODULE scope, next to the layout declaration — the kernels are `tgpu.fn`s and want to
|
|
118
|
+
* exist once per module, not once per component instance.
|
|
119
|
+
*/
|
|
120
|
+
export declare function buildStableFluidsKernels(layoutIn: FluidSolverLayout, opts: StableFluidsOptions): StableFluidsKernels;
|
|
121
|
+
/**
|
|
122
|
+
* The output pass: publish the dye buffer to a storage texture the fragment samples.
|
|
123
|
+
*
|
|
124
|
+
* Separate from `buildStableFluidsKernels` because it reads a DIFFERENT bind group — the dye buffer
|
|
125
|
+
* bound read-only alongside a write-only storage texture — and a kernel may only reference one
|
|
126
|
+
* layout.
|
|
127
|
+
*
|
|
128
|
+
* `densityAge` writes `(density, age, 0, 0)`; `rgb` writes `(r, g, b, 1)`. Both formats are
|
|
129
|
+
* rgba16float, so the fragment gets hardware-bilinear filtering for free on the upsample.
|
|
130
|
+
*/
|
|
131
|
+
export declare function buildFluidOutputKernel(layout: FluidOutputLayout, opts: {
|
|
132
|
+
n: number;
|
|
133
|
+
namePrefix: string;
|
|
134
|
+
dye: Exclude<FluidDyeMode, 'none'>;
|
|
135
|
+
}): import('typegpu').TgpuFn<(cx: d.U32, cy: d.U32) => d.Void>;
|
|
136
|
+
/** The guarded compute pipelines for one kernel set, plus the ordered chain that drives them. */
|
|
137
|
+
export interface StableFluidsPasses {
|
|
138
|
+
curl: KitComputePipeline;
|
|
139
|
+
vorticity: KitComputePipeline;
|
|
140
|
+
divergence: KitComputePipeline;
|
|
141
|
+
jacobi: KitComputePipeline;
|
|
142
|
+
gradSubtract: KitComputePipeline;
|
|
143
|
+
advectVel: KitComputePipeline;
|
|
144
|
+
copyVel: KitComputePipeline;
|
|
145
|
+
advectDye?: KitComputePipeline;
|
|
146
|
+
copyDye?: KitComputePipeline;
|
|
147
|
+
/**
|
|
148
|
+
* The core per-frame chain: curl → vorticity → divergence → J× jacobi → gradSubtract →
|
|
149
|
+
* advectVel → copyVel → advectDye → copyDye.
|
|
150
|
+
*
|
|
151
|
+
* Emission splats go BEFORE it, the output pass and any per-shader restoration go after. Pass
|
|
152
|
+
* `vorticity` to substitute a shader's own variant (ParticleFlow folds an ambient breeze into
|
|
153
|
+
* that pass) without giving up the rest of the chain.
|
|
154
|
+
*/
|
|
155
|
+
solveSteps(opts: {
|
|
156
|
+
jacobiIters: number;
|
|
157
|
+
vorticity?: ComputeStep;
|
|
158
|
+
}): ComputeStep[];
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Wrap a kernel set in guarded compute pipelines bound to the caller's bind group.
|
|
162
|
+
*
|
|
163
|
+
* All passes share one bind group and one 2D dispatch size, which is what makes the whole solve a
|
|
164
|
+
* flat ordered list of dispatches with no per-pass rebinding.
|
|
165
|
+
*/
|
|
166
|
+
export declare function createStableFluidsPasses(root: TgpuRoot, kernels: StableFluidsKernels, opts: {
|
|
167
|
+
n: number;
|
|
168
|
+
bindGroup: unknown;
|
|
169
|
+
}): StableFluidsPasses;
|
|
170
|
+
//# sourceMappingURL=fluids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluids.d.ts","sourceRoot":"","sources":["../../../src/gpu/scaffolds/fluids.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { GpuFragmentParams, KitTexture } from '../contract';
|
|
2
|
+
|
|
3
|
+
/** The resolver the pass manager passes to `bindInputs`: texture key → bound texture. */
|
|
4
|
+
type InputResolver = (key: string) => {
|
|
5
|
+
texture: unknown;
|
|
6
|
+
} | undefined;
|
|
7
|
+
export interface LateBoundChildInput<TGroups> {
|
|
8
|
+
/**
|
|
9
|
+
* The child's RTT handle. Put it in the compute node's `outputs` so the fragment can sample
|
|
10
|
+
* the same texture (`computeOutputs.childTexture`) instead of RTT-ing the child twice.
|
|
11
|
+
*/
|
|
12
|
+
readonly childTexture: KitTexture;
|
|
13
|
+
/** Hand straight to the compute node's `bindInputs`. */
|
|
14
|
+
bindInputs: (resolve: InputResolver) => void;
|
|
15
|
+
/**
|
|
16
|
+
* The bind groups built by `buildGroups`, or `null` while the child RTT is still unallocated.
|
|
17
|
+
* The canonical first line of `getComputeNodes` is `const g = child.bound(); if (!g) return null`.
|
|
18
|
+
*/
|
|
19
|
+
bound(): TGroups | null;
|
|
20
|
+
/** Boolean form of {@link bound}, for readability in tests and guards. */
|
|
21
|
+
ready(): boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Name a compute hook's child input and defer its bind-group construction to `bindInputs`.
|
|
25
|
+
*
|
|
26
|
+
* `buildGroups` receives the resolved child texture — already cast to the type
|
|
27
|
+
* `root.createBindGroup` accepts — and returns whatever collection of bind groups the shader
|
|
28
|
+
* needs (a single group, a `{a, b}` orientation pair, an object of several). It re-runs on every
|
|
29
|
+
* recompose, so anything it allocates must be safe to rebuild.
|
|
30
|
+
*
|
|
31
|
+
* Returns `null` when the node has no child at all, so a child-REQUIRED shader can write
|
|
32
|
+
* `if (!child) return null` and inherit the "no child → no compute" branch.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const child = createLateBoundChildInput(params, (src) => ({
|
|
36
|
+
* bg: root.createBindGroup(layout, {src, prev: stateA, next: stateB, params: buf.buffer}),
|
|
37
|
+
* }))
|
|
38
|
+
* if (!child) return null
|
|
39
|
+
* return {
|
|
40
|
+
* outputs: {childTexture: child.childTexture, display},
|
|
41
|
+
* bindInputs: child.bindInputs,
|
|
42
|
+
* getComputeNodes: () => {
|
|
43
|
+
* const g = child.bound()
|
|
44
|
+
* if (!g) return null
|
|
45
|
+
* return [pipeline.with(g.bg)]
|
|
46
|
+
* },
|
|
47
|
+
* }
|
|
48
|
+
*/
|
|
49
|
+
export declare function createLateBoundChildInput<TGroups>(params: GpuFragmentParams, buildGroups: (childTexture: never) => TGroups): LateBoundChildInput<TGroups> | null;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=lateBoundChild.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lateBoundChild.d.ts","sourceRoot":"","sources":["../../../src/gpu/scaffolds/lateBoundChild.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAC,iBAAiB,EAAE,UAAU,EAAC,MAAM,aAAa,CAAA;AAE9D,yFAAyF;AACzF,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK;IAAC,OAAO,EAAE,OAAO,CAAA;CAAC,GAAG,SAAS,CAAA;AAEpE,MAAM,WAAW,mBAAmB,CAAC,OAAO;IACxC;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAA;IACjC,wDAAwD;IACxD,UAAU,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;IAC5C;;;OAGG;IACH,KAAK,IAAI,OAAO,GAAG,IAAI,CAAA;IACvB,0EAA0E;IAC1E,KAAK,IAAI,OAAO,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAC7C,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,CAAC,YAAY,EAAE,KAAK,KAAK,OAAO,GAC9C,mBAAmB,CAAC,OAAO,CAAC,GAAG,IAAI,CAiBrC"}
|