react-native-webrtc-kaleidoscope 2.0.0 → 2.1.0
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/NOTICE.md +8 -8
- package/README.md +185 -56
- package/android/build.gradle +13 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/CompositeLayers.kt +127 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/EffectTuning.kt +69 -69
- package/android/src/main/java/com/simiancraft/kaleidoscope/KaleidoscopeModule.kt +86 -33
- package/android/src/main/java/com/simiancraft/kaleidoscope/Registration.kt +23 -64
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/CompositeFactory.kt +691 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/LayerShaders.kt +30 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/TransformFactory.kt +248 -200
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Egl.kt +82 -70
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Fbo.kt +50 -47
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/FramePipeline.kt +106 -105
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/GlDebug.kt +23 -23
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/GlProgram.kt +76 -57
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Ingest.kt +92 -71
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Orientation.kt +25 -25
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/Shaders.kt +57 -76
- package/android/src/main/java/com/simiancraft/kaleidoscope/gpu/ShadersGenerated.kt +1162 -25
- package/android/src/main/java/com/simiancraft/kaleidoscope/segmentation/Mask.kt +254 -242
- package/android/src/main/java/com/simiancraft/kaleidoscope/segmentation/MaskTuning.kt +28 -25
- package/android/src/main/java/com/simiancraft/kaleidoscope/segmentation/SegmentationEngine.kt +104 -98
- package/android/src/test/java/com/simiancraft/kaleidoscope/CompositeLayersTest.kt +165 -0
- package/app.plugin.js +9 -255
- package/catalog/composites/clouds/clouds.controls.tsx +19 -0
- package/catalog/composites/clouds/clouds.ts +32 -0
- package/catalog/composites/corporate-blobs/corporate-blobs.controls.tsx +24 -0
- package/catalog/composites/corporate-blobs/corporate-blobs.thumb.webp +0 -0
- package/catalog/composites/corporate-blobs/corporate-blobs.ts +51 -0
- package/catalog/composites/corporate-blobs/corporate-blobs.web.ts +42 -0
- package/catalog/composites/fairy-cave/fairy-cave.controls.tsx +33 -0
- package/catalog/composites/fairy-cave/fairy-cave.thumb.webp +0 -0
- package/catalog/composites/fairy-cave/fairy-cave.ts +53 -0
- package/catalog/composites/fairy-cave/fairy-cave.web.ts +47 -0
- package/catalog/composites/fairy-grotto/fairy-grotto.controls.tsx +34 -0
- package/catalog/composites/fairy-grotto/fairy-grotto.thumb.webp +0 -0
- package/catalog/composites/fairy-grotto/fairy-grotto.ts +54 -0
- package/catalog/composites/fairy-grotto/fairy-grotto.web.ts +47 -0
- package/catalog/composites/fairy-hollow/fairy-hollow.controls.tsx +34 -0
- package/catalog/composites/fairy-hollow/fairy-hollow.thumb.webp +0 -0
- package/catalog/composites/fairy-hollow/fairy-hollow.ts +55 -0
- package/catalog/composites/fairy-hollow/fairy-hollow.web.ts +47 -0
- package/catalog/composites/nebula/nebula.controls.tsx +19 -0
- package/catalog/composites/nebula/nebula.thumb.webp +0 -0
- package/catalog/composites/nebula/nebula.ts +37 -0
- package/catalog/composites/nebula/nebula.web.ts +30 -0
- package/catalog/composites/observation-deck/observation-deck.controls.tsx +28 -0
- package/catalog/composites/observation-deck/observation-deck.thumb.webp +0 -0
- package/catalog/composites/observation-deck/observation-deck.ts +59 -0
- package/catalog/composites/observation-deck/observation-deck.web.ts +50 -0
- package/catalog/composites/simianlights/simianlights.controls.tsx +19 -0
- package/catalog/composites/simianlights/simianlights.thumb.webp +0 -0
- package/catalog/composites/simianlights/simianlights.ts +34 -0
- package/catalog/composites/simianlights/simianlights.web.ts +29 -0
- package/catalog/composites/underwater/underwater.controls.tsx +19 -0
- package/catalog/composites/underwater/underwater.thumb.webp +0 -0
- package/catalog/composites/underwater/underwater.ts +42 -0
- package/catalog/composites/underwater/underwater.web.ts +36 -0
- package/catalog/composites/wizard-tower/wizard-tower.controls.tsx +23 -0
- package/catalog/composites/wizard-tower/wizard-tower.thumb.webp +0 -0
- package/catalog/composites/wizard-tower/wizard-tower.ts +44 -0
- package/catalog/composites/wizard-tower/wizard-tower.web.ts +35 -0
- package/catalog/composites/wizard-tower-night/wizard-tower-night.controls.tsx +22 -0
- package/catalog/composites/wizard-tower-night/wizard-tower-night.thumb.webp +0 -0
- package/catalog/composites/wizard-tower-night/wizard-tower-night.ts +43 -0
- package/catalog/composites/wizard-tower-night/wizard-tower-night.web.ts +35 -0
- package/catalog/images/README.md +188 -0
- package/catalog/images/corporate/corporate-logo.thumb.webp +0 -0
- package/catalog/images/corporate/corporate-logo.ts +6 -0
- package/catalog/images/corporate/corporate-logo.web.ts +7 -0
- package/catalog/images/corporate/corporate-logo.webp +0 -0
- package/catalog/images/debug/debug-resolutions.thumb.webp +0 -0
- package/catalog/images/debug/debug-resolutions.ts +6 -0
- package/catalog/images/debug/debug-resolutions.web.ts +7 -0
- package/catalog/images/fairy-caves/grotto.thumb.webp +0 -0
- package/catalog/images/fairy-caves/grotto.ts +6 -0
- package/catalog/images/fairy-caves/grotto.web.ts +7 -0
- package/catalog/images/fairy-caves/grotto.webp +0 -0
- package/catalog/images/fairy-caves/hollow.thumb.webp +0 -0
- package/catalog/images/fairy-caves/hollow.ts +6 -0
- package/catalog/images/fairy-caves/hollow.web.ts +7 -0
- package/catalog/images/fairy-caves/hollow.webp +0 -0
- package/catalog/images/fairy-caves/treehouse-2.thumb.webp +0 -0
- package/catalog/images/fairy-caves/treehouse-2.ts +6 -0
- package/catalog/images/fairy-caves/treehouse-2.web.ts +7 -0
- package/catalog/images/fairy-caves/treehouse-2.webp +0 -0
- package/catalog/images/fairy-caves/treehouse-3.thumb.webp +0 -0
- package/catalog/images/fairy-caves/treehouse-3.ts +6 -0
- package/catalog/images/fairy-caves/treehouse-3.web.ts +7 -0
- package/catalog/images/fairy-caves/treehouse-3.webp +0 -0
- package/catalog/images/fairy-caves/treehouse.thumb.webp +0 -0
- package/catalog/images/fairy-caves/treehouse.ts +6 -0
- package/catalog/images/fairy-caves/treehouse.web.ts +7 -0
- package/catalog/images/fairy-caves/treehouse.webp +0 -0
- package/catalog/images/home/home-dark.thumb.webp +0 -0
- package/catalog/images/home/home-dark.ts +6 -0
- package/catalog/images/home/home-dark.web.ts +7 -0
- package/catalog/images/home/home-light.thumb.webp +0 -0
- package/catalog/images/home/home-light.ts +6 -0
- package/catalog/images/home/home-light.web.ts +7 -0
- package/catalog/images/image-ids.ts +42 -0
- package/catalog/images/image.types.ts +5 -0
- package/catalog/images/index.ts +7 -0
- package/catalog/images/nature/landscape-dark.thumb.webp +0 -0
- package/catalog/images/nature/landscape-dark.ts +6 -0
- package/catalog/images/nature/landscape-dark.web.ts +7 -0
- package/catalog/images/nature/landscape-light.thumb.webp +0 -0
- package/catalog/images/nature/landscape-light.ts +6 -0
- package/catalog/images/nature/landscape-light.web.ts +7 -0
- package/catalog/images/office/office-dark.thumb.webp +0 -0
- package/catalog/images/office/office-dark.ts +6 -0
- package/catalog/images/office/office-dark.web.ts +7 -0
- package/catalog/images/office/office-light.thumb.webp +0 -0
- package/catalog/images/office/office-light.ts +6 -0
- package/catalog/images/office/office-light.web.ts +7 -0
- package/catalog/images/sci-fi/sci-fi-light.thumb.webp +0 -0
- package/catalog/images/sci-fi/sci-fi-light.ts +6 -0
- package/catalog/images/sci-fi/sci-fi-light.web.ts +7 -0
- package/catalog/images/simiancraft/simiancraft-dark-transparency.thumb.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-dark-transparency.ts +6 -0
- package/catalog/images/simiancraft/simiancraft-dark-transparency.web.ts +9 -0
- package/catalog/images/simiancraft/simiancraft-dark-transparency.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-dark.thumb.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-dark.ts +6 -0
- package/catalog/images/simiancraft/simiancraft-dark.web.ts +7 -0
- package/catalog/images/simiancraft/simiancraft-light-transparency.thumb.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-light-transparency.ts +6 -0
- package/catalog/images/simiancraft/simiancraft-light-transparency.web.ts +9 -0
- package/catalog/images/simiancraft/simiancraft-light-transparency.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-light.thumb.webp +0 -0
- package/catalog/images/simiancraft/simiancraft-light.ts +6 -0
- package/catalog/images/simiancraft/simiancraft-light.web.ts +7 -0
- package/catalog/images/spaceship/observation-deck.thumb.webp +0 -0
- package/catalog/images/spaceship/observation-deck.ts +6 -0
- package/catalog/images/spaceship/observation-deck.web.ts +7 -0
- package/catalog/images/spaceship/observation-deck.webp +0 -0
- package/catalog/images/underwater/oceanscape-dark.thumb.webp +0 -0
- package/catalog/images/underwater/oceanscape-dark.ts +6 -0
- package/catalog/images/underwater/oceanscape-dark.web.ts +7 -0
- package/catalog/images/underwater/oceanscape-dark.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-1.thumb.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-1.ts +6 -0
- package/catalog/images/wizard-tower/wizard-tower-1.web.ts +7 -0
- package/catalog/images/wizard-tower/wizard-tower-1.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-2.thumb.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-2.ts +6 -0
- package/catalog/images/wizard-tower/wizard-tower-2.web.ts +7 -0
- package/catalog/images/wizard-tower/wizard-tower-2.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-night.thumb.webp +0 -0
- package/catalog/images/wizard-tower/wizard-tower-night.ts +6 -0
- package/catalog/images/wizard-tower/wizard-tower-night.web.ts +7 -0
- package/catalog/images/wizard-tower/wizard-tower-night.webp +0 -0
- package/catalog/shaders/README.md +114 -0
- package/catalog/shaders/_shared/composite-blit.frag +26 -0
- package/catalog/shaders/_shared/composite-camera.frag +17 -0
- package/catalog/shaders/_shared/composite-image.frag +23 -0
- package/catalog/shaders/_shared/composite-masked.frag +26 -0
- package/catalog/shaders/_shared/composite-subject.frag +27 -0
- package/catalog/shaders/_shared/passthrough.vert +27 -0
- package/catalog/shaders/_shared/transform.frag +27 -0
- package/catalog/shaders/_shared/types.ts +63 -0
- package/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.tsx +37 -0
- package/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.frag +123 -0
- package/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.ts +106 -0
- package/catalog/shaders/blur/blur.form.tsx +29 -0
- package/catalog/shaders/blur/blur.ts +32 -0
- package/catalog/shaders/blur/composite-blur.frag +42 -0
- package/catalog/shaders/clouds/clouds.form.tsx +39 -0
- package/catalog/shaders/clouds/clouds.frag +128 -0
- package/catalog/shaders/clouds/clouds.presets.md +37 -0
- package/catalog/shaders/clouds/clouds.ts +124 -0
- package/catalog/shaders/corporate-blobs/corporate-blobs.form.tsx +44 -0
- package/catalog/shaders/corporate-blobs/corporate-blobs.frag +224 -0
- package/catalog/shaders/corporate-blobs/corporate-blobs.ts +136 -0
- package/catalog/shaders/fireflies/fireflies.form.tsx +33 -0
- package/catalog/shaders/fireflies/fireflies.frag +68 -0
- package/catalog/shaders/fireflies/fireflies.ts +61 -0
- package/catalog/shaders/godrays/godrays.form.tsx +37 -0
- package/catalog/shaders/godrays/godrays.frag +85 -0
- package/catalog/shaders/godrays/godrays.ts +105 -0
- package/catalog/shaders/index.ts +78 -0
- package/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.tsx +55 -0
- package/catalog/shaders/light-beams-and-motes/light-beams-and-motes.frag +262 -0
- package/catalog/shaders/light-beams-and-motes/light-beams-and-motes.ts +137 -0
- package/catalog/shaders/nebula/nebula.form.tsx +34 -0
- package/catalog/shaders/nebula/nebula.frag +151 -0
- package/catalog/shaders/nebula/nebula.ts +74 -0
- package/catalog/shaders/plasma/plasma.form.tsx +32 -0
- package/catalog/shaders/plasma/plasma.frag +55 -0
- package/catalog/shaders/plasma/plasma.ts +44 -0
- package/catalog/shaders/simianlights/simianlights.form.tsx +34 -0
- package/catalog/shaders/simianlights/simianlights.frag +151 -0
- package/catalog/shaders/simianlights/simianlights.ts +73 -0
- package/dist/catalog/composites/clouds/clouds.controls.d.ts +3 -0
- package/dist/catalog/composites/clouds/clouds.controls.d.ts.map +1 -0
- package/dist/catalog/composites/clouds/clouds.controls.js +11 -0
- package/dist/catalog/composites/clouds/clouds.controls.js.map +1 -0
- package/dist/catalog/composites/clouds/clouds.d.ts +26 -0
- package/dist/catalog/composites/clouds/clouds.d.ts.map +1 -0
- package/dist/catalog/composites/clouds/clouds.js +33 -0
- package/dist/catalog/composites/clouds/clouds.js.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.controls.d.ts +3 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.controls.d.ts.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.controls.js +13 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.controls.js.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.d.ts +37 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.d.ts.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.js +52 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.js.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.thumb.webp +0 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.web.d.ts +37 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.web.d.ts.map +1 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.web.js +46 -0
- package/dist/catalog/composites/corporate-blobs/corporate-blobs.web.js.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.controls.d.ts +3 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.controls.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.controls.js +13 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.controls.js.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.d.ts +42 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.js +54 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.js.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.thumb.webp +0 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.web.d.ts +42 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.web.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.web.js +51 -0
- package/dist/catalog/composites/fairy-cave/fairy-cave.web.js.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.controls.d.ts +3 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.controls.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.controls.js +14 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.controls.js.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.d.ts +42 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.js +55 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.js.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.thumb.webp +0 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.web.d.ts +42 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.web.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.web.js +51 -0
- package/dist/catalog/composites/fairy-grotto/fairy-grotto.web.js.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.controls.d.ts +3 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.controls.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.controls.js +14 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.controls.js.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.d.ts +42 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.js +56 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.js.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.thumb.webp +0 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.web.d.ts +42 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.web.d.ts.map +1 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.web.js +51 -0
- package/dist/catalog/composites/fairy-hollow/fairy-hollow.web.js.map +1 -0
- package/dist/catalog/composites/nebula/nebula.controls.d.ts +3 -0
- package/dist/catalog/composites/nebula/nebula.controls.d.ts.map +1 -0
- package/dist/catalog/composites/nebula/nebula.controls.js +11 -0
- package/dist/catalog/composites/nebula/nebula.controls.js.map +1 -0
- package/dist/catalog/composites/nebula/nebula.d.ts +22 -0
- package/dist/catalog/composites/nebula/nebula.d.ts.map +1 -0
- package/dist/catalog/composites/nebula/nebula.js +38 -0
- package/dist/catalog/composites/nebula/nebula.js.map +1 -0
- package/dist/catalog/composites/nebula/nebula.thumb.webp +0 -0
- package/dist/catalog/composites/nebula/nebula.web.d.ts +22 -0
- package/dist/catalog/composites/nebula/nebula.web.d.ts.map +1 -0
- package/dist/catalog/composites/nebula/nebula.web.js +34 -0
- package/dist/catalog/composites/nebula/nebula.web.js.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.controls.d.ts +3 -0
- package/dist/catalog/composites/observation-deck/observation-deck.controls.d.ts.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.controls.js +13 -0
- package/dist/catalog/composites/observation-deck/observation-deck.controls.js.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.d.ts +41 -0
- package/dist/catalog/composites/observation-deck/observation-deck.d.ts.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.js +60 -0
- package/dist/catalog/composites/observation-deck/observation-deck.js.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.thumb.webp +0 -0
- package/dist/catalog/composites/observation-deck/observation-deck.web.d.ts +41 -0
- package/dist/catalog/composites/observation-deck/observation-deck.web.d.ts.map +1 -0
- package/dist/catalog/composites/observation-deck/observation-deck.web.js +54 -0
- package/dist/catalog/composites/observation-deck/observation-deck.web.js.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.controls.d.ts +3 -0
- package/dist/catalog/composites/simianlights/simianlights.controls.d.ts.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.controls.js +11 -0
- package/dist/catalog/composites/simianlights/simianlights.controls.js.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.d.ts +22 -0
- package/dist/catalog/composites/simianlights/simianlights.d.ts.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.js +30 -0
- package/dist/catalog/composites/simianlights/simianlights.js.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.thumb.webp +0 -0
- package/dist/catalog/composites/simianlights/simianlights.web.d.ts +22 -0
- package/dist/catalog/composites/simianlights/simianlights.web.d.ts.map +1 -0
- package/dist/catalog/composites/simianlights/simianlights.web.js +33 -0
- package/dist/catalog/composites/simianlights/simianlights.web.js.map +1 -0
- package/dist/catalog/composites/underwater/underwater.controls.d.ts +3 -0
- package/dist/catalog/composites/underwater/underwater.controls.d.ts.map +1 -0
- package/dist/catalog/composites/underwater/underwater.controls.js +11 -0
- package/dist/catalog/composites/underwater/underwater.controls.js.map +1 -0
- package/dist/catalog/composites/underwater/underwater.d.ts +30 -0
- package/dist/catalog/composites/underwater/underwater.d.ts.map +1 -0
- package/dist/catalog/composites/underwater/underwater.js +43 -0
- package/dist/catalog/composites/underwater/underwater.js.map +1 -0
- package/dist/catalog/composites/underwater/underwater.thumb.webp +0 -0
- package/dist/catalog/composites/underwater/underwater.web.d.ts +30 -0
- package/dist/catalog/composites/underwater/underwater.web.d.ts.map +1 -0
- package/dist/catalog/composites/underwater/underwater.web.js +40 -0
- package/dist/catalog/composites/underwater/underwater.web.js.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.controls.d.ts +3 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.controls.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.controls.js +15 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.controls.js.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.d.ts +31 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.js +45 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.js.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.thumb.webp +0 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.web.d.ts +31 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.web.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.web.js +39 -0
- package/dist/catalog/composites/wizard-tower/wizard-tower.web.js.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.controls.d.ts +3 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.controls.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.controls.js +14 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.controls.js.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.d.ts +31 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.js +44 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.js.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.thumb.webp +0 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.web.d.ts +31 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.web.d.ts.map +1 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.web.js +39 -0
- package/dist/catalog/composites/wizard-tower-night/wizard-tower-night.web.js.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.d.ts +3 -0
- package/dist/catalog/images/corporate/corporate-logo.d.ts.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.js +8 -0
- package/dist/catalog/images/corporate/corporate-logo.js.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.thumb.webp +0 -0
- package/dist/catalog/images/corporate/corporate-logo.web.d.ts +3 -0
- package/dist/catalog/images/corporate/corporate-logo.web.d.ts.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.web.js +12 -0
- package/dist/catalog/images/corporate/corporate-logo.web.js.map +1 -0
- package/dist/catalog/images/corporate/corporate-logo.webp +0 -0
- package/dist/catalog/images/debug/debug-resolutions.d.ts +3 -0
- package/dist/catalog/images/debug/debug-resolutions.d.ts.map +1 -0
- package/dist/catalog/images/debug/debug-resolutions.js +8 -0
- package/dist/catalog/images/debug/debug-resolutions.js.map +1 -0
- package/dist/catalog/images/debug/debug-resolutions.thumb.webp +0 -0
- package/dist/catalog/images/debug/debug-resolutions.web.d.ts +3 -0
- package/dist/catalog/images/debug/debug-resolutions.web.d.ts.map +1 -0
- package/dist/catalog/images/debug/debug-resolutions.web.js +12 -0
- package/dist/catalog/images/debug/debug-resolutions.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/grotto.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.js +8 -0
- package/dist/catalog/images/fairy-caves/grotto.js.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/grotto.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/grotto.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.web.js +12 -0
- package/dist/catalog/images/fairy-caves/grotto.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/grotto.webp +0 -0
- package/dist/catalog/images/fairy-caves/hollow.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/hollow.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/hollow.js +8 -0
- package/dist/catalog/images/fairy-caves/hollow.js.map +1 -0
- package/dist/catalog/images/fairy-caves/hollow.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/hollow.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/hollow.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/hollow.web.js +12 -0
- package/dist/catalog/images/fairy-caves/hollow.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/hollow.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.js +8 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.web.js +12 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-2.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.js +8 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.web.js +12 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse-3.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse.js +8 -0
- package/dist/catalog/images/fairy-caves/treehouse.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse.thumb.webp +0 -0
- package/dist/catalog/images/fairy-caves/treehouse.web.d.ts +3 -0
- package/dist/catalog/images/fairy-caves/treehouse.web.d.ts.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse.web.js +12 -0
- package/dist/catalog/images/fairy-caves/treehouse.web.js.map +1 -0
- package/dist/catalog/images/fairy-caves/treehouse.webp +0 -0
- package/dist/catalog/images/home/home-dark.d.ts +3 -0
- package/dist/catalog/images/home/home-dark.d.ts.map +1 -0
- package/dist/catalog/images/home/home-dark.js +8 -0
- package/dist/catalog/images/home/home-dark.js.map +1 -0
- package/dist/catalog/images/home/home-dark.thumb.webp +0 -0
- package/dist/catalog/images/home/home-dark.web.d.ts +3 -0
- package/dist/catalog/images/home/home-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/home/home-dark.web.js +12 -0
- package/dist/catalog/images/home/home-dark.web.js.map +1 -0
- package/dist/catalog/images/home/home-light.d.ts +3 -0
- package/dist/catalog/images/home/home-light.d.ts.map +1 -0
- package/dist/catalog/images/home/home-light.js +8 -0
- package/dist/catalog/images/home/home-light.js.map +1 -0
- package/dist/catalog/images/home/home-light.thumb.webp +0 -0
- package/dist/catalog/images/home/home-light.web.d.ts +3 -0
- package/dist/catalog/images/home/home-light.web.d.ts.map +1 -0
- package/dist/catalog/images/home/home-light.web.js +12 -0
- package/dist/catalog/images/home/home-light.web.js.map +1 -0
- package/dist/catalog/images/image-ids.d.ts +3 -0
- package/dist/catalog/images/image-ids.d.ts.map +1 -0
- package/dist/catalog/images/image-ids.js +43 -0
- package/dist/catalog/images/image-ids.js.map +1 -0
- package/dist/catalog/images/image.types.d.ts +2 -0
- package/dist/catalog/images/image.types.d.ts.map +1 -0
- package/dist/catalog/images/image.types.js +3 -0
- package/dist/catalog/images/image.types.js.map +1 -0
- package/dist/catalog/images/index.d.ts +3 -0
- package/dist/catalog/images/index.d.ts.map +1 -0
- package/dist/catalog/images/index.js +10 -0
- package/dist/catalog/images/index.js.map +1 -0
- package/dist/catalog/images/nature/landscape-dark.d.ts +3 -0
- package/dist/catalog/images/nature/landscape-dark.d.ts.map +1 -0
- package/dist/catalog/images/nature/landscape-dark.js +8 -0
- package/dist/catalog/images/nature/landscape-dark.js.map +1 -0
- package/dist/catalog/images/nature/landscape-dark.thumb.webp +0 -0
- package/dist/catalog/images/nature/landscape-dark.web.d.ts +3 -0
- package/dist/catalog/images/nature/landscape-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/nature/landscape-dark.web.js +12 -0
- package/dist/catalog/images/nature/landscape-dark.web.js.map +1 -0
- package/dist/catalog/images/nature/landscape-light.d.ts +3 -0
- package/dist/catalog/images/nature/landscape-light.d.ts.map +1 -0
- package/dist/catalog/images/nature/landscape-light.js +8 -0
- package/dist/catalog/images/nature/landscape-light.js.map +1 -0
- package/dist/catalog/images/nature/landscape-light.thumb.webp +0 -0
- package/dist/catalog/images/nature/landscape-light.web.d.ts +3 -0
- package/dist/catalog/images/nature/landscape-light.web.d.ts.map +1 -0
- package/dist/catalog/images/nature/landscape-light.web.js +12 -0
- package/dist/catalog/images/nature/landscape-light.web.js.map +1 -0
- package/dist/catalog/images/office/office-dark.d.ts +3 -0
- package/dist/catalog/images/office/office-dark.d.ts.map +1 -0
- package/dist/catalog/images/office/office-dark.js +8 -0
- package/dist/catalog/images/office/office-dark.js.map +1 -0
- package/dist/catalog/images/office/office-dark.thumb.webp +0 -0
- package/dist/catalog/images/office/office-dark.web.d.ts +3 -0
- package/dist/catalog/images/office/office-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/office/office-dark.web.js +12 -0
- package/dist/catalog/images/office/office-dark.web.js.map +1 -0
- package/dist/catalog/images/office/office-light.d.ts +3 -0
- package/dist/catalog/images/office/office-light.d.ts.map +1 -0
- package/dist/catalog/images/office/office-light.js +8 -0
- package/dist/catalog/images/office/office-light.js.map +1 -0
- package/dist/catalog/images/office/office-light.thumb.webp +0 -0
- package/dist/catalog/images/office/office-light.web.d.ts +3 -0
- package/dist/catalog/images/office/office-light.web.d.ts.map +1 -0
- package/dist/catalog/images/office/office-light.web.js +12 -0
- package/dist/catalog/images/office/office-light.web.js.map +1 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.d.ts +3 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.d.ts.map +1 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.js +8 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.js.map +1 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.thumb.webp +0 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.web.d.ts +3 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.web.d.ts.map +1 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.web.js +12 -0
- package/dist/catalog/images/sci-fi/sci-fi-light.web.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.js +8 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.thumb.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.web.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.web.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.web.js +12 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.web.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark-transparency.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.js +8 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.thumb.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.web.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.web.js +12 -0
- package/dist/catalog/images/simiancraft/simiancraft-dark.web.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.js +8 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.thumb.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.web.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.web.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.web.js +12 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.web.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light-transparency.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.js +8 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.js.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.thumb.webp +0 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.web.d.ts +3 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.web.d.ts.map +1 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.web.js +12 -0
- package/dist/catalog/images/simiancraft/simiancraft-light.web.js.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.d.ts +3 -0
- package/dist/catalog/images/spaceship/observation-deck.d.ts.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.js +8 -0
- package/dist/catalog/images/spaceship/observation-deck.js.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.thumb.webp +0 -0
- package/dist/catalog/images/spaceship/observation-deck.web.d.ts +3 -0
- package/dist/catalog/images/spaceship/observation-deck.web.d.ts.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.web.js +12 -0
- package/dist/catalog/images/spaceship/observation-deck.web.js.map +1 -0
- package/dist/catalog/images/spaceship/observation-deck.webp +0 -0
- package/dist/catalog/images/underwater/oceanscape-dark.d.ts +3 -0
- package/dist/catalog/images/underwater/oceanscape-dark.d.ts.map +1 -0
- package/dist/catalog/images/underwater/oceanscape-dark.js +8 -0
- package/dist/catalog/images/underwater/oceanscape-dark.js.map +1 -0
- package/dist/catalog/images/underwater/oceanscape-dark.thumb.webp +0 -0
- package/dist/catalog/images/underwater/oceanscape-dark.web.d.ts +3 -0
- package/dist/catalog/images/underwater/oceanscape-dark.web.d.ts.map +1 -0
- package/dist/catalog/images/underwater/oceanscape-dark.web.js +12 -0
- package/dist/catalog/images/underwater/oceanscape-dark.web.js.map +1 -0
- package/dist/catalog/images/underwater/oceanscape-dark.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.js +8 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.thumb.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.web.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.web.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.web.js +12 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.web.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-1.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.js +8 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.thumb.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.web.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.web.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.web.js +12 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.web.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-2.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.js +8 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.thumb.webp +0 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.web.d.ts +3 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.web.d.ts.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.web.js +12 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.web.js.map +1 -0
- package/dist/catalog/images/wizard-tower/wizard-tower-night.webp +0 -0
- package/dist/catalog/shaders/_shared/types.d.ts +38 -0
- package/dist/catalog/shaders/_shared/types.d.ts.map +1 -0
- package/dist/catalog/shaders/_shared/types.js +15 -0
- package/dist/catalog/shaders/_shared/types.js.map +1 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.d.ts +26 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.d.ts.map +1 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.d.ts +3 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.d.ts.map +1 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.js +15 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.form.js.map +1 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.js +84 -0
- package/dist/catalog/shaders/anamorphic-lensflare/anamorphic-lensflare.js.map +1 -0
- package/dist/catalog/shaders/blur/blur.d.ts +15 -0
- package/dist/catalog/shaders/blur/blur.d.ts.map +1 -0
- package/dist/catalog/shaders/blur/blur.form.d.ts +3 -0
- package/dist/catalog/shaders/blur/blur.form.d.ts.map +1 -0
- package/dist/catalog/shaders/blur/blur.form.js +15 -0
- package/dist/catalog/shaders/blur/blur.form.js.map +1 -0
- package/dist/catalog/shaders/blur/blur.js +27 -0
- package/dist/catalog/shaders/blur/blur.js.map +1 -0
- package/dist/catalog/shaders/clouds/clouds.d.ts +34 -0
- package/dist/catalog/shaders/clouds/clouds.d.ts.map +1 -0
- package/dist/catalog/shaders/clouds/clouds.form.d.ts +3 -0
- package/dist/catalog/shaders/clouds/clouds.form.d.ts.map +1 -0
- package/dist/catalog/shaders/clouds/clouds.form.js +15 -0
- package/dist/catalog/shaders/clouds/clouds.form.js.map +1 -0
- package/dist/catalog/shaders/clouds/clouds.js +98 -0
- package/dist/catalog/shaders/clouds/clouds.js.map +1 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.d.ts +40 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.d.ts.map +1 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.form.d.ts +3 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.form.d.ts.map +1 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.form.js +15 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.form.js.map +1 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.js +100 -0
- package/dist/catalog/shaders/corporate-blobs/corporate-blobs.js.map +1 -0
- package/dist/catalog/shaders/fireflies/fireflies.d.ts +18 -0
- package/dist/catalog/shaders/fireflies/fireflies.d.ts.map +1 -0
- package/dist/catalog/shaders/fireflies/fireflies.form.d.ts +3 -0
- package/dist/catalog/shaders/fireflies/fireflies.form.d.ts.map +1 -0
- package/dist/catalog/shaders/fireflies/fireflies.form.js +15 -0
- package/dist/catalog/shaders/fireflies/fireflies.form.js.map +1 -0
- package/dist/catalog/shaders/fireflies/fireflies.js +47 -0
- package/dist/catalog/shaders/fireflies/fireflies.js.map +1 -0
- package/dist/catalog/shaders/godrays/godrays.d.ts +26 -0
- package/dist/catalog/shaders/godrays/godrays.d.ts.map +1 -0
- package/dist/catalog/shaders/godrays/godrays.form.d.ts +3 -0
- package/dist/catalog/shaders/godrays/godrays.form.d.ts.map +1 -0
- package/dist/catalog/shaders/godrays/godrays.form.js +15 -0
- package/dist/catalog/shaders/godrays/godrays.form.js.map +1 -0
- package/dist/catalog/shaders/godrays/godrays.js +83 -0
- package/dist/catalog/shaders/godrays/godrays.js.map +1 -0
- package/dist/catalog/shaders/index.d.ts +73 -0
- package/dist/catalog/shaders/index.d.ts.map +1 -0
- package/dist/catalog/shaders/index.js +30 -0
- package/dist/catalog/shaders/index.js.map +1 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.d.ts +44 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.d.ts.map +1 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.d.ts +3 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.d.ts.map +1 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.js +16 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.form.js.map +1 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.js +91 -0
- package/dist/catalog/shaders/light-beams-and-motes/light-beams-and-motes.js.map +1 -0
- package/dist/catalog/shaders/nebula/nebula.d.ts +20 -0
- package/dist/catalog/shaders/nebula/nebula.d.ts.map +1 -0
- package/dist/catalog/shaders/nebula/nebula.form.d.ts +3 -0
- package/dist/catalog/shaders/nebula/nebula.form.d.ts.map +1 -0
- package/dist/catalog/shaders/nebula/nebula.form.js +15 -0
- package/dist/catalog/shaders/nebula/nebula.form.js.map +1 -0
- package/dist/catalog/shaders/nebula/nebula.js +58 -0
- package/dist/catalog/shaders/nebula/nebula.js.map +1 -0
- package/dist/catalog/shaders/plasma/plasma.d.ts +16 -0
- package/dist/catalog/shaders/plasma/plasma.d.ts.map +1 -0
- package/dist/catalog/shaders/plasma/plasma.form.d.ts +3 -0
- package/dist/catalog/shaders/plasma/plasma.form.d.ts.map +1 -0
- package/dist/catalog/shaders/plasma/plasma.form.js +15 -0
- package/dist/catalog/shaders/plasma/plasma.form.js.map +1 -0
- package/dist/catalog/shaders/plasma/plasma.js +32 -0
- package/dist/catalog/shaders/plasma/plasma.js.map +1 -0
- package/dist/catalog/shaders/simianlights/simianlights.d.ts +20 -0
- package/dist/catalog/shaders/simianlights/simianlights.d.ts.map +1 -0
- package/dist/catalog/shaders/simianlights/simianlights.form.d.ts +3 -0
- package/dist/catalog/shaders/simianlights/simianlights.form.d.ts.map +1 -0
- package/dist/catalog/shaders/simianlights/simianlights.form.js +15 -0
- package/dist/catalog/shaders/simianlights/simianlights.form.js.map +1 -0
- package/dist/catalog/shaders/simianlights/simianlights.js +57 -0
- package/dist/catalog/shaders/simianlights/simianlights.js.map +1 -0
- package/dist/src/components/form/control-form.d.ts +37 -0
- package/dist/src/components/form/control-form.d.ts.map +1 -0
- package/dist/src/components/form/control-form.js +55 -0
- package/dist/src/components/form/control-form.js.map +1 -0
- package/dist/src/components/form/make-controls.d.ts +22 -0
- package/dist/src/components/form/make-controls.d.ts.map +1 -0
- package/dist/src/components/form/make-controls.js +19 -0
- package/dist/src/components/form/make-controls.js.map +1 -0
- package/dist/src/components/form/scope.d.ts +2 -0
- package/dist/src/components/form/scope.d.ts.map +1 -0
- package/dist/src/components/form/scope.js +11 -0
- package/dist/src/components/form/scope.js.map +1 -0
- package/dist/src/components/form/use-field.d.ts +10 -0
- package/dist/src/components/form/use-field.d.ts.map +1 -0
- package/dist/src/components/form/use-field.js +27 -0
- package/dist/src/components/form/use-field.js.map +1 -0
- package/dist/src/components/preset-book-menu/index.d.ts +52 -0
- package/dist/src/components/preset-book-menu/index.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/index.js +152 -0
- package/dist/src/components/preset-book-menu/index.js.map +1 -0
- package/dist/src/components/preset-book-menu/layout.d.ts +25 -0
- package/dist/src/components/preset-book-menu/layout.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/layout.js +19 -0
- package/dist/src/components/preset-book-menu/layout.js.map +1 -0
- package/dist/src/components/preset-book-menu/preset-book-menu.types.d.ts +88 -0
- package/dist/src/components/preset-book-menu/preset-book-menu.types.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/preset-book-menu.types.js +14 -0
- package/dist/src/components/preset-book-menu/preset-book-menu.types.js.map +1 -0
- package/dist/src/components/preset-book-menu/preset-grid.d.ts +16 -0
- package/dist/src/components/preset-book-menu/preset-grid.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/preset-grid.js +49 -0
- package/dist/src/components/preset-book-menu/preset-grid.js.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.d.ts +3 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.js +28 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.js.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.types.d.ts +13 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.types.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.types.js +5 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.types.js.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.web.d.ts +3 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.web.d.ts.map +1 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.web.js +17 -0
- package/dist/src/components/preset-book-menu/resolve-image-uri.web.js.map +1 -0
- package/dist/src/components/preset-control-panel/composite-layer-control-panel.d.ts +14 -0
- package/dist/src/components/preset-control-panel/composite-layer-control-panel.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/composite-layer-control-panel.js +36 -0
- package/dist/src/components/preset-control-panel/composite-layer-control-panel.js.map +1 -0
- package/dist/src/components/preset-control-panel/control-section.d.ts +9 -0
- package/dist/src/components/preset-control-panel/control-section.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/control-section.js +47 -0
- package/dist/src/components/preset-control-panel/control-section.js.map +1 -0
- package/dist/src/components/preset-control-panel/control.d.ts +10 -0
- package/dist/src/components/preset-control-panel/control.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/control.js +35 -0
- package/dist/src/components/preset-control-panel/control.js.map +1 -0
- package/dist/src/components/preset-control-panel/index.d.ts +14 -0
- package/dist/src/components/preset-control-panel/index.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/index.js +49 -0
- package/dist/src/components/preset-control-panel/index.js.map +1 -0
- package/dist/src/components/preset-control-panel/mask-control-panel.d.ts +11 -0
- package/dist/src/components/preset-control-panel/mask-control-panel.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/mask-control-panel.js +34 -0
- package/dist/src/components/preset-control-panel/mask-control-panel.js.map +1 -0
- package/dist/src/components/preset-control-panel/preset-control-panel.d.ts +12 -0
- package/dist/src/components/preset-control-panel/preset-control-panel.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/preset-control-panel.js +23 -0
- package/dist/src/components/preset-control-panel/preset-control-panel.js.map +1 -0
- package/dist/src/components/preset-control-panel/transform-control-panel.d.ts +14 -0
- package/dist/src/components/preset-control-panel/transform-control-panel.d.ts.map +1 -0
- package/dist/src/components/preset-control-panel/transform-control-panel.js +58 -0
- package/dist/src/components/preset-control-panel/transform-control-panel.js.map +1 -0
- package/dist/src/components/preset-tile/index.d.ts +24 -0
- package/dist/src/components/preset-tile/index.d.ts.map +1 -0
- package/dist/src/components/preset-tile/index.js +98 -0
- package/dist/src/components/preset-tile/index.js.map +1 -0
- package/dist/src/components/theme/provider.d.ts +18 -0
- package/dist/src/components/theme/provider.d.ts.map +1 -0
- package/dist/src/components/theme/provider.js +29 -0
- package/dist/src/components/theme/provider.js.map +1 -0
- package/dist/src/components/theme/slots.d.ts +17 -0
- package/dist/src/components/theme/slots.d.ts.map +1 -0
- package/dist/src/components/theme/slots.js +9 -0
- package/dist/src/components/theme/slots.js.map +1 -0
- package/dist/src/components/ui/button.d.ts +14 -0
- package/dist/src/components/ui/button.d.ts.map +1 -0
- package/dist/src/components/ui/button.js +29 -0
- package/dist/src/components/ui/button.js.map +1 -0
- package/dist/src/components/ui/color-picker.d.ts +12 -0
- package/dist/src/components/ui/color-picker.d.ts.map +1 -0
- package/dist/src/components/ui/color-picker.js +43 -0
- package/dist/src/components/ui/color-picker.js.map +1 -0
- package/dist/src/components/ui/index.d.ts +6 -0
- package/dist/src/components/ui/index.d.ts.map +1 -0
- package/dist/src/components/ui/index.js +18 -0
- package/dist/src/components/ui/index.js.map +1 -0
- package/dist/src/components/ui/label.d.ts +10 -0
- package/dist/src/components/ui/label.d.ts.map +1 -0
- package/dist/src/components/ui/label.js +14 -0
- package/dist/src/components/ui/label.js.map +1 -0
- package/dist/src/components/ui/point.d.ts +19 -0
- package/dist/src/components/ui/point.d.ts.map +1 -0
- package/dist/src/components/ui/point.js +52 -0
- package/dist/src/components/ui/point.js.map +1 -0
- package/dist/src/components/ui/polygon-field.d.ts +10 -0
- package/dist/src/components/ui/polygon-field.d.ts.map +1 -0
- package/dist/src/components/ui/polygon-field.js +50 -0
- package/dist/src/components/ui/polygon-field.js.map +1 -0
- package/dist/src/components/ui/readout.d.ts +10 -0
- package/dist/src/components/ui/readout.d.ts.map +1 -0
- package/dist/src/components/ui/readout.js +14 -0
- package/dist/src/components/ui/readout.js.map +1 -0
- package/dist/src/components/ui/slider-value.d.ts +8 -0
- package/dist/src/components/ui/slider-value.d.ts.map +1 -0
- package/dist/src/components/ui/slider-value.js +17 -0
- package/dist/src/components/ui/slider-value.js.map +1 -0
- package/dist/src/components/ui/slider.d.ts +15 -0
- package/dist/src/components/ui/slider.d.ts.map +1 -0
- package/dist/src/components/ui/slider.js +58 -0
- package/dist/src/components/ui/slider.js.map +1 -0
- package/dist/src/components/ui/switch.d.ts +8 -0
- package/dist/src/components/ui/switch.d.ts.map +1 -0
- package/dist/src/components/ui/switch.js +24 -0
- package/dist/src/components/ui/switch.js.map +1 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +187 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/index.web.d.ts +32 -0
- package/dist/src/index.web.d.ts.map +1 -0
- package/dist/src/index.web.js +119 -0
- package/dist/src/index.web.js.map +1 -0
- package/dist/src/kaleidoscope/controls.d.ts +24 -0
- package/dist/src/kaleidoscope/controls.d.ts.map +1 -0
- package/dist/src/kaleidoscope/controls.js +92 -0
- package/dist/src/kaleidoscope/controls.js.map +1 -0
- package/dist/src/kaleidoscope/effect.d.ts +4 -0
- package/dist/src/kaleidoscope/effect.d.ts.map +1 -0
- package/dist/src/kaleidoscope/effect.js +7 -0
- package/dist/src/kaleidoscope/effect.js.map +1 -0
- package/dist/src/kaleidoscope/effect.types.d.ts +47 -0
- package/dist/src/kaleidoscope/effect.types.d.ts.map +1 -0
- package/dist/src/kaleidoscope/effect.types.js +9 -0
- package/dist/src/kaleidoscope/effect.types.js.map +1 -0
- package/dist/src/kaleidoscope/shader-to-spec.d.ts +4 -0
- package/dist/src/kaleidoscope/shader-to-spec.d.ts.map +1 -0
- package/dist/src/kaleidoscope/shader-to-spec.js +17 -0
- package/dist/src/kaleidoscope/shader-to-spec.js.map +1 -0
- package/dist/src/kaleidoscope/types.d.ts +79 -0
- package/dist/src/kaleidoscope/types.d.ts.map +1 -0
- package/dist/src/kaleidoscope/types.js +18 -0
- package/dist/src/kaleidoscope/types.js.map +1 -0
- package/dist/src/kaleidoscope.preset-book.types.d.ts +86 -0
- package/dist/src/kaleidoscope.preset-book.types.d.ts.map +1 -0
- package/dist/src/kaleidoscope.preset-book.types.js +16 -0
- package/dist/src/kaleidoscope.preset-book.types.js.map +1 -0
- package/dist/src/lib/primitives.types.d.ts +3 -0
- package/dist/src/lib/primitives.types.d.ts.map +1 -0
- package/dist/src/lib/primitives.types.js +5 -0
- package/dist/src/lib/primitives.types.js.map +1 -0
- package/dist/src/lib/test-id.d.ts +30 -0
- package/dist/src/lib/test-id.d.ts.map +1 -0
- package/dist/src/lib/test-id.js +81 -0
- package/dist/src/lib/test-id.js.map +1 -0
- package/dist/src/livekit.d.ts +24 -0
- package/dist/src/livekit.d.ts.map +1 -0
- package/dist/src/livekit.js +63 -0
- package/dist/src/livekit.js.map +1 -0
- package/dist/src/nativewind.d.ts +7 -0
- package/dist/src/nativewind.d.ts.map +1 -0
- package/dist/src/nativewind.js +43 -0
- package/dist/src/nativewind.js.map +1 -0
- package/dist/web-driver/effects/composite.d.ts +14 -0
- package/dist/web-driver/effects/composite.d.ts.map +1 -0
- package/dist/web-driver/effects/composite.js +576 -0
- package/dist/web-driver/effects/composite.js.map +1 -0
- package/dist/web-driver/effects/layer-shaders.d.ts +2 -0
- package/dist/web-driver/effects/layer-shaders.d.ts.map +1 -0
- package/dist/web-driver/effects/layer-shaders.js +11 -0
- package/dist/web-driver/effects/layer-shaders.js.map +1 -0
- package/dist/web-driver/effects/transform.d.ts +4 -0
- package/dist/web-driver/effects/transform.d.ts.map +1 -0
- package/dist/web-driver/effects/transform.js +66 -0
- package/dist/web-driver/effects/transform.js.map +1 -0
- package/dist/web-driver/index.d.ts +6 -0
- package/dist/web-driver/index.d.ts.map +1 -0
- package/dist/web-driver/index.js +21 -0
- package/dist/web-driver/index.js.map +1 -0
- package/dist/web-driver/insertable-streams.d.ts.map +1 -0
- package/dist/web-driver/insertable-streams.js +68 -0
- package/dist/web-driver/insertable-streams.js.map +1 -0
- package/dist/web-driver/segmenter.d.ts.map +1 -0
- package/dist/web-driver/segmenter.js +89 -0
- package/dist/web-driver/segmenter.js.map +1 -0
- package/dist/web-driver/shaders.d.ts +2 -0
- package/dist/web-driver/shaders.d.ts.map +1 -0
- package/dist/web-driver/shaders.generated.d.ts +17 -0
- package/dist/web-driver/shaders.generated.d.ts.map +1 -0
- package/dist/web-driver/shaders.generated.js +1180 -0
- package/dist/web-driver/shaders.generated.js.map +1 -0
- package/dist/web-driver/shaders.js +28 -0
- package/dist/web-driver/shaders.js.map +1 -0
- package/dist/web-driver/tuning.d.ts.map +1 -0
- package/dist/web-driver/tuning.js +61 -0
- package/dist/web-driver/tuning.js.map +1 -0
- package/ios/Kaleidoscope.podspec +22 -15
- package/ios/KaleidoscopeModule/BundledImage.swift +39 -0
- package/ios/KaleidoscopeModule/CompositeLayers.swift +142 -0
- package/ios/KaleidoscopeModule/EffectTuning.swift +86 -86
- package/ios/KaleidoscopeModule/KaleidoscopeModule.swift +55 -27
- package/ios/KaleidoscopeModule/Registration.swift +36 -57
- package/ios/KaleidoscopeModule/effects/CompositeProcessor.swift +906 -0
- package/ios/KaleidoscopeModule/effects/FrameBridge.swift +25 -25
- package/ios/KaleidoscopeModule/effects/TransformProcessor.swift +127 -126
- package/ios/KaleidoscopeModule/gpu/CompositeRendering.swift +352 -0
- package/ios/KaleidoscopeModule/gpu/Ingest.swift +104 -102
- package/ios/KaleidoscopeModule/gpu/MetalRenderer.swift +473 -544
- package/ios/KaleidoscopeModule/gpu/Orientation.swift +41 -41
- package/ios/KaleidoscopeModule/gpu/ShaderLibrary.swift +100 -54
- package/ios/KaleidoscopeModule/gpu/TextureBridge.swift +245 -244
- package/ios/KaleidoscopeModule/segmentation/MaskTuning.swift +11 -11
- package/ios/KaleidoscopeModule/segmentation/Segmenter.swift +360 -359
- package/ios/KaleidoscopeModule/shaders/GENERATIVE.txt +9 -0
- package/ios/KaleidoscopeModule/shaders/SHADERS.txt +13 -2
- package/ios/KaleidoscopeModule/shaders/anamorphic-lensflare.metalsrc +47 -0
- package/ios/KaleidoscopeModule/shaders/clouds.metalsrc +185 -0
- package/ios/KaleidoscopeModule/shaders/composite-blit.metalsrc +22 -0
- package/ios/KaleidoscopeModule/shaders/composite-blur.metalsrc +93 -0
- package/ios/KaleidoscopeModule/shaders/composite-camera.metalsrc +22 -0
- package/ios/KaleidoscopeModule/shaders/composite-image.metalsrc +24 -0
- package/ios/KaleidoscopeModule/shaders/composite-masked.metalsrc +22 -0
- package/ios/KaleidoscopeModule/shaders/composite-subject.metalsrc +23 -0
- package/ios/KaleidoscopeModule/shaders/corporate-blobs.metalsrc +221 -0
- package/ios/KaleidoscopeModule/shaders/fireflies.metalsrc +44 -0
- package/ios/KaleidoscopeModule/shaders/godrays.metalsrc +46 -0
- package/ios/KaleidoscopeModule/shaders/light-beams-and-motes.metalsrc +316 -0
- package/ios/KaleidoscopeModule/shaders/nebula.metalsrc +45 -45
- package/ios/KaleidoscopeModule/shaders/plasma.metalsrc +26 -0
- package/ios/KaleidoscopeModule/shaders/simianlights.metalsrc +45 -45
- package/package.json +485 -115
- package/plugin/build/android/assets.js +45 -0
- package/plugin/build/android/index.js +34 -0
- package/plugin/build/index.js +39 -0
- package/plugin/build/ios/assets.js +110 -0
- package/plugin/build/ios/deployment-target.js +105 -0
- package/plugin/build/ios/index.js +63 -0
- package/plugin/build/ios/pods.js +73 -0
- package/plugin/build/lib/constants.js +15 -0
- package/plugin/build/lib/file-manipulation.js +57 -0
- package/plugin/build/lib/mods.js +36 -0
- package/plugin/build/lib/preset-book.js +215 -0
- package/plugin/build/lib/types.js +16 -0
- package/src/components/form/control-form.tsx +112 -0
- package/src/components/form/make-controls.ts +33 -0
- package/src/components/form/scope.ts +9 -0
- package/src/components/form/use-field.ts +35 -0
- package/src/components/preset-book-menu/index.tsx +286 -0
- package/src/components/preset-book-menu/layout.tsx +63 -0
- package/src/components/preset-book-menu/preset-book-menu.types.ts +112 -0
- package/src/components/preset-book-menu/preset-grid.tsx +80 -0
- package/src/components/preset-book-menu/resolve-image-uri.ts +31 -0
- package/src/components/preset-book-menu/resolve-image-uri.types.ts +18 -0
- package/src/components/preset-book-menu/resolve-image-uri.web.ts +15 -0
- package/src/components/preset-control-panel/composite-layer-control-panel.tsx +56 -0
- package/src/components/preset-control-panel/control-section.tsx +84 -0
- package/src/components/preset-control-panel/control.tsx +50 -0
- package/src/components/preset-control-panel/index.ts +31 -0
- package/src/components/preset-control-panel/mask-control-panel.tsx +93 -0
- package/src/components/preset-control-panel/preset-control-panel.tsx +48 -0
- package/src/components/preset-control-panel/transform-control-panel.tsx +146 -0
- package/src/components/preset-tile/index.tsx +160 -0
- package/src/components/theme/provider.tsx +50 -0
- package/src/components/theme/slots.ts +37 -0
- package/src/components/ui/button.tsx +54 -0
- package/src/components/ui/color-picker.tsx +74 -0
- package/src/components/ui/index.ts +10 -0
- package/src/components/ui/label.tsx +24 -0
- package/src/components/ui/point.tsx +116 -0
- package/src/components/ui/polygon-field.tsx +84 -0
- package/src/components/ui/readout.tsx +25 -0
- package/src/components/ui/slider-value.ts +15 -0
- package/src/components/ui/slider.tsx +98 -0
- package/src/components/ui/switch.tsx +40 -0
- package/src/index.ts +176 -95
- package/src/index.web.ts +126 -74
- package/src/kaleidoscope/controls.ts +127 -0
- package/src/kaleidoscope/effect.ts +5 -0
- package/src/kaleidoscope/effect.types.ts +63 -0
- package/src/kaleidoscope/shader-to-spec.ts +16 -0
- package/src/kaleidoscope/types.ts +101 -0
- package/src/kaleidoscope.preset-book.types.ts +105 -0
- package/src/lib/primitives.types.ts +5 -0
- package/src/lib/test-id.ts +81 -0
- package/src/livekit.ts +6 -4
- package/src/nativewind.ts +41 -0
- package/android/src/main/assets/backgrounds/stylized-dark.webp +0 -0
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/BackgroundImageFactory.kt +0 -365
- package/android/src/main/java/com/simiancraft/kaleidoscope/effects/BlurFactory.kt +0 -400
- package/dist/backgrounds/dark-office.d.ts +0 -3
- package/dist/backgrounds/dark-office.d.ts.map +0 -1
- package/dist/backgrounds/dark-office.js +0 -5
- package/dist/backgrounds/dark-office.js.map +0 -1
- package/dist/backgrounds/dark-office.web.d.ts +0 -3
- package/dist/backgrounds/dark-office.web.d.ts.map +0 -1
- package/dist/backgrounds/dark-office.web.js +0 -8
- package/dist/backgrounds/dark-office.web.js.map +0 -1
- package/dist/backgrounds/debug-resolutions.d.ts +0 -3
- package/dist/backgrounds/debug-resolutions.d.ts.map +0 -1
- package/dist/backgrounds/debug-resolutions.js +0 -6
- package/dist/backgrounds/debug-resolutions.js.map +0 -1
- package/dist/backgrounds/debug-resolutions.web.d.ts +0 -3
- package/dist/backgrounds/debug-resolutions.web.d.ts.map +0 -1
- package/dist/backgrounds/debug-resolutions.web.js +0 -8
- package/dist/backgrounds/debug-resolutions.web.js.map +0 -1
- package/dist/backgrounds/home-dark.d.ts +0 -3
- package/dist/backgrounds/home-dark.d.ts.map +0 -1
- package/dist/backgrounds/home-dark.js +0 -5
- package/dist/backgrounds/home-dark.js.map +0 -1
- package/dist/backgrounds/home-dark.web.d.ts +0 -3
- package/dist/backgrounds/home-dark.web.d.ts.map +0 -1
- package/dist/backgrounds/home-dark.web.js +0 -6
- package/dist/backgrounds/home-dark.web.js.map +0 -1
- package/dist/backgrounds/home-light.d.ts +0 -3
- package/dist/backgrounds/home-light.d.ts.map +0 -1
- package/dist/backgrounds/home-light.js +0 -5
- package/dist/backgrounds/home-light.js.map +0 -1
- package/dist/backgrounds/home-light.web.d.ts +0 -3
- package/dist/backgrounds/home-light.web.d.ts.map +0 -1
- package/dist/backgrounds/home-light.web.js +0 -6
- package/dist/backgrounds/home-light.web.js.map +0 -1
- package/dist/backgrounds/index.d.ts +0 -3
- package/dist/backgrounds/index.d.ts.map +0 -1
- package/dist/backgrounds/index.js +0 -6
- package/dist/backgrounds/index.js.map +0 -1
- package/dist/backgrounds/light-office.d.ts +0 -3
- package/dist/backgrounds/light-office.d.ts.map +0 -1
- package/dist/backgrounds/light-office.js +0 -5
- package/dist/backgrounds/light-office.js.map +0 -1
- package/dist/backgrounds/light-office.web.d.ts +0 -3
- package/dist/backgrounds/light-office.web.d.ts.map +0 -1
- package/dist/backgrounds/light-office.web.js +0 -8
- package/dist/backgrounds/light-office.web.js.map +0 -1
- package/dist/backgrounds/nature-dark.d.ts +0 -3
- package/dist/backgrounds/nature-dark.d.ts.map +0 -1
- package/dist/backgrounds/nature-dark.js +0 -5
- package/dist/backgrounds/nature-dark.js.map +0 -1
- package/dist/backgrounds/nature-dark.web.d.ts +0 -3
- package/dist/backgrounds/nature-dark.web.d.ts.map +0 -1
- package/dist/backgrounds/nature-dark.web.js +0 -6
- package/dist/backgrounds/nature-dark.web.js.map +0 -1
- package/dist/backgrounds/nature-light.d.ts +0 -3
- package/dist/backgrounds/nature-light.d.ts.map +0 -1
- package/dist/backgrounds/nature-light.js +0 -5
- package/dist/backgrounds/nature-light.js.map +0 -1
- package/dist/backgrounds/nature-light.web.d.ts +0 -3
- package/dist/backgrounds/nature-light.web.d.ts.map +0 -1
- package/dist/backgrounds/nature-light.web.js +0 -6
- package/dist/backgrounds/nature-light.web.js.map +0 -1
- package/dist/backgrounds/preset-source.types.d.ts +0 -2
- package/dist/backgrounds/preset-source.types.d.ts.map +0 -1
- package/dist/backgrounds/preset-source.types.js +0 -2
- package/dist/backgrounds/preset-source.types.js.map +0 -1
- package/dist/backgrounds/presets.d.ts +0 -3
- package/dist/backgrounds/presets.d.ts.map +0 -1
- package/dist/backgrounds/presets.js +0 -34
- package/dist/backgrounds/presets.js.map +0 -1
- package/dist/backgrounds/simiancraft-dark.d.ts +0 -3
- package/dist/backgrounds/simiancraft-dark.d.ts.map +0 -1
- package/dist/backgrounds/simiancraft-dark.js +0 -5
- package/dist/backgrounds/simiancraft-dark.js.map +0 -1
- package/dist/backgrounds/simiancraft-dark.web.d.ts +0 -3
- package/dist/backgrounds/simiancraft-dark.web.d.ts.map +0 -1
- package/dist/backgrounds/simiancraft-dark.web.js +0 -6
- package/dist/backgrounds/simiancraft-dark.web.js.map +0 -1
- package/dist/backgrounds/simiancraft-light.d.ts +0 -3
- package/dist/backgrounds/simiancraft-light.d.ts.map +0 -1
- package/dist/backgrounds/simiancraft-light.js +0 -5
- package/dist/backgrounds/simiancraft-light.js.map +0 -1
- package/dist/backgrounds/simiancraft-light.web.d.ts +0 -3
- package/dist/backgrounds/simiancraft-light.web.d.ts.map +0 -1
- package/dist/backgrounds/simiancraft-light.web.js +0 -6
- package/dist/backgrounds/simiancraft-light.web.js.map +0 -1
- package/dist/backgrounds/stylized-dark.d.ts +0 -3
- package/dist/backgrounds/stylized-dark.d.ts.map +0 -1
- package/dist/backgrounds/stylized-dark.js +0 -5
- package/dist/backgrounds/stylized-dark.js.map +0 -1
- package/dist/backgrounds/stylized-dark.web.d.ts +0 -3
- package/dist/backgrounds/stylized-dark.web.d.ts.map +0 -1
- package/dist/backgrounds/stylized-dark.web.js +0 -6
- package/dist/backgrounds/stylized-dark.web.js.map +0 -1
- package/dist/backgrounds/stylized-dark.webp +0 -0
- package/dist/backgrounds/stylized-light.d.ts +0 -3
- package/dist/backgrounds/stylized-light.d.ts.map +0 -1
- package/dist/backgrounds/stylized-light.js +0 -5
- package/dist/backgrounds/stylized-light.js.map +0 -1
- package/dist/backgrounds/stylized-light.web.d.ts +0 -3
- package/dist/backgrounds/stylized-light.web.d.ts.map +0 -1
- package/dist/backgrounds/stylized-light.web.js +0 -6
- package/dist/backgrounds/stylized-light.web.js.map +0 -1
- package/dist/index.d.ts +0 -42
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -155
- package/dist/index.js.map +0 -1
- package/dist/index.web.d.ts +0 -49
- package/dist/index.web.d.ts.map +0 -1
- package/dist/index.web.js +0 -113
- package/dist/index.web.js.map +0 -1
- package/dist/livekit.d.ts +0 -24
- package/dist/livekit.d.ts.map +0 -1
- package/dist/livekit.js +0 -57
- package/dist/livekit.js.map +0 -1
- package/dist/types.d.ts +0 -74
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -10
- package/dist/types.js.map +0 -1
- package/dist/web/blur-kernel.d.ts +0 -6
- package/dist/web/blur-kernel.d.ts.map +0 -1
- package/dist/web/blur-kernel.js +0 -41
- package/dist/web/blur-kernel.js.map +0 -1
- package/dist/web/effects/background-image.d.ts +0 -3
- package/dist/web/effects/background-image.d.ts.map +0 -1
- package/dist/web/effects/background-image.js +0 -284
- package/dist/web/effects/background-image.js.map +0 -1
- package/dist/web/effects/blur.d.ts +0 -3
- package/dist/web/effects/blur.d.ts.map +0 -1
- package/dist/web/effects/blur.js +0 -339
- package/dist/web/effects/blur.js.map +0 -1
- package/dist/web/effects/transform.d.ts +0 -4
- package/dist/web/effects/transform.d.ts.map +0 -1
- package/dist/web/effects/transform.js +0 -62
- package/dist/web/effects/transform.js.map +0 -1
- package/dist/web/insertable-streams.d.ts.map +0 -1
- package/dist/web/insertable-streams.js +0 -64
- package/dist/web/insertable-streams.js.map +0 -1
- package/dist/web/segmenter.d.ts.map +0 -1
- package/dist/web/segmenter.js +0 -83
- package/dist/web/segmenter.js.map +0 -1
- package/dist/web/shaders.d.ts +0 -2
- package/dist/web/shaders.d.ts.map +0 -1
- package/dist/web/shaders.generated.d.ts +0 -4
- package/dist/web/shaders.generated.d.ts.map +0 -1
- package/dist/web/shaders.generated.js +0 -54
- package/dist/web/shaders.generated.js.map +0 -1
- package/dist/web/shaders.js +0 -32
- package/dist/web/shaders.js.map +0 -1
- package/dist/web/tuning.d.ts.map +0 -1
- package/dist/web/tuning.js +0 -55
- package/dist/web/tuning.js.map +0 -1
- package/ios/KaleidoscopeModule/effects/BackgroundImageProcessor.swift +0 -293
- package/ios/KaleidoscopeModule/effects/BlurProcessor.swift +0 -238
- package/ios/KaleidoscopeModule/resources/backgrounds/dark-office.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/debug-resolutions.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/home-dark.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/home-light.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/light-office.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/nature-dark.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/nature-light.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/simiancraft-dark.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/simiancraft-light.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/stylized-dark.webp +0 -0
- package/ios/KaleidoscopeModule/resources/backgrounds/stylized-light.webp +0 -0
- package/ios/KaleidoscopeModule/shaders/blur.metalsrc +0 -72
- package/ios/KaleidoscopeModule/shaders/composite.metalsrc +0 -22
- package/src/backgrounds/README.md +0 -83
- package/src/backgrounds/dark-office.ts +0 -6
- package/src/backgrounds/dark-office.web.ts +0 -9
- package/src/backgrounds/dark-office.webp +0 -0
- package/src/backgrounds/debug-resolutions.ts +0 -7
- package/src/backgrounds/debug-resolutions.web.ts +0 -9
- package/src/backgrounds/debug-resolutions.webp +0 -0
- package/src/backgrounds/home-dark.ts +0 -6
- package/src/backgrounds/home-dark.web.ts +0 -7
- package/src/backgrounds/home-dark.webp +0 -0
- package/src/backgrounds/home-light.ts +0 -6
- package/src/backgrounds/home-light.web.ts +0 -7
- package/src/backgrounds/home-light.webp +0 -0
- package/src/backgrounds/index.ts +0 -7
- package/src/backgrounds/light-office.ts +0 -6
- package/src/backgrounds/light-office.web.ts +0 -9
- package/src/backgrounds/light-office.webp +0 -0
- package/src/backgrounds/nature-dark.ts +0 -6
- package/src/backgrounds/nature-dark.web.ts +0 -7
- package/src/backgrounds/nature-dark.webp +0 -0
- package/src/backgrounds/nature-light.ts +0 -6
- package/src/backgrounds/nature-light.web.ts +0 -7
- package/src/backgrounds/nature-light.webp +0 -0
- package/src/backgrounds/preset-source.types.ts +0 -5
- package/src/backgrounds/presets.ts +0 -36
- package/src/backgrounds/simiancraft-dark.ts +0 -6
- package/src/backgrounds/simiancraft-dark.web.ts +0 -7
- package/src/backgrounds/simiancraft-dark.webp +0 -0
- package/src/backgrounds/simiancraft-light.ts +0 -6
- package/src/backgrounds/simiancraft-light.web.ts +0 -7
- package/src/backgrounds/simiancraft-light.webp +0 -0
- package/src/backgrounds/stylized-dark.ts +0 -6
- package/src/backgrounds/stylized-dark.web.ts +0 -7
- package/src/backgrounds/stylized-dark.webp +0 -0
- package/src/backgrounds/stylized-light.ts +0 -6
- package/src/backgrounds/stylized-light.web.ts +0 -7
- package/src/backgrounds/stylized-light.webp +0 -0
- package/src/types.ts +0 -89
- package/src/web/blur-kernel.ts +0 -44
- package/src/web/effects/background-image.ts +0 -364
- package/src/web/effects/blur.ts +0 -430
- package/src/web/effects/transform.ts +0 -69
- package/src/web/insertable-streams.ts +0 -112
- package/src/web/segmenter.ts +0 -107
- package/src/web/shaders.generated.ts +0 -56
- package/src/web/shaders.ts +0 -31
- package/src/web/tuning.ts +0 -67
- /package/{src/backgrounds → catalog/images}/assets.d.ts +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/debug}/debug-resolutions.webp +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/home}/home-dark.webp +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/home}/home-light.webp +0 -0
- /package/{android/src/main/assets/backgrounds/nature-dark.webp → catalog/images/nature/landscape-dark.webp} +0 -0
- /package/{android/src/main/assets/backgrounds/nature-light.webp → catalog/images/nature/landscape-light.webp} +0 -0
- /package/{android/src/main/assets/backgrounds/dark-office.webp → catalog/images/office/office-dark.webp} +0 -0
- /package/{android/src/main/assets/backgrounds/light-office.webp → catalog/images/office/office-light.webp} +0 -0
- /package/{android/src/main/assets/backgrounds/stylized-light.webp → catalog/images/sci-fi/sci-fi-light.webp} +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/simiancraft}/simiancraft-dark.webp +0 -0
- /package/{android/src/main/assets/backgrounds → catalog/images/simiancraft}/simiancraft-light.webp +0 -0
- /package/dist/{backgrounds → catalog/images/debug}/debug-resolutions.webp +0 -0
- /package/dist/{backgrounds → catalog/images/home}/home-dark.webp +0 -0
- /package/dist/{backgrounds → catalog/images/home}/home-light.webp +0 -0
- /package/dist/{backgrounds/nature-dark.webp → catalog/images/nature/landscape-dark.webp} +0 -0
- /package/dist/{backgrounds/nature-light.webp → catalog/images/nature/landscape-light.webp} +0 -0
- /package/dist/{backgrounds/dark-office.webp → catalog/images/office/office-dark.webp} +0 -0
- /package/dist/{backgrounds/light-office.webp → catalog/images/office/office-light.webp} +0 -0
- /package/dist/{backgrounds/stylized-light.webp → catalog/images/sci-fi/sci-fi-light.webp} +0 -0
- /package/dist/{backgrounds → catalog/images/simiancraft}/simiancraft-dark.webp +0 -0
- /package/dist/{backgrounds → catalog/images/simiancraft}/simiancraft-light.webp +0 -0
- /package/dist/{web → web-driver}/insertable-streams.d.ts +0 -0
- /package/dist/{web → web-driver}/segmenter.d.ts +0 -0
- /package/dist/{web → web-driver}/tuning.d.ts +0 -0
|
@@ -18,13 +18,59 @@ void main() {
|
|
|
18
18
|
}
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
|
-
const val
|
|
22
|
-
precision
|
|
23
|
-
uniform sampler2D
|
|
24
|
-
|
|
21
|
+
const val COMPOSITE_CAMERA_FRAG = """#version 300 es
|
|
22
|
+
precision highp float;
|
|
23
|
+
uniform sampler2D uCamera;
|
|
24
|
+
in highp vec2 vUv;
|
|
25
|
+
out vec4 oColor;
|
|
26
|
+
void main() {
|
|
27
|
+
oColor = vec4(texture(uCamera, vUv).rgb, 1.0);
|
|
28
|
+
}
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
const val COMPOSITE_BLUR_FRAG = """#version 300 es
|
|
32
|
+
precision highp float;
|
|
33
|
+
uniform sampler2D uTex;
|
|
34
|
+
uniform vec2 uDir;
|
|
35
|
+
uniform float uSigma;
|
|
36
|
+
in highp vec2 vUv;
|
|
37
|
+
out vec4 oColor;
|
|
38
|
+
void main() {
|
|
39
|
+
float s2 = 2.0 * uSigma * uSigma;
|
|
40
|
+
float w[7];
|
|
41
|
+
float sum = 0.0;
|
|
42
|
+
for (int i = 0; i < 7; i++) {
|
|
43
|
+
w[i] = exp(-(float(i) * float(i)) / s2);
|
|
44
|
+
sum += (i == 0) ? w[i] : 2.0 * w[i];
|
|
45
|
+
}
|
|
46
|
+
float spread = uSigma * 0.25;
|
|
47
|
+
vec4 acc = texture(uTex, vUv) * (w[0] / sum);
|
|
48
|
+
for (int i = 1; i < 7; i++) {
|
|
49
|
+
vec2 off = uDir * float(i) * spread;
|
|
50
|
+
acc += texture(uTex, vUv + off) * (w[i] / sum);
|
|
51
|
+
acc += texture(uTex, vUv - off) * (w[i] / sum);
|
|
52
|
+
}
|
|
53
|
+
oColor = acc;
|
|
54
|
+
}
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
const val COMPOSITE_IMAGE_FRAG = """#version 300 es
|
|
58
|
+
precision highp float;
|
|
59
|
+
uniform sampler2D uTex;
|
|
60
|
+
uniform vec2 uCoverScale;
|
|
61
|
+
in highp vec2 vUv;
|
|
62
|
+
out vec4 oColor;
|
|
63
|
+
void main() {
|
|
64
|
+
vec2 uv = (vUv - 0.5) * uCoverScale + 0.5;
|
|
65
|
+
vec4 c = texture(uTex, uv);
|
|
66
|
+
oColor = vec4(c.rgb * c.a, c.a);
|
|
67
|
+
}
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
const val COMPOSITE_SUBJECT_FRAG = """#version 300 es
|
|
71
|
+
precision highp float;
|
|
72
|
+
uniform sampler2D uCamera;
|
|
25
73
|
uniform sampler2D uMask;
|
|
26
|
-
uniform vec2 uBgUvScale;
|
|
27
|
-
uniform vec2 uBgUvOffset;
|
|
28
74
|
uniform vec2 uMaskUvScale;
|
|
29
75
|
uniform vec2 uMaskUvOffset;
|
|
30
76
|
uniform float uMaskLo;
|
|
@@ -32,33 +78,30 @@ uniform float uMaskHi;
|
|
|
32
78
|
in highp vec2 vUv;
|
|
33
79
|
out vec4 oColor;
|
|
34
80
|
void main() {
|
|
35
|
-
|
|
36
|
-
float raw = texture(uMask,
|
|
81
|
+
vec3 cam = texture(uCamera, vUv).rgb;
|
|
82
|
+
float raw = texture(uMask, vUv * uMaskUvScale + uMaskUvOffset).r;
|
|
37
83
|
float safeHi = max(uMaskHi, uMaskLo + 0.001);
|
|
38
|
-
float
|
|
39
|
-
|
|
40
|
-
vec2 bgUv = clamp(vUv * uBgUvScale + uBgUvOffset, 0.0, 1.0);
|
|
41
|
-
vec3 bg = texture(uBackground, bgUv).rgb;
|
|
42
|
-
oColor = vec4(mix(bg, orig, m), 1.0);
|
|
84
|
+
float a = clamp(smoothstep(uMaskLo, safeHi, raw), 0.0, 1.0);
|
|
85
|
+
oColor = vec4(cam * a, a);
|
|
43
86
|
}
|
|
44
87
|
"""
|
|
45
88
|
|
|
46
|
-
const val
|
|
47
|
-
precision
|
|
89
|
+
const val COMPOSITE_MASKED_FRAG = """#version 300 es
|
|
90
|
+
precision highp float;
|
|
48
91
|
uniform sampler2D uTex;
|
|
49
|
-
uniform
|
|
50
|
-
uniform
|
|
51
|
-
uniform
|
|
92
|
+
uniform sampler2D uMask;
|
|
93
|
+
uniform vec2 uMaskUvScale;
|
|
94
|
+
uniform vec2 uMaskUvOffset;
|
|
95
|
+
uniform float uMaskLo;
|
|
96
|
+
uniform float uMaskHi;
|
|
52
97
|
in highp vec2 vUv;
|
|
53
98
|
out vec4 oColor;
|
|
54
99
|
void main() {
|
|
55
|
-
vec4
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
oColor = color;
|
|
100
|
+
vec4 c = texture(uTex, vUv);
|
|
101
|
+
float raw = texture(uMask, vUv * uMaskUvScale + uMaskUvOffset).r;
|
|
102
|
+
float safeHi = max(uMaskHi, uMaskLo + 0.001);
|
|
103
|
+
float a = clamp(smoothstep(uMaskLo, safeHi, raw), 0.0, 1.0);
|
|
104
|
+
oColor = c * a;
|
|
62
105
|
}
|
|
63
106
|
"""
|
|
64
107
|
|
|
@@ -73,4 +116,1098 @@ void main() {
|
|
|
73
116
|
oColor = texture(uTex, uv);
|
|
74
117
|
}
|
|
75
118
|
"""
|
|
119
|
+
|
|
120
|
+
const val PLASMA_FRAG = """#version 300 es
|
|
121
|
+
precision highp float;
|
|
122
|
+
|
|
123
|
+
uniform float uTime; // seconds, monotonically increasing; range [0, inf)
|
|
124
|
+
uniform vec2 uResolution; // framebuffer size in pixels; both components > 0
|
|
125
|
+
uniform vec3 uColorA; // first palette color, linear-ish RGB in [0, 1]
|
|
126
|
+
uniform vec3 uColorB; // second palette color, linear-ish RGB in [0, 1]
|
|
127
|
+
uniform float uSpeed; // animation rate multiplier; 0 freezes the field
|
|
128
|
+
uniform float uScale; // spatial frequency; higher = more, tighter cells
|
|
129
|
+
|
|
130
|
+
in highp vec2 vUv;
|
|
131
|
+
out vec4 oColor;
|
|
132
|
+
|
|
133
|
+
void main() {
|
|
134
|
+
// Aspect-correct, screen-centered coordinates (matches nebula.frag): divide
|
|
135
|
+
// by the height so uScale reads the same regardless of aspect ratio.
|
|
136
|
+
vec2 fragCoord = vUv * uResolution;
|
|
137
|
+
vec2 uv = (fragCoord - 0.5 * uResolution) / uResolution.y;
|
|
138
|
+
|
|
139
|
+
float t = uTime * uSpeed;
|
|
140
|
+
|
|
141
|
+
// Classic demoscene plasma: a few sines of position and time. The radial
|
|
142
|
+
// term (length(uv)) gives the field an organic, non-grid-aligned drift.
|
|
143
|
+
float v = sin(uv.x * uScale + t);
|
|
144
|
+
v += sin(uv.y * uScale + t * 0.8);
|
|
145
|
+
v += sin((uv.x + uv.y) * uScale * 0.7 + t * 1.3);
|
|
146
|
+
v += sin(length(uv) * uScale * 1.2 - t);
|
|
147
|
+
|
|
148
|
+
// v ranges roughly [-4, 4]; fold through sin to a smooth [0, 1] mix factor.
|
|
149
|
+
float mixT = 0.5 + 0.5 * sin(v);
|
|
150
|
+
|
|
151
|
+
// Opaque procedural background; the person is composited over it downstream.
|
|
152
|
+
oColor = vec4(mix(uColorA, uColorB, mixT), 1.0);
|
|
153
|
+
}
|
|
154
|
+
"""
|
|
155
|
+
|
|
156
|
+
const val CLOUDS_FRAG = """#version 300 es
|
|
157
|
+
precision highp float;
|
|
158
|
+
|
|
159
|
+
uniform float uTime;
|
|
160
|
+
uniform vec2 uResolution;
|
|
161
|
+
uniform vec3 uSkyLowColor;
|
|
162
|
+
uniform vec3 uSkyHighColor;
|
|
163
|
+
uniform vec3 uCloudLightColor;
|
|
164
|
+
uniform vec3 uCloudDarkColor;
|
|
165
|
+
uniform float uExposure;
|
|
166
|
+
uniform float uStepSize;
|
|
167
|
+
uniform float uCloudSpeed;
|
|
168
|
+
uniform float uCloudScale;
|
|
169
|
+
uniform float uDensity;
|
|
170
|
+
uniform float uCoverage;
|
|
171
|
+
uniform float uSoftness;
|
|
172
|
+
|
|
173
|
+
in highp vec2 vUv;
|
|
174
|
+
out vec4 oColor;
|
|
175
|
+
|
|
176
|
+
// STEPS must stay a compile-time constant (GLSL ES loop bound).
|
|
177
|
+
#define STEPS 48
|
|
178
|
+
|
|
179
|
+
float hash(vec3 p) {
|
|
180
|
+
p = fract(p * 0.3183099 + 0.1);
|
|
181
|
+
p *= 17.0;
|
|
182
|
+
return fract(p.x * p.y * p.z * (p.x + p.y + p.z));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
float rand(vec2 p) {
|
|
186
|
+
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
float noise(vec3 p) {
|
|
190
|
+
vec3 i = floor(p);
|
|
191
|
+
vec3 f = fract(p);
|
|
192
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
193
|
+
return mix(
|
|
194
|
+
mix(
|
|
195
|
+
mix(hash(i + vec3(0,0,0)), hash(i + vec3(1,0,0)), f.x),
|
|
196
|
+
mix(hash(i + vec3(0,1,0)), hash(i + vec3(1,1,0)), f.x),
|
|
197
|
+
f.y),
|
|
198
|
+
mix(
|
|
199
|
+
mix(hash(i + vec3(0,0,1)), hash(i + vec3(1,0,1)), f.x),
|
|
200
|
+
mix(hash(i + vec3(0,1,1)), hash(i + vec3(1,1,1)), f.x),
|
|
201
|
+
f.y),
|
|
202
|
+
f.z);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
float fbm(vec3 p) {
|
|
206
|
+
float v = 0.0;
|
|
207
|
+
float a = 0.5;
|
|
208
|
+
for (int i = 0; i < 5; i++) {
|
|
209
|
+
v += a * noise(p);
|
|
210
|
+
p *= 2.03;
|
|
211
|
+
a *= 0.5;
|
|
212
|
+
}
|
|
213
|
+
return v;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
float cloudDensity(vec3 p) {
|
|
217
|
+
p += vec3(uTime * uCloudSpeed, 0.0, uTime * uCloudSpeed * 0.35);
|
|
218
|
+
// Outside the slab the height mask is 0, so the sample is 0; bail before fbm.
|
|
219
|
+
if (p.y <= 0.0 || p.y >= 3.0) return 0.0;
|
|
220
|
+
float n = fbm(p * uCloudScale);
|
|
221
|
+
float bottom = smoothstep(0.0, 0.7, p.y);
|
|
222
|
+
float top = smoothstep(3.0, 1.2, p.y);
|
|
223
|
+
float heightMask = bottom * top;
|
|
224
|
+
float cloud = smoothstep(uCoverage, uCoverage + uSoftness, n);
|
|
225
|
+
return cloud * heightMask;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
void main() {
|
|
229
|
+
vec2 fragCoord = vUv * uResolution;
|
|
230
|
+
vec2 uv = (fragCoord - 0.5 * uResolution) / uResolution.y;
|
|
231
|
+
vec3 ro = vec3(0.0, 1.2, -4.0);
|
|
232
|
+
vec3 rd = normalize(vec3(uv, 1.5));
|
|
233
|
+
float skyGradient = clamp(rd.y * 0.5 + 0.5, 0.0, 1.0);
|
|
234
|
+
vec3 skyColor = mix(uSkyLowColor, uSkyHighColor, skyGradient);
|
|
235
|
+
vec3 accum = vec3(0.0);
|
|
236
|
+
float alpha = 0.0;
|
|
237
|
+
float t = rand(fragCoord) * uStepSize;
|
|
238
|
+
for (int i = 0; i < STEPS; i++) {
|
|
239
|
+
vec3 p = ro + rd * t;
|
|
240
|
+
// The slab is crossed monotonically in t; once past it, all samples are 0.
|
|
241
|
+
if (rd.y > 0.0 && p.y >= 3.0) break;
|
|
242
|
+
if (rd.y < 0.0 && p.y <= 0.0) break;
|
|
243
|
+
float d = cloudDensity(p);
|
|
244
|
+
if (d > 0.01) {
|
|
245
|
+
float light = smoothstep(0.4, 2.8, p.y);
|
|
246
|
+
vec3 sampleColor = mix(uCloudDarkColor, uCloudLightColor, light);
|
|
247
|
+
float a = d * uDensity;
|
|
248
|
+
accum += (1.0 - alpha) * sampleColor * a;
|
|
249
|
+
alpha += (1.0 - alpha) * a;
|
|
250
|
+
}
|
|
251
|
+
t += uStepSize;
|
|
252
|
+
if (alpha > 0.95) break;
|
|
253
|
+
}
|
|
254
|
+
vec3 color = mix(skyColor, accum, alpha);
|
|
255
|
+
color *= uExposure;
|
|
256
|
+
color = pow(color, vec3(0.9));
|
|
257
|
+
oColor = vec4(color, 1.0);
|
|
258
|
+
}
|
|
259
|
+
"""
|
|
260
|
+
|
|
261
|
+
const val NEBULA_FRAG = """#version 300 es
|
|
262
|
+
precision highp float;
|
|
263
|
+
|
|
264
|
+
uniform float uTime; // seconds, monotonically increasing; range [0, inf)
|
|
265
|
+
uniform vec2 uResolution; // framebuffer size in pixels; both components > 0
|
|
266
|
+
uniform vec3 uColor; // overall tint / color grade; [1,1,1] = untinted
|
|
267
|
+
uniform float uBrightness; // final glow multiplier; 1.0 = stock
|
|
268
|
+
uniform float uSpeed; // drift + rotation rate; 1.0 = stock, 0 freezes
|
|
269
|
+
uniform float uTwinkleSpeed; // star color-cycle rate; 1.0 = stock
|
|
270
|
+
uniform float uScale; // starfield zoom / density; >1 = more, smaller stars
|
|
271
|
+
uniform float uStarGlow; // star-core size; 1.0 = stock
|
|
272
|
+
|
|
273
|
+
in highp vec2 vUv;
|
|
274
|
+
out vec4 oColor;
|
|
275
|
+
|
|
276
|
+
const float PI = 3.14159265;
|
|
277
|
+
const float MIN_DIVIDE = 64.0;
|
|
278
|
+
const float MAX_DIVIDE = 0.01;
|
|
279
|
+
// Number of stacked starfield layers. Compile-time constant so the layer
|
|
280
|
+
// loop has a fixed integer bound (cross-compile-safe; no float loop counter).
|
|
281
|
+
const int STARFIELD_LAYERS_COUNT = 12;
|
|
282
|
+
|
|
283
|
+
mat2 Rotate(float angle) {
|
|
284
|
+
float s = sin(angle);
|
|
285
|
+
float c = cos(angle);
|
|
286
|
+
return mat2(c, -s, s, c);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
float Star(vec2 uv, float flaresize, float rotAngle, float randomN) {
|
|
290
|
+
float d = length(uv);
|
|
291
|
+
// Star core. Guard the division: length(uv) can be exactly 0 at a cell
|
|
292
|
+
// center, which yields inf/NaN under Metal. max(d, 1e-4) caps the core
|
|
293
|
+
// brightness without visibly changing the look (the concentric
|
|
294
|
+
// smoothstep fade below already clamps it).
|
|
295
|
+
float starcore = 0.05 * uStarGlow / max(d, 1e-4);
|
|
296
|
+
uv *= Rotate(-2.0 * PI * rotAngle);
|
|
297
|
+
float flareMax = 1.0;
|
|
298
|
+
|
|
299
|
+
// flares
|
|
300
|
+
float starflares = max(0.0, flareMax - abs(uv.x * uv.y * 3000.0));
|
|
301
|
+
starcore += starflares * flaresize;
|
|
302
|
+
uv *= Rotate(PI * 0.25);
|
|
303
|
+
starflares = max(0.0, flareMax - abs(uv.x * uv.y * 3000.0));
|
|
304
|
+
starcore += starflares * 0.3 * flaresize;
|
|
305
|
+
// light can't go forever, fade it concentrically.
|
|
306
|
+
starcore *= smoothstep(1.0, 0.05, d);
|
|
307
|
+
return starcore;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
float PseudoRandomizer(vec2 p) {
|
|
311
|
+
// not really random, but it looks random.
|
|
312
|
+
p = fract(p * vec2(123.45, 345.67));
|
|
313
|
+
p += dot(p, p + 45.32);
|
|
314
|
+
return fract(p.x * p.y);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
vec3 StarFieldLayer(vec2 uv, float rotAngle) {
|
|
318
|
+
vec3 col = vec3(0.0);
|
|
319
|
+
|
|
320
|
+
vec2 gv = fract(uv) - 0.5;
|
|
321
|
+
vec2 id = floor(uv);
|
|
322
|
+
|
|
323
|
+
float deltaTimeTwinkle = uTime * 0.35 * uTwinkleSpeed;
|
|
324
|
+
|
|
325
|
+
// sweep the 8 neighbors plus the home cell so stars are not clipped at
|
|
326
|
+
// cell borders. Constant 3x3 bounds.
|
|
327
|
+
for (int y = -1; y <= 1; y++) {
|
|
328
|
+
for (int x = -1; x <= 1; x++) {
|
|
329
|
+
vec2 offset = vec2(float(x), float(y));
|
|
330
|
+
|
|
331
|
+
float randomN = PseudoRandomizer(id + offset); // 0..1
|
|
332
|
+
float randoX = randomN - 0.5;
|
|
333
|
+
float randoY = fract(randomN * 45.0) - 0.5;
|
|
334
|
+
vec2 randomPosition = gv - offset - vec2(randoX, randoY);
|
|
335
|
+
// fract trick: random sizes
|
|
336
|
+
float size = fract(randomN * 1356.33);
|
|
337
|
+
float flareSwitch = smoothstep(0.9, 1.0, size);
|
|
338
|
+
float star = Star(randomPosition, flareSwitch, rotAngle, randomN);
|
|
339
|
+
|
|
340
|
+
// fract trick: random colors
|
|
341
|
+
float randomStarColorSeed = fract(randomN * 2150.0) * (3.0 * PI) * deltaTimeTwinkle;
|
|
342
|
+
vec3 color = sin(vec3(0.7, 0.3, 0.9) * randomStarColorSeed);
|
|
343
|
+
|
|
344
|
+
// compress
|
|
345
|
+
color = color * (0.4 * sin(deltaTimeTwinkle)) + 0.6;
|
|
346
|
+
// filter
|
|
347
|
+
color = color * vec3(1.0, 0.1, 0.9 + size);
|
|
348
|
+
float dimByDensity = 15.0 / float(STARFIELD_LAYERS_COUNT);
|
|
349
|
+
col += star * size * color * dimByDensity;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
return col;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
void main() {
|
|
357
|
+
// ShaderToy fragCoord, reconstructed from vUv (see header).
|
|
358
|
+
vec2 fragCoord = vUv * uResolution;
|
|
359
|
+
|
|
360
|
+
// Normalized pixel coordinates centered at screen middle.
|
|
361
|
+
vec2 uv = (fragCoord - 0.5 * uResolution.xy) / uResolution.y;
|
|
362
|
+
|
|
363
|
+
float deltaTime = uTime * 0.01 * uSpeed;
|
|
364
|
+
|
|
365
|
+
vec3 col = vec3(0.0);
|
|
366
|
+
|
|
367
|
+
float rotAngle = deltaTime * 0.09;
|
|
368
|
+
|
|
369
|
+
// Layer accumulation. Integer-counted loop replacing the original
|
|
370
|
+
// `for (float i = 0.0; i < 1.0; i += 1.0/COUNT)`. With n in [0, COUNT),
|
|
371
|
+
// i = n/COUNT reproduces the exact same {0, 1/N, 2/N, ...} sequence and
|
|
372
|
+
// the same iteration count, so visual output is unchanged; only the loop
|
|
373
|
+
// form is cross-compile-safe.
|
|
374
|
+
for (int n = 0; n < STARFIELD_LAYERS_COUNT; n++) {
|
|
375
|
+
float i = float(n) / float(STARFIELD_LAYERS_COUNT);
|
|
376
|
+
float layerDepth = fract(i + deltaTime);
|
|
377
|
+
float layerScale = mix(MIN_DIVIDE, MAX_DIVIDE, layerDepth);
|
|
378
|
+
float layerFader = layerDepth * smoothstep(0.1, 1.1, layerDepth);
|
|
379
|
+
float layerOffset = i * (3430.0 + fract(i));
|
|
380
|
+
mat2 layerRot = Rotate(rotAngle * i * -10.0);
|
|
381
|
+
uv *= layerRot;
|
|
382
|
+
vec2 starfieldUv = uv * layerScale * uScale + layerOffset;
|
|
383
|
+
col += StarFieldLayer(starfieldUv, rotAngle) * layerFader;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// Glow + color grade, then opaque procedural background.
|
|
387
|
+
col *= uBrightness * uColor;
|
|
388
|
+
oColor = vec4(col, 1.0);
|
|
389
|
+
}
|
|
390
|
+
"""
|
|
391
|
+
|
|
392
|
+
const val GODRAYS_FRAG = """#version 300 es
|
|
393
|
+
precision highp float;
|
|
394
|
+
|
|
395
|
+
uniform float uTime; // seconds, monotonically increasing
|
|
396
|
+
uniform vec2 uResolution; // framebuffer size in pixels
|
|
397
|
+
uniform vec3 uLightColor; // ray tint (linear-ish RGB, 0..1)
|
|
398
|
+
uniform float uRayCount; // number of ray bands
|
|
399
|
+
uniform float uRaySpeed; // drift speed
|
|
400
|
+
uniform float uRayIntensity; // overall brightness / additive strength
|
|
401
|
+
uniform float uRaySoftness; // edge falloff exponent (higher = crisper shafts)
|
|
402
|
+
uniform float uTopGlow; // extra glow concentrated near the top
|
|
403
|
+
uniform float uFadeDistance; // vertical falloff from the top
|
|
404
|
+
uniform float uWobbleAmount; // horizontal wobble magnitude
|
|
405
|
+
uniform float uWobbleSpeed; // wobble animation speed
|
|
406
|
+
|
|
407
|
+
in highp vec2 vUv;
|
|
408
|
+
out vec4 oColor;
|
|
409
|
+
|
|
410
|
+
float hash(float n) {
|
|
411
|
+
return fract(sin(n) * 43758.5453123);
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
float noise(vec2 p) {
|
|
415
|
+
vec2 i = floor(p);
|
|
416
|
+
vec2 f = fract(p);
|
|
417
|
+
|
|
418
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
419
|
+
|
|
420
|
+
float a = hash(i.x + i.y * 57.0);
|
|
421
|
+
float b = hash(i.x + 1.0 + i.y * 57.0);
|
|
422
|
+
float c = hash(i.x + (i.y + 1.0) * 57.0);
|
|
423
|
+
float d = hash(i.x + 1.0 + (i.y + 1.0) * 57.0);
|
|
424
|
+
|
|
425
|
+
return mix(mix(a, b, f.x), mix(c, d, f.x), f.y);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
void main() {
|
|
429
|
+
// vUv is already 0..1 with bottom-left origin; this is the Shadertoy `uv`.
|
|
430
|
+
vec2 uv = vUv;
|
|
431
|
+
|
|
432
|
+
float aspect = uResolution.x / uResolution.y;
|
|
433
|
+
vec2 p = uv;
|
|
434
|
+
p.x = (p.x - 0.5) * aspect + 0.5;
|
|
435
|
+
|
|
436
|
+
float t = uTime;
|
|
437
|
+
float fromTop = 1.0 - uv.y;
|
|
438
|
+
|
|
439
|
+
float verticalFade = exp(-fromTop * uFadeDistance);
|
|
440
|
+
float topGlow = exp(-fromTop * 8.0) * uTopGlow;
|
|
441
|
+
|
|
442
|
+
float wobble =
|
|
443
|
+
(noise(vec2(uv.y * 3.0, t * uWobbleSpeed)) - 0.5) * uWobbleAmount;
|
|
444
|
+
|
|
445
|
+
float rayCoord = (p.x + wobble) * uRayCount;
|
|
446
|
+
|
|
447
|
+
float raysA = sin(rayCoord + t * uRaySpeed);
|
|
448
|
+
float raysB = sin(rayCoord * 1.73 - t * uRaySpeed * 0.7);
|
|
449
|
+
|
|
450
|
+
float rays = raysA * 0.65 + raysB * 0.35;
|
|
451
|
+
rays = rays * 0.5 + 0.5;
|
|
452
|
+
rays = pow(rays, uRaySoftness);
|
|
453
|
+
|
|
454
|
+
float shimmer = noise(vec2(uv.x * 10.0, uv.y * 4.0 - t * 0.3));
|
|
455
|
+
rays *= mix(0.75, 1.25, shimmer);
|
|
456
|
+
|
|
457
|
+
float alpha = rays * verticalFade * uRayIntensity;
|
|
458
|
+
alpha += topGlow * uRayIntensity;
|
|
459
|
+
alpha = clamp(alpha, 0.0, 1.0);
|
|
460
|
+
|
|
461
|
+
// Premultiplied additive output: rgb already scaled by alpha.
|
|
462
|
+
vec3 rayColor = uLightColor * alpha;
|
|
463
|
+
oColor = vec4(rayColor, alpha);
|
|
464
|
+
}
|
|
465
|
+
"""
|
|
466
|
+
|
|
467
|
+
const val FIREFLIES_FRAG = """#version 300 es
|
|
468
|
+
precision highp float;
|
|
469
|
+
|
|
470
|
+
uniform float uTime;
|
|
471
|
+
uniform vec2 uResolution;
|
|
472
|
+
uniform float uGlowSize;
|
|
473
|
+
uniform float uDotSize;
|
|
474
|
+
uniform float uSpeed;
|
|
475
|
+
uniform float uTwinkle;
|
|
476
|
+
uniform vec3 uColor;
|
|
477
|
+
|
|
478
|
+
in highp vec2 vUv;
|
|
479
|
+
out vec4 oColor;
|
|
480
|
+
|
|
481
|
+
#define FIREFLY_COUNT 36
|
|
482
|
+
|
|
483
|
+
float hash(float n) {
|
|
484
|
+
return fract(sin(n) * 43758.5453123);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
vec2 fireflyPos(float id, float t) {
|
|
488
|
+
vec2 base = vec2(hash(id * 12.7), hash(id * 31.3));
|
|
489
|
+
float a = hash(id * 5.1) * 6.28318;
|
|
490
|
+
float b = hash(id * 9.7) * 6.28318;
|
|
491
|
+
vec2 drift = vec2(sin(t * uSpeed + a), cos(t * uSpeed * 0.73 + b)) * 0.12;
|
|
492
|
+
return fract(base + drift);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
void main() {
|
|
496
|
+
vec2 uv = vUv;
|
|
497
|
+
vec2 p = uv;
|
|
498
|
+
p.x *= uResolution.x / uResolution.y;
|
|
499
|
+
vec3 color = vec3(0.0);
|
|
500
|
+
float alpha = 0.0;
|
|
501
|
+
for (int i = 0; i < FIREFLY_COUNT; i++) {
|
|
502
|
+
float id = float(i);
|
|
503
|
+
vec2 pos = fireflyPos(id, uTime);
|
|
504
|
+
pos.x *= uResolution.x / uResolution.y;
|
|
505
|
+
float d = length(p - pos);
|
|
506
|
+
float phase = hash(id * 17.1) * 6.28318;
|
|
507
|
+
float pulse = 0.5 + 0.5 * sin(uTime * uTwinkle + phase);
|
|
508
|
+
pulse = pulse * pulse * sqrt(pulse); // pow(pulse, 2.5): a non-integer pow is ~2 transcendentals on mobile; this is 1 sqrt + 2 muls
|
|
509
|
+
float glow = exp(-d * d / (uGlowSize * uGlowSize));
|
|
510
|
+
float core = smoothstep(uDotSize, 0.0, d);
|
|
511
|
+
float intensity = pulse * (glow * 0.55 + core * 1.4);
|
|
512
|
+
color += uColor * intensity;
|
|
513
|
+
alpha += intensity * 0.55;
|
|
514
|
+
}
|
|
515
|
+
alpha = clamp(alpha, 0.0, 1.0);
|
|
516
|
+
color = clamp(color, 0.0, 1.0);
|
|
517
|
+
oColor = vec4(color, alpha);
|
|
518
|
+
}
|
|
519
|
+
"""
|
|
520
|
+
|
|
521
|
+
const val SIMIANLIGHTS_FRAG = """#version 300 es
|
|
522
|
+
precision highp float;
|
|
523
|
+
|
|
524
|
+
uniform float uTime; // seconds, monotonically increasing; range [0, inf)
|
|
525
|
+
uniform vec2 uResolution; // framebuffer size in pixels; both components > 0
|
|
526
|
+
uniform vec3 uColor; // overall tint / color grade; [1,1,1] = untinted
|
|
527
|
+
uniform float uBrightness; // final glow multiplier; 1.0 = stock
|
|
528
|
+
uniform float uSpeed; // drift + rotation rate; 1.0 = stock, 0 freezes
|
|
529
|
+
uniform float uTwinkleSpeed; // star color-cycle rate; 1.0 = stock
|
|
530
|
+
uniform float uScale; // starfield zoom / density; >1 = more, smaller stars
|
|
531
|
+
uniform float uStarGlow; // star-core size; 1.0 = stock
|
|
532
|
+
|
|
533
|
+
in highp vec2 vUv;
|
|
534
|
+
out vec4 oColor;
|
|
535
|
+
|
|
536
|
+
const float PI = 3.14159265;
|
|
537
|
+
const float MIN_DIVIDE = 3.0;
|
|
538
|
+
const float MAX_DIVIDE = 0.01;
|
|
539
|
+
// Number of stacked starfield layers. Compile-time constant so the layer
|
|
540
|
+
// loop has a fixed integer bound (cross-compile-safe; no float loop counter).
|
|
541
|
+
const int STARFIELD_LAYERS_COUNT = 4;
|
|
542
|
+
|
|
543
|
+
mat2 Rotate(float angle) {
|
|
544
|
+
float s = sin(angle);
|
|
545
|
+
float c = cos(angle);
|
|
546
|
+
return mat2(c, -s, s, c);
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
float Star(vec2 uv, float flaresize, float rotAngle, float randomN) {
|
|
550
|
+
float d = length(uv);
|
|
551
|
+
// Star core. Guard the division: length(uv) can be exactly 0 at a cell
|
|
552
|
+
// center, which yields inf/NaN under Metal. max(d, 1e-4) caps the core
|
|
553
|
+
// brightness without visibly changing the look (the concentric
|
|
554
|
+
// smoothstep fade below already clamps it).
|
|
555
|
+
float starcore = 0.09 * uStarGlow / max(d, 1e-4);
|
|
556
|
+
uv *= Rotate(-2.0 * PI * rotAngle);
|
|
557
|
+
float flareMax = 1.0;
|
|
558
|
+
|
|
559
|
+
// flares
|
|
560
|
+
float starflares = max(0.0, flareMax - abs(uv.x * uv.y * 3000.0));
|
|
561
|
+
starcore += starflares * flaresize;
|
|
562
|
+
uv *= Rotate(PI * 0.25);
|
|
563
|
+
starflares = max(0.0, flareMax - abs(uv.x * uv.y * 3000.0));
|
|
564
|
+
starcore += starflares * 0.3 * flaresize;
|
|
565
|
+
// light can't go forever, fade it concentrically.
|
|
566
|
+
starcore *= smoothstep(1.0, 0.05, d);
|
|
567
|
+
return starcore;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
float PseudoRandomizer(vec2 p) {
|
|
571
|
+
// not really random, but it looks random.
|
|
572
|
+
p = fract(p * vec2(123.45, 345.67));
|
|
573
|
+
p += dot(p, p + 45.32);
|
|
574
|
+
return fract(p.x * p.y);
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
vec3 StarFieldLayer(vec2 uv, float rotAngle) {
|
|
578
|
+
vec3 col = vec3(0.0);
|
|
579
|
+
|
|
580
|
+
vec2 gv = fract(uv) - 0.5;
|
|
581
|
+
vec2 id = floor(uv);
|
|
582
|
+
|
|
583
|
+
float deltaTimeTwinkle = uTime * 0.35 * uTwinkleSpeed;
|
|
584
|
+
|
|
585
|
+
// sweep the 8 neighbors plus the home cell so stars are not clipped at
|
|
586
|
+
// cell borders. Constant 3x3 bounds.
|
|
587
|
+
for (int y = -1; y <= 1; y++) {
|
|
588
|
+
for (int x = -1; x <= 1; x++) {
|
|
589
|
+
vec2 offset = vec2(float(x), float(y));
|
|
590
|
+
|
|
591
|
+
float randomN = PseudoRandomizer(id + offset); // 0..1
|
|
592
|
+
float randoX = randomN - 0.5;
|
|
593
|
+
float randoY = fract(randomN * 45.0) - 0.5;
|
|
594
|
+
vec2 randomPosition = gv - offset - vec2(randoX, randoY);
|
|
595
|
+
// fract trick: random sizes
|
|
596
|
+
float size = fract(randomN * 1356.33);
|
|
597
|
+
float flareSwitch = smoothstep(0.9, 1.0, size);
|
|
598
|
+
float star = Star(randomPosition, flareSwitch, rotAngle, randomN);
|
|
599
|
+
|
|
600
|
+
// fract trick: random colors
|
|
601
|
+
float randomStarColorSeed = fract(randomN * 2150.0) * (3.0 * PI) * deltaTimeTwinkle;
|
|
602
|
+
vec3 color = sin(vec3(0.7, 0.3, 0.9) * randomStarColorSeed);
|
|
603
|
+
|
|
604
|
+
// compress
|
|
605
|
+
color = color * (0.4 * sin(deltaTimeTwinkle)) + 0.6;
|
|
606
|
+
// filter
|
|
607
|
+
color = color * vec3(1.0, 0.1, 0.9 + size);
|
|
608
|
+
float dimByDensity = 15.0 / float(STARFIELD_LAYERS_COUNT);
|
|
609
|
+
col += star * size * color * dimByDensity;
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
return col;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
void main() {
|
|
617
|
+
// ShaderToy fragCoord, reconstructed from vUv (see header).
|
|
618
|
+
vec2 fragCoord = vUv * uResolution;
|
|
619
|
+
|
|
620
|
+
// Normalized pixel coordinates centered at screen middle.
|
|
621
|
+
vec2 uv = (fragCoord - 0.5 * uResolution.xy) / uResolution.y;
|
|
622
|
+
|
|
623
|
+
float deltaTime = uTime * 0.01 * uSpeed;
|
|
624
|
+
|
|
625
|
+
vec3 col = vec3(0.0);
|
|
626
|
+
|
|
627
|
+
float rotAngle = deltaTime * 0.09;
|
|
628
|
+
|
|
629
|
+
// Layer accumulation. Integer-counted loop replacing the original
|
|
630
|
+
// `for (float i = 0.0; i < 1.0; i += 1.0/COUNT)`. With n in [0, COUNT),
|
|
631
|
+
// i = n/COUNT reproduces the exact same {0, 1/N, 2/N, ...} sequence and
|
|
632
|
+
// the same iteration count, so visual output is unchanged; only the loop
|
|
633
|
+
// form is cross-compile-safe.
|
|
634
|
+
for (int n = 0; n < STARFIELD_LAYERS_COUNT; n++) {
|
|
635
|
+
float i = float(n) / float(STARFIELD_LAYERS_COUNT);
|
|
636
|
+
float layerDepth = fract(i + deltaTime);
|
|
637
|
+
float layerScale = mix(MIN_DIVIDE, MAX_DIVIDE, layerDepth);
|
|
638
|
+
float layerFader = layerDepth * smoothstep(0.1, 1.1, layerDepth);
|
|
639
|
+
float layerOffset = i * (3430.0 + fract(i));
|
|
640
|
+
mat2 layerRot = Rotate(rotAngle * i * -10.0);
|
|
641
|
+
uv *= layerRot;
|
|
642
|
+
vec2 starfieldUv = uv * layerScale * uScale + layerOffset;
|
|
643
|
+
col += StarFieldLayer(starfieldUv, rotAngle) * layerFader;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
// Glow + color grade, then opaque procedural background.
|
|
647
|
+
col *= uBrightness * uColor;
|
|
648
|
+
oColor = vec4(col, 1.0);
|
|
649
|
+
}
|
|
650
|
+
"""
|
|
651
|
+
|
|
652
|
+
const val ANAMORPHIC_LENSFLARE_FRAG = """#version 300 es
|
|
653
|
+
precision highp float;
|
|
654
|
+
|
|
655
|
+
uniform float uTime; // seconds, monotonically increasing; range [0, inf)
|
|
656
|
+
uniform float uFlareX; // flare X position, 0..1 (drifts slowly around this)
|
|
657
|
+
uniform float uFlareY; // flare Y position, 0..1 (0 = bottom)
|
|
658
|
+
uniform float uIntensity; // overall brightness multiplier
|
|
659
|
+
uniform float uStreakLength; // horizontal streak reach; higher = longer
|
|
660
|
+
uniform float uStreakWidth; // main streak vertical tightness; higher = thinner
|
|
661
|
+
uniform float uGhostStrength; // optical-ghost strength along the flare axis
|
|
662
|
+
uniform vec3 uWarmColor; // core / warm streak tint
|
|
663
|
+
uniform vec3 uBlueColor; // halo / wide-streak tint
|
|
664
|
+
uniform vec3 uPinkColor; // secondary streak / ghost tint
|
|
665
|
+
|
|
666
|
+
in highp vec2 vUv;
|
|
667
|
+
out vec4 oColor;
|
|
668
|
+
|
|
669
|
+
float softOrb(vec2 uv, vec2 center, float radius) {
|
|
670
|
+
float d = length(uv - center);
|
|
671
|
+
float q = d / radius; // pow(q, 2.0) -> q*q; spirv-opt does not strength-reduce it
|
|
672
|
+
return exp(-q * q);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
float softStreak(vec2 uv, vec2 center, float width, float length) {
|
|
676
|
+
float yFalloff = exp(-abs(uv.y - center.y) * width);
|
|
677
|
+
float xFalloff = exp(-abs(uv.x - center.x) * length);
|
|
678
|
+
return yFalloff * xFalloff;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
void main() {
|
|
682
|
+
// ShaderToy uv = fragCoord / iResolution; identical to vUv here.
|
|
683
|
+
vec2 uv = vUv;
|
|
684
|
+
|
|
685
|
+
// Slow horizontal drift.
|
|
686
|
+
float horizontalDrift = sin(uTime * 0.18) * 0.10;
|
|
687
|
+
vec2 flarePos = vec2(uFlareX + horizontalDrift, uFlareY);
|
|
688
|
+
|
|
689
|
+
vec3 col = vec3(0.0);
|
|
690
|
+
float alpha = 0.0;
|
|
691
|
+
|
|
692
|
+
// Main source.
|
|
693
|
+
float core = softOrb(uv, flarePos, 0.022);
|
|
694
|
+
float bloom = softOrb(uv, flarePos, 0.095);
|
|
695
|
+
float outerHalo = softOrb(uv, flarePos, 0.28);
|
|
696
|
+
|
|
697
|
+
col += vec3(1.0) * core * 1.8;
|
|
698
|
+
col += uWarmColor * bloom * 0.95;
|
|
699
|
+
col += uBlueColor * outerHalo * 0.16;
|
|
700
|
+
|
|
701
|
+
alpha += core * 0.45;
|
|
702
|
+
alpha += bloom * 0.22;
|
|
703
|
+
alpha += outerHalo * 0.045;
|
|
704
|
+
|
|
705
|
+
// Moving streak intensity.
|
|
706
|
+
float sweepGlow = 0.85 + 0.15 * sin(uTime * 0.7 + uv.x * 8.0);
|
|
707
|
+
|
|
708
|
+
// Main + wide anamorphic streaks.
|
|
709
|
+
float mainStreak = softStreak(uv, flarePos, uStreakWidth, uStreakLength);
|
|
710
|
+
float wideStreak = softStreak(uv, flarePos, 70.0, uStreakLength * 0.65);
|
|
711
|
+
|
|
712
|
+
col += uWarmColor * mainStreak * 1.15 * sweepGlow;
|
|
713
|
+
col += uBlueColor * wideStreak * 0.26 * sweepGlow;
|
|
714
|
+
|
|
715
|
+
alpha += mainStreak * 0.18;
|
|
716
|
+
alpha += wideStreak * 0.055;
|
|
717
|
+
|
|
718
|
+
// Secondary colored streaks.
|
|
719
|
+
float upperLine = softStreak(uv, flarePos + vec2(0.0, 0.012), 260.0, uStreakLength * 0.7);
|
|
720
|
+
float lowerLine = softStreak(uv, flarePos - vec2(0.0, 0.010), 240.0, uStreakLength * 0.8);
|
|
721
|
+
|
|
722
|
+
col += uBlueColor * upperLine * 0.22;
|
|
723
|
+
col += uPinkColor * lowerLine * 0.16;
|
|
724
|
+
|
|
725
|
+
alpha += (upperLine + lowerLine) * 0.035;
|
|
726
|
+
|
|
727
|
+
// Optical ghosts along the line from the flare through screen center.
|
|
728
|
+
vec2 center = vec2(0.5);
|
|
729
|
+
vec2 axis = center - flarePos;
|
|
730
|
+
|
|
731
|
+
vec2 ghost1 = flarePos + axis * 0.45;
|
|
732
|
+
vec2 ghost2 = flarePos + axis * 0.85;
|
|
733
|
+
vec2 ghost3 = flarePos + axis * 1.28;
|
|
734
|
+
vec2 ghost4 = flarePos - axis * 0.35;
|
|
735
|
+
|
|
736
|
+
float g1 = softOrb(uv, ghost1, 0.070);
|
|
737
|
+
float g2 = softOrb(uv, ghost2, 0.115);
|
|
738
|
+
float g3 = softOrb(uv, ghost3, 0.055);
|
|
739
|
+
float g4 = softOrb(uv, ghost4, 0.095);
|
|
740
|
+
|
|
741
|
+
col += uPinkColor * g1 * 0.18 * uGhostStrength;
|
|
742
|
+
col += uBlueColor * g2 * 0.15 * uGhostStrength;
|
|
743
|
+
col += uWarmColor * g3 * 0.22 * uGhostStrength;
|
|
744
|
+
col += uBlueColor * g4 * 0.10 * uGhostStrength;
|
|
745
|
+
|
|
746
|
+
alpha += g1 * 0.040 * uGhostStrength;
|
|
747
|
+
alpha += g2 * 0.035 * uGhostStrength;
|
|
748
|
+
alpha += g3 * 0.050 * uGhostStrength;
|
|
749
|
+
alpha += g4 * 0.030 * uGhostStrength;
|
|
750
|
+
|
|
751
|
+
// Tiny shimmer to keep it alive.
|
|
752
|
+
float shimmer = 0.97 + 0.03 * sin(uTime * 2.1);
|
|
753
|
+
|
|
754
|
+
col *= uIntensity * shimmer;
|
|
755
|
+
alpha *= uIntensity * shimmer;
|
|
756
|
+
|
|
757
|
+
alpha = clamp(alpha, 0.0, 1.0);
|
|
758
|
+
oColor = vec4(col, alpha);
|
|
759
|
+
}
|
|
760
|
+
"""
|
|
761
|
+
|
|
762
|
+
const val LIGHT_BEAMS_AND_MOTES_FRAG = """#version 300 es
|
|
763
|
+
precision highp float;
|
|
764
|
+
|
|
765
|
+
uniform float uTime; // seconds, monotonically increasing; range [0, inf)
|
|
766
|
+
uniform float uSpeed; // animation rate; 1.0 = stock, 0 freezes the field
|
|
767
|
+
uniform float uBeamSoftness; // beam polygon edge softness
|
|
768
|
+
uniform float uOverlayAlpha; // overall overlay opacity, applied to final alpha
|
|
769
|
+
|
|
770
|
+
// Per-beam: a row-major quad (TL, TR, BL, BR; y-up), a color, a fill strength
|
|
771
|
+
// (absolute), and an on/off flag. A disabled beam's quadMask + sins do not execute
|
|
772
|
+
// at all (the flag is uniform, so the branch is coherent across every fragment) --
|
|
773
|
+
// that is how you stop paying for beams you are not using.
|
|
774
|
+
uniform vec2 uBeam1Poly[4];
|
|
775
|
+
uniform vec3 uBeam1Color;
|
|
776
|
+
uniform float uBeam1Alpha;
|
|
777
|
+
uniform float uBeam1On;
|
|
778
|
+
uniform vec2 uBeam2Poly[4];
|
|
779
|
+
uniform vec3 uBeam2Color;
|
|
780
|
+
uniform float uBeam2Alpha;
|
|
781
|
+
uniform float uBeam2On;
|
|
782
|
+
uniform vec2 uBeam3Poly[4];
|
|
783
|
+
uniform vec3 uBeam3Color;
|
|
784
|
+
uniform float uBeam3Alpha;
|
|
785
|
+
uniform float uBeam3On;
|
|
786
|
+
|
|
787
|
+
uniform float uMoteAlpha; // mote brightness (absolute)
|
|
788
|
+
uniform float uGlowSize; // mote glow radius, in mote-size multiples
|
|
789
|
+
uniform float uMoteCount; // active motes (<= MOTE_COUNT); a coherent break trims the loop
|
|
790
|
+
|
|
791
|
+
in highp vec2 vUv;
|
|
792
|
+
out vec4 oColor;
|
|
793
|
+
|
|
794
|
+
// ---------- Mote controls (internal constants) ----------
|
|
795
|
+
#define MOTE_COUNT 128 // loop bound: compile-time constant, not a uniform
|
|
796
|
+
#define DRIFT_SPEED 0.060
|
|
797
|
+
#define FALL_SPEED 0.012
|
|
798
|
+
#define SWIRL_AMOUNT 0.065
|
|
799
|
+
#define TURBULENCE 0.030
|
|
800
|
+
#define MOTE_SIZE_MIN 0.0013
|
|
801
|
+
#define MOTE_SIZE_MAX 0.0048
|
|
802
|
+
|
|
803
|
+
float hash1(float n) {
|
|
804
|
+
return fract(sin(n) * 43758.5453123);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
vec2 hash2(float n) {
|
|
808
|
+
return vec2(hash1(n + 11.17), hash1(n + 47.83));
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
float softMote(vec2 uv, vec2 center, float radius) {
|
|
812
|
+
float d = length(uv - center);
|
|
813
|
+
float q = d / radius; // pow(q, 2.0) -> q*q; spirv-opt does not strength-reduce it
|
|
814
|
+
return exp(-q * q);
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
// Soft convex quad mask, winding-AGNOSTIC: the corners are user-draggable, so the
|
|
818
|
+
// perimeter can wind either way. A point is inside when it is on the same side of
|
|
819
|
+
// all four edges, whichever side that is; product the positive-side smoothsteps and
|
|
820
|
+
// the negative-side ones and keep the larger.
|
|
821
|
+
float quadMask(vec2 p, vec2 a, vec2 b, vec2 c, vec2 d, float softness) {
|
|
822
|
+
vec2 e0 = b - a;
|
|
823
|
+
vec2 e1 = c - b;
|
|
824
|
+
vec2 e2 = d - c;
|
|
825
|
+
vec2 e3 = a - d;
|
|
826
|
+
float s0 = e0.x * (p.y - a.y) - e0.y * (p.x - a.x);
|
|
827
|
+
float s1 = e1.x * (p.y - b.y) - e1.y * (p.x - b.x);
|
|
828
|
+
float s2 = e2.x * (p.y - c.y) - e2.y * (p.x - c.x);
|
|
829
|
+
float s3 = e3.x * (p.y - d.y) - e3.y * (p.x - d.x);
|
|
830
|
+
float inNeg =
|
|
831
|
+
smoothstep(-softness, softness, -s0) *
|
|
832
|
+
smoothstep(-softness, softness, -s1) *
|
|
833
|
+
smoothstep(-softness, softness, -s2) *
|
|
834
|
+
smoothstep(-softness, softness, -s3);
|
|
835
|
+
float inPos =
|
|
836
|
+
smoothstep(-softness, softness, s0) *
|
|
837
|
+
smoothstep(-softness, softness, s1) *
|
|
838
|
+
smoothstep(-softness, softness, s2) *
|
|
839
|
+
smoothstep(-softness, softness, s3);
|
|
840
|
+
return max(inNeg, inPos);
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
// Subtle animated variation inside each beam.
|
|
844
|
+
float beamTexture(vec2 uv, float seed) {
|
|
845
|
+
float t = uTime * uSpeed;
|
|
846
|
+
float broadBands = 0.55 + 0.45 * sin(uv.x * 7.0 + uv.y * 4.0 + t * 0.06 + seed);
|
|
847
|
+
float fineBands = 0.75 + 0.25 * sin(uv.x * 23.0 - uv.y * 11.0 + t * 0.11 + seed * 2.7);
|
|
848
|
+
return mix(0.65, 1.0, broadBands * fineBands);
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
// Geometric coverage of one row-major beam quad at uv (mask * texture, 0..~1), with
|
|
852
|
+
// the row-major -> perimeter reorder folded in. Independent of the beam's alpha.
|
|
853
|
+
float beamShape(vec2 uv, vec2 poly[4], float seed) {
|
|
854
|
+
return quadMask(uv, poly[0], poly[1], poly[3], poly[2], uBeamSoftness) * beamTexture(uv, seed);
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
// Evaluate the three beams once. Returns the GEOMETRIC coverage sum (used to gate +
|
|
858
|
+
// brighten motes and to drive the haze, so per-beam alpha never dims the motes);
|
|
859
|
+
// writes `color` (the geometry-weighted beam hue, for fill and motes) and `litSum`
|
|
860
|
+
// (the alpha-weighted amount, the actual fill brightness/opacity).
|
|
861
|
+
float evalBeams(vec2 uv, out vec3 color, out float litSum) {
|
|
862
|
+
float a1 = 0.0;
|
|
863
|
+
float a2 = 0.0;
|
|
864
|
+
float a3 = 0.0;
|
|
865
|
+
if (uBeam1On > 0.5) a1 = beamShape(uv, uBeam1Poly, 1.0);
|
|
866
|
+
if (uBeam2On > 0.5) a2 = beamShape(uv, uBeam2Poly, 8.0);
|
|
867
|
+
if (uBeam3On > 0.5) a3 = beamShape(uv, uBeam3Poly, 14.0);
|
|
868
|
+
|
|
869
|
+
float geomSum = a1 + a2 + a3;
|
|
870
|
+
color = (uBeam1Color * a1 + uBeam2Color * a2 + uBeam3Color * a3) / max(geomSum, 0.0001);
|
|
871
|
+
litSum = a1 * uBeam1Alpha + a2 * uBeam2Alpha + a3 * uBeam3Alpha;
|
|
872
|
+
return geomSum;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
// Accumulate the dust motes for ALL on beams in ONE loop. Each mote is round-
|
|
876
|
+
// robined to an on beam (mote n -> the (n mod nActive)-th on beam) and spawned in
|
|
877
|
+
// THAT beam's (u,v) space: every mote lands in a beam, takes the beam's color, and
|
|
878
|
+
// gets a cheap (u,v) edge falloff -- no screen-space scatter to cull, no per-mote
|
|
879
|
+
// quadMask. n and nActive are uniform across fragments, so the beam pick is
|
|
880
|
+
// COHERENT (same for every pixel), not a divergent per-pixel branch. Motes drift
|
|
881
|
+
// ALONG the beam (fall in v, swirl in u) and wrap, fading at the boundaries so the
|
|
882
|
+
// wrap is never a visible pop. Total mote count is uMoteCount regardless of how
|
|
883
|
+
// many beams are on -- the on beams share the budget.
|
|
884
|
+
void addMotes(vec2 uv, inout vec3 col, inout float alpha) {
|
|
885
|
+
float nActive = uBeam1On + uBeam2On + uBeam3On; // on-flags are 0/1
|
|
886
|
+
if (nActive < 0.5) return; // no beams -> no motes
|
|
887
|
+
|
|
888
|
+
// Motes may spill past the polygon edge by ~softness so the soft fringe is
|
|
889
|
+
// populated; the (u,v) falloff dims them there.
|
|
890
|
+
float fuzz = clamp(uBeamSoftness * 2.0, 0.03, 0.35);
|
|
891
|
+
float slot = 0.0; // round-robin cursor over the on beams (a wrapped counter, no per-mote mod)
|
|
892
|
+
|
|
893
|
+
for (int n = 0; n < MOTE_COUNT; n++) {
|
|
894
|
+
if (float(n) >= uMoteCount) break; // runtime-tunable mote count (coherent break)
|
|
895
|
+
float seed = float(n) * 91.73;
|
|
896
|
+
|
|
897
|
+
// Round-robin: this mote goes to the slot-th on beam. Walk the beams,
|
|
898
|
+
// counting on ones; the slot-th match wins.
|
|
899
|
+
float picked = 0.0;
|
|
900
|
+
vec2 tl = vec2(0.0);
|
|
901
|
+
vec2 tr = vec2(0.0);
|
|
902
|
+
vec2 bl = vec2(0.0);
|
|
903
|
+
vec2 br = vec2(0.0);
|
|
904
|
+
vec3 color = vec3(0.0);
|
|
905
|
+
if (uBeam1On > 0.5) {
|
|
906
|
+
if (abs(picked - slot) < 0.5) {
|
|
907
|
+
tl = uBeam1Poly[0]; tr = uBeam1Poly[1]; bl = uBeam1Poly[2]; br = uBeam1Poly[3];
|
|
908
|
+
color = uBeam1Color;
|
|
909
|
+
}
|
|
910
|
+
picked += 1.0;
|
|
911
|
+
}
|
|
912
|
+
if (uBeam2On > 0.5) {
|
|
913
|
+
if (abs(picked - slot) < 0.5) {
|
|
914
|
+
tl = uBeam2Poly[0]; tr = uBeam2Poly[1]; bl = uBeam2Poly[2]; br = uBeam2Poly[3];
|
|
915
|
+
color = uBeam2Color;
|
|
916
|
+
}
|
|
917
|
+
picked += 1.0;
|
|
918
|
+
}
|
|
919
|
+
if (uBeam3On > 0.5) {
|
|
920
|
+
if (abs(picked - slot) < 0.5) {
|
|
921
|
+
tl = uBeam3Poly[0]; tr = uBeam3Poly[1]; bl = uBeam3Poly[2]; br = uBeam3Poly[3];
|
|
922
|
+
color = uBeam3Color;
|
|
923
|
+
}
|
|
924
|
+
picked += 1.0;
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
float depth = hash1(seed + 3.0);
|
|
928
|
+
float size = mix(MOTE_SIZE_MIN, MOTE_SIZE_MAX, depth);
|
|
929
|
+
float speed = mix(0.45, 1.35, hash1(seed + 5.0));
|
|
930
|
+
float t = uTime * uSpeed * speed;
|
|
931
|
+
|
|
932
|
+
// (u,v) in beam space; drift = swirl in u, fall in v. fract wraps within
|
|
933
|
+
// the beam, so a mote that falls out the spread end reappears at the source.
|
|
934
|
+
vec2 g = hash2(seed);
|
|
935
|
+
g.x += sin(t * DRIFT_SPEED * 1.7 + seed) * SWIRL_AMOUNT;
|
|
936
|
+
g.x += sin(t * DRIFT_SPEED * 3.9 + seed * 0.41) * TURBULENCE;
|
|
937
|
+
g.y += uTime * uSpeed * FALL_SPEED * speed * 6.0;
|
|
938
|
+
g.y += sin(t * DRIFT_SPEED * 2.4 + seed * 0.37) * SWIRL_AMOUNT * 0.55;
|
|
939
|
+
g = fract(g);
|
|
940
|
+
|
|
941
|
+
// Expand to [-fuzz, 1+fuzz] so motes populate the soft fringe, then map
|
|
942
|
+
// bilinearly onto the quad.
|
|
943
|
+
vec2 q = g * (1.0 + 2.0 * fuzz) - fuzz;
|
|
944
|
+
vec2 pos = mix(mix(tl, tr, q.x), mix(bl, br, q.x), q.y);
|
|
945
|
+
|
|
946
|
+
// Cheap soft-edge falloff in (u,v), replacing the per-mote quadMask.
|
|
947
|
+
float edge =
|
|
948
|
+
smoothstep(0.0, fuzz, q.x) * smoothstep(0.0, fuzz, 1.0 - q.x) *
|
|
949
|
+
smoothstep(0.0, fuzz, q.y) * smoothstep(0.0, fuzz, 1.0 - q.y);
|
|
950
|
+
|
|
951
|
+
float mote = softMote(uv, pos, size);
|
|
952
|
+
float core = softMote(uv, pos, size * 0.42);
|
|
953
|
+
float glow = softMote(uv, pos, size * uGlowSize);
|
|
954
|
+
|
|
955
|
+
float shimmer =
|
|
956
|
+
0.72 + 0.28 * sin(uTime * uSpeed * mix(0.22, 0.95, hash1(seed + 9.0)) + seed);
|
|
957
|
+
float strength = mix(0.15, 1.0, depth) * shimmer * edge * uMoteAlpha;
|
|
958
|
+
|
|
959
|
+
col += color * glow * strength * 0.12;
|
|
960
|
+
col += color * mote * strength * 0.36;
|
|
961
|
+
col += vec3(1.0) * core * strength * 0.10;
|
|
962
|
+
|
|
963
|
+
alpha += glow * strength * 0.030;
|
|
964
|
+
alpha += mote * strength * 0.105;
|
|
965
|
+
alpha += core * strength * 0.110;
|
|
966
|
+
|
|
967
|
+
slot += 1.0;
|
|
968
|
+
if (slot >= nActive) slot = 0.0; // wrap the round-robin cursor
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
void main() {
|
|
973
|
+
// vUv is already 0..1 with bottom-left origin; this is the Shadertoy uv.
|
|
974
|
+
vec2 uv = vUv;
|
|
975
|
+
|
|
976
|
+
vec3 col = vec3(0.0);
|
|
977
|
+
float alpha = 0.0;
|
|
978
|
+
|
|
979
|
+
vec3 beamColor;
|
|
980
|
+
float litSum;
|
|
981
|
+
float cover = evalBeams(uv, beamColor, litSum);
|
|
982
|
+
|
|
983
|
+
col += beamColor * litSum; // litSum carries each beam's per-beam alpha
|
|
984
|
+
alpha += litSum * 0.45;
|
|
985
|
+
|
|
986
|
+
// One loop; each mote is round-robined into an on beam and spawned there.
|
|
987
|
+
addMotes(uv, col, alpha);
|
|
988
|
+
|
|
989
|
+
float haze =
|
|
990
|
+
cover * cover * (0.6 + 0.4 * sin(uv.x * 8.0 + uv.y * 5.0 + uTime * uSpeed * 0.08));
|
|
991
|
+
col += beamColor * haze * 0.018;
|
|
992
|
+
alpha += haze * 0.010;
|
|
993
|
+
|
|
994
|
+
alpha = clamp(alpha * uOverlayAlpha, 0.0, 1.0);
|
|
995
|
+
oColor = vec4(col, alpha);
|
|
996
|
+
}
|
|
997
|
+
"""
|
|
998
|
+
|
|
999
|
+
const val CORPORATE_BLOBS_FRAG = """#version 300 es
|
|
1000
|
+
precision highp float;
|
|
1001
|
+
|
|
1002
|
+
uniform float uTime; // seconds, monotonically increasing; range [0, inf)
|
|
1003
|
+
uniform vec2 uResolution; // framebuffer size in pixels; both components > 0
|
|
1004
|
+
uniform vec3 uColor; // overall tint / color grade; [1,1,1] = stock colors
|
|
1005
|
+
uniform float uGlobalAlpha; // overall blob opacity; stock 0.58
|
|
1006
|
+
uniform float uScale; // global blob size multiplier; stock 2.55
|
|
1007
|
+
uniform float uEdgePull; // pushes blobs outward from center; stock 0.32
|
|
1008
|
+
uniform float uCenterClear; // radius around center that repels blobs; stock 0.42
|
|
1009
|
+
uniform float uMotionAmount; // positional drift magnitude; 1.0 = stock, 0 = still
|
|
1010
|
+
uniform float uMotionSpeed; // drift + morph rate; 1.0 = stock, 0 freezes motion
|
|
1011
|
+
uniform float uEdgeSoftness; // blob edge falloff; stock 0.024
|
|
1012
|
+
// Per-blob base colors, multiplied by uColor at output. Defaults (the stock
|
|
1013
|
+
// brand palette) live in CORPORATE_BLOBS_CONTROLS.
|
|
1014
|
+
uniform vec3 uBlobColor1; // stock: light blue
|
|
1015
|
+
uniform vec3 uBlobColor2; // stock: dark green
|
|
1016
|
+
uniform vec3 uBlobColor3; // stock: yellow
|
|
1017
|
+
uniform vec3 uBlobColor4; // stock: orange
|
|
1018
|
+
uniform vec3 uBlobColor5; // stock: light green
|
|
1019
|
+
uniform vec3 uBlobColor6; // stock: magenta
|
|
1020
|
+
uniform vec3 uBlobColor7; // stock: brown
|
|
1021
|
+
uniform vec3 uBlobColor8; // stock: dark blue
|
|
1022
|
+
|
|
1023
|
+
in highp vec2 vUv;
|
|
1024
|
+
out vec4 oColor;
|
|
1025
|
+
|
|
1026
|
+
// BLOB_COUNT must stay a compile-time constant (GLSL ES loop bound).
|
|
1027
|
+
#define BLOB_COUNT 8
|
|
1028
|
+
|
|
1029
|
+
// Internal animation constants (not tunable; keep the look coherent).
|
|
1030
|
+
#define CENTER_CLEAR_PUSH 0.34
|
|
1031
|
+
#define SCALE_PULSE_AMOUNT 0.10
|
|
1032
|
+
#define SCALE_PULSE_SPEED 0.42
|
|
1033
|
+
#define ROTATION_SWAY_AMOUNT 0.12
|
|
1034
|
+
#define ROTATION_SWAY_SPEED 0.11
|
|
1035
|
+
#define SHAPE_MORPH_SPEED 1.00
|
|
1036
|
+
|
|
1037
|
+
struct Blob {
|
|
1038
|
+
vec2 pos;
|
|
1039
|
+
float scale;
|
|
1040
|
+
float opacity;
|
|
1041
|
+
float speed;
|
|
1042
|
+
float drift;
|
|
1043
|
+
float rotation;
|
|
1044
|
+
float variant;
|
|
1045
|
+
vec3 color;
|
|
1046
|
+
};
|
|
1047
|
+
|
|
1048
|
+
Blob getBlob(float i) {
|
|
1049
|
+
if (i < 0.5) return Blob(vec2(-1.18, -0.55), 0.62, 0.48, 0.22, 0.14, 0.10, 0.0, uBlobColor1);
|
|
1050
|
+
if (i < 1.5) return Blob(vec2( 1.12, -0.35), 0.66, 0.40, 0.18, 0.13, 1.00, 1.0, uBlobColor2);
|
|
1051
|
+
if (i < 2.5) return Blob(vec2( 0.95, 0.88), 0.58, 0.44, 0.20, 0.14, 2.20, 2.0, uBlobColor3);
|
|
1052
|
+
if (i < 3.5) return Blob(vec2(-0.98, 0.82), 0.56, 0.38, 0.16, 0.12, 0.70, 3.0, uBlobColor4);
|
|
1053
|
+
if (i < 4.5) return Blob(vec2( 1.28, 0.28), 0.50, 0.34, 0.24, 0.11, 1.80, 4.0, uBlobColor5);
|
|
1054
|
+
if (i < 5.5) return Blob(vec2(-0.25, -1.12), 0.54, 0.36, 0.19, 0.11, 2.60, 5.0, uBlobColor6);
|
|
1055
|
+
if (i < 6.5) return Blob(vec2(-1.30, 0.10), 0.48, 0.30, 0.17, 0.12, 0.40, 6.0, uBlobColor7);
|
|
1056
|
+
return Blob(vec2( 0.28, 1.18), 0.52, 0.30, 0.14, 0.10, 0.90, 7.0, uBlobColor8);
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
mat2 rotate2d(float a) {
|
|
1060
|
+
float s = sin(a);
|
|
1061
|
+
float c = cos(a);
|
|
1062
|
+
return mat2(c, -s, s, c);
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
float variantRadius(float angle, float variant, float phase) {
|
|
1066
|
+
float r = 1.0;
|
|
1067
|
+
|
|
1068
|
+
if (variant < 0.5) {
|
|
1069
|
+
r += 0.115 * sin(angle * 2.0 + 0.20 + phase * 0.20);
|
|
1070
|
+
r += 0.075 * sin(angle * 3.0 - 1.10 - phase * 0.13);
|
|
1071
|
+
r += 0.035 * sin(angle * 5.0 + 2.00 + phase * 0.09);
|
|
1072
|
+
} else if (variant < 1.5) {
|
|
1073
|
+
r += 0.090 * sin(angle * 2.0 - 0.80 + phase * 0.18);
|
|
1074
|
+
r += 0.105 * sin(angle * 3.0 + 0.70 - phase * 0.10);
|
|
1075
|
+
r += 0.030 * sin(angle * 6.0 - 1.50 + phase * 0.08);
|
|
1076
|
+
} else if (variant < 2.5) {
|
|
1077
|
+
r += 0.130 * sin(angle * 2.0 + 1.10 + phase * 0.16);
|
|
1078
|
+
r += 0.060 * sin(angle * 4.0 - 0.30 - phase * 0.12);
|
|
1079
|
+
r += 0.045 * sin(angle * 5.0 + 2.80 + phase * 0.07);
|
|
1080
|
+
} else if (variant < 3.5) {
|
|
1081
|
+
r += 0.080 * sin(angle * 2.0 + 2.30 + phase * 0.14);
|
|
1082
|
+
r += 0.120 * sin(angle * 3.0 - 0.40 - phase * 0.11);
|
|
1083
|
+
r += 0.040 * sin(angle * 7.0 + 1.10 + phase * 0.06);
|
|
1084
|
+
} else if (variant < 4.5) {
|
|
1085
|
+
r += 0.035 * sin(angle * 2.0 + 0.10 + phase * 0.12);
|
|
1086
|
+
r += 0.030 * sin(angle * 3.0 + 1.80 - phase * 0.09);
|
|
1087
|
+
r += 0.020 * sin(angle * 5.0 - 0.90 + phase * 0.05);
|
|
1088
|
+
} else if (variant < 5.5) {
|
|
1089
|
+
r += 0.145 * sin(angle * 2.0 - 1.30 + phase * 0.17);
|
|
1090
|
+
r += 0.070 * sin(angle * 3.0 + 2.40 - phase * 0.11);
|
|
1091
|
+
r += 0.035 * sin(angle * 5.0 + 0.20 + phase * 0.08);
|
|
1092
|
+
} else if (variant < 6.5) {
|
|
1093
|
+
r += 0.045 * sin(angle * 2.0 + 1.70 + phase * 0.10);
|
|
1094
|
+
r += 0.035 * sin(angle * 4.0 - 2.10 - phase * 0.08);
|
|
1095
|
+
r += 0.025 * sin(angle * 6.0 + 0.50 + phase * 0.05);
|
|
1096
|
+
} else {
|
|
1097
|
+
r += 0.170 * sin(angle * 2.0 + 2.80 + phase * 0.20);
|
|
1098
|
+
r += 0.090 * sin(angle * 3.0 - 1.90 - phase * 0.15);
|
|
1099
|
+
r += 0.055 * sin(angle * 5.0 + 0.80 + phase * 0.09);
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
return r;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
vec2 applyCenterRepulsor(vec2 center) {
|
|
1106
|
+
float d = length(center);
|
|
1107
|
+
vec2 dir = normalize(center + vec2(0.0001, 0.0001));
|
|
1108
|
+
|
|
1109
|
+
center += dir * uEdgePull;
|
|
1110
|
+
|
|
1111
|
+
float centerInfluence = 1.0 - smoothstep(uCenterClear, uCenterClear + 0.35, d);
|
|
1112
|
+
center += dir * centerInfluence * CENTER_CLEAR_PUSH;
|
|
1113
|
+
|
|
1114
|
+
return center;
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
float animatedScale(float baseScale, float blobIndex, float blobSpeed) {
|
|
1118
|
+
float localPhase =
|
|
1119
|
+
uTime * SCALE_PULSE_SPEED * (0.65 + blobSpeed * 1.35) +
|
|
1120
|
+
blobIndex * 2.731;
|
|
1121
|
+
|
|
1122
|
+
float pulseA = sin(localPhase);
|
|
1123
|
+
float pulseB = sin(localPhase * 0.47 + blobIndex * 5.13) * 0.45;
|
|
1124
|
+
|
|
1125
|
+
float scaleMultiplier = 1.0 + (pulseA + pulseB) * SCALE_PULSE_AMOUNT;
|
|
1126
|
+
|
|
1127
|
+
return baseScale * max(0.05, scaleMultiplier);
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
float blobMask(vec2 p, vec2 center, Blob b, float phase, float liveScale) {
|
|
1131
|
+
vec2 q = p - center;
|
|
1132
|
+
|
|
1133
|
+
vec2 squash = vec2(
|
|
1134
|
+
1.0 + 0.14 * sin(b.variant * 1.91),
|
|
1135
|
+
1.0 + 0.14 * cos(b.variant * 2.37)
|
|
1136
|
+
);
|
|
1137
|
+
|
|
1138
|
+
float rotationSway =
|
|
1139
|
+
sin(uTime * ROTATION_SWAY_SPEED * (0.6 + b.speed) + b.variant * 3.0) *
|
|
1140
|
+
ROTATION_SWAY_AMOUNT;
|
|
1141
|
+
|
|
1142
|
+
q = rotate2d(b.rotation + rotationSway) * q;
|
|
1143
|
+
q /= squash;
|
|
1144
|
+
|
|
1145
|
+
float angle = atan(q.y, q.x);
|
|
1146
|
+
float dist = length(q);
|
|
1147
|
+
|
|
1148
|
+
float r = liveScale * uScale * 0.5 * variantRadius(angle, b.variant, phase);
|
|
1149
|
+
|
|
1150
|
+
return 1.0 - smoothstep(r, r + uEdgeSoftness, dist);
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
void main() {
|
|
1154
|
+
vec2 uv = vUv;
|
|
1155
|
+
|
|
1156
|
+
vec2 p = uv * 2.0 - 1.0;
|
|
1157
|
+
p.x *= uResolution.x / uResolution.y;
|
|
1158
|
+
|
|
1159
|
+
vec3 blobCol = vec3(0.0);
|
|
1160
|
+
float blobAlpha = 0.0;
|
|
1161
|
+
|
|
1162
|
+
// Integer-counted loop over a compile-time bound; i is reconstructed as
|
|
1163
|
+
// float(n), so the per-blob lookups and phases match the prototype.
|
|
1164
|
+
for (int n = 0; n < BLOB_COUNT; n++) {
|
|
1165
|
+
float i = float(n);
|
|
1166
|
+
Blob b = getBlob(i);
|
|
1167
|
+
|
|
1168
|
+
float phase =
|
|
1169
|
+
uTime * b.speed * uMotionSpeed * SHAPE_MORPH_SPEED +
|
|
1170
|
+
i * 4.137;
|
|
1171
|
+
|
|
1172
|
+
vec2 center = b.pos;
|
|
1173
|
+
|
|
1174
|
+
center.x += sin(phase * 0.41 + i * 1.70) * b.drift * uMotionAmount;
|
|
1175
|
+
center.x += sin(phase * 0.19 + i * 3.10) * b.drift * uMotionAmount * 0.45;
|
|
1176
|
+
center.y += cos(phase * 0.33 + i * 2.30) * b.drift * uMotionAmount * 0.75;
|
|
1177
|
+
center.y += sin(phase * 0.17 + i * 4.40) * b.drift * uMotionAmount * 0.35;
|
|
1178
|
+
|
|
1179
|
+
center = applyCenterRepulsor(center);
|
|
1180
|
+
|
|
1181
|
+
float liveScale = animatedScale(b.scale, i, b.speed);
|
|
1182
|
+
float mask = blobMask(p, center, b, phase, liveScale);
|
|
1183
|
+
|
|
1184
|
+
float inner = pow(mask, 1.35);
|
|
1185
|
+
float rim = mask * (1.0 - smoothstep(0.45, 1.0, mask));
|
|
1186
|
+
|
|
1187
|
+
vec3 gelColor = b.color * inner + b.color * rim * 0.18;
|
|
1188
|
+
float a = mask * b.opacity * uGlobalAlpha;
|
|
1189
|
+
|
|
1190
|
+
blobCol += gelColor * a * (1.0 - blobAlpha);
|
|
1191
|
+
blobAlpha += a * (1.0 - blobAlpha);
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
// Premultiplied output; tint grades the (premultiplied) color, not alpha.
|
|
1195
|
+
oColor = vec4(blobCol * uColor, blobAlpha);
|
|
1196
|
+
}
|
|
1197
|
+
"""
|
|
1198
|
+
|
|
1199
|
+
// Generative background shaders, by name. The generic shader processor and
|
|
1200
|
+
// directory-driven registration iterate this; adding a generative .frag adds
|
|
1201
|
+
// an entry here automatically.
|
|
1202
|
+
val GENERATIVE: Map<String, String> = mapOf(
|
|
1203
|
+
"plasma" to PLASMA_FRAG,
|
|
1204
|
+
"clouds" to CLOUDS_FRAG,
|
|
1205
|
+
"nebula" to NEBULA_FRAG,
|
|
1206
|
+
"godrays" to GODRAYS_FRAG,
|
|
1207
|
+
"fireflies" to FIREFLIES_FRAG,
|
|
1208
|
+
"simianlights" to SIMIANLIGHTS_FRAG,
|
|
1209
|
+
"anamorphic-lensflare" to ANAMORPHIC_LENSFLARE_FRAG,
|
|
1210
|
+
"light-beams-and-motes" to LIGHT_BEAMS_AND_MOTES_FRAG,
|
|
1211
|
+
"corporate-blobs" to CORPORATE_BLOBS_FRAG,
|
|
1212
|
+
)
|
|
76
1213
|
}
|