shaders 2.5.109 → 2.5.111
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/core/{Aurora-BPHeGEZ_.js → Aurora-KcUDr49P.js} +21 -14
- package/dist/core/{Blur-Cxx3ZuHi.js → Blur-DG7lJKPo.js} +29 -13
- package/dist/core/{Bulge-Chpbxxzj.js → Bulge-6gRUYqZS.js} +1 -1
- package/dist/core/{ChannelBlur-Cth0biwG.js → ChannelBlur-BhcCkwcO.js} +7 -3
- package/dist/core/{ConcentricSpin-Crfxti93.js → ConcentricSpin-Fegtvhl6.js} +1 -1
- package/dist/core/{ContourLines-KTHC32hd.js → ContourLines-tDBvQOvb.js} +8 -7
- package/dist/core/{CursorRipples-D-cfjHY5.js → CursorRipples-BqtHgpEq.js} +1 -1
- package/dist/core/{CursorTrail-R4IBB4eu.js → CursorTrail-CgRMXbTG.js} +5 -5
- package/dist/core/{DiffuseBlur-eyM1v3ad.js → DiffuseBlur-B-Vki4ab.js} +1 -1
- package/dist/core/{DropShadow-jMhnYPXZ.js → DropShadow-B7FzTp4H.js} +14 -8
- package/dist/core/{Duotone-Bl02WcA2.js → Duotone-CqQ0NMxS.js} +4 -11
- package/dist/core/{FloatingParticles-BtwGRl_d.js → FloatingParticles-DpYA0_TE.js} +6 -2
- package/dist/core/{FlowField-RyqiRxyI.js → FlowField-CTWyjeXm.js} +1 -1
- package/dist/core/FlutedGlass-B4FlyBOn.js +320 -0
- package/dist/core/{Form3D-DaPbLGUi.js → Form3D-CqmOXXGj.js} +14 -2
- package/dist/core/{Glass-TRSXbuE6.js → Glass-BCOkQbvW.js} +7 -3
- package/dist/core/{Glow-8bKkyehK.js → Glow-CsTZA75y.js} +68 -55
- package/dist/core/{GridDistortion-CpSiGEGV.js → GridDistortion-CVpebl48.js} +5 -5
- package/dist/core/{HueShift-BtGVMu7q.js → HueShift-C1RxETwN.js} +2 -0
- package/dist/core/{ImageTexture-CrX_9-f0.js → ImageTexture-DXhgMEOT.js} +30 -17
- package/dist/core/{Kaleidoscope-CFWtKisp.js → Kaleidoscope-B0_OCrob.js} +1 -1
- package/dist/core/{Liquify-D9YIfbfB.js → Liquify-ZMAyGUIb.js} +6 -6
- package/dist/core/{Mirror-B7XmfGdw.js → Mirror-Gb0fugtF.js} +1 -1
- package/dist/core/{Perspective-BN_OpTZq.js → Perspective-SBZzprC5.js} +1 -1
- package/dist/core/{PolarCoordinates-CMYCFT4S.js → PolarCoordinates-Ckvb1eG0.js} +1 -1
- package/dist/core/{ProgressiveBlur-B_z0pZ1V.js → ProgressiveBlur-CNacb2Qx.js} +33 -20
- package/dist/core/{RectangularCoordinates-8Sa2GaDy.js → RectangularCoordinates-r0fTwVuL.js} +1 -1
- package/dist/core/{Saturation-CB19kOXg.js → Saturation-n-aXJS81.js} +2 -0
- package/dist/core/{Sharpness-CQOboeqy.js → Sharpness-7tm7b-Bu.js} +2 -0
- package/dist/core/{Shatter-SHNbU2KC.js → Shatter-CC3EFcP9.js} +29 -25
- package/dist/core/{SimplexNoise-BcSgytjc.js → SimplexNoise-0-rfeziU.js} +14 -2
- package/dist/core/{Stretch--GV6hbru.js → Stretch-CJUUU-I1.js} +1 -1
- package/dist/core/Swirl-WqPvBF7u.js +105 -0
- package/dist/core/{TiltShift-GqDjHvmk.js → TiltShift-CYb6OQoU.js} +47 -21
- package/dist/core/{Tint-DaTx2HII.js → Tint-C-bJpwd0.js} +11 -6
- package/dist/core/{Tritone-C9Yx69Tw.js → Tritone-LX-qUAGy.js} +4 -11
- package/dist/core/{Twirl-v8pLqUTN.js → Twirl-CgRyZdT1.js} +1 -1
- package/dist/core/{VideoTexture-SWLe5c3m.js → VideoTexture-Cr1f0IOE.js} +31 -18
- package/dist/core/{WaveDistortion-BGdgj3Iz.js → WaveDistortion-iyTUI1lj.js} +1 -1
- package/dist/core/{WebcamTexture-cXPyEumA.js → WebcamTexture-BQJpZvC5.js} +31 -18
- package/dist/core/computeBlur-DCRhuYEi.js +209 -0
- package/dist/core/{edges-CfGcQniB.js → edges-CX_lJB9R.js} +13 -1
- package/dist/core/index.js +88 -121
- package/dist/core/registry.js +88 -87
- package/dist/core/renderer.d.ts.map +1 -1
- package/dist/core/shaderRegistry-SmtG2mTo.js +254 -0
- package/dist/core/shaderRegistry.d.ts.map +1 -1
- package/dist/core/shaders/Aurora/index.d.ts.map +1 -1
- package/dist/core/shaders/Aurora/index.js +1 -1
- package/dist/core/shaders/Blur/index.d.ts.map +1 -1
- package/dist/core/shaders/Blur/index.js +2 -2
- package/dist/core/shaders/Bulge/index.js +2 -2
- package/dist/core/shaders/ChannelBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/ChannelBlur/index.js +2 -2
- package/dist/core/shaders/ConcentricSpin/index.js +2 -2
- package/dist/core/shaders/ContourLines/index.d.ts.map +1 -1
- package/dist/core/shaders/ContourLines/index.js +1 -1
- package/dist/core/shaders/CursorRipples/index.js +2 -2
- package/dist/core/shaders/CursorTrail/index.d.ts.map +1 -1
- package/dist/core/shaders/CursorTrail/index.js +1 -1
- package/dist/core/shaders/DiffuseBlur/index.js +2 -2
- package/dist/core/shaders/DropShadow/index.d.ts.map +1 -1
- package/dist/core/shaders/DropShadow/index.js +1 -1
- package/dist/core/shaders/Duotone/index.d.ts.map +1 -1
- package/dist/core/shaders/Duotone/index.js +1 -2
- package/dist/core/shaders/FloatingParticles/index.d.ts.map +1 -1
- package/dist/core/shaders/FloatingParticles/index.js +1 -1
- package/dist/core/shaders/FlowField/index.js +2 -2
- package/dist/core/shaders/FlutedGlass/index.d.ts +97 -0
- package/dist/core/shaders/FlutedGlass/index.d.ts.map +1 -0
- package/dist/core/shaders/FlutedGlass/index.js +6 -0
- package/dist/core/shaders/Fog/index.js +1 -1
- package/dist/core/shaders/Form3D/index.d.ts.map +1 -1
- package/dist/core/shaders/Form3D/index.js +1 -1
- package/dist/core/shaders/Glass/index.d.ts.map +1 -1
- package/dist/core/shaders/Glass/index.js +2 -2
- package/dist/core/shaders/GlassTiles/index.js +1 -1
- package/dist/core/shaders/Glitch/index.js +1 -1
- package/dist/core/shaders/Glow/index.d.ts +2 -2
- package/dist/core/shaders/Glow/index.d.ts.map +1 -1
- package/dist/core/shaders/Glow/index.js +2 -2
- package/dist/core/shaders/Godrays/index.js +1 -1
- package/dist/core/shaders/Grayscale/index.js +1 -1
- package/dist/core/shaders/Grid/index.js +1 -1
- package/dist/core/shaders/GridDistortion/index.d.ts.map +1 -1
- package/dist/core/shaders/GridDistortion/index.js +2 -2
- package/dist/core/shaders/Group/index.js +1 -1
- package/dist/core/shaders/Halftone/index.js +1 -1
- package/dist/core/shaders/HexGrid/index.js +1 -1
- package/dist/core/shaders/HueShift/index.d.ts.map +1 -1
- package/dist/core/shaders/HueShift/index.js +1 -1
- package/dist/core/shaders/ImageTexture/index.d.ts.map +1 -1
- package/dist/core/shaders/ImageTexture/index.js +1 -1
- package/dist/core/shaders/Invert/index.js +1 -1
- package/dist/core/shaders/Kaleidoscope/index.js +2 -2
- package/dist/core/shaders/LensFlare/index.js +1 -1
- package/dist/core/shaders/LinearBlur/index.js +1 -1
- package/dist/core/shaders/LinearGradient/index.js +1 -1
- package/dist/core/shaders/Liquify/index.d.ts.map +1 -1
- package/dist/core/shaders/Liquify/index.js +2 -2
- package/dist/core/shaders/Mirror/index.js +2 -2
- package/dist/core/shaders/MultiPointGradient/index.js +1 -1
- package/dist/core/shaders/Neon/index.js +1 -1
- package/dist/core/shaders/Paper/index.js +1 -1
- package/dist/core/shaders/Perspective/index.js +2 -2
- package/dist/core/shaders/Pixelate/index.js +1 -1
- package/dist/core/shaders/Plasma/index.js +1 -1
- package/dist/core/shaders/PolarCoordinates/index.js +2 -2
- package/dist/core/shaders/Polygon/index.js +1 -1
- package/dist/core/shaders/Posterize/index.js +1 -1
- package/dist/core/shaders/ProgressiveBlur/index.d.ts.map +1 -1
- package/dist/core/shaders/ProgressiveBlur/index.js +2 -2
- package/dist/core/shaders/RadialGradient/index.js +1 -1
- package/dist/core/shaders/RectangularCoordinates/index.js +2 -2
- package/dist/core/shaders/Ring/index.js +1 -1
- package/dist/core/shaders/Ripples/index.js +1 -1
- package/dist/core/shaders/RoundedRect/index.js +1 -1
- package/dist/core/shaders/Saturation/index.d.ts.map +1 -1
- package/dist/core/shaders/Saturation/index.js +1 -1
- package/dist/core/shaders/Sharpness/index.d.ts.map +1 -1
- package/dist/core/shaders/Sharpness/index.js +1 -1
- package/dist/core/shaders/Shatter/index.d.ts.map +1 -1
- package/dist/core/shaders/Shatter/index.js +2 -2
- package/dist/core/shaders/SimplexNoise/index.d.ts +7 -0
- package/dist/core/shaders/SimplexNoise/index.d.ts.map +1 -1
- package/dist/core/shaders/SimplexNoise/index.js +1 -1
- package/dist/core/shaders/SineWave/index.js +1 -1
- package/dist/core/shaders/Smoke/index.js +1 -1
- package/dist/core/shaders/SmokeFill/index.js +1 -1
- package/dist/core/shaders/Solarize/index.js +1 -1
- package/dist/core/shaders/SolidColor/index.js +1 -1
- package/dist/core/shaders/Spherize/index.js +1 -1
- package/dist/core/shaders/Spiral/index.js +1 -1
- package/dist/core/shaders/Star/index.js +1 -1
- package/dist/core/shaders/Strands/index.js +1 -1
- package/dist/core/shaders/Stretch/index.js +2 -2
- package/dist/core/shaders/Stripes/index.js +1 -1
- package/dist/core/shaders/StudioBackground/index.js +1 -1
- package/dist/core/shaders/Swirl/index.d.ts.map +1 -1
- package/dist/core/shaders/Swirl/index.js +1 -1
- package/dist/core/shaders/TiltShift/index.d.ts.map +1 -1
- package/dist/core/shaders/TiltShift/index.js +2 -2
- package/dist/core/shaders/Tint/index.d.ts.map +1 -1
- package/dist/core/shaders/Tint/index.js +1 -1
- package/dist/core/shaders/Trapezoid/index.js +1 -1
- package/dist/core/shaders/Tritone/index.d.ts.map +1 -1
- package/dist/core/shaders/Tritone/index.js +1 -2
- package/dist/core/shaders/Truchet/index.js +1 -1
- package/dist/core/shaders/Twirl/index.js +2 -2
- package/dist/core/shaders/VHS/index.js +1 -1
- package/dist/core/shaders/Vesica/index.js +1 -1
- package/dist/core/shaders/Vibrance/index.js +1 -1
- package/dist/core/shaders/VideoTexture/index.d.ts.map +1 -1
- package/dist/core/shaders/VideoTexture/index.js +2 -2
- package/dist/core/shaders/Vignette/index.js +1 -1
- package/dist/core/shaders/Voronoi/index.js +1 -1
- package/dist/core/shaders/WaveDistortion/index.js +2 -2
- package/dist/core/shaders/Weave/index.js +1 -1
- package/dist/core/shaders/WebcamTexture/index.d.ts.map +1 -1
- package/dist/core/shaders/WebcamTexture/index.js +2 -2
- package/dist/core/shaders/ZoomBlur/index.js +1 -1
- package/dist/core/utilities/computeBlur.d.ts +29 -31
- package/dist/core/utilities/computeBlur.d.ts.map +1 -1
- package/dist/js/createShader.d.ts.map +1 -1
- package/dist/js/createShader.js +3 -2
- package/dist/js/createSharedDevice.d.ts +36 -0
- package/dist/js/createSharedDevice.d.ts.map +1 -0
- package/dist/js/createSharedDevice.js +15 -0
- package/dist/js/index.d.ts +1 -0
- package/dist/js/index.d.ts.map +1 -1
- package/dist/js/index.js +2 -1
- package/dist/js/types.d.ts +10 -0
- package/dist/js/types.d.ts.map +1 -1
- package/dist/js/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/js/utils/generatePresetCode.js +21 -1
- package/dist/react/FlutedGlass.js +223 -0
- package/dist/react/Preview.js +1 -0
- package/dist/react/Shader.js +1 -1
- package/dist/react/components/FlutedGlass.d.ts +41 -0
- package/dist/react/components/FlutedGlass.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 +21 -1
- package/dist/registry.js +628 -83
- package/dist/solid/components/FlutedGlass.d.ts +38 -0
- package/dist/solid/components/FlutedGlass.d.ts.map +1 -0
- package/dist/solid/components/FlutedGlass.js +228 -0
- package/dist/solid/engine/Preview.d.ts.map +1 -1
- package/dist/solid/engine/Preview.js +76 -74
- 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 +146 -144
- package/dist/solid/utils/generatePresetCode.d.ts.map +1 -1
- package/dist/solid/utils/generatePresetCode.js +21 -1
- package/dist/svelte/components/FlutedGlass.svelte.d.ts +28 -0
- package/dist/svelte/{generatePresetCode-DR_OAIL7.js → generatePresetCode-DAEzZxbM.js} +21 -1
- package/dist/svelte/index.d.ts +1 -0
- package/dist/svelte/index.js +769 -569
- package/dist/svelte/source/components/FlutedGlass.svelte +334 -0
- package/dist/svelte/source/engine/Preview.svelte +2 -0
- package/dist/svelte/source/index.js +1 -0
- package/dist/svelte/utils/generatePresetCode.js +1 -1
- package/dist/vue/FlutedGlass.js +3 -0
- package/dist/vue/FlutedGlass.vue_vue_type_script_setup_true_lang.js +226 -0
- package/dist/vue/Preview.vue_vue_type_script_setup_true_lang.js +2 -0
- package/dist/vue/Shader.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/vue/SimplexNoise.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/vue/components/FlutedGlass.vue.d.ts +63 -0
- package/dist/vue/components/FlutedGlass.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 +21 -1
- package/package.json +9 -1
- package/dist/core/Swirl-By5FadQK.js +0 -103
- package/dist/core/computeBlur-DeXZ99YL.js +0 -150
- package/dist/core/shaderRegistry-fwljIrjT.js +0 -252
- /package/dist/core/{Fog-BeKcPcTq.js → Fog-CIdU2Wn-.js} +0 -0
- /package/dist/core/{GlassTiles-Dgh6nOaE.js → GlassTiles-CMx4NyO-.js} +0 -0
- /package/dist/core/{Glitch-BsbzLahF.js → Glitch-BdygvJKe.js} +0 -0
- /package/dist/core/{Godrays-D1LINbut.js → Godrays-w3ruw4NO.js} +0 -0
- /package/dist/core/{Grayscale-Ri-695Uh.js → Grayscale-ChaVI3AW.js} +0 -0
- /package/dist/core/{Grid-BYSsAIEv.js → Grid-CKbLS5tU.js} +0 -0
- /package/dist/core/{Group-CkhjTW59.js → Group-BqVJ4S7i.js} +0 -0
- /package/dist/core/{Halftone-BUCDTTAU.js → Halftone-BGQeBAgG.js} +0 -0
- /package/dist/core/{HexGrid-BUiDrehv.js → HexGrid-BFrnZEZT.js} +0 -0
- /package/dist/core/{Invert-azYrcDMi.js → Invert-D3tc2UGp.js} +0 -0
- /package/dist/core/{LensFlare-ttrXgfea.js → LensFlare-B8x1fOKu.js} +0 -0
- /package/dist/core/{LinearBlur-By2aD8OO.js → LinearBlur-CshzmjfO.js} +0 -0
- /package/dist/core/{LinearGradient-CM02z32l.js → LinearGradient-Bzwquw_Q.js} +0 -0
- /package/dist/core/{MultiPointGradient-8zGSIM4U.js → MultiPointGradient-D0QQwizn.js} +0 -0
- /package/dist/core/{Neon-CMmGJzPy.js → Neon-eN4HlILk.js} +0 -0
- /package/dist/core/{Paper-B08rxNys.js → Paper-BmeUPAFe.js} +0 -0
- /package/dist/core/{Pixelate-dxPAFCRu.js → Pixelate-DqZcUKFK.js} +0 -0
- /package/dist/core/{Plasma-DGCw0cd7.js → Plasma-COq8mAw2.js} +0 -0
- /package/dist/core/{Polygon-CsCOt5YE.js → Polygon-BP5eKEiz.js} +0 -0
- /package/dist/core/{Posterize-Blv9pzPT.js → Posterize-CxYemXTn.js} +0 -0
- /package/dist/core/{RadialGradient-De0gtdh3.js → RadialGradient-SASVv2vb.js} +0 -0
- /package/dist/core/{Ring-kHH-DIDQ.js → Ring-CdJlzjRV.js} +0 -0
- /package/dist/core/{Ripples-Bf6Zwg6X.js → Ripples-BRZPZszq.js} +0 -0
- /package/dist/core/{RoundedRect-B0sWh2BN.js → RoundedRect-lzzi_1J7.js} +0 -0
- /package/dist/core/{SineWave-VTNDSK_g.js → SineWave--i6bSrad.js} +0 -0
- /package/dist/core/{Smoke-9MJIAKq7.js → Smoke-BgPHDWDR.js} +0 -0
- /package/dist/core/{SmokeFill-qV2iRIts.js → SmokeFill-Dtctgt2S.js} +0 -0
- /package/dist/core/{Solarize-CWDgSBiv.js → Solarize-gNMmd47z.js} +0 -0
- /package/dist/core/{SolidColor-DhMdM3bE.js → SolidColor-D9ikFFu3.js} +0 -0
- /package/dist/core/{Spherize-BZxwopX8.js → Spherize-ZBorEEOU.js} +0 -0
- /package/dist/core/{Spiral-gpkw37l1.js → Spiral-sg-i02xw.js} +0 -0
- /package/dist/core/{Star-WJAOZ5P5.js → Star-BcqCHzHG.js} +0 -0
- /package/dist/core/{Strands-DOthZNHt.js → Strands-XLpth60o.js} +0 -0
- /package/dist/core/{Stripes-CFCXw1_N.js → Stripes-DEOXYnmy.js} +0 -0
- /package/dist/core/{StudioBackground-DJr-cxOL.js → StudioBackground-B5dpTR_X.js} +0 -0
- /package/dist/core/{Trapezoid-Co0sIA73.js → Trapezoid-BvTEGdW_.js} +0 -0
- /package/dist/core/{Truchet-CkFSkniR.js → Truchet-DE4lgYRb.js} +0 -0
- /package/dist/core/{VHS-mKd1QBBj.js → VHS-DbNjgUEX.js} +0 -0
- /package/dist/core/{Vesica-CxP7UD0a.js → Vesica-DqJMyqmy.js} +0 -0
- /package/dist/core/{Vibrance-WR5yQv_9.js → Vibrance-IDvmP1Xw.js} +0 -0
- /package/dist/core/{Vignette-hAIKTi35.js → Vignette-CA12P9VO.js} +0 -0
- /package/dist/core/{Voronoi-DOGmwUSK.js → Voronoi-DXeJ3xOf.js} +0 -0
- /package/dist/core/{Weave-CIP_EUPa.js → Weave-Bn2CfeE4.js} +0 -0
- /package/dist/core/{ZoomBlur-BuIVpHGG.js → ZoomBlur-DOzP_sOK.js} +0 -0
- /package/dist/core/{browser-D8zonASQ.js → browser-CsOpQ0L_.js} +0 -0
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { a as transformColor, o as transformColorSpace, t as colorSpaceOptions } from "./transformations-B5lM6fYX.js";
|
|
2
|
-
import { t as unpremultiplyAlpha } from "./alpha-C4ptedXe.js";
|
|
3
2
|
import { t as mixColors } from "./colorMixing-BPpDnR5I.js";
|
|
4
|
-
import {
|
|
3
|
+
import { dot, smoothstep, vec3, vec4 } from "three/tsl";
|
|
5
4
|
const componentDefinition = {
|
|
6
5
|
name: "Tritone",
|
|
7
6
|
category: "Adjustments",
|
|
8
7
|
description: "Map colors to three tones: shadows, midtones, highlights",
|
|
9
|
-
requiresRTT: true,
|
|
10
8
|
requiresChild: true,
|
|
11
9
|
props: {
|
|
12
10
|
colorA: {
|
|
@@ -64,19 +62,14 @@ const componentDefinition = {
|
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
64
|
},
|
|
67
|
-
fragmentNode: ({ uniforms, childNode
|
|
65
|
+
fragmentNode: ({ uniforms, childNode }) => {
|
|
68
66
|
if (!childNode) return vec4(0, 0, 0, 0);
|
|
69
|
-
const
|
|
70
|
-
onCleanup(() => {
|
|
71
|
-
if (childTexture?.renderTarget?.dispose) childTexture.renderTarget.dispose();
|
|
72
|
-
});
|
|
73
|
-
const inputColor = unpremultiplyAlpha(childTexture.sample(screenUV));
|
|
74
|
-
const luminance = dot(inputColor.rgb, vec3(.299, .587, .114));
|
|
67
|
+
const luminance = dot(vec3(childNode.r, childNode.g, childNode.b), vec3(.299, .587, .114));
|
|
75
68
|
const shadowToMid = smoothstep(uniforms.blendMid.uniform.sub(.25), uniforms.blendMid.uniform, luminance);
|
|
76
69
|
const csMode = uniforms.colorSpace.uniform.value;
|
|
77
70
|
const lowerBlend = mixColors(uniforms.colorA.uniform, uniforms.colorB.uniform, shadowToMid, csMode);
|
|
78
71
|
const midToHighlight = smoothstep(uniforms.blendMid.uniform, uniforms.blendMid.uniform.add(.25), luminance);
|
|
79
|
-
return vec4(mixColors(lowerBlend, mixColors(uniforms.colorB.uniform, uniforms.colorC.uniform, midToHighlight, csMode), smoothstep(uniforms.blendMid.uniform.sub(.1), uniforms.blendMid.uniform.add(.1), luminance), csMode).rgb,
|
|
72
|
+
return vec4(mixColors(lowerBlend, mixColors(uniforms.colorB.uniform, uniforms.colorC.uniform, midToHighlight, csMode), smoothstep(uniforms.blendMid.uniform.sub(.1), uniforms.blendMid.uniform.add(.1), luminance), csMode).rgb, childNode.a);
|
|
80
73
|
}
|
|
81
74
|
};
|
|
82
75
|
var Tritone_default = componentDefinition;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as applyEdgeHandling } from "./edges-
|
|
1
|
+
import { t as applyEdgeHandling } from "./edges-CX_lJB9R.js";
|
|
2
2
|
import { c as transformEdges, l as transformPosition } from "./transformations-B5lM6fYX.js";
|
|
3
3
|
import { t as unpremultiplyAlpha } from "./alpha-C4ptedXe.js";
|
|
4
4
|
import { convertToTexture, cos, length, screenUV, sin, vec2, vec4, viewportSize } from "three/tsl";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as needsVideoCanvasWorkaround } from "./browser-
|
|
1
|
+
import { t as needsVideoCanvasWorkaround } from "./browser-CsOpQ0L_.js";
|
|
2
2
|
import { CanvasTexture, SRGBColorSpace, VideoTexture } from "three/webgpu";
|
|
3
|
-
import { float, max, min, or, screenUV, select,
|
|
3
|
+
import { float, max, min, or, screenUV, select, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
5
5
|
name: "VideoTexture",
|
|
6
6
|
category: "Textures",
|
|
@@ -27,6 +27,7 @@ const componentDefinition = {
|
|
|
27
27
|
"none": 4
|
|
28
28
|
}[value] ?? 0;
|
|
29
29
|
},
|
|
30
|
+
compileTime: true,
|
|
30
31
|
ui: {
|
|
31
32
|
type: "select",
|
|
32
33
|
options: [
|
|
@@ -175,22 +176,34 @@ const componentDefinition = {
|
|
|
175
176
|
});
|
|
176
177
|
const uv$1 = baseUV;
|
|
177
178
|
const viewportAspect = viewportSize.x.div(viewportSize.y);
|
|
178
|
-
const objectFitMode = uniforms.objectFit.uniform;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
179
|
+
const objectFitMode = uniforms.objectFit.uniform.value;
|
|
180
|
+
let uvScale;
|
|
181
|
+
switch (objectFitMode) {
|
|
182
|
+
case 1: {
|
|
183
|
+
const containScale = min(viewportAspect.div(videoAspectUniform), float(1));
|
|
184
|
+
uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(containScale), containScale);
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
case 2:
|
|
188
|
+
uvScale = vec2(1, 1);
|
|
189
|
+
break;
|
|
190
|
+
case 3: {
|
|
191
|
+
const scaleDownScale = min(min(viewportAspect.div(videoAspectUniform), float(1)), min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform)));
|
|
192
|
+
uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(scaleDownScale), scaleDownScale);
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
case 4: {
|
|
196
|
+
const noneScale = min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform));
|
|
197
|
+
uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(noneScale), noneScale);
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
case 0:
|
|
201
|
+
default: {
|
|
202
|
+
const coverScale = max(viewportAspect.div(videoAspectUniform), float(1));
|
|
203
|
+
uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(coverScale), coverScale);
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
194
207
|
const adjustedUV = uv$1.sub(vec2(.5)).div(uvScale).add(vec2(.5));
|
|
195
208
|
const finalUV = vec2(adjustedUV.x, float(1).sub(adjustedUV.y));
|
|
196
209
|
const sampledColor = textureNode.sample(finalUV);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as applyEdgeHandling } from "./edges-
|
|
1
|
+
import { t as applyEdgeHandling } from "./edges-CX_lJB9R.js";
|
|
2
2
|
import { c as transformEdges } from "./transformations-B5lM6fYX.js";
|
|
3
3
|
import { t as unpremultiplyAlpha } from "./alpha-C4ptedXe.js";
|
|
4
4
|
import { t as createAnimatedTime } from "./time-DUqSFWvT.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as needsVideoCanvasWorkaround } from "./browser-
|
|
1
|
+
import { t as needsVideoCanvasWorkaround } from "./browser-CsOpQ0L_.js";
|
|
2
2
|
import { CanvasTexture, SRGBColorSpace, VideoTexture } from "three/webgpu";
|
|
3
|
-
import { float, max, min, or, screenUV, select,
|
|
3
|
+
import { float, max, min, or, screenUV, select, texture, uniform, vec2, vec4, viewportSize } from "three/tsl";
|
|
4
4
|
const componentDefinition = {
|
|
5
5
|
name: "WebcamTexture",
|
|
6
6
|
category: "Textures",
|
|
@@ -18,6 +18,7 @@ const componentDefinition = {
|
|
|
18
18
|
"none": 4
|
|
19
19
|
}[value] ?? 0;
|
|
20
20
|
},
|
|
21
|
+
compileTime: true,
|
|
21
22
|
ui: {
|
|
22
23
|
type: "select",
|
|
23
24
|
options: [
|
|
@@ -159,22 +160,34 @@ const componentDefinition = {
|
|
|
159
160
|
});
|
|
160
161
|
const uv$1 = baseUV;
|
|
161
162
|
const viewportAspect = viewportSize.x.div(viewportSize.y);
|
|
162
|
-
const objectFitMode = uniforms.objectFit.uniform;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
163
|
+
const objectFitMode = uniforms.objectFit.uniform.value;
|
|
164
|
+
let uvScale;
|
|
165
|
+
switch (objectFitMode) {
|
|
166
|
+
case 1: {
|
|
167
|
+
const containScale = min(viewportAspect.div(videoAspectUniform), float(1));
|
|
168
|
+
uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(containScale), containScale);
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
case 2:
|
|
172
|
+
uvScale = vec2(1, 1);
|
|
173
|
+
break;
|
|
174
|
+
case 3: {
|
|
175
|
+
const scaleDownScale = min(min(viewportAspect.div(videoAspectUniform), float(1)), min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform)));
|
|
176
|
+
uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(scaleDownScale), scaleDownScale);
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case 4: {
|
|
180
|
+
const noneScale = min(viewportSize.x.div(videoWidthUniform), viewportSize.y.div(videoHeightUniform));
|
|
181
|
+
uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(noneScale), noneScale);
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
case 0:
|
|
185
|
+
default: {
|
|
186
|
+
const coverScale = max(viewportAspect.div(videoAspectUniform), float(1));
|
|
187
|
+
uvScale = vec2(videoAspectUniform.div(viewportAspect).mul(coverScale), coverScale);
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
178
191
|
const adjustedUV = uv$1.sub(vec2(.5)).div(uvScale).add(vec2(.5));
|
|
179
192
|
const mirrorMode = uniforms.mirror.uniform;
|
|
180
193
|
const finalUV = vec2(select(mirrorMode, float(1).sub(adjustedUV.x), adjustedUV.x), float(1).sub(adjustedUV.y));
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { StorageTexture } from "three/webgpu";
|
|
2
|
+
import { FloatType } from "three";
|
|
3
|
+
import { Fn, If, float, instanceIndex, int, storageTexture, textureLoad, textureStore, uint, uniform, uniformArray, uvec2, vec4 } from "three/tsl";
|
|
4
|
+
var DEFAULT_HALF_KERNEL = 24;
|
|
5
|
+
const DEFAULT_COMPUTE_WIDTH = 1024;
|
|
6
|
+
const DEFAULT_COMPUTE_HEIGHT = 640;
|
|
7
|
+
function buildFixedWeights(halfKernel) {
|
|
8
|
+
const sigma = halfKernel / 3;
|
|
9
|
+
const size = halfKernel * 2 + 1;
|
|
10
|
+
const weights = [];
|
|
11
|
+
let sum = 0;
|
|
12
|
+
for (let i = -halfKernel; i <= halfKernel; i++) {
|
|
13
|
+
const w = Math.exp(-(i * i) / (2 * sigma * sigma));
|
|
14
|
+
weights.push(w);
|
|
15
|
+
sum += w;
|
|
16
|
+
}
|
|
17
|
+
for (let i = 0; i < size; i++) weights[i] /= sum;
|
|
18
|
+
return weights;
|
|
19
|
+
}
|
|
20
|
+
var PASSTHROUGH_THRESHOLD = .5;
|
|
21
|
+
function createGaussianBlurCompute(inputTexture, inputWidth, inputHeight, onCleanup, halfKernel = DEFAULT_HALF_KERNEL, computeWidth = DEFAULT_COMPUTE_WIDTH, computeHeight = 640) {
|
|
22
|
+
const KERNEL_SIZE = halfKernel * 2 + 1;
|
|
23
|
+
const HALF_KERNEL = halfKernel;
|
|
24
|
+
const intermediateTex = new StorageTexture(computeWidth, computeHeight);
|
|
25
|
+
intermediateTex.type = FloatType;
|
|
26
|
+
const outputTex = new StorageTexture(computeWidth, computeHeight);
|
|
27
|
+
outputTex.type = FloatType;
|
|
28
|
+
onCleanup(() => {
|
|
29
|
+
intermediateTex.dispose();
|
|
30
|
+
outputTex.dispose();
|
|
31
|
+
});
|
|
32
|
+
const intermediateWriteNode = storageTexture(intermediateTex);
|
|
33
|
+
const intermediateReadNode = storageTexture(intermediateTex).toReadOnly();
|
|
34
|
+
const outputNode = storageTexture(outputTex);
|
|
35
|
+
const weightsH = uniformArray(new Array(KERNEL_SIZE).fill(0), "float");
|
|
36
|
+
const weightsV = uniformArray(new Array(KERNEL_SIZE).fill(0), "float");
|
|
37
|
+
let lastRadius = -1;
|
|
38
|
+
const inputWidthU = uniform(inputWidth);
|
|
39
|
+
const inputHeightU = uniform(inputHeight);
|
|
40
|
+
let scaleY = inputHeight / computeHeight;
|
|
41
|
+
const cw = uint(computeWidth);
|
|
42
|
+
const ch = uint(computeHeight);
|
|
43
|
+
const computeHm1 = int(computeHeight - 1);
|
|
44
|
+
const inputWm1 = int(inputWidthU.sub(1));
|
|
45
|
+
const inputHm1 = int(inputHeightU.sub(1));
|
|
46
|
+
const horizontalPass = Fn(() => {
|
|
47
|
+
const idx = instanceIndex;
|
|
48
|
+
const cx = idx.mod(cw);
|
|
49
|
+
const cy = idx.div(cw);
|
|
50
|
+
If(cy.lessThan(ch), () => {
|
|
51
|
+
const sum = vec4(0).toVar();
|
|
52
|
+
const inputCx = cx.toFloat().add(float(.5)).mul(inputWidthU).div(float(computeWidth)).sub(float(.5));
|
|
53
|
+
const inputCy = cy.toFloat().add(float(.5)).mul(inputHeightU).div(float(computeHeight)).sub(float(.5));
|
|
54
|
+
const inputCxI = inputCx.round().toInt();
|
|
55
|
+
const inputCyI = inputCy.round().toInt().clamp(int(0), inputHm1);
|
|
56
|
+
for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
|
|
57
|
+
const texel = textureLoad(inputTexture, uvec2(inputCxI.add(int(i)).clamp(int(0), inputWm1).toUint(), inputCyI.toUint()), int(0));
|
|
58
|
+
sum.assign(sum.add(texel.mul(weightsH.element(int(i + HALF_KERNEL)))));
|
|
59
|
+
}
|
|
60
|
+
textureStore(intermediateWriteNode, uvec2(cx, cy), sum).toWriteOnly();
|
|
61
|
+
});
|
|
62
|
+
})().compute(computeWidth * computeHeight, [256]);
|
|
63
|
+
const verticalPass = Fn(() => {
|
|
64
|
+
const idx = instanceIndex;
|
|
65
|
+
const cx = idx.mod(cw);
|
|
66
|
+
const cy = idx.div(cw);
|
|
67
|
+
If(cy.lessThan(ch), () => {
|
|
68
|
+
const sum = vec4(0).toVar();
|
|
69
|
+
for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
|
|
70
|
+
const texel = textureLoad(intermediateReadNode, uvec2(cx, cy.toInt().add(int(i)).clamp(int(0), computeHm1).toUint()), int(0));
|
|
71
|
+
sum.assign(sum.add(texel.mul(weightsV.element(int(i + HALF_KERNEL)))));
|
|
72
|
+
}
|
|
73
|
+
textureStore(outputNode, uvec2(cx, cy), sum).toWriteOnly();
|
|
74
|
+
});
|
|
75
|
+
})().compute(computeWidth * computeHeight, [256]);
|
|
76
|
+
function updateWeights() {
|
|
77
|
+
const pixelRadius = lastRadius < 0 ? 4 : lastRadius;
|
|
78
|
+
const sigmaH = Math.max(pixelRadius * .5, .001);
|
|
79
|
+
const sigmaV = Math.max(sigmaH / scaleY, .001);
|
|
80
|
+
const newH = new Array(KERNEL_SIZE);
|
|
81
|
+
const newV = new Array(KERNEL_SIZE);
|
|
82
|
+
let totalH = 0, totalV = 0;
|
|
83
|
+
for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
|
|
84
|
+
const h = Math.exp(-(i * i) / (2 * sigmaH * sigmaH));
|
|
85
|
+
const v = Math.exp(-(i * i) / (2 * sigmaV * sigmaV));
|
|
86
|
+
newH[i + HALF_KERNEL] = h;
|
|
87
|
+
newV[i + HALF_KERNEL] = v;
|
|
88
|
+
totalH += h;
|
|
89
|
+
totalV += v;
|
|
90
|
+
}
|
|
91
|
+
for (let i = 0; i < KERNEL_SIZE; i++) {
|
|
92
|
+
newH[i] /= totalH;
|
|
93
|
+
newV[i] /= totalV;
|
|
94
|
+
}
|
|
95
|
+
weightsH.array = newH;
|
|
96
|
+
weightsV.array = newV;
|
|
97
|
+
}
|
|
98
|
+
function updateRadius(pixelRadius) {
|
|
99
|
+
if (Math.abs(pixelRadius - lastRadius) < .01) return;
|
|
100
|
+
lastRadius = pixelRadius;
|
|
101
|
+
updateWeights();
|
|
102
|
+
}
|
|
103
|
+
updateRadius(4);
|
|
104
|
+
return {
|
|
105
|
+
computeNodes: [horizontalPass, verticalPass],
|
|
106
|
+
outputTexture: outputTex,
|
|
107
|
+
updateRadius,
|
|
108
|
+
computeWidth,
|
|
109
|
+
computeHeight,
|
|
110
|
+
setInputDimensions: (newW, newH) => {
|
|
111
|
+
inputWidthU.value = newW;
|
|
112
|
+
inputHeightU.value = newH;
|
|
113
|
+
const newScaleY = newH / computeHeight;
|
|
114
|
+
if (Math.abs(newScaleY - scaleY) > .001) {
|
|
115
|
+
scaleY = newScaleY;
|
|
116
|
+
updateWeights();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function createVariableGaussianBlurCompute(inputTexture, inputWidth, inputHeight, onCleanup, halfKernel = DEFAULT_HALF_KERNEL, computeWidth = DEFAULT_COMPUTE_WIDTH, computeHeight = 640) {
|
|
122
|
+
const HALF_KERNEL = halfKernel;
|
|
123
|
+
const FIXED_WEIGHTS = buildFixedWeights(HALF_KERNEL);
|
|
124
|
+
const blurMapTex = new StorageTexture(computeWidth, computeHeight);
|
|
125
|
+
blurMapTex.type = FloatType;
|
|
126
|
+
const blurMapWriteNode = storageTexture(blurMapTex);
|
|
127
|
+
const blurMapReadNode = storageTexture(blurMapTex).toReadOnly();
|
|
128
|
+
const intermediateTex = new StorageTexture(computeWidth, computeHeight);
|
|
129
|
+
intermediateTex.type = FloatType;
|
|
130
|
+
const outputTex = new StorageTexture(computeWidth, computeHeight);
|
|
131
|
+
outputTex.type = FloatType;
|
|
132
|
+
onCleanup(() => {
|
|
133
|
+
blurMapTex.dispose();
|
|
134
|
+
intermediateTex.dispose();
|
|
135
|
+
outputTex.dispose();
|
|
136
|
+
});
|
|
137
|
+
const intermediateWriteNode = storageTexture(intermediateTex);
|
|
138
|
+
const intermediateReadNode = storageTexture(intermediateTex).toReadOnly();
|
|
139
|
+
const outputNode = storageTexture(outputTex);
|
|
140
|
+
const weights = uniformArray(FIXED_WEIGHTS, "float");
|
|
141
|
+
const inputWidthU = uniform(inputWidth);
|
|
142
|
+
const inputHeightU = uniform(inputHeight);
|
|
143
|
+
const scaleYU = uniform(inputHeight / computeHeight);
|
|
144
|
+
const cw = uint(computeWidth);
|
|
145
|
+
const ch = uint(computeHeight);
|
|
146
|
+
const computeHm1 = int(computeHeight - 1);
|
|
147
|
+
const inputWm1 = int(inputWidthU.sub(1));
|
|
148
|
+
const inputHm1 = int(inputHeightU.sub(1));
|
|
149
|
+
const invHalf = float(1 / HALF_KERNEL);
|
|
150
|
+
const passthroughThreshold = float(PASSTHROUGH_THRESHOLD);
|
|
151
|
+
return {
|
|
152
|
+
computeNodes: [Fn(() => {
|
|
153
|
+
const idx = instanceIndex;
|
|
154
|
+
const cx = idx.mod(cw);
|
|
155
|
+
const cy = idx.div(cw);
|
|
156
|
+
If(cy.lessThan(ch), () => {
|
|
157
|
+
const blurRadius = textureLoad(blurMapReadNode, uvec2(cx, cy), int(0)).r;
|
|
158
|
+
const inputCx = cx.toFloat().add(float(.5)).mul(inputWidthU).div(float(computeWidth)).sub(float(.5));
|
|
159
|
+
const inputCy = cy.toFloat().add(float(.5)).mul(inputHeightU).div(float(computeHeight)).sub(float(.5));
|
|
160
|
+
const inputCxF = inputCx;
|
|
161
|
+
const inputCyI = inputCy.round().toInt().clamp(int(0), inputHm1);
|
|
162
|
+
If(blurRadius.lessThan(passthroughThreshold), () => {
|
|
163
|
+
const texel = textureLoad(inputTexture, uvec2(inputCxF.round().toInt().clamp(int(0), inputWm1).toUint(), inputCyI.toUint()), int(0));
|
|
164
|
+
textureStore(intermediateWriteNode, uvec2(cx, cy), texel).toWriteOnly();
|
|
165
|
+
}).Else(() => {
|
|
166
|
+
const sum = vec4(0).toVar();
|
|
167
|
+
for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
|
|
168
|
+
const offset = float(i).mul(invHalf).mul(blurRadius);
|
|
169
|
+
const texel = textureLoad(inputTexture, uvec2(inputCxF.add(offset).round().toInt().clamp(int(0), inputWm1).toUint(), inputCyI.toUint()), int(0));
|
|
170
|
+
sum.assign(sum.add(texel.mul(weights.element(int(i + HALF_KERNEL)))));
|
|
171
|
+
}
|
|
172
|
+
textureStore(intermediateWriteNode, uvec2(cx, cy), sum).toWriteOnly();
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
})().compute(computeWidth * computeHeight, [256]), Fn(() => {
|
|
176
|
+
const idx = instanceIndex;
|
|
177
|
+
const cx = idx.mod(cw);
|
|
178
|
+
const cy = idx.div(cw);
|
|
179
|
+
If(cy.lessThan(ch), () => {
|
|
180
|
+
const blurRadius = textureLoad(blurMapReadNode, uvec2(cx, cy), int(0)).r;
|
|
181
|
+
If(blurRadius.lessThan(passthroughThreshold), () => {
|
|
182
|
+
const texel = textureLoad(intermediateReadNode, uvec2(cx, cy), int(0));
|
|
183
|
+
textureStore(outputNode, uvec2(cx, cy), texel).toWriteOnly();
|
|
184
|
+
}).Else(() => {
|
|
185
|
+
const sum = vec4(0).toVar();
|
|
186
|
+
const yi = cy.toInt();
|
|
187
|
+
const radiusComputeY = blurRadius.div(scaleYU);
|
|
188
|
+
for (let i = -HALF_KERNEL; i <= HALF_KERNEL; i++) {
|
|
189
|
+
const offset = float(i).mul(invHalf).mul(radiusComputeY);
|
|
190
|
+
const texel = textureLoad(intermediateReadNode, uvec2(cx, yi.add(offset.round().toInt()).clamp(int(0), computeHm1).toUint()), int(0));
|
|
191
|
+
sum.assign(sum.add(texel.mul(weights.element(int(i + HALF_KERNEL)))));
|
|
192
|
+
}
|
|
193
|
+
textureStore(outputNode, uvec2(cx, cy), sum).toWriteOnly();
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
})().compute(computeWidth * computeHeight, [256])],
|
|
197
|
+
outputTexture: outputTex,
|
|
198
|
+
blurMapTexture: blurMapTex,
|
|
199
|
+
blurMapWriteNode,
|
|
200
|
+
computeWidth,
|
|
201
|
+
computeHeight,
|
|
202
|
+
setInputDimensions: (newW, newH) => {
|
|
203
|
+
inputWidthU.value = newW;
|
|
204
|
+
inputHeightU.value = newH;
|
|
205
|
+
scaleYU.value = newH / computeHeight;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
export { createVariableGaussianBlurCompute as i, DEFAULT_COMPUTE_WIDTH as n, createGaussianBlurCompute as r, DEFAULT_COMPUTE_HEIGHT as t };
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import { abs, float, fract, mod, select, step, vec2, vec4 } from "three/tsl";
|
|
2
|
+
const applyEdgeToUV = (uv$1, edgeMode) => {
|
|
3
|
+
switch (edgeMode) {
|
|
4
|
+
case 1: return uv$1;
|
|
5
|
+
case 2: {
|
|
6
|
+
const mirrorX = mod(abs(uv$1.x), float(2));
|
|
7
|
+
const mirrorY = mod(abs(uv$1.y), float(2));
|
|
8
|
+
return vec2(select(step(float(1), mirrorX), float(2).sub(mirrorX), mirrorX), select(step(float(1), mirrorY), float(2).sub(mirrorY), mirrorY));
|
|
9
|
+
}
|
|
10
|
+
case 3: return fract(uv$1);
|
|
11
|
+
default: return uv$1.clamp(vec2(0, 0), vec2(1, 1));
|
|
12
|
+
}
|
|
13
|
+
};
|
|
2
14
|
const applyEdgeHandling = (distortedUV, sampledColor, childTexture, edgeMode) => {
|
|
3
15
|
switch (edgeMode) {
|
|
4
16
|
case 1: {
|
|
@@ -22,4 +34,4 @@ const applyEdgeHandling = (distortedUV, sampledColor, childTexture, edgeMode) =>
|
|
|
22
34
|
default: return sampledColor;
|
|
23
35
|
}
|
|
24
36
|
};
|
|
25
|
-
export { applyEdgeHandling as t };
|
|
37
|
+
export { applyEdgeToUV as n, applyEdgeHandling as t };
|