shaders 4.0.2 → 4.0.3
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-BEBs-lRR.js → AngularBlur-CadOY7zB.js} +1 -1
- package/dist/core/{Arc-D-WnjM7T.js → Arc-B5grj-p3.js} +1 -1
- package/dist/core/{Ascii-BGPIwMc3.js → Ascii-Chul_q9B.js} +1 -1
- package/dist/core/{Aurora-DqJBPdMQ.js → Aurora-COjCTZzM.js} +1 -1
- package/dist/core/{BarShift-BcCOweUh.js → BarShift-CmMkOiz1.js} +1 -1
- package/dist/core/{BarnDoors-B9B-AmCV.js → BarnDoors-B_Tfvd5_.js} +1 -1
- package/dist/core/{Beam-QG_9OS8I.js → Beam-DqUZIoO-.js} +1 -1
- package/dist/core/{Bend-Cy9VAowL.js → Bend-CzoMkg0C.js} +1 -1
- package/dist/core/{Blob-C3txJeW0.js → Blob-D-FcfCk_.js} +1 -1
- package/dist/core/{BlockDissolve-C1SFUys7.js → BlockDissolve-Cfg38mph.js} +1 -1
- package/dist/core/{BlockNoise-Cm3y8hce.js → BlockNoise-AOm3USwt.js} +2 -2
- package/dist/core/{BlueNoise-BCLObOMm.js → BlueNoise-B1goUO9x.js} +2 -2
- package/dist/core/{Blur-Dg29SnXd.js → Blur-orV6Zo0Q.js} +1 -1
- package/dist/core/{Boids-rsGsPN5h.js → Boids-CaGoO9l6.js} +1 -1
- package/dist/core/{BokehBlur-rFSFEnb0.js → BokehBlur-Bak9qlJC.js} +1 -1
- package/dist/core/{BrickPattern-DqN6JKEN.js → BrickPattern-57nSncIU.js} +1 -1
- package/dist/core/{BrightnessContrast-J9fCSBiC.js → BrightnessContrast-CT-FMH50.js} +1 -1
- package/dist/core/{BrushedMetal-74wSZKjG.js → BrushedMetal-CsOf111o.js} +1 -1
- package/dist/core/{Bulge-BIk0oq8j.js → Bulge-BENQmcJz.js} +1 -1
- package/dist/core/{CRTScreen-hEH-JNRd.js → CRTScreen-DRg0NNys.js} +1 -1
- package/dist/core/{CarbonFiber-CZdUDvRU.js → CarbonFiber-CP8sfZpO.js} +1 -1
- package/dist/core/{Chalkboard-CClJHqvs.js → Chalkboard-DIKb88fc.js} +1 -1
- package/dist/core/{ChannelBlur-BEuEwQOC.js → ChannelBlur-hR8wijV7.js} +1 -1
- package/dist/core/{CheckerWipe-KuAWj2qg.js → CheckerWipe-BiWuSCaB.js} +1 -1
- package/dist/core/{Checkerboard-Rq9ze1W3.js → Checkerboard-CI7mErmL.js} +1 -1
- package/dist/core/{Chevron-C1j6X2Ye.js → Chevron-B8Vhf4mu.js} +1 -1
- package/dist/core/{ChromaFlow-BgsCUYIl.js → ChromaFlow-BA40CkCT.js} +1 -1
- package/dist/core/{ChromaticAberration-2_4tjQ0u.js → ChromaticAberration-Co8JMSWY.js} +1 -1
- package/dist/core/{Chrome-Be3z6C5i.js → Chrome-1t9oTBIF.js} +1 -1
- package/dist/core/{Circle-e_qQI3tU.js → Circle-BQq87Fzk.js} +1 -1
- package/dist/core/{ColorWheel-s5ep1H7d.js → ColorWheel-X5JCwd6p.js} +1 -1
- package/dist/core/{CompressionArtifacts-OE9U9Qrq.js → CompressionArtifacts-CfZMsMVi.js} +1 -1
- package/dist/core/{ConcentricSpin-CLE_5yCJ.js → ConcentricSpin-D8srFQgv.js} +1 -1
- package/dist/core/{ConicGradient-Cji2SgVO.js → ConicGradient-zgpOve2I.js} +1 -1
- package/dist/core/{ContourLines-wpPK00cF.js → ContourLines-CIPNR5U6.js} +1 -1
- package/dist/core/{CornerPin-gYU0Uf2m.js → CornerPin-DDatnonj.js} +1 -1
- package/dist/core/{Crescent-viNc7Unp.js → Crescent-2VNndYEF.js} +1 -1
- package/dist/core/{Cross-DyQSsw_k.js → Cross--RtTa2r5.js} +1 -1
- package/dist/core/{Crystal-Vjj8azWg.js → Crystal-RuFWVxDw.js} +1 -1
- package/dist/core/{CurlNoise-C7PHjDht.js → CurlNoise-Dz7E3WIq.js} +2 -2
- package/dist/core/{CursorRipples-BzPPNkA3.js → CursorRipples-DWwT4wnN.js} +1 -1
- package/dist/core/{CursorTrail-cBj0AuQA.js → CursorTrail-DtEejGeY.js} +1 -1
- package/dist/core/{DataMosh-5Yr9TyVx.js → DataMosh-DHklBXQy.js} +1 -1
- package/dist/core/{DiamondGradient-DZM7HwF5.js → DiamondGradient-j3Af00XM.js} +1 -1
- package/dist/core/{DiamondWipe-CqeT7lCt.js → DiamondWipe-BwzZIEYX.js} +1 -1
- package/dist/core/{DiffuseBlur-Y5hSDTZF.js → DiffuseBlur-CztumKI8.js} +1 -1
- package/dist/core/{DisplacementMap-FobRx5Ie.js → DisplacementMap-_R0XWmDv.js} +1 -1
- package/dist/core/{Dither-50rqHpt9.js → Dither-BMtSn0ET.js} +1 -1
- package/dist/core/{DotGrid-B6AGLUbR.js → DotGrid-5pz59elN.js} +1 -1
- package/dist/core/{DropShadow-CEPpgatB.js → DropShadow-Afbu-AM5.js} +1 -1
- package/dist/core/{Duotone-D76Kp7Pb.js → Duotone-CPNAyquB.js} +1 -1
- package/dist/core/{Ellipse-BGod1LeG.js → Ellipse-CIdAfmRX.js} +1 -1
- package/dist/core/{Emboss-DMNFb_ww.js → Emboss-B0ZaXWSG.js} +1 -1
- package/dist/core/{Engraving-Dj7bCATQ.js → Engraving-C6DmtOdA.js} +1 -1
- package/dist/core/{ErosionNoise-4O68wJQZ.js → ErosionNoise-3QrqYZy6.js} +2 -2
- package/dist/core/{Exposure-h-vapOpj.js → Exposure-CQ6luJ-4.js} +1 -1
- package/dist/core/{FallingLines-Dzop_89k.js → FallingLines-y-XE0joI.js} +1 -1
- package/dist/core/{FilmGrain-Bs8PCfdf.js → FilmGrain-Bxz_2Za0.js} +1 -1
- package/dist/core/{FilmStock-DBjVo6rL.js → FilmStock-BsPw-b6W.js} +1 -1
- package/dist/core/{Flip-CfrS4KfZ.js → Flip-CML4rm2V.js} +1 -1
- package/dist/core/{FloatingParticles-D1R2tD2J.js → FloatingParticles-CDQaOt3i.js} +1 -1
- package/dist/core/{FlowField-Slirm5AI.js → FlowField-CEhUrnv4.js} +1 -1
- package/dist/core/{Flower-Ddlut7QZ.js → Flower-Bp75dXJa.js} +1 -1
- package/dist/core/{FlowingGradient-CwIgTtbj.js → FlowingGradient-CGBB_tvE.js} +1 -1
- package/dist/core/{FlutedGlass-CMMy2GJ5.js → FlutedGlass-CkwFDUxi.js} +1 -1
- package/dist/core/{Fog-DjjUkcTZ.js → Fog-Dhy6FKme.js} +1 -1
- package/dist/core/{Form3D-DQDOHWpC.js → Form3D-CFaxdFCN.js} +1 -1
- package/dist/core/{FractalNoise-BjI3IOIj.js → FractalNoise-DMLBHVU1.js} +1 -1
- package/dist/core/{Frost-CK12HnL1.js → Frost-CvCAXumf.js} +1 -1
- package/dist/core/{GaborNoise-DKEIvvRJ.js → GaborNoise-pBwEWsvq.js} +2 -2
- package/dist/core/{Glass-CzcOVD5Y.js → Glass--gVUc74k.js} +1 -1
- package/dist/core/{GlassTiles-gjhc563g.js → GlassTiles-C7iGBDOu.js} +1 -1
- package/dist/core/{Glitch-C_XAWltC.js → Glitch-DdIqzf1U.js} +1 -1
- package/dist/core/{Glow-CrYCanBI.js → Glow-Be0YEdsy.js} +1 -1
- package/dist/core/{Godrays-BBTMOVLP.js → Godrays-BkR81S_6.js} +1 -1
- package/dist/core/{Goo-Brhjk8aS.js → Goo-BuQBpLC1.js} +1 -1
- package/dist/core/{GradientMap-C5325QWw.js → GradientMap-BhzXbIUo.js} +1 -1
- package/dist/core/{Grayscale-dPjs-wvf.js → Grayscale-CgPfjxpC.js} +1 -1
- package/dist/core/{Grid-UjEd3O76.js → Grid-Bf4drnEK.js} +1 -1
- package/dist/core/{GridDistortion-vVgYya1U.js → GridDistortion-OKWF9BkP.js} +1 -1
- package/dist/core/{Group-KVdmAi5g.js → Group-CmvLWhtc.js} +1 -1
- package/dist/core/{HTMLInCanvas-CKr2u76R.js → HTMLInCanvas-t9ohcHFo.js} +1 -1
- package/dist/core/{Halftone-pRV3TRUW.js → Halftone-CL2X2QB3.js} +1 -1
- package/dist/core/{Heart-CX7MvvHZ.js → Heart-B0VJdilk.js} +1 -1
- package/dist/core/{Heatmap-Dn6qyd2e.js → Heatmap-CmoQKw_9.js} +1 -1
- package/dist/core/{HexGrid-BIfYhkfV.js → HexGrid-qzOUXxGp.js} +1 -1
- package/dist/core/{Hologram-ou27baPQ.js → Hologram-DoxZwBsb.js} +1 -1
- package/dist/core/{Holographic-CiHdBSMg.js → Holographic-DOx95C7o.js} +1 -1
- package/dist/core/{HueShift-CG7pcXfg.js → HueShift-DJsP1low.js} +1 -1
- package/dist/core/{ImageTexture-BiZuU58C.js → ImageTexture-GyknRQS4.js} +1 -1
- package/dist/core/{InkFlow-D9_L7opB.js → InkFlow-zlXRbwHy.js} +1 -1
- package/dist/core/{Invert-CHEaiQZO.js → Invert-3ZoLoQJH.js} +1 -1
- package/dist/core/{IrisWipe-x22vOQHm.js → IrisWipe-BuX7mBHl.js} +1 -1
- package/dist/core/{Irradiance-7yq2K87_.js → Irradiance-DAx-vIdy.js} +1 -1
- package/dist/core/{IsometricCubes-CkPGWr7M.js → IsometricCubes-7sbQ2VJA.js} +1 -1
- package/dist/core/{Kaleidoscope-CEC5m1Ww.js → Kaleidoscope-CsLdv8Az.js} +1 -1
- package/dist/core/{KeyFrames-BMGEZsAZ.js → KeyFrames-BzO618Dz.js} +1 -1
- package/dist/core/{LensDistortion-DKo8PiO5.js → LensDistortion-BLR3_sbS.js} +1 -1
- package/dist/core/{LensFlare-DMS-NUtK.js → LensFlare-DTM_QH_n.js} +1 -1
- package/dist/core/{LightEdge-DxmnCRls.js → LightEdge-D9XK4MVu.js} +1 -1
- package/dist/core/{LightLeak-yoEsZtYg.js → LightLeak-Cle2_fM9.js} +1 -1
- package/dist/core/{Line-D17XDUjO.js → Line-DHya7Oc3.js} +1 -1
- package/dist/core/{LinearBlur-CiyjPTUH.js → LinearBlur-DgJP8TuW.js} +1 -1
- package/dist/core/{LinearGradient-DfjKG70q.js → LinearGradient-DQmjBptA.js} +1 -1
- package/dist/core/{LinearWipe-D9CtBg6S.js → LinearWipe-CQlYqf9e.js} +1 -1
- package/dist/core/{LiquidMetal-8EG6DwV6.js → LiquidMetal-BYDcC5TU.js} +1 -1
- package/dist/core/{Liquify-BySXF1OB.js → Liquify-zEXo6xUV.js} +1 -1
- package/dist/core/{MagneticFilings-DNESH3Zs.js → MagneticFilings-D7kyi6PI.js} +1 -1
- package/dist/core/{Marble-C9WvdxrP.js → Marble-DMBDSQC1.js} +1 -1
- package/dist/core/{MeshGradient-d9--RXOU.js → MeshGradient-ByUJxHX0.js} +1 -1
- package/dist/core/{Mirror-1V2FF2kD.js → Mirror-Bjfbugbi.js} +1 -1
- package/dist/core/{MultiPointGradient-cRA9ytgL.js → MultiPointGradient-BJMQ5JbT.js} +1 -1
- package/dist/core/{Nebula-BRV-q74y.js → Nebula-c7wMpb9v.js} +1 -1
- package/dist/core/{Neon-4PemK9Rj.js → Neon-xm7nkRIp.js} +1 -1
- package/dist/core/{NoiseDissolve-B7LgD46G.js → NoiseDissolve-DTSS-5J7.js} +1 -1
- package/dist/core/{ObjectTracker-CdzDxhpy.js → ObjectTracker-CeiMs5_g.js} +1 -1
- package/dist/core/{Obsidian-2J1eX9kT.js → Obsidian-CEzCs0lZ.js} +1 -1
- package/dist/core/{PagePeel-D-ziraOm.js → PagePeel-D8-jVFVt.js} +1 -1
- package/dist/core/{Paper-BxzCLyzB.js → Paper-o3JcSJga.js} +1 -1
- package/dist/core/{Parallelogram-D4OflTwn.js → Parallelogram-DZdZTiv_.js} +1 -1
- package/dist/core/{ParticleField-tWNicEDO.js → ParticleField-mb50mtLl.js} +1 -1
- package/dist/core/{ParticleFlow-BiEYFyWR.js → ParticleFlow-NxmRBFxq.js} +1 -1
- package/dist/core/{Particles-B7W4yWgo.js → Particles-ynCeKlnk.js} +1 -1
- package/dist/core/{PerlinNoise-C-irUxp9.js → PerlinNoise-B43AbgNy.js} +2 -2
- package/dist/core/{Perspective-DlnAW-pe.js → Perspective-Bdr4mrFK.js} +1 -1
- package/dist/core/{PixelSort-BBOTYuOE.js → PixelSort-y1sMZn8T.js} +1 -1
- package/dist/core/{PixelThrow-DCJb9Lxd.js → PixelThrow-MoKF4eJQ.js} +1 -1
- package/dist/core/{Pixelate-CZdwB--K.js → Pixelate-Dt3Dvyye.js} +1 -1
- package/dist/core/{Plasma-CTOQJeqy.js → Plasma-BHPsAkrx.js} +1 -1
- package/dist/core/{Plastic-DvyH9x-4.js → Plastic-8Al38_Uo.js} +1 -1
- package/dist/core/{PolarCoordinates-XhdDAOD0.js → PolarCoordinates-BuiRt8Ae.js} +1 -1
- package/dist/core/{Polygon-CLohB-Ly.js → Polygon-CElChfL_.js} +1 -1
- package/dist/core/{Posterize-BAQfnvmK.js → Posterize-CkX1ySem.js} +1 -1
- package/dist/core/{Prism-DJVCVAXX.js → Prism-B_8r_ACa.js} +1 -1
- package/dist/core/{ProgressiveBlur-Dirva1on.js → ProgressiveBlur-BY9XCK4l.js} +1 -1
- package/dist/core/{RadialGradient-DuSKR8Ds.js → RadialGradient-D4ELylxQ.js} +1 -1
- package/dist/core/{RadialWipe-n8tON7x2.js → RadialWipe-DNvkJb42.js} +1 -1
- package/dist/core/{RandomBars-BYouiIgQ.js → RandomBars-5D9oIVCD.js} +1 -1
- package/dist/core/{ReactionDiffusion-CHDd3y2q.js → ReactionDiffusion-BGmksqeC.js} +1 -1
- package/dist/core/{RectangularCoordinates-CYFfCawa.js → RectangularCoordinates-0l5t-2No.js} +1 -1
- package/dist/core/{ReflectivePlane-DFTl5U9q.js → ReflectivePlane-BqefdbHK.js} +1 -1
- package/dist/core/{Repeater-CnbzXuAe.js → Repeater-CJj0PHTv.js} +1 -1
- package/dist/core/{Ring-CGkHVSVd.js → Ring-Czf6zylA.js} +1 -1
- package/dist/core/{RippleWipe-DLjPzY6u.js → RippleWipe-gk_KAy9N.js} +1 -1
- package/dist/core/{Ripples-C2tITU62.js → Ripples-DSmJplDh.js} +1 -1
- package/dist/core/{RoundedRect-sfNTUaCY.js → RoundedRect-DCFq3bhP.js} +1 -1
- package/dist/core/Satin-BEbTbcTD.js +372 -0
- package/dist/core/{Saturation-BRkifYWj.js → Saturation-D0hjM6vJ.js} +1 -1
- package/dist/core/{Scratches-D87O5C2K.js → Scratches-CBbSvaL9.js} +2 -2
- package/dist/core/{Sharpness-BGv613Zw.js → Sharpness-CxNkUCd4.js} +1 -1
- package/dist/core/{Shatter-DuyCFU1f.js → Shatter-OGsXkOO8.js} +1 -1
- package/dist/core/{SimplexNoise-CQJvmqd-.js → SimplexNoise-EZ9qyUZl.js} +2 -2
- package/dist/core/{SineWave-BfOgSGMP.js → SineWave-jv-D2nek.js} +1 -1
- package/dist/core/{SliceWipe-CD_D99sl.js → SliceWipe-CyQ8KwJe.js} +1 -1
- package/dist/core/{Smoke-BDQYKRP1.js → Smoke-D5t3guA6.js} +1 -1
- package/dist/core/{SmokeFill-CPnzQtQv.js → SmokeFill-DDqH7q9k.js} +1 -1
- package/dist/core/{SmokeFlow-BkPMjZq8.js → SmokeFlow-dqFWC3nR.js} +1 -1
- package/dist/core/{Solarize-DSiS32QS.js → Solarize-DQKm8tad.js} +1 -1
- package/dist/core/{SolidColor-DEKpgy1c.js → SolidColor-AuMQ8wsV.js} +1 -1
- package/dist/core/{Sparkle-BZur6gPW.js → Sparkle-DB3i_Vm0.js} +1 -1
- package/dist/core/{Spherize-D9Yg4n6O.js → Spherize-BvO_quYf.js} +1 -1
- package/dist/core/{Spiral-BCacfEpT.js → Spiral-A7K8dyqa.js} +1 -1
- package/dist/core/{Star-Dnw1ihk7.js → Star-Bhjof1Aq.js} +1 -1
- package/dist/core/{Stone-Cje-_vAg.js → Stone-BqVeG7vJ.js} +1 -1
- package/dist/core/{Strands-CFRxS1G_.js → Strands-B_yNFviv.js} +1 -1
- package/dist/core/{Stretch-DXVhfIqO.js → Stretch-CoJ0ZxXU.js} +1 -1
- package/dist/core/{Stripes-CCADWwyq.js → Stripes-DnVSZwzX.js} +1 -1
- package/dist/core/{StudioBackground-BlzYNAsu.js → StudioBackground-WLPZVlBE.js} +1 -1
- package/dist/core/{SunBurst-CmWbI18r.js → SunBurst-V0H9L8IC.js} +1 -1
- package/dist/core/{Surface3D-Dmh98-0V.js → Surface3D-CYrJo3xx.js} +1 -1
- package/dist/core/{Swirl-CzI1qSVc.js → Swirl-C5du-FPv.js} +1 -1
- package/dist/core/{Teardrop-D24uulL0.js → Teardrop-BmMSpSnv.js} +1 -1
- package/dist/core/{Text-CrZKvBw6.js → Text-BI5tmkPX.js} +1 -1
- package/dist/core/{ThinFilm-D7R2dt1O.js → ThinFilm-Ce-bUUyq.js} +1 -1
- package/dist/core/{TiltShift-AMMDZBvf.js → TiltShift-DnjqzNPb.js} +1 -1
- package/dist/core/{TimeTrail-BCYDP2ep.js → TimeTrail-CZBKfdhv.js} +1 -1
- package/dist/core/{Tint-DHb5wBN5.js → Tint-CiaVTPnf.js} +1 -1
- package/dist/core/{Trapezoid-CL5Fxvq7.js → Trapezoid-C5uh_TK4.js} +1 -1
- package/dist/core/{TriangularGrid-Bp-SJS-H.js → TriangularGrid-B1E1yy5Y.js} +1 -1
- package/dist/core/{Tritone-C0nx7OdC.js → Tritone-VDEMnDwQ.js} +1 -1
- package/dist/core/{Truchet-DCetyDaq.js → Truchet-Bl6ASWtj.js} +1 -1
- package/dist/core/{Twirl-D_mv9KEi.js → Twirl-BzLRq2-1.js} +1 -1
- package/dist/core/{VHS-Cp9aDjti.js → VHS-BjOXkojN.js} +1 -1
- package/dist/core/{VenetianBlinds-DUyvaT5w.js → VenetianBlinds-D6S_TOHF.js} +1 -1
- package/dist/core/{Vesica-BpzrTPTA.js → Vesica-Br6UVZt3.js} +1 -1
- package/dist/core/{Vibrance-DW3J-pvW.js → Vibrance-D5x8kNPO.js} +1 -1
- package/dist/core/{VideoTexture-zoKsSrex.js → VideoTexture-CJIi00YZ.js} +1 -1
- package/dist/core/{Vignette-KKbP3qdZ.js → Vignette-BgPDqyZY.js} +1 -1
- package/dist/core/{Voronoi-Bp2-U6lm.js → Voronoi-C_0qmF5M.js} +1 -1
- package/dist/core/{Voxels-B3e3LHH5.js → Voxels-Cr2nX-J2.js} +1 -1
- package/dist/core/{Water-CoYwvqKx.js → Water-C1hpWaDG.js} +1 -1
- package/dist/core/{Watercolor-DUNjSIN1.js → Watercolor-DcHvJiR0.js} +1 -1
- package/dist/core/{WaveDistortion-Dp8ws0z1.js → WaveDistortion-Dh79dGBr.js} +1 -1
- package/dist/core/{Waveform-DDBLB6zu.js → Waveform-WaNoseGL.js} +1 -1
- package/dist/core/{WaveletNoise-CpBkzfRT.js → WaveletNoise-B7BbHyRe.js} +2 -2
- package/dist/core/{Weave-cWkvSEAy.js → Weave-ltmDeQ91.js} +1 -1
- package/dist/core/{WebcamTexture-D484SXSE.js → WebcamTexture-CxehSVcP.js} +1 -1
- package/dist/core/{Wool-C9L7O9fD.js → Wool-BGpl5MnC.js} +1 -1
- package/dist/core/{WorleyNoise-B5j5lDQZ.js → WorleyNoise-COzM7yGf.js} +1 -1
- package/dist/core/{ZoomBlur-bPC1dBu2.js → ZoomBlur-jsmAeX03.js} +1 -1
- package/dist/core/docs-manifest.json +373 -75
- package/dist/core/gpu/frame.d.ts +14 -7
- package/dist/core/gpu/frame.d.ts.map +1 -1
- package/dist/core/gpu/index.d.ts.map +1 -1
- package/dist/core/index.js +211 -209
- package/dist/core/llms.txt +21 -3
- package/dist/core/{noiseColor-D_bPhJ4m.js → noiseColor-oUufQir9.js} +1 -1
- package/dist/core/presetRenderer.d.ts.map +1 -1
- package/dist/core/registry.js +203 -202
- package/dist/core/shaderRegistry-jxUBiD5N.js +447 -0
- package/dist/core/shaderRegistry.d.ts.map +1 -1
- package/dist/core/shaders/AngularBlur/index.js +2 -2
- package/dist/core/shaders/Arc/index.js +2 -2
- package/dist/core/shaders/Ascii/index.js +2 -2
- package/dist/core/shaders/Aurora/index.js +2 -2
- package/dist/core/shaders/BarShift/index.js +2 -2
- package/dist/core/shaders/BarnDoors/index.js +2 -2
- package/dist/core/shaders/Beam/index.js +2 -2
- package/dist/core/shaders/Bend/index.js +2 -2
- package/dist/core/shaders/Blob/index.js +2 -2
- package/dist/core/shaders/BlockDissolve/index.js +2 -2
- package/dist/core/shaders/BlockNoise/index.js +3 -3
- package/dist/core/shaders/BlueNoise/index.js +3 -3
- package/dist/core/shaders/Blur/index.js +2 -2
- package/dist/core/shaders/Boids/index.js +2 -2
- package/dist/core/shaders/BokehBlur/index.js +2 -2
- package/dist/core/shaders/BrickPattern/index.js +2 -2
- package/dist/core/shaders/BrightnessContrast/index.js +2 -2
- package/dist/core/shaders/BrushedMetal/index.js +2 -2
- package/dist/core/shaders/Bulge/index.js +2 -2
- package/dist/core/shaders/CRTScreen/index.js +2 -2
- package/dist/core/shaders/CarbonFiber/index.js +2 -2
- package/dist/core/shaders/Chalkboard/index.js +2 -2
- package/dist/core/shaders/ChannelBlur/index.js +2 -2
- package/dist/core/shaders/CheckerWipe/index.js +2 -2
- package/dist/core/shaders/Checkerboard/index.js +2 -2
- package/dist/core/shaders/Chevron/index.js +2 -2
- package/dist/core/shaders/ChromaFlow/index.js +2 -2
- package/dist/core/shaders/ChromaticAberration/index.js +2 -2
- package/dist/core/shaders/Chrome/index.js +2 -2
- package/dist/core/shaders/Circle/index.js +2 -2
- package/dist/core/shaders/ColorWheel/index.js +2 -2
- package/dist/core/shaders/CompressionArtifacts/index.js +2 -2
- package/dist/core/shaders/ConcentricSpin/index.js +2 -2
- package/dist/core/shaders/ConicGradient/index.js +2 -2
- package/dist/core/shaders/ContourLines/index.js +2 -2
- package/dist/core/shaders/CornerPin/index.js +2 -2
- package/dist/core/shaders/Crescent/index.js +2 -2
- package/dist/core/shaders/Cross/index.js +2 -2
- package/dist/core/shaders/Crystal/index.js +2 -2
- package/dist/core/shaders/CurlNoise/index.js +3 -3
- package/dist/core/shaders/CursorRipples/index.js +2 -2
- package/dist/core/shaders/CursorTrail/index.js +2 -2
- package/dist/core/shaders/DataMosh/index.js +2 -2
- package/dist/core/shaders/DiamondGradient/index.js +2 -2
- package/dist/core/shaders/DiamondWipe/index.js +2 -2
- package/dist/core/shaders/DiffuseBlur/index.js +2 -2
- package/dist/core/shaders/DisplacementMap/index.js +2 -2
- package/dist/core/shaders/Dither/index.js +2 -2
- package/dist/core/shaders/DotGrid/index.js +2 -2
- package/dist/core/shaders/DropShadow/index.js +2 -2
- package/dist/core/shaders/Duotone/index.js +2 -2
- package/dist/core/shaders/Ellipse/index.js +2 -2
- package/dist/core/shaders/Emboss/index.js +2 -2
- package/dist/core/shaders/Engraving/index.js +2 -2
- package/dist/core/shaders/ErosionNoise/index.js +3 -3
- package/dist/core/shaders/Exposure/index.js +2 -2
- package/dist/core/shaders/FallingLines/index.js +2 -2
- package/dist/core/shaders/FilmGrain/index.js +2 -2
- package/dist/core/shaders/FilmStock/index.js +2 -2
- package/dist/core/shaders/Flip/index.js +2 -2
- package/dist/core/shaders/FloatingParticles/index.js +2 -2
- package/dist/core/shaders/FlowField/index.js +2 -2
- package/dist/core/shaders/Flower/index.js +2 -2
- package/dist/core/shaders/FlowingGradient/index.js +2 -2
- package/dist/core/shaders/FlutedGlass/index.js +2 -2
- package/dist/core/shaders/Fog/index.js +2 -2
- package/dist/core/shaders/Form3D/index.js +2 -2
- package/dist/core/shaders/FractalNoise/index.js +2 -2
- package/dist/core/shaders/Frost/index.js +2 -2
- package/dist/core/shaders/GaborNoise/index.js +3 -3
- package/dist/core/shaders/Glass/index.js +2 -2
- package/dist/core/shaders/GlassTiles/index.js +2 -2
- package/dist/core/shaders/Glitch/index.js +2 -2
- package/dist/core/shaders/Glow/index.js +2 -2
- package/dist/core/shaders/Godrays/index.js +2 -2
- package/dist/core/shaders/Goo/index.js +2 -2
- package/dist/core/shaders/GradientMap/index.js +2 -2
- package/dist/core/shaders/Grayscale/index.js +2 -2
- package/dist/core/shaders/Grid/index.js +2 -2
- package/dist/core/shaders/GridDistortion/index.js +2 -2
- package/dist/core/shaders/Group/index.js +2 -2
- package/dist/core/shaders/HTMLInCanvas/index.js +2 -2
- package/dist/core/shaders/Halftone/index.js +2 -2
- package/dist/core/shaders/Heart/index.js +2 -2
- package/dist/core/shaders/Heatmap/index.js +2 -2
- package/dist/core/shaders/HexGrid/index.js +2 -2
- package/dist/core/shaders/Hologram/index.js +2 -2
- package/dist/core/shaders/Holographic/index.js +2 -2
- package/dist/core/shaders/HueShift/index.js +2 -2
- package/dist/core/shaders/ImageTexture/index.js +2 -2
- package/dist/core/shaders/InkFlow/index.js +2 -2
- package/dist/core/shaders/Invert/index.js +2 -2
- package/dist/core/shaders/IrisWipe/index.js +2 -2
- package/dist/core/shaders/Irradiance/index.js +2 -2
- package/dist/core/shaders/IsometricCubes/index.js +2 -2
- package/dist/core/shaders/Kaleidoscope/index.js +2 -2
- package/dist/core/shaders/KeyFrames/index.js +2 -2
- package/dist/core/shaders/LensDistortion/index.js +2 -2
- package/dist/core/shaders/LensFlare/index.js +2 -2
- package/dist/core/shaders/LightEdge/index.js +2 -2
- package/dist/core/shaders/LightLeak/index.js +2 -2
- package/dist/core/shaders/Line/index.js +2 -2
- package/dist/core/shaders/LinearBlur/index.js +2 -2
- package/dist/core/shaders/LinearGradient/index.js +2 -2
- package/dist/core/shaders/LinearWipe/index.js +2 -2
- package/dist/core/shaders/LiquidMetal/index.js +2 -2
- package/dist/core/shaders/Liquify/index.js +2 -2
- package/dist/core/shaders/MagneticFilings/index.js +2 -2
- package/dist/core/shaders/Marble/index.js +2 -2
- package/dist/core/shaders/MeshGradient/index.js +2 -2
- package/dist/core/shaders/Mirror/index.js +2 -2
- package/dist/core/shaders/MultiPointGradient/index.js +2 -2
- package/dist/core/shaders/Nebula/index.js +2 -2
- package/dist/core/shaders/Neon/index.js +2 -2
- package/dist/core/shaders/NoiseDissolve/index.js +2 -2
- package/dist/core/shaders/ObjectTracker/index.js +2 -2
- package/dist/core/shaders/Obsidian/index.js +2 -2
- package/dist/core/shaders/PagePeel/index.js +2 -2
- package/dist/core/shaders/Paper/index.js +2 -2
- package/dist/core/shaders/Parallelogram/index.js +2 -2
- package/dist/core/shaders/ParticleField/index.js +2 -2
- package/dist/core/shaders/ParticleFlow/index.js +2 -2
- package/dist/core/shaders/Particles/index.js +2 -2
- package/dist/core/shaders/PerlinNoise/index.js +3 -3
- package/dist/core/shaders/Perspective/index.js +2 -2
- package/dist/core/shaders/PixelSort/index.js +2 -2
- package/dist/core/shaders/PixelThrow/index.js +2 -2
- package/dist/core/shaders/Pixelate/index.js +2 -2
- package/dist/core/shaders/Plasma/index.js +2 -2
- package/dist/core/shaders/Plastic/index.js +2 -2
- package/dist/core/shaders/PolarCoordinates/index.js +2 -2
- package/dist/core/shaders/Polygon/index.js +2 -2
- package/dist/core/shaders/Posterize/index.js +2 -2
- package/dist/core/shaders/Prism/index.js +2 -2
- package/dist/core/shaders/ProgressiveBlur/index.js +2 -2
- package/dist/core/shaders/RadialGradient/index.js +2 -2
- package/dist/core/shaders/RadialWipe/index.js +2 -2
- package/dist/core/shaders/RandomBars/index.js +2 -2
- package/dist/core/shaders/ReactionDiffusion/index.js +2 -2
- package/dist/core/shaders/RectangularCoordinates/index.js +2 -2
- package/dist/core/shaders/ReflectivePlane/index.js +2 -2
- package/dist/core/shaders/Repeater/index.js +2 -2
- package/dist/core/shaders/Ring/index.js +2 -2
- package/dist/core/shaders/RippleWipe/index.js +2 -2
- package/dist/core/shaders/Ripples/index.js +2 -2
- package/dist/core/shaders/RoundedRect/index.js +2 -2
- package/dist/core/shaders/Satin/index.d.ts +120 -0
- package/dist/core/shaders/Satin/index.d.ts.map +1 -0
- package/dist/core/shaders/Satin/index.js +5 -0
- package/dist/core/shaders/Saturation/index.js +2 -2
- package/dist/core/shaders/Scratches/index.js +3 -3
- package/dist/core/shaders/Sharpness/index.js +2 -2
- package/dist/core/shaders/Shatter/index.js +2 -2
- package/dist/core/shaders/SimplexNoise/index.js +3 -3
- package/dist/core/shaders/SineWave/index.js +2 -2
- package/dist/core/shaders/SliceWipe/index.js +2 -2
- package/dist/core/shaders/Smoke/index.js +2 -2
- package/dist/core/shaders/SmokeFill/index.js +2 -2
- package/dist/core/shaders/SmokeFlow/index.js +2 -2
- package/dist/core/shaders/Solarize/index.js +2 -2
- package/dist/core/shaders/SolidColor/index.js +2 -2
- package/dist/core/shaders/Sparkle/index.js +2 -2
- package/dist/core/shaders/Spherize/index.js +2 -2
- package/dist/core/shaders/Spiral/index.js +2 -2
- package/dist/core/shaders/Star/index.js +2 -2
- package/dist/core/shaders/Stone/index.js +2 -2
- package/dist/core/shaders/Strands/index.js +2 -2
- package/dist/core/shaders/Stretch/index.js +2 -2
- package/dist/core/shaders/Stripes/index.js +2 -2
- package/dist/core/shaders/StudioBackground/index.js +2 -2
- package/dist/core/shaders/SunBurst/index.js +2 -2
- package/dist/core/shaders/Surface3D/index.js +2 -2
- package/dist/core/shaders/Swirl/index.js +2 -2
- package/dist/core/shaders/Teardrop/index.js +2 -2
- package/dist/core/shaders/Text/index.js +2 -2
- package/dist/core/shaders/ThinFilm/index.js +2 -2
- package/dist/core/shaders/TiltShift/index.js +2 -2
- package/dist/core/shaders/TimeTrail/index.js +2 -2
- package/dist/core/shaders/Tint/index.js +2 -2
- package/dist/core/shaders/Trapezoid/index.js +2 -2
- package/dist/core/shaders/TriangularGrid/index.js +2 -2
- package/dist/core/shaders/Tritone/index.js +2 -2
- package/dist/core/shaders/Truchet/index.js +2 -2
- package/dist/core/shaders/Twirl/index.js +2 -2
- package/dist/core/shaders/VHS/index.js +2 -2
- package/dist/core/shaders/VenetianBlinds/index.js +2 -2
- package/dist/core/shaders/Vesica/index.js +2 -2
- package/dist/core/shaders/Vibrance/index.js +2 -2
- package/dist/core/shaders/VideoTexture/index.js +2 -2
- package/dist/core/shaders/Vignette/index.js +2 -2
- package/dist/core/shaders/Voronoi/index.js +2 -2
- package/dist/core/shaders/Voxels/index.js +2 -2
- package/dist/core/shaders/Water/index.js +2 -2
- package/dist/core/shaders/Watercolor/index.js +2 -2
- package/dist/core/shaders/WaveDistortion/index.js +2 -2
- package/dist/core/shaders/Waveform/index.js +2 -2
- package/dist/core/shaders/WaveletNoise/index.js +3 -3
- package/dist/core/shaders/Weave/index.js +2 -2
- package/dist/core/shaders/WebcamTexture/index.js +2 -2
- package/dist/core/shaders/Wool/index.js +2 -2
- package/dist/core/shaders/WorleyNoise/index.js +2 -2
- package/dist/core/shaders/ZoomBlur/index.js +2 -2
- package/dist/core/std/index.js +1 -1
- package/dist/core/std/paint/materials.d.ts +48 -2
- package/dist/core/std/paint/materials.d.ts.map +1 -1
- package/dist/core/std/paint/noise.d.ts +120 -0
- package/dist/core/std/paint/noise.d.ts.map +1 -1
- package/dist/core/{std-ClftfWpF.js → std-ebybEx3c.js} +114 -19
- package/dist/js/bundle.js +101 -101
- package/dist/js/createShader.js +1 -1
- package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/js/utils/generatePresetCode.js +23 -0
- package/dist/react/Preview.js +1 -0
- package/dist/react/Satin.js +226 -0
- package/dist/react/Shader.js +1 -1
- package/dist/react/bundle.js +90 -90
- package/dist/react/components/Satin.d.ts +49 -0
- package/dist/react/components/Satin.d.ts.map +1 -0
- package/dist/react/engine/Preview.d.ts.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -1
- package/dist/react/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/react/utils/generatePresetCode.js +23 -0
- package/dist/registry.js +528 -0
- package/dist/solid/components/Satin.d.ts +46 -0
- package/dist/solid/components/Satin.d.ts.map +1 -0
- package/dist/solid/components/Satin.js +232 -0
- package/dist/solid/engine/Preview.d.ts.map +1 -1
- package/dist/solid/engine/Preview.js +295 -293
- package/dist/solid/engine/Shader.js +1 -1
- package/dist/solid/index.d.ts +1 -0
- package/dist/solid/index.d.ts.map +1 -1
- package/dist/solid/index.js +114 -112
- package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/solid/utils/generatePresetCode.js +23 -0
- package/dist/svelte/components/Satin.svelte.d.ts +36 -0
- package/dist/svelte/index.d.ts +1 -0
- package/dist/svelte/index.js +2500 -2293
- package/dist/svelte/source/components/Satin.svelte +360 -0
- package/dist/svelte/source/engine/Preview.svelte +2 -0
- package/dist/svelte/source/index.js +1 -0
- package/dist/svelte/utils/generatePresetCode.js +23 -0
- package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +2 -0
- package/dist/vue/Satin.js +3 -0
- package/dist/vue/Satin.vue_vue_type_script_setup_true_lang.js +243 -0
- package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/vue/components/Satin.vue.d.ts +71 -0
- package/dist/vue/components/Satin.vue.d.ts.map +1 -0
- package/dist/vue/index.d.ts +1 -0
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue/index.js +2 -1
- package/dist/vue/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/vue/utils/generatePresetCode.js +23 -0
- package/package.json +9 -1
- package/dist/core/shaderRegistry-BaozBFyh.js +0 -445
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { getContext, setContext, onMount, onDestroy } from 'svelte';
|
|
3
|
+
import {
|
|
4
|
+
createGpuUniformsMap,
|
|
5
|
+
resolveBoundingBox,
|
|
6
|
+
type GpuUniformsMap,
|
|
7
|
+
type BlendMode,
|
|
8
|
+
type NodeMetadata,
|
|
9
|
+
type PropConfig,
|
|
10
|
+
type MaskConfig,
|
|
11
|
+
type PropDriver,
|
|
12
|
+
type TransformConfig,
|
|
13
|
+
type BoundingBoxConfig,
|
|
14
|
+
type LayoutConfig
|
|
15
|
+
} from '../../../core/index.js';
|
|
16
|
+
import {setColorSpaceMode} from '../../../core/utilities/transformations/index.js';
|
|
17
|
+
|
|
18
|
+
// @ts-ignore - this import is replaced at build time
|
|
19
|
+
import { componentDefinition, type ComponentProps } from '../../../core/shaders/Satin/index.js';
|
|
20
|
+
|
|
21
|
+
// Warn once per page load if this is an experimental component
|
|
22
|
+
let _experimentalWarnedOnce = false;
|
|
23
|
+
if ((componentDefinition as any).experimental && !_experimentalWarnedOnce) {
|
|
24
|
+
_experimentalWarnedOnce = true;
|
|
25
|
+
const _e = (componentDefinition as any).experimental;
|
|
26
|
+
console.info(`%c⚠ [Shaders] ${componentDefinition.name} is experimental: ${_e.message}`, 'color: #f59e0b; font-weight: bold');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Define component props including blend mode, opacity, visibility, masking, and transformation
|
|
31
|
+
*/
|
|
32
|
+
interface ExtendedComponentProps extends Partial<ComponentProps> {
|
|
33
|
+
foldDirection?: ComponentProps['foldDirection'] | PropDriver;
|
|
34
|
+
foldDepth?: ComponentProps['foldDepth'] | PropDriver;
|
|
35
|
+
foldWidth?: ComponentProps['foldWidth'] | PropDriver;
|
|
36
|
+
pinning?: ComponentProps['pinning'] | PropDriver;
|
|
37
|
+
seed?: ComponentProps['seed'] | PropDriver;
|
|
38
|
+
breeze?: ComponentProps['breeze'] | PropDriver;
|
|
39
|
+
gloss?: ComponentProps['gloss'] | PropDriver;
|
|
40
|
+
anisotropy?: ComponentProps['anisotropy'] | PropDriver;
|
|
41
|
+
bloom?: ComponentProps['bloom'] | PropDriver;
|
|
42
|
+
sheen?: ComponentProps['sheen'] | PropDriver;
|
|
43
|
+
weave?: ComponentProps['weave'] | PropDriver;
|
|
44
|
+
fiberAngle?: ComponentProps['fiberAngle'] | PropDriver;
|
|
45
|
+
lightAngle?: ComponentProps['lightAngle'] | PropDriver;
|
|
46
|
+
fill?: ComponentProps['fill'] | PropDriver;
|
|
47
|
+
blendMode?: BlendMode;
|
|
48
|
+
opacity?: number;
|
|
49
|
+
visible?: boolean;
|
|
50
|
+
id?: string;
|
|
51
|
+
maskSource?: string;
|
|
52
|
+
maskType?: string;
|
|
53
|
+
renderOrder?: number;
|
|
54
|
+
transform?: Partial<TransformConfig>;
|
|
55
|
+
boundingBox?: Partial<BoundingBoxConfig>;
|
|
56
|
+
flow?: LayoutConfig;
|
|
57
|
+
absolute?: boolean;
|
|
58
|
+
children?: import('svelte').Snippet;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function isPropDriver(value: unknown): value is PropDriver {
|
|
62
|
+
return typeof value === 'object' && value !== null && 'type' in value &&
|
|
63
|
+
((value as any).type === 'map' || (value as any).type === 'mouse' || (value as any).type === 'mouse-position' || (value as any).type === 'auto-animate');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Default transform configuration (optimized for zero overhead)
|
|
68
|
+
*/
|
|
69
|
+
const DEFAULT_TRANSFORM: TransformConfig = {
|
|
70
|
+
offsetX: 0,
|
|
71
|
+
offsetY: 0,
|
|
72
|
+
rotation: 0,
|
|
73
|
+
scale: 1,
|
|
74
|
+
anchorX: 0.5,
|
|
75
|
+
anchorY: 0.5,
|
|
76
|
+
edges: 'transparent'
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// Define the component props and their default values from the shader definition
|
|
80
|
+
const componentDefaults = {
|
|
81
|
+
blendMode: 'normal' as BlendMode,
|
|
82
|
+
visible: true,
|
|
83
|
+
// opacity intentionally has no default - handled by renderer
|
|
84
|
+
// transform intentionally has no default - handled by effectiveTransform
|
|
85
|
+
...Object.entries(componentDefinition.props).reduce(
|
|
86
|
+
(acc, [key, config]) => {
|
|
87
|
+
acc[key] = (config as unknown as PropConfig<typeof config>).default;
|
|
88
|
+
return acc;
|
|
89
|
+
},
|
|
90
|
+
{} as Record<string, any>
|
|
91
|
+
)
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
// Declare props using Svelte 5's syntax
|
|
95
|
+
const props: ExtendedComponentProps = $props();
|
|
96
|
+
|
|
97
|
+
// Apply defaults manually since Svelte 5 doesn't have withDefaults equivalent
|
|
98
|
+
// Use $derived so the metadata $effect re-runs when any of these change at runtime
|
|
99
|
+
const blendMode = $derived(props.blendMode ?? componentDefaults.blendMode);
|
|
100
|
+
const opacity = $derived(props.opacity); // No default - handled by renderer
|
|
101
|
+
const visible = $derived(props.visible ?? componentDefaults.visible); // Default to true
|
|
102
|
+
const id = $derived(props.id);
|
|
103
|
+
const maskSource = $derived(props.maskSource);
|
|
104
|
+
const maskType = $derived(props.maskType);
|
|
105
|
+
const renderOrder = $derived(props.renderOrder);
|
|
106
|
+
const { children } = props;
|
|
107
|
+
|
|
108
|
+
// Collect PropDriver values from shader props into the maps metadata structure
|
|
109
|
+
const mapsFromProps = $derived.by(() => {
|
|
110
|
+
const maps: Record<string, PropDriver> = {};
|
|
111
|
+
for (const key of Object.keys(componentDefinition.props)) {
|
|
112
|
+
const val = (props as any)[key];
|
|
113
|
+
if (isPropDriver(val)) maps[key] = val as PropDriver;
|
|
114
|
+
}
|
|
115
|
+
return Object.keys(maps).length > 0 ? maps : undefined;
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Computed transform that merges user-provided values with defaults
|
|
120
|
+
*/
|
|
121
|
+
const effectiveTransform = $derived({
|
|
122
|
+
...DEFAULT_TRANSFORM,
|
|
123
|
+
...props.transform
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Effective bounding box — partial configs merge with full-frame defaults,
|
|
128
|
+
* absent stays undefined so the bbox render path is not activated
|
|
129
|
+
*/
|
|
130
|
+
const effectiveBoundingBox = $derived(resolveBoundingBox(props.boundingBox));
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* FIRST: Get the parent ID from context BEFORE setting our own context
|
|
134
|
+
*/
|
|
135
|
+
const parentId = getContext<string>('shaderParentId');
|
|
136
|
+
if (parentId === undefined) {
|
|
137
|
+
throw new Error('Shader components must be used inside an <Shader> component or another shader component');
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Use the provided ID or generate a unique identifier for this component instance
|
|
142
|
+
*/
|
|
143
|
+
const instanceId = (id ? id.replace(/[^a-zA-Z0-9_]/g, '_') : null) || Math.random().toString(36).substring(2, 10);
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* THEN: Provide our unique identifier to child components
|
|
147
|
+
*/
|
|
148
|
+
setContext('shaderParentId', instanceId);
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Creates a non-reactive object containing only props that differ from defaults
|
|
152
|
+
* This optimization prevents unnecessary GPU uniform updates for unchanged values
|
|
153
|
+
* Special props like blendMode and opacity are handled separately
|
|
154
|
+
*/
|
|
155
|
+
const shaderReadyProps = $derived.by(() => {
|
|
156
|
+
let baseProps = { ...componentDefaults };
|
|
157
|
+
|
|
158
|
+
// Only include props that differ from defaults (excluding special props and PropDrivers)
|
|
159
|
+
for (const key in props) {
|
|
160
|
+
if (key !== 'blendMode' && key !== 'opacity' && key !== 'visible' &&
|
|
161
|
+
key !== 'id' && key !== 'maskSource' && key !== 'maskType' && key !== 'renderOrder' &&
|
|
162
|
+
key !== 'transform' && key !== 'boundingBox' && key !== 'flow' && key !== 'absolute' && key !== 'children') {
|
|
163
|
+
const propValue = (props as any)[key];
|
|
164
|
+
if (isPropDriver(propValue)) continue; // PropDrivers go to metadata.maps, not uniforms
|
|
165
|
+
const defaultValue = (componentDefaults as any)[key];
|
|
166
|
+
if (propValue !== undefined && propValue !== defaultValue) {
|
|
167
|
+
(baseProps as any)[key] = propValue;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return baseProps;
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Get the color space from the root Shader component.
|
|
176
|
+
* Used to set the global color space mode before creating uniforms.
|
|
177
|
+
*/
|
|
178
|
+
const shaderColorSpace = getContext<() => 'p3-linear' | 'srgb'>('shaderColorSpace');
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Creates the GPU uniform values map using only the changed props
|
|
182
|
+
* Set the global color space mode before creating uniforms so colors are transformed correctly
|
|
183
|
+
* Note: Intentionally captures initial value - props are immutable after initialization
|
|
184
|
+
*/
|
|
185
|
+
if (shaderColorSpace) {
|
|
186
|
+
setColorSpaceMode(shaderColorSpace());
|
|
187
|
+
}
|
|
188
|
+
// svelte-ignore state_referenced_locally
|
|
189
|
+
const uniforms: GpuUniformsMap = createGpuUniformsMap(componentDefinition, shaderReadyProps, instanceId);
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Get the node registration function from parent context
|
|
193
|
+
*/
|
|
194
|
+
const parentRegister = getContext<(id: string, fragmentNodeFunc: any, parentId: string | null, metadata: NodeMetadata | null, uniforms: GpuUniformsMap | null, componentDefinition: any, domCanvas?: HTMLCanvasElement) => void>('shaderNodeRegister');
|
|
195
|
+
if (parentRegister === undefined) {
|
|
196
|
+
throw new Error('Shader components must be used inside an <Shader> component or another shader component');
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Get the uniform update function from parent context
|
|
201
|
+
*/
|
|
202
|
+
const parentUniformUpdate = getContext<(nodeId: string, uniformName: string, value: any) => void>('shaderUniformUpdate');
|
|
203
|
+
if (parentUniformUpdate === undefined) {
|
|
204
|
+
throw new Error('Shader components require shaderUniformUpdate from parent');
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Get the metadata update function from parent context
|
|
209
|
+
*/
|
|
210
|
+
const parentMetadataUpdate = getContext<(nodeId: string, metadata: NodeMetadata) => void>('shaderMetadataUpdate');
|
|
211
|
+
if (parentMetadataUpdate === undefined) {
|
|
212
|
+
throw new Error('Shader components require shaderMetadataUpdate from parent');
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// capturesDOM — canvas layoutsubtree portal for HTMLInCanvas-style shaders
|
|
216
|
+
const isCapturesDOM = !!(componentDefinition as any).capturesDOM;
|
|
217
|
+
let captureCanvas: HTMLCanvasElement | undefined;
|
|
218
|
+
let captureW = $state(typeof window !== 'undefined' ? Math.round(window.innerWidth * Math.min(window.devicePixelRatio, 2)) : 0);
|
|
219
|
+
let captureH = $state(typeof window !== 'undefined' ? Math.round(window.innerHeight * Math.min(window.devicePixelRatio, 2)) : 0);
|
|
220
|
+
|
|
221
|
+
function teleportToBody(node: HTMLElement) {
|
|
222
|
+
document.body.appendChild(node);
|
|
223
|
+
return { destroy() { node.remove(); } };
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
if (isCapturesDOM) {
|
|
227
|
+
const onWinResize = () => {
|
|
228
|
+
const d = Math.min(window.devicePixelRatio, 2);
|
|
229
|
+
captureW = Math.round(window.innerWidth * d);
|
|
230
|
+
captureH = Math.round(window.innerHeight * d);
|
|
231
|
+
};
|
|
232
|
+
onMount(() => { window.addEventListener('resize', onWinResize); });
|
|
233
|
+
onDestroy(() => { window.removeEventListener('resize', onWinResize); });
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// DOM marker ref for determining render order from template position
|
|
237
|
+
let orderMarker: HTMLSpanElement;
|
|
238
|
+
|
|
239
|
+
// Stores the DOM-detected render order
|
|
240
|
+
let detectedRenderOrder: number | undefined = undefined;
|
|
241
|
+
|
|
242
|
+
// Flag to track when component is registered
|
|
243
|
+
let isRegistered = $state(false);
|
|
244
|
+
|
|
245
|
+
// Setup uniform watchers with registration guard
|
|
246
|
+
Object.entries(uniforms).forEach(([propName, entry]) => {
|
|
247
|
+
$effect(() => {
|
|
248
|
+
// Only run after component is registered
|
|
249
|
+
if (!isRegistered) return;
|
|
250
|
+
|
|
251
|
+
// GPU bridge entries carry `.value` (no v1 `.uniform` node). colorStops expands into
|
|
252
|
+
// extra array fields (colorsArray/…) that aren't component props — their `props[name]`
|
|
253
|
+
// is always undefined, so the guard below skips them.
|
|
254
|
+
if (entry && entry.value !== undefined) {
|
|
255
|
+
const newValue = (props as any)[propName];
|
|
256
|
+
if (newValue !== undefined && !isPropDriver(newValue)) {
|
|
257
|
+
// Send raw value - renderer will handle transformation
|
|
258
|
+
// PropDriver values go to metadata.maps, not uniforms
|
|
259
|
+
parentUniformUpdate(instanceId, propName, newValue);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
// Watch blend mode, opacity, visibility, masking, transformations, and prop maps changes
|
|
266
|
+
$effect(() => {
|
|
267
|
+
// Only run after component is registered
|
|
268
|
+
if (!isRegistered) return;
|
|
269
|
+
|
|
270
|
+
const metadata: NodeMetadata = {
|
|
271
|
+
blendMode,
|
|
272
|
+
opacity,
|
|
273
|
+
visible: visible === false ? false : true,
|
|
274
|
+
id,
|
|
275
|
+
mask: maskSource ? {
|
|
276
|
+
source: maskSource,
|
|
277
|
+
type: (maskType || 'alpha') as MaskConfig['type']
|
|
278
|
+
} : undefined,
|
|
279
|
+
maps: mapsFromProps,
|
|
280
|
+
renderOrder: renderOrder ?? detectedRenderOrder,
|
|
281
|
+
transform: effectiveTransform,
|
|
282
|
+
boundingBox: effectiveBoundingBox,
|
|
283
|
+
flow: props.flow,
|
|
284
|
+
absolute: props.absolute
|
|
285
|
+
};
|
|
286
|
+
parentMetadataUpdate(instanceId, metadata);
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
// Register this component after mount to ensure parent is ready
|
|
290
|
+
onMount(() => {
|
|
291
|
+
// Register this component with safety check
|
|
292
|
+
if (componentDefinition && typeof componentDefinition.fragment === 'function') {
|
|
293
|
+
parentRegister(
|
|
294
|
+
instanceId,
|
|
295
|
+
componentDefinition.fragment,
|
|
296
|
+
parentId,
|
|
297
|
+
{
|
|
298
|
+
blendMode,
|
|
299
|
+
opacity,
|
|
300
|
+
visible: visible !== false ? true : false,
|
|
301
|
+
id,
|
|
302
|
+
mask: maskSource ? {
|
|
303
|
+
source: maskSource,
|
|
304
|
+
type: (maskType || 'alpha') as MaskConfig['type']
|
|
305
|
+
} as MaskConfig : undefined,
|
|
306
|
+
maps: mapsFromProps,
|
|
307
|
+
renderOrder: renderOrder ?? detectedRenderOrder,
|
|
308
|
+
transform: effectiveTransform,
|
|
309
|
+
boundingBox: effectiveBoundingBox,
|
|
310
|
+
flow: props.flow,
|
|
311
|
+
absolute: props.absolute
|
|
312
|
+
},
|
|
313
|
+
uniforms,
|
|
314
|
+
componentDefinition,
|
|
315
|
+
isCapturesDOM ? captureCanvas : undefined
|
|
316
|
+
);
|
|
317
|
+
|
|
318
|
+
// Set flag to enable effects after successful registration
|
|
319
|
+
isRegistered = true;
|
|
320
|
+
|
|
321
|
+
// Detect DOM position for correct render ordering
|
|
322
|
+
if (renderOrder === undefined && orderMarker) {
|
|
323
|
+
const parent = orderMarker.parentElement;
|
|
324
|
+
if (parent) {
|
|
325
|
+
const siblings = parent.querySelectorAll(':scope > [data-shader-id]');
|
|
326
|
+
const position = Array.from(siblings).indexOf(orderMarker);
|
|
327
|
+
if (position >= 0) {
|
|
328
|
+
detectedRenderOrder = position;
|
|
329
|
+
parentMetadataUpdate(instanceId, { renderOrder: position } as NodeMetadata);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
} else {
|
|
334
|
+
console.error('componentDefinition.fragment is not a function:', {
|
|
335
|
+
componentDefinition,
|
|
336
|
+
fragment: componentDefinition?.fragment,
|
|
337
|
+
type: typeof componentDefinition?.fragment
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
// Clean up node from registry when component is unmounted
|
|
343
|
+
onDestroy(() => {
|
|
344
|
+
isRegistered = false;
|
|
345
|
+
parentRegister(instanceId, null, null, null, null);
|
|
346
|
+
});
|
|
347
|
+
</script>
|
|
348
|
+
|
|
349
|
+
<span bind:this={orderMarker} style="display:contents" data-shader-id={instanceId}>
|
|
350
|
+
{#if !isCapturesDOM}
|
|
351
|
+
{@render children?.()}
|
|
352
|
+
{/if}
|
|
353
|
+
</span>
|
|
354
|
+
{#if isCapturesDOM}
|
|
355
|
+
<canvas use:teleportToBody bind:this={captureCanvas} layoutsubtree
|
|
356
|
+
width={captureW} height={captureH}
|
|
357
|
+
style="position:fixed;inset:0;width:100vw;height:100vh;z-index:-9999">
|
|
358
|
+
{@render children?.()}
|
|
359
|
+
</canvas>
|
|
360
|
+
{/if}
|
|
@@ -151,6 +151,7 @@ import Ring from '../components/Ring.svelte'
|
|
|
151
151
|
import RippleWipe from '../components/RippleWipe.svelte'
|
|
152
152
|
import Ripples from '../components/Ripples.svelte'
|
|
153
153
|
import RoundedRect from '../components/RoundedRect.svelte'
|
|
154
|
+
import Satin from '../components/Satin.svelte'
|
|
154
155
|
import Saturation from '../components/Saturation.svelte'
|
|
155
156
|
import Scratches from '../components/Scratches.svelte'
|
|
156
157
|
import Sharpness from '../components/Sharpness.svelte'
|
|
@@ -355,6 +356,7 @@ const componentMap: Record<string, any> = {
|
|
|
355
356
|
RippleWipe,
|
|
356
357
|
Ripples,
|
|
357
358
|
RoundedRect,
|
|
359
|
+
Satin,
|
|
358
360
|
Saturation,
|
|
359
361
|
Scratches,
|
|
360
362
|
Sharpness,
|
|
@@ -146,6 +146,7 @@ export { default as Ring } from './components/Ring.svelte';
|
|
|
146
146
|
export { default as RippleWipe } from './components/RippleWipe.svelte';
|
|
147
147
|
export { default as Ripples } from './components/Ripples.svelte';
|
|
148
148
|
export { default as RoundedRect } from './components/RoundedRect.svelte';
|
|
149
|
+
export { default as Satin } from './components/Satin.svelte';
|
|
149
150
|
export { default as Saturation } from './components/Saturation.svelte';
|
|
150
151
|
export { default as Scratches } from './components/Scratches.svelte';
|
|
151
152
|
export { default as Sharpness } from './components/Sharpness.svelte';
|
|
@@ -2267,6 +2267,28 @@ var shaderMetadata = {
|
|
|
2267
2267
|
"strokePosition": "center",
|
|
2268
2268
|
"colorSpace": "linear"
|
|
2269
2269
|
},
|
|
2270
|
+
"Satin": {
|
|
2271
|
+
"opacity": 1,
|
|
2272
|
+
"blendMode": "normal",
|
|
2273
|
+
"color": "#c92c40",
|
|
2274
|
+
"highlightColor": "#c4667b",
|
|
2275
|
+
"foldCount": 7,
|
|
2276
|
+
"foldDirection": 90,
|
|
2277
|
+
"foldDepth": .5,
|
|
2278
|
+
"foldWidth": .14,
|
|
2279
|
+
"pinning": .6,
|
|
2280
|
+
"seed": 0,
|
|
2281
|
+
"speed": 1,
|
|
2282
|
+
"breeze": .4,
|
|
2283
|
+
"gloss": .1,
|
|
2284
|
+
"anisotropy": .7,
|
|
2285
|
+
"bloom": .5,
|
|
2286
|
+
"sheen": .5,
|
|
2287
|
+
"weave": .1,
|
|
2288
|
+
"fiberAngle": 90,
|
|
2289
|
+
"lightAngle": 215,
|
|
2290
|
+
"fill": .35
|
|
2291
|
+
},
|
|
2270
2292
|
"Saturation": {
|
|
2271
2293
|
"opacity": 1,
|
|
2272
2294
|
"blendMode": "normal",
|
|
@@ -3348,6 +3370,7 @@ const availableComponents = [
|
|
|
3348
3370
|
"RippleWipe",
|
|
3349
3371
|
"Ripples",
|
|
3350
3372
|
"RoundedRect",
|
|
3373
|
+
"Satin",
|
|
3351
3374
|
"Saturation",
|
|
3352
3375
|
"Scratches",
|
|
3353
3376
|
"Sharpness",
|
|
@@ -144,6 +144,7 @@ import Ring_default from "./Ring.js";
|
|
|
144
144
|
import RippleWipe_default from "./RippleWipe.js";
|
|
145
145
|
import Ripples_default from "./Ripples.js";
|
|
146
146
|
import RoundedRect_default from "./RoundedRect.js";
|
|
147
|
+
import Satin_default from "./Satin.js";
|
|
147
148
|
import Saturation_default from "./Saturation.js";
|
|
148
149
|
import Scratches_default from "./Scratches.js";
|
|
149
150
|
import Sharpness_default from "./Sharpness.js";
|
|
@@ -401,6 +402,7 @@ var Preview_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
|
|
|
401
402
|
RippleWipe: RippleWipe_default,
|
|
402
403
|
Ripples: Ripples_default,
|
|
403
404
|
RoundedRect: RoundedRect_default,
|
|
405
|
+
Satin: Satin_default,
|
|
404
406
|
Saturation: Saturation_default,
|
|
405
407
|
Scratches: Scratches_default,
|
|
406
408
|
Sharpness: Sharpness_default,
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, effectScope, inject, mergeDefaults, mergeProps, onBeforeUnmount, onMounted, openBlock, provide, ref, renderSlot, toValue, unref, useId, watch } from "vue";
|
|
2
|
+
import { createGpuUniformsMap, resolveBoundingBox } from "../core/index.js";
|
|
3
|
+
import { setColorSpaceMode } from "../core/utilities/transformations/index.js";
|
|
4
|
+
import { componentDefinition } from "../core/shaders/Satin/index.js";
|
|
5
|
+
var _hoisted_1 = ["data-shader-id"];
|
|
6
|
+
var _hoisted_2 = ["width", "height"];
|
|
7
|
+
var Satin_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
|
|
8
|
+
__name: "Satin",
|
|
9
|
+
props: /* @__PURE__ */ mergeDefaults({
|
|
10
|
+
foldDirection: {},
|
|
11
|
+
foldDepth: {},
|
|
12
|
+
foldWidth: {},
|
|
13
|
+
pinning: {},
|
|
14
|
+
seed: {},
|
|
15
|
+
breeze: {},
|
|
16
|
+
gloss: {},
|
|
17
|
+
anisotropy: {},
|
|
18
|
+
bloom: {},
|
|
19
|
+
sheen: {},
|
|
20
|
+
weave: {},
|
|
21
|
+
fiberAngle: {},
|
|
22
|
+
lightAngle: {},
|
|
23
|
+
fill: {},
|
|
24
|
+
blendMode: {},
|
|
25
|
+
opacity: {},
|
|
26
|
+
visible: { type: Boolean },
|
|
27
|
+
id: {},
|
|
28
|
+
maskSource: {},
|
|
29
|
+
maskType: {},
|
|
30
|
+
renderOrder: {},
|
|
31
|
+
transform: {},
|
|
32
|
+
boundingBox: {},
|
|
33
|
+
flow: {},
|
|
34
|
+
absolute: { type: Boolean },
|
|
35
|
+
color: {},
|
|
36
|
+
highlightColor: {},
|
|
37
|
+
foldCount: {},
|
|
38
|
+
speed: {}
|
|
39
|
+
}, {
|
|
40
|
+
blendMode: "normal",
|
|
41
|
+
visible: true,
|
|
42
|
+
...Object.entries(componentDefinition.props).reduce((acc, [key, config]) => {
|
|
43
|
+
acc[key] = config.default;
|
|
44
|
+
return acc;
|
|
45
|
+
}, {})
|
|
46
|
+
}),
|
|
47
|
+
setup(__props) {
|
|
48
|
+
let _experimentalWarnedOnce = false;
|
|
49
|
+
if (componentDefinition.experimental && !_experimentalWarnedOnce) {
|
|
50
|
+
_experimentalWarnedOnce = true;
|
|
51
|
+
const _e = componentDefinition.experimental;
|
|
52
|
+
console.info(`%c⚠ [Shaders] ${componentDefinition.name} is experimental: ${_e.message}`, "color: #f59e0b; font-weight: bold");
|
|
53
|
+
}
|
|
54
|
+
function isPropDriver(value) {
|
|
55
|
+
return typeof value === "object" && value !== null && "type" in value && (value.type === "map" || value.type === "mouse" || value.type === "mouse-position" || value.type === "auto-animate");
|
|
56
|
+
}
|
|
57
|
+
const props = __props;
|
|
58
|
+
const instanceId = (props.id ? props.id.replace(/[^a-zA-Z0-9_]/g, "_") : null) || useId().replace(/[^a-zA-Z0-9_]/g, "");
|
|
59
|
+
provide("shaderParentId", instanceId);
|
|
60
|
+
const DEFAULT_TRANSFORM = {
|
|
61
|
+
offsetX: 0,
|
|
62
|
+
offsetY: 0,
|
|
63
|
+
rotation: 0,
|
|
64
|
+
scale: 1,
|
|
65
|
+
anchorX: .5,
|
|
66
|
+
anchorY: .5,
|
|
67
|
+
edges: "transparent"
|
|
68
|
+
};
|
|
69
|
+
const effectiveTransform = computed(() => ({
|
|
70
|
+
...DEFAULT_TRANSFORM,
|
|
71
|
+
...props.transform
|
|
72
|
+
}));
|
|
73
|
+
const effectiveBoundingBox = computed(() => resolveBoundingBox(props.boundingBox));
|
|
74
|
+
const shaderReadyProps = computed(() => {
|
|
75
|
+
let baseProps = { ...Object.entries(componentDefinition.props).reduce((acc, [key, config]) => {
|
|
76
|
+
acc[key] = config.default;
|
|
77
|
+
return acc;
|
|
78
|
+
}, {}) };
|
|
79
|
+
for (const key in props) if (key !== "blendMode" && key !== "opacity" && key !== "visible" && key !== "id" && key !== "maskSource" && key !== "maskType" && key !== "renderOrder" && key !== "transform" && key !== "boundingBox" && key !== "flow" && key !== "absolute") {
|
|
80
|
+
const val = toValue(props[key]);
|
|
81
|
+
if (isPropDriver(val)) continue;
|
|
82
|
+
if (val !== Object.entries(componentDefinition.props).reduce((acc, [key$1, config]) => {
|
|
83
|
+
acc[key$1] = config.default;
|
|
84
|
+
return acc;
|
|
85
|
+
}, {})[key]) baseProps[key] = val;
|
|
86
|
+
}
|
|
87
|
+
return baseProps;
|
|
88
|
+
});
|
|
89
|
+
const mapsFromProps = computed(() => {
|
|
90
|
+
const maps = {};
|
|
91
|
+
for (const key of Object.keys(componentDefinition.props)) {
|
|
92
|
+
const val = props[key];
|
|
93
|
+
if (isPropDriver(val)) maps[key] = val;
|
|
94
|
+
}
|
|
95
|
+
return Object.keys(maps).length > 0 ? maps : void 0;
|
|
96
|
+
});
|
|
97
|
+
const shaderColorSpace = inject("shaderColorSpace");
|
|
98
|
+
if (shaderColorSpace) setColorSpaceMode(shaderColorSpace.value);
|
|
99
|
+
const uniforms = createGpuUniformsMap(componentDefinition, shaderReadyProps.value, instanceId);
|
|
100
|
+
const parentId = inject("shaderParentId");
|
|
101
|
+
if (parentId === void 0) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
|
|
102
|
+
const parentRegister = inject("shaderNodeRegister");
|
|
103
|
+
if (parentRegister === void 0) throw new Error("Shader components must be used inside an <Shader> component or another shader component");
|
|
104
|
+
const parentUniformUpdate = inject("shaderUniformUpdate");
|
|
105
|
+
if (parentUniformUpdate === void 0) throw new Error("Shader components require shaderUniformUpdate from parent");
|
|
106
|
+
const parentMetadataUpdate = inject("shaderMetadataUpdate");
|
|
107
|
+
if (parentMetadataUpdate === void 0) throw new Error("Shader components require shaderMetadataUpdate from parent");
|
|
108
|
+
const rendererResetSignal = inject("shaderRendererResetSignal");
|
|
109
|
+
const orderMarker = ref(null);
|
|
110
|
+
const isCapturesDOM = !!componentDefinition.capturesDOM;
|
|
111
|
+
const captureCanvas = ref(null);
|
|
112
|
+
const captureW = ref(typeof window !== "undefined" ? Math.round(window.innerWidth * Math.min(window.devicePixelRatio, 2)) : 0);
|
|
113
|
+
const captureH = ref(typeof window !== "undefined" ? Math.round(window.innerHeight * Math.min(window.devicePixelRatio, 2)) : 0);
|
|
114
|
+
const captureStyle = {
|
|
115
|
+
position: "fixed",
|
|
116
|
+
inset: "0",
|
|
117
|
+
width: "100vw",
|
|
118
|
+
height: "100vh",
|
|
119
|
+
zIndex: "-9999"
|
|
120
|
+
};
|
|
121
|
+
if (isCapturesDOM) {
|
|
122
|
+
const onWinResize = () => {
|
|
123
|
+
const d = Math.min(window.devicePixelRatio, 2);
|
|
124
|
+
captureW.value = Math.round(window.innerWidth * d);
|
|
125
|
+
captureH.value = Math.round(window.innerHeight * d);
|
|
126
|
+
};
|
|
127
|
+
onMounted(() => {
|
|
128
|
+
const d = Math.min(window.devicePixelRatio, 2);
|
|
129
|
+
captureW.value = Math.round(window.innerWidth * d);
|
|
130
|
+
captureH.value = Math.round(window.innerHeight * d);
|
|
131
|
+
window.addEventListener("resize", onWinResize);
|
|
132
|
+
});
|
|
133
|
+
onBeforeUnmount(() => {
|
|
134
|
+
window.removeEventListener("resize", onWinResize);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
let detectedRenderOrder = void 0;
|
|
138
|
+
const registerWithRenderer = () => {
|
|
139
|
+
parentRegister(instanceId, componentDefinition.fragment, parentId, {
|
|
140
|
+
blendMode: props.blendMode,
|
|
141
|
+
opacity: props.opacity,
|
|
142
|
+
visible: props.visible === false ? false : true,
|
|
143
|
+
id: props.id,
|
|
144
|
+
mask: props.maskSource ? {
|
|
145
|
+
source: props.maskSource,
|
|
146
|
+
type: props.maskType || "alpha"
|
|
147
|
+
} : void 0,
|
|
148
|
+
maps: mapsFromProps.value,
|
|
149
|
+
renderOrder: props.renderOrder ?? detectedRenderOrder,
|
|
150
|
+
transform: effectiveTransform.value,
|
|
151
|
+
boundingBox: effectiveBoundingBox.value,
|
|
152
|
+
flow: props.flow,
|
|
153
|
+
absolute: props.absolute
|
|
154
|
+
}, uniforms, componentDefinition, isCapturesDOM ? captureCanvas.value ?? void 0 : void 0);
|
|
155
|
+
};
|
|
156
|
+
onMounted(() => {
|
|
157
|
+
if (props.renderOrder === void 0 && orderMarker.value) {
|
|
158
|
+
const parent = orderMarker.value.parentElement;
|
|
159
|
+
if (parent) {
|
|
160
|
+
const siblings = parent.querySelectorAll(":scope > [data-shader-id]");
|
|
161
|
+
const position = Array.from(siblings).indexOf(orderMarker.value);
|
|
162
|
+
if (position >= 0) {
|
|
163
|
+
detectedRenderOrder = position;
|
|
164
|
+
parentMetadataUpdate(instanceId, { renderOrder: position });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
const setupUniformWatchers = () => {
|
|
170
|
+
const scope = effectScope();
|
|
171
|
+
scope.run(() => {
|
|
172
|
+
Object.entries(uniforms).forEach(([propName, entry]) => {
|
|
173
|
+
watch(() => props[propName], (newValue) => {
|
|
174
|
+
if (entry && entry.value !== void 0 && !isPropDriver(newValue)) parentUniformUpdate(instanceId, propName, newValue);
|
|
175
|
+
}, { deep: true });
|
|
176
|
+
});
|
|
177
|
+
watch(() => [
|
|
178
|
+
props.blendMode,
|
|
179
|
+
props.opacity,
|
|
180
|
+
props.visible,
|
|
181
|
+
props.id,
|
|
182
|
+
props.maskSource,
|
|
183
|
+
props.maskType,
|
|
184
|
+
props.renderOrder,
|
|
185
|
+
props.transform,
|
|
186
|
+
props.boundingBox,
|
|
187
|
+
props.flow,
|
|
188
|
+
props.absolute,
|
|
189
|
+
mapsFromProps.value
|
|
190
|
+
], ([blendMode, opacity, visible]) => {
|
|
191
|
+
parentMetadataUpdate(instanceId, {
|
|
192
|
+
blendMode,
|
|
193
|
+
opacity,
|
|
194
|
+
visible: visible === false ? false : true,
|
|
195
|
+
id: props.id,
|
|
196
|
+
mask: props.maskSource ? {
|
|
197
|
+
source: props.maskSource,
|
|
198
|
+
type: props.maskType || "alpha"
|
|
199
|
+
} : void 0,
|
|
200
|
+
maps: mapsFromProps.value,
|
|
201
|
+
renderOrder: props.renderOrder ?? detectedRenderOrder,
|
|
202
|
+
transform: effectiveTransform.value,
|
|
203
|
+
boundingBox: effectiveBoundingBox.value,
|
|
204
|
+
flow: props.flow,
|
|
205
|
+
absolute: props.absolute
|
|
206
|
+
});
|
|
207
|
+
}, { deep: true });
|
|
208
|
+
if (rendererResetSignal) watch(() => rendererResetSignal.value, (newValue) => {
|
|
209
|
+
if (newValue > 0) registerWithRenderer();
|
|
210
|
+
}, { immediate: true });
|
|
211
|
+
});
|
|
212
|
+
onBeforeUnmount(() => {
|
|
213
|
+
scope.stop();
|
|
214
|
+
});
|
|
215
|
+
};
|
|
216
|
+
if (isCapturesDOM) onMounted(() => {
|
|
217
|
+
setupUniformWatchers();
|
|
218
|
+
});
|
|
219
|
+
else setupUniformWatchers();
|
|
220
|
+
onBeforeUnmount(() => {
|
|
221
|
+
parentRegister(instanceId, null, null, null, null, null);
|
|
222
|
+
});
|
|
223
|
+
return (_ctx, _cache) => {
|
|
224
|
+
return openBlock(), createElementBlock(Fragment, null, [createElementVNode("span", {
|
|
225
|
+
ref_key: "orderMarker",
|
|
226
|
+
ref: orderMarker,
|
|
227
|
+
style: { "display": "contents" },
|
|
228
|
+
"data-shader-id": unref(instanceId)
|
|
229
|
+
}, [!isCapturesDOM ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("", true)], 8, _hoisted_1), isCapturesDOM ? (openBlock(), createBlock(Teleport, {
|
|
230
|
+
key: 0,
|
|
231
|
+
to: "body"
|
|
232
|
+
}, [createElementVNode("canvas", mergeProps({
|
|
233
|
+
ref_key: "captureCanvas",
|
|
234
|
+
ref: captureCanvas
|
|
235
|
+
}, { "layoutsubtree": "" }, {
|
|
236
|
+
width: captureW.value,
|
|
237
|
+
height: captureH.value,
|
|
238
|
+
style: captureStyle
|
|
239
|
+
}), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_2)])) : createCommentVNode("", true)], 64);
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
export { Satin_vue_vue_type_script_setup_true_lang_default as default };
|