@luma.gl/shaders 0.0.0-stage → 10.0.0-alpha.6
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/LICENSE +38 -0
- package/README.md +25 -2
- package/dist/dist.dev.js +19686 -0
- package/dist/dist.min.js +12180 -0
- package/dist/glsl.cjs +33 -0
- package/dist/glsl.cjs.map +6 -0
- package/dist/glsl.d.ts +6 -0
- package/dist/glsl.d.ts.map +1 -0
- package/dist/glsl.js +7 -0
- package/dist/glsl.js.map +1 -0
- package/dist/index.cjs +243 -0
- package/dist/index.cjs.map +6 -0
- package/dist/index.d.ts +91 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/color/normalize-byte-colors.cjs +50 -0
- package/dist/lib/color/normalize-byte-colors.d.ts +23 -0
- package/dist/lib/color/normalize-byte-colors.d.ts.map +1 -0
- package/dist/lib/color/normalize-byte-colors.js +42 -0
- package/dist/lib/color/normalize-byte-colors.js.map +1 -0
- package/dist/lib/filters/prop-types.cjs +90 -0
- package/dist/lib/filters/prop-types.d.ts +44 -0
- package/dist/lib/filters/prop-types.d.ts.map +1 -0
- package/dist/lib/filters/prop-types.js +96 -0
- package/dist/lib/filters/prop-types.js.map +1 -0
- package/dist/lib/glsl-shader-assembler.cjs +50 -0
- package/dist/lib/glsl-shader-assembler.d.ts +19 -0
- package/dist/lib/glsl-shader-assembler.d.ts.map +1 -0
- package/dist/lib/glsl-shader-assembler.js +29 -0
- package/dist/lib/glsl-shader-assembler.js.map +1 -0
- package/dist/lib/glsl-utils/get-shader-info.cjs +52 -0
- package/dist/lib/glsl-utils/get-shader-info.d.ts +9 -0
- package/dist/lib/glsl-utils/get-shader-info.d.ts.map +1 -0
- package/dist/lib/glsl-utils/get-shader-info.js +33 -0
- package/dist/lib/glsl-utils/get-shader-info.js.map +1 -0
- package/dist/lib/glsl-utils/shader-utils.cjs +126 -0
- package/dist/lib/glsl-utils/shader-utils.d.ts +23 -0
- package/dist/lib/glsl-utils/shader-utils.d.ts.map +1 -0
- package/dist/lib/glsl-utils/shader-utils.js +92 -0
- package/dist/lib/glsl-utils/shader-utils.js.map +1 -0
- package/dist/lib/preprocessor/preprocessor.cjs +107 -0
- package/dist/lib/preprocessor/preprocessor.d.ts +15 -0
- package/dist/lib/preprocessor/preprocessor.d.ts.map +1 -0
- package/dist/lib/preprocessor/preprocessor.js +99 -0
- package/dist/lib/preprocessor/preprocessor.js.map +1 -0
- package/dist/lib/shader-assembler-base.cjs +133 -0
- package/dist/lib/shader-assembler-base.d.ts +52 -0
- package/dist/lib/shader-assembler-base.d.ts.map +1 -0
- package/dist/lib/shader-assembler-base.js +128 -0
- package/dist/lib/shader-assembler-base.js.map +1 -0
- package/dist/lib/shader-assembler.cjs +33 -0
- package/dist/lib/shader-assembler.d.ts +4 -0
- package/dist/lib/shader-assembler.d.ts.map +1 -0
- package/dist/lib/shader-assembler.js +7 -0
- package/dist/lib/shader-assembler.js.map +1 -0
- package/dist/lib/shader-assembly/assemble-glsl-shaders.cjs +200 -0
- package/dist/lib/shader-assembly/assemble-glsl-shaders.d.ts +69 -0
- package/dist/lib/shader-assembly/assemble-glsl-shaders.d.ts.map +1 -0
- package/dist/lib/shader-assembly/assemble-glsl-shaders.js +221 -0
- package/dist/lib/shader-assembly/assemble-glsl-shaders.js.map +1 -0
- package/dist/lib/shader-assembly/assemble-shaders.cjs +42 -0
- package/dist/lib/shader-assembly/assemble-shaders.d.ts +10 -0
- package/dist/lib/shader-assembly/assemble-shaders.d.ts.map +1 -0
- package/dist/lib/shader-assembly/assemble-shaders.js +10 -0
- package/dist/lib/shader-assembly/assemble-shaders.js.map +1 -0
- package/dist/lib/shader-assembly/assemble-wgsl-shaders.cjs +501 -0
- package/dist/lib/shader-assembly/assemble-wgsl-shaders.d.ts +71 -0
- package/dist/lib/shader-assembly/assemble-wgsl-shaders.d.ts.map +1 -0
- package/dist/lib/shader-assembly/assemble-wgsl-shaders.js +473 -0
- package/dist/lib/shader-assembly/assemble-wgsl-shaders.js.map +1 -0
- package/dist/lib/shader-assembly/platform-defines.cjs +79 -0
- package/dist/lib/shader-assembly/platform-defines.d.ts +4 -0
- package/dist/lib/shader-assembly/platform-defines.d.ts.map +1 -0
- package/dist/lib/shader-assembly/platform-defines.js +52 -0
- package/dist/lib/shader-assembly/platform-defines.js.map +1 -0
- package/dist/lib/shader-assembly/platform-info.cjs +15 -0
- package/dist/lib/shader-assembly/platform-info.d.ts +20 -0
- package/dist/lib/shader-assembly/platform-info.d.ts.map +1 -0
- package/dist/lib/shader-assembly/platform-info.js +5 -0
- package/dist/lib/shader-assembly/platform-info.js.map +1 -0
- package/dist/lib/shader-assembly/shader-assembly-shared.cjs +96 -0
- package/dist/lib/shader-assembly/shader-assembly-shared.d.ts +16 -0
- package/dist/lib/shader-assembly/shader-assembly-shared.d.ts.map +1 -0
- package/dist/lib/shader-assembly/shader-assembly-shared.js +79 -0
- package/dist/lib/shader-assembly/shader-assembly-shared.js.map +1 -0
- package/dist/lib/shader-assembly/shader-assembly-types.cjs +15 -0
- package/dist/lib/shader-assembly/shader-assembly-types.d.ts +128 -0
- package/dist/lib/shader-assembly/shader-assembly-types.d.ts.map +1 -0
- package/dist/lib/shader-assembly/shader-assembly-types.js +5 -0
- package/dist/lib/shader-assembly/shader-assembly-types.js.map +1 -0
- package/dist/lib/shader-assembly/shader-hooks.cjs +103 -0
- package/dist/lib/shader-assembly/shader-hooks.d.ts +45 -0
- package/dist/lib/shader-assembly/shader-hooks.d.ts.map +1 -0
- package/dist/lib/shader-assembly/shader-hooks.js +84 -0
- package/dist/lib/shader-assembly/shader-hooks.js.map +1 -0
- package/dist/lib/shader-assembly/shader-injections.cjs +180 -0
- package/dist/lib/shader-assembly/shader-injections.d.ts +34 -0
- package/dist/lib/shader-assembly/shader-injections.d.ts.map +1 -0
- package/dist/lib/shader-assembly/shader-injections.js +183 -0
- package/dist/lib/shader-assembly/shader-injections.js.map +1 -0
- package/dist/lib/shader-assembly/shader-plugin-varyings.cjs +417 -0
- package/dist/lib/shader-assembly/shader-plugin-varyings.d.ts +15 -0
- package/dist/lib/shader-assembly/shader-plugin-varyings.d.ts.map +1 -0
- package/dist/lib/shader-assembly/shader-plugin-varyings.js +412 -0
- package/dist/lib/shader-assembly/shader-plugin-varyings.js.map +1 -0
- package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.cjs +254 -0
- package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.d.ts +12 -0
- package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.d.ts.map +1 -0
- package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.js +237 -0
- package/dist/lib/shader-assembly/shader-plugin-vertex-inputs.js.map +1 -0
- package/dist/lib/shader-assembly/wgsl-binding-debug.cjs +166 -0
- package/dist/lib/shader-assembly/wgsl-binding-debug.d.ts +37 -0
- package/dist/lib/shader-assembly/wgsl-binding-debug.d.ts.map +1 -0
- package/dist/lib/shader-assembly/wgsl-binding-debug.js +144 -0
- package/dist/lib/shader-assembly/wgsl-binding-debug.js.map +1 -0
- package/dist/lib/shader-assembly/wgsl-binding-scan.cjs +184 -0
- package/dist/lib/shader-assembly/wgsl-binding-scan.d.ts +19 -0
- package/dist/lib/shader-assembly/wgsl-binding-scan.d.ts.map +1 -0
- package/dist/lib/shader-assembly/wgsl-binding-scan.js +151 -0
- package/dist/lib/shader-assembly/wgsl-binding-scan.js.map +1 -0
- package/dist/lib/shader-assembly/wgsl-interface-scan.cjs +502 -0
- package/dist/lib/shader-assembly/wgsl-interface-scan.d.ts +14 -0
- package/dist/lib/shader-assembly/wgsl-interface-scan.d.ts.map +1 -0
- package/dist/lib/shader-assembly/wgsl-interface-scan.js +498 -0
- package/dist/lib/shader-assembly/wgsl-interface-scan.js.map +1 -0
- package/dist/lib/shader-generator/generate-shader.cjs +36 -0
- package/dist/lib/shader-generator/generate-shader.d.ts +8 -0
- package/dist/lib/shader-generator/generate-shader.d.ts.map +1 -0
- package/dist/lib/shader-generator/generate-shader.js +15 -0
- package/dist/lib/shader-generator/generate-shader.js.map +1 -0
- package/dist/lib/shader-generator/glsl/generate-glsl.cjs +94 -0
- package/dist/lib/shader-generator/glsl/generate-glsl.d.ts +7 -0
- package/dist/lib/shader-generator/glsl/generate-glsl.d.ts.map +1 -0
- package/dist/lib/shader-generator/glsl/generate-glsl.js +79 -0
- package/dist/lib/shader-generator/glsl/generate-glsl.js.map +1 -0
- package/dist/lib/shader-generator/utils/capitalize.cjs +29 -0
- package/dist/lib/shader-generator/utils/capitalize.d.ts +7 -0
- package/dist/lib/shader-generator/utils/capitalize.d.ts.map +1 -0
- package/dist/lib/shader-generator/utils/capitalize.js +12 -0
- package/dist/lib/shader-generator/utils/capitalize.js.map +1 -0
- package/dist/lib/shader-generator/wgsl/generate-wgsl.cjs +46 -0
- package/dist/lib/shader-generator/wgsl/generate-wgsl.d.ts +7 -0
- package/dist/lib/shader-generator/wgsl/generate-wgsl.d.ts.map +1 -0
- package/dist/lib/shader-generator/wgsl/generate-wgsl.js +23 -0
- package/dist/lib/shader-generator/wgsl/generate-wgsl.js.map +1 -0
- package/dist/lib/shader-module/composite-shader-pass.cjs +15 -0
- package/dist/lib/shader-module/composite-shader-pass.d.ts +41 -0
- package/dist/lib/shader-module/composite-shader-pass.d.ts.map +1 -0
- package/dist/lib/shader-module/composite-shader-pass.js +5 -0
- package/dist/lib/shader-module/composite-shader-pass.js.map +1 -0
- package/dist/lib/shader-module/shader-module-dependencies.cjs +83 -0
- package/dist/lib/shader-module/shader-module-dependencies.d.ts +39 -0
- package/dist/lib/shader-module/shader-module-dependencies.d.ts.map +1 -0
- package/dist/lib/shader-module/shader-module-dependencies.js +103 -0
- package/dist/lib/shader-module/shader-module-dependencies.js.map +1 -0
- package/dist/lib/shader-module/shader-module-uniform-layout.cjs +224 -0
- package/dist/lib/shader-module/shader-module-uniform-layout.d.ts +91 -0
- package/dist/lib/shader-module/shader-module-uniform-layout.d.ts.map +1 -0
- package/dist/lib/shader-module/shader-module-uniform-layout.js +253 -0
- package/dist/lib/shader-module/shader-module-uniform-layout.js.map +1 -0
- package/dist/lib/shader-module/shader-module.cjs +105 -0
- package/dist/lib/shader-module/shader-module.d.ts +98 -0
- package/dist/lib/shader-module/shader-module.d.ts.map +1 -0
- package/dist/lib/shader-module/shader-module.js +104 -0
- package/dist/lib/shader-module/shader-module.js.map +1 -0
- package/dist/lib/shader-module/shader-pass.cjs +15 -0
- package/dist/lib/shader-module/shader-pass.d.ts +48 -0
- package/dist/lib/shader-module/shader-pass.d.ts.map +1 -0
- package/dist/lib/shader-module/shader-pass.js +5 -0
- package/dist/lib/shader-module/shader-pass.js.map +1 -0
- package/dist/lib/shader-plugin.cjs +117 -0
- package/dist/lib/shader-plugin.d.ts +68 -0
- package/dist/lib/shader-plugin.d.ts.map +1 -0
- package/dist/lib/shader-plugin.js +98 -0
- package/dist/lib/shader-plugin.js.map +1 -0
- package/dist/lib/shader-transpiler/shader-transpiler.cjs +15 -0
- package/dist/lib/shader-transpiler/shader-transpiler.d.ts +27 -0
- package/dist/lib/shader-transpiler/shader-transpiler.d.ts.map +1 -0
- package/dist/lib/shader-transpiler/shader-transpiler.js +5 -0
- package/dist/lib/shader-transpiler/shader-transpiler.js.map +1 -0
- package/dist/lib/shader-transpiler/transpile-glsl-shader.cjs +71 -0
- package/dist/lib/shader-transpiler/transpile-glsl-shader.d.ts +9 -0
- package/dist/lib/shader-transpiler/transpile-glsl-shader.d.ts.map +1 -0
- package/dist/lib/shader-transpiler/transpile-glsl-shader.js +69 -0
- package/dist/lib/shader-transpiler/transpile-glsl-shader.js.map +1 -0
- package/dist/lib/utils/assert.cjs +34 -0
- package/dist/lib/utils/assert.d.ts +2 -0
- package/dist/lib/utils/assert.d.ts.map +1 -0
- package/dist/lib/utils/assert.js +13 -0
- package/dist/lib/utils/assert.js.map +1 -0
- package/dist/lib/utils/uniform-types.cjs +15 -0
- package/dist/lib/utils/uniform-types.d.ts +18 -0
- package/dist/lib/utils/uniform-types.d.ts.map +1 -0
- package/dist/lib/utils/uniform-types.js +5 -0
- package/dist/lib/utils/uniform-types.js.map +1 -0
- package/dist/lib/wgsl-shader-assembler.cjs +99 -0
- package/dist/lib/wgsl-shader-assembler.d.ts +34 -0
- package/dist/lib/wgsl-shader-assembler.d.ts.map +1 -0
- package/dist/lib/wgsl-shader-assembler.js +84 -0
- package/dist/lib/wgsl-shader-assembler.js.map +1 -0
- package/dist/module-injectors.cjs +59 -0
- package/dist/module-injectors.d.ts +3 -0
- package/dist/module-injectors.d.ts.map +1 -0
- package/dist/module-injectors.js +31 -0
- package/dist/module-injectors.js.map +1 -0
- package/dist/modules/color/float-colors.cjs +275 -0
- package/dist/modules/color/float-colors.d.ts +132 -0
- package/dist/modules/color/float-colors.d.ts.map +1 -0
- package/dist/modules/color/float-colors.js +248 -0
- package/dist/modules/color/float-colors.js.map +1 -0
- package/dist/modules/engine/clip/clip.cjs +152 -0
- package/dist/modules/engine/clip/clip.d.ts +12 -0
- package/dist/modules/engine/clip/clip.d.ts.map +1 -0
- package/dist/modules/engine/clip/clip.js +129 -0
- package/dist/modules/engine/clip/clip.js.map +1 -0
- package/dist/modules/engine/filter/filter.cjs +111 -0
- package/dist/modules/engine/filter/filter.d.ts +12 -0
- package/dist/modules/engine/filter/filter.d.ts.map +1 -0
- package/dist/modules/engine/filter/filter.js +88 -0
- package/dist/modules/engine/filter/filter.js.map +1 -0
- package/dist/modules/engine/geometry/geometry.cjs +63 -0
- package/dist/modules/engine/geometry/geometry.d.ts +9 -0
- package/dist/modules/engine/geometry/geometry.d.ts.map +1 -0
- package/dist/modules/engine/geometry/geometry.js +42 -0
- package/dist/modules/engine/geometry/geometry.js.map +1 -0
- package/dist/modules/engine/gpu-animation/gpu-animation.cjs +255 -0
- package/dist/modules/engine/gpu-animation/gpu-animation.d.ts +34 -0
- package/dist/modules/engine/gpu-animation/gpu-animation.d.ts.map +1 -0
- package/dist/modules/engine/gpu-animation/gpu-animation.js +228 -0
- package/dist/modules/engine/gpu-animation/gpu-animation.js.map +1 -0
- package/dist/modules/engine/picking/picking.cjs +210 -0
- package/dist/modules/engine/picking/picking.d.ts +77 -0
- package/dist/modules/engine/picking/picking.d.ts.map +1 -0
- package/dist/modules/engine/picking/picking.js +198 -0
- package/dist/modules/engine/picking/picking.js.map +1 -0
- package/dist/modules/engine/project/project.cjs +138 -0
- package/dist/modules/engine/project/project.d.ts +39 -0
- package/dist/modules/engine/project/project.d.ts.map +1 -0
- package/dist/modules/engine/project/project.js +129 -0
- package/dist/modules/engine/project/project.js.map +1 -0
- package/dist/modules/engine/skin/skin.cjs +212 -0
- package/dist/modules/engine/skin/skin.d.ts +52 -0
- package/dist/modules/engine/skin/skin.d.ts.map +1 -0
- package/dist/modules/engine/skin/skin.js +179 -0
- package/dist/modules/engine/skin/skin.js.map +1 -0
- package/dist/modules/engine/transform/transform.cjs +72 -0
- package/dist/modules/engine/transform/transform.d.ts +6 -0
- package/dist/modules/engine/transform/transform.d.ts.map +1 -0
- package/dist/modules/engine/transform/transform.js +49 -0
- package/dist/modules/engine/transform/transform.js.map +1 -0
- package/dist/modules/geometry/path-dash/path-dash.cjs +93 -0
- package/dist/modules/geometry/path-dash/path-dash.d.ts +10 -0
- package/dist/modules/geometry/path-dash/path-dash.d.ts.map +1 -0
- package/dist/modules/geometry/path-dash/path-dash.js +66 -0
- package/dist/modules/geometry/path-dash/path-dash.js.map +1 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.cjs +117 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.d.ts +3 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.d.ts.map +1 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.js +87 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill-shaders.js.map +1 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill.cjs +64 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill.d.ts +14 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill.d.ts.map +1 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill.js +43 -0
- package/dist/modules/geometry/pattern-fill/pattern-fill.js.map +1 -0
- package/dist/modules/geometry/point-glow/point-glow.cjs +104 -0
- package/dist/modules/geometry/point-glow/point-glow.d.ts +11 -0
- package/dist/modules/geometry/point-glow/point-glow.d.ts.map +1 -0
- package/dist/modules/geometry/point-glow/point-glow.js +77 -0
- package/dist/modules/geometry/point-glow/point-glow.js.map +1 -0
- package/dist/modules/geometry/precipitation/precipitation.cjs +122 -0
- package/dist/modules/geometry/precipitation/precipitation.d.ts +40 -0
- package/dist/modules/geometry/precipitation/precipitation.d.ts.map +1 -0
- package/dist/modules/geometry/precipitation/precipitation.js +95 -0
- package/dist/modules/geometry/precipitation/precipitation.js.map +1 -0
- package/dist/modules/geometry/sketch-stroke/sketch-stroke.cjs +158 -0
- package/dist/modules/geometry/sketch-stroke/sketch-stroke.d.ts +60 -0
- package/dist/modules/geometry/sketch-stroke/sketch-stroke.d.ts.map +1 -0
- package/dist/modules/geometry/sketch-stroke/sketch-stroke.js +137 -0
- package/dist/modules/geometry/sketch-stroke/sketch-stroke.js.map +1 -0
- package/dist/modules/geospatial/dggs/dggs-wgsl.cjs +2304 -0
- package/dist/modules/geospatial/dggs/dggs-wgsl.d.ts +3 -0
- package/dist/modules/geospatial/dggs/dggs-wgsl.d.ts.map +1 -0
- package/dist/modules/geospatial/dggs/dggs-wgsl.js +2283 -0
- package/dist/modules/geospatial/dggs/dggs-wgsl.js.map +1 -0
- package/dist/modules/geospatial/dggs/dggs.cjs +31 -0
- package/dist/modules/geospatial/dggs/dggs.d.ts +6 -0
- package/dist/modules/geospatial/dggs/dggs.d.ts.map +1 -0
- package/dist/modules/geospatial/dggs/dggs.js +10 -0
- package/dist/modules/geospatial/dggs/dggs.js.map +1 -0
- package/dist/modules/lighting/area-lighting/area-light-types.cjs +68 -0
- package/dist/modules/lighting/area-lighting/area-light-types.d.ts +34 -0
- package/dist/modules/lighting/area-lighting/area-light-types.d.ts.map +1 -0
- package/dist/modules/lighting/area-lighting/area-light-types.js +40 -0
- package/dist/modules/lighting/area-lighting/area-light-types.js.map +1 -0
- package/dist/modules/lighting/area-lighting/area-lighting-shaders.cjs +101 -0
- package/dist/modules/lighting/area-lighting/area-lighting-shaders.d.ts +3 -0
- package/dist/modules/lighting/area-lighting/area-lighting-shaders.d.ts.map +1 -0
- package/dist/modules/lighting/area-lighting/area-lighting-shaders.js +71 -0
- package/dist/modules/lighting/area-lighting/area-lighting-shaders.js.map +1 -0
- package/dist/modules/lighting/area-lighting/area-lighting.cjs +62 -0
- package/dist/modules/lighting/area-lighting/area-lighting.d.ts +89 -0
- package/dist/modules/lighting/area-lighting/area-lighting.d.ts.map +1 -0
- package/dist/modules/lighting/area-lighting/area-lighting.js +41 -0
- package/dist/modules/lighting/area-lighting/area-lighting.js.map +1 -0
- package/dist/modules/lighting/area-lighting/ltc-shaders.cjs +192 -0
- package/dist/modules/lighting/area-lighting/ltc-shaders.d.ts +3 -0
- package/dist/modules/lighting/area-lighting/ltc-shaders.d.ts.map +1 -0
- package/dist/modules/lighting/area-lighting/ltc-shaders.js +162 -0
- package/dist/modules/lighting/area-lighting/ltc-shaders.js.map +1 -0
- package/dist/modules/lighting/atmosphere/atmosphere.cjs +253 -0
- package/dist/modules/lighting/atmosphere/atmosphere.d.ts +45 -0
- package/dist/modules/lighting/atmosphere/atmosphere.d.ts.map +1 -0
- package/dist/modules/lighting/atmosphere/atmosphere.js +228 -0
- package/dist/modules/lighting/atmosphere/atmosphere.js.map +1 -0
- package/dist/modules/lighting/clouds/clouds.cjs +216 -0
- package/dist/modules/lighting/clouds/clouds.d.ts +58 -0
- package/dist/modules/lighting/clouds/clouds.d.ts.map +1 -0
- package/dist/modules/lighting/clouds/clouds.js +192 -0
- package/dist/modules/lighting/clouds/clouds.js.map +1 -0
- package/dist/modules/lighting/firefly/firefly.cjs +74 -0
- package/dist/modules/lighting/firefly/firefly.d.ts +36 -0
- package/dist/modules/lighting/firefly/firefly.d.ts.map +1 -0
- package/dist/modules/lighting/firefly/firefly.js +53 -0
- package/dist/modules/lighting/firefly/firefly.js.map +1 -0
- package/dist/modules/lighting/globe-clouds/globe-clouds.cjs +143 -0
- package/dist/modules/lighting/globe-clouds/globe-clouds.d.ts +53 -0
- package/dist/modules/lighting/globe-clouds/globe-clouds.d.ts.map +1 -0
- package/dist/modules/lighting/globe-clouds/globe-clouds.js +119 -0
- package/dist/modules/lighting/globe-clouds/globe-clouds.js.map +1 -0
- package/dist/modules/lighting/gouraud-material/gouraud-material.cjs +61 -0
- package/dist/modules/lighting/gouraud-material/gouraud-material.d.ts +12 -0
- package/dist/modules/lighting/gouraud-material/gouraud-material.d.ts.map +1 -0
- package/dist/modules/lighting/gouraud-material/gouraud-material.js +40 -0
- package/dist/modules/lighting/gouraud-material/gouraud-material.js.map +1 -0
- package/dist/modules/lighting/height-fog/height-fog-functions.cjs +139 -0
- package/dist/modules/lighting/height-fog/height-fog-functions.d.ts +14 -0
- package/dist/modules/lighting/height-fog/height-fog-functions.d.ts.map +1 -0
- package/dist/modules/lighting/height-fog/height-fog-functions.js +114 -0
- package/dist/modules/lighting/height-fog/height-fog-functions.js.map +1 -0
- package/dist/modules/lighting/height-fog/height-fog.cjs +104 -0
- package/dist/modules/lighting/height-fog/height-fog.d.ts +60 -0
- package/dist/modules/lighting/height-fog/height-fog.d.ts.map +1 -0
- package/dist/modules/lighting/height-fog/height-fog.js +77 -0
- package/dist/modules/lighting/height-fog/height-fog.js.map +1 -0
- package/dist/modules/lighting/ibl/ibl.cjs +63 -0
- package/dist/modules/lighting/ibl/ibl.d.ts +25 -0
- package/dist/modules/lighting/ibl/ibl.d.ts.map +1 -0
- package/dist/modules/lighting/ibl/ibl.js +33 -0
- package/dist/modules/lighting/ibl/ibl.js.map +1 -0
- package/dist/modules/lighting/lambert-material/lambert-material.cjs +54 -0
- package/dist/modules/lighting/lambert-material/lambert-material.d.ts +10 -0
- package/dist/modules/lighting/lambert-material/lambert-material.d.ts.map +1 -0
- package/dist/modules/lighting/lambert-material/lambert-material.js +33 -0
- package/dist/modules/lighting/lambert-material/lambert-material.js.map +1 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.cjs +88 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.d.ts +3 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.d.ts.map +1 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.js +60 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-glsl.js.map +1 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.cjs +97 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.d.ts +2 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.d.ts.map +1 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.js +73 -0
- package/dist/modules/lighting/lambert-material/lambert-shaders-wgsl.js.map +1 -0
- package/dist/modules/lighting/lights/lighting-glsl.cjs +116 -0
- package/dist/modules/lighting/lights/lighting-glsl.d.ts +2 -0
- package/dist/modules/lighting/lights/lighting-glsl.d.ts.map +1 -0
- package/dist/modules/lighting/lights/lighting-glsl.js +92 -0
- package/dist/modules/lighting/lights/lighting-glsl.js.map +1 -0
- package/dist/modules/lighting/lights/lighting-wgsl.cjs +115 -0
- package/dist/modules/lighting/lights/lighting-wgsl.d.ts +2 -0
- package/dist/modules/lighting/lights/lighting-wgsl.d.ts.map +1 -0
- package/dist/modules/lighting/lights/lighting-wgsl.js +91 -0
- package/dist/modules/lighting/lights/lighting-wgsl.js.map +1 -0
- package/dist/modules/lighting/lights/lighting.cjs +210 -0
- package/dist/modules/lighting/lights/lighting.d.ts +163 -0
- package/dist/modules/lighting/lights/lighting.d.ts.map +1 -0
- package/dist/modules/lighting/lights/lighting.js +208 -0
- package/dist/modules/lighting/lights/lighting.js.map +1 -0
- package/dist/modules/lighting/no-material/dirlight.cjs +112 -0
- package/dist/modules/lighting/no-material/dirlight.d.ts +33 -0
- package/dist/modules/lighting/no-material/dirlight.d.ts.map +1 -0
- package/dist/modules/lighting/no-material/dirlight.js +86 -0
- package/dist/modules/lighting/no-material/dirlight.js.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-material-glsl.cjs +1767 -0
- package/dist/modules/lighting/pbr-material/pbr-material-glsl.d.ts +3 -0
- package/dist/modules/lighting/pbr-material/pbr-material-glsl.d.ts.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-material-glsl.js +1745 -0
- package/dist/modules/lighting/pbr-material/pbr-material-glsl.js.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-material-wgsl.cjs +2062 -0
- package/dist/modules/lighting/pbr-material/pbr-material-wgsl.d.ts +3 -0
- package/dist/modules/lighting/pbr-material/pbr-material-wgsl.d.ts.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-material-wgsl.js +2040 -0
- package/dist/modules/lighting/pbr-material/pbr-material-wgsl.js.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-material.cjs +315 -0
- package/dist/modules/lighting/pbr-material/pbr-material.d.ts +516 -0
- package/dist/modules/lighting/pbr-material/pbr-material.d.ts.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-material.js +292 -0
- package/dist/modules/lighting/pbr-material/pbr-material.js.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-projection.cjs +63 -0
- package/dist/modules/lighting/pbr-material/pbr-projection.d.ts +10 -0
- package/dist/modules/lighting/pbr-material/pbr-projection.d.ts.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-projection.js +37 -0
- package/dist/modules/lighting/pbr-material/pbr-projection.js.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-scene.cjs +109 -0
- package/dist/modules/lighting/pbr-material/pbr-scene.d.ts +52 -0
- package/dist/modules/lighting/pbr-material/pbr-scene.d.ts.map +1 -0
- package/dist/modules/lighting/pbr-material/pbr-scene.js +83 -0
- package/dist/modules/lighting/pbr-material/pbr-scene.js.map +1 -0
- package/dist/modules/lighting/phong-material/phong-material.cjs +61 -0
- package/dist/modules/lighting/phong-material/phong-material.d.ts +13 -0
- package/dist/modules/lighting/phong-material/phong-material.d.ts.map +1 -0
- package/dist/modules/lighting/phong-material/phong-material.js +40 -0
- package/dist/modules/lighting/phong-material/phong-material.js.map +1 -0
- package/dist/modules/lighting/phong-material/phong-shaders-glsl.cjs +100 -0
- package/dist/modules/lighting/phong-material/phong-shaders-glsl.d.ts +3 -0
- package/dist/modules/lighting/phong-material/phong-shaders-glsl.d.ts.map +1 -0
- package/dist/modules/lighting/phong-material/phong-shaders-glsl.js +72 -0
- package/dist/modules/lighting/phong-material/phong-shaders-glsl.js.map +1 -0
- package/dist/modules/lighting/phong-material/phong-shaders-wgsl.cjs +153 -0
- package/dist/modules/lighting/phong-material/phong-shaders-wgsl.d.ts +2 -0
- package/dist/modules/lighting/phong-material/phong-shaders-wgsl.d.ts.map +1 -0
- package/dist/modules/lighting/phong-material/phong-shaders-wgsl.js +129 -0
- package/dist/modules/lighting/phong-material/phong-shaders-wgsl.js.map +1 -0
- package/dist/modules/lighting/surface-weather/surface-weather.cjs +199 -0
- package/dist/modules/lighting/surface-weather/surface-weather.d.ts +54 -0
- package/dist/modules/lighting/surface-weather/surface-weather.d.ts.map +1 -0
- package/dist/modules/lighting/surface-weather/surface-weather.js +175 -0
- package/dist/modules/lighting/surface-weather/surface-weather.js.map +1 -0
- package/dist/modules/lighting/water-material/river-water-material.cjs +56 -0
- package/dist/modules/lighting/water-material/river-water-material.d.ts +21 -0
- package/dist/modules/lighting/water-material/river-water-material.d.ts.map +1 -0
- package/dist/modules/lighting/water-material/river-water-material.js +36 -0
- package/dist/modules/lighting/water-material/river-water-material.js.map +1 -0
- package/dist/modules/lighting/water-material/river-water-shaders.cjs +261 -0
- package/dist/modules/lighting/water-material/river-water-shaders.d.ts +3 -0
- package/dist/modules/lighting/water-material/river-water-shaders.d.ts.map +1 -0
- package/dist/modules/lighting/water-material/river-water-shaders.js +233 -0
- package/dist/modules/lighting/water-material/river-water-shaders.js.map +1 -0
- package/dist/modules/lighting/water-material/water-material.cjs +188 -0
- package/dist/modules/lighting/water-material/water-material.d.ts +28 -0
- package/dist/modules/lighting/water-material/water-material.d.ts.map +1 -0
- package/dist/modules/lighting/water-material/water-material.js +179 -0
- package/dist/modules/lighting/water-material/water-material.js.map +1 -0
- package/dist/modules/lighting/water-material/water-shaders-glsl.cjs +260 -0
- package/dist/modules/lighting/water-material/water-shaders-glsl.d.ts +3 -0
- package/dist/modules/lighting/water-material/water-shaders-glsl.d.ts.map +1 -0
- package/dist/modules/lighting/water-material/water-shaders-glsl.js +232 -0
- package/dist/modules/lighting/water-material/water-shaders-glsl.js.map +1 -0
- package/dist/modules/lighting/water-material/water-shaders-wgsl.cjs +254 -0
- package/dist/modules/lighting/water-material/water-shaders-wgsl.d.ts +2 -0
- package/dist/modules/lighting/water-material/water-shaders-wgsl.d.ts.map +1 -0
- package/dist/modules/lighting/water-material/water-shaders-wgsl.js +230 -0
- package/dist/modules/lighting/water-material/water-shaders-wgsl.js.map +1 -0
- package/dist/modules/math/fp16/fp16-utils.cjs +112 -0
- package/dist/modules/math/fp16/fp16-utils.d.ts +13 -0
- package/dist/modules/math/fp16/fp16-utils.d.ts.map +1 -0
- package/dist/modules/math/fp16/fp16-utils.js +118 -0
- package/dist/modules/math/fp16/fp16-utils.js.map +1 -0
- package/dist/modules/math/fp32/fp32.cjs +310 -0
- package/dist/modules/math/fp32/fp32.d.ts +9 -0
- package/dist/modules/math/fp32/fp32.d.ts.map +1 -0
- package/dist/modules/math/fp32/fp32.js +288 -0
- package/dist/modules/math/fp32/fp32.js.map +1 -0
- package/dist/modules/math/fp64/fp64-arithmetic-glsl.cjs +229 -0
- package/dist/modules/math/fp64/fp64-arithmetic-glsl.d.ts +2 -0
- package/dist/modules/math/fp64/fp64-arithmetic-glsl.d.ts.map +1 -0
- package/dist/modules/math/fp64/fp64-arithmetic-glsl.js +205 -0
- package/dist/modules/math/fp64/fp64-arithmetic-glsl.js.map +1 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.cjs +144 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.d.ts +10 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.d.ts.map +1 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.js +128 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.js.map +1 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.cjs +583 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.d.ts +11 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.d.ts.map +1 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.js +563 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl-integer.js.map +1 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl.cjs +946 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl.d.ts +3 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl.d.ts.map +1 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl.js +923 -0
- package/dist/modules/math/fp64/fp64-arithmetic-wgsl.js.map +1 -0
- package/dist/modules/math/fp64/fp64-functions-glsl.cjs +699 -0
- package/dist/modules/math/fp64/fp64-functions-glsl.d.ts +2 -0
- package/dist/modules/math/fp64/fp64-functions-glsl.d.ts.map +1 -0
- package/dist/modules/math/fp64/fp64-functions-glsl.js +675 -0
- package/dist/modules/math/fp64/fp64-functions-glsl.js.map +1 -0
- package/dist/modules/math/fp64/fp64-functions-wgsl.cjs +180 -0
- package/dist/modules/math/fp64/fp64-functions-wgsl.d.ts +3 -0
- package/dist/modules/math/fp64/fp64-functions-wgsl.d.ts.map +1 -0
- package/dist/modules/math/fp64/fp64-functions-wgsl.js +157 -0
- package/dist/modules/math/fp64/fp64-functions-wgsl.js.map +1 -0
- package/dist/modules/math/fp64/fp64-utils.cjs +50 -0
- package/dist/modules/math/fp64/fp64-utils.d.ts +22 -0
- package/dist/modules/math/fp64/fp64-utils.d.ts.map +1 -0
- package/dist/modules/math/fp64/fp64-utils.js +42 -0
- package/dist/modules/math/fp64/fp64-utils.js.map +1 -0
- package/dist/modules/math/fp64/fp64.cjs +68 -0
- package/dist/modules/math/fp64/fp64.d.ts +24 -0
- package/dist/modules/math/fp64/fp64.d.ts.map +1 -0
- package/dist/modules/math/fp64/fp64.js +46 -0
- package/dist/modules/math/fp64/fp64.js.map +1 -0
- package/dist/modules/math/random/random.cjs +46 -0
- package/dist/modules/math/random/random.d.ts +7 -0
- package/dist/modules/math/random/random.d.ts.map +1 -0
- package/dist/modules/math/random/random.js +21 -0
- package/dist/modules/math/random/random.js.map +1 -0
- package/dist/modules/math/value-noise/value-noise.cjs +95 -0
- package/dist/modules/math/value-noise/value-noise.d.ts +7 -0
- package/dist/modules/math/value-noise/value-noise.d.ts.map +1 -0
- package/dist/modules/math/value-noise/value-noise.js +68 -0
- package/dist/modules/math/value-noise/value-noise.js.map +1 -0
- package/dist/modules/volume/volume-raymarch.cjs +107 -0
- package/dist/modules/volume/volume-raymarch.d.ts +6 -0
- package/dist/modules/volume/volume-raymarch.d.ts.map +1 -0
- package/dist/modules/volume/volume-raymarch.js +84 -0
- package/dist/modules/volume/volume-raymarch.js.map +1 -0
- package/dist/types/align-to.cjs +38 -0
- package/dist/types/align-to.d.ts +3 -0
- package/dist/types/align-to.d.ts.map +1 -0
- package/dist/types/align-to.js +13 -0
- package/dist/types/align-to.js.map +1 -0
- package/dist/types/primitive-data-types.cjs +15 -0
- package/dist/types/primitive-data-types.d.ts +7 -0
- package/dist/types/primitive-data-types.d.ts.map +1 -0
- package/dist/types/primitive-data-types.js +5 -0
- package/dist/types/primitive-data-types.js.map +1 -0
- package/dist/types/sampler-props.cjs +15 -0
- package/dist/types/sampler-props.d.ts +26 -0
- package/dist/types/sampler-props.d.ts.map +1 -0
- package/dist/types/sampler-props.js +5 -0
- package/dist/types/sampler-props.js.map +1 -0
- package/dist/types/shader-block-layout.cjs +184 -0
- package/dist/types/shader-block-layout.d.ts +72 -0
- package/dist/types/shader-block-layout.d.ts.map +1 -0
- package/dist/types/shader-block-layout.js +209 -0
- package/dist/types/shader-block-layout.js.map +1 -0
- package/dist/types/shader-layout.cjs +15 -0
- package/dist/types/shader-layout.d.ts +178 -0
- package/dist/types/shader-layout.d.ts.map +1 -0
- package/dist/types/shader-layout.js +5 -0
- package/dist/types/shader-layout.js.map +1 -0
- package/dist/types/shader-type-decoder.cjs +240 -0
- package/dist/types/shader-type-decoder.d.ts +41 -0
- package/dist/types/shader-type-decoder.d.ts.map +1 -0
- package/dist/types/shader-type-decoder.js +210 -0
- package/dist/types/shader-type-decoder.js.map +1 -0
- package/dist/types/shader-types.cjs +15 -0
- package/dist/types/shader-types.d.ts +101 -0
- package/dist/types/shader-types.d.ts.map +1 -0
- package/dist/types/shader-types.js +30 -0
- package/dist/types/shader-types.js.map +1 -0
- package/dist/types/texture-formats.cjs +15 -0
- package/dist/types/texture-formats.d.ts +24 -0
- package/dist/types/texture-formats.d.ts.map +1 -0
- package/dist/types/texture-formats.js +5 -0
- package/dist/types/texture-formats.js.map +1 -0
- package/dist/types.cjs +42 -0
- package/dist/types.cjs.map +6 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/wgsl.cjs +39 -0
- package/dist/wgsl.cjs.map +6 -0
- package/dist/wgsl.d.ts +8 -0
- package/dist/wgsl.d.ts.map +1 -0
- package/dist/wgsl.js +9 -0
- package/dist/wgsl.js.map +1 -0
- package/package.json +65 -4
- package/src/glsl.ts +13 -0
- package/src/index.ts +259 -0
- package/src/lib/color/normalize-byte-colors.ts +57 -0
- package/src/lib/filters/prop-types.ts +150 -0
- package/src/lib/glsl-shader-assembler.ts +39 -0
- package/src/lib/glsl-utils/get-shader-info.ts +42 -0
- package/src/lib/glsl-utils/shader-utils.ts +110 -0
- package/src/lib/preprocessor/preprocessor.ts +132 -0
- package/src/lib/shader-assembler-base.ts +170 -0
- package/src/lib/shader-assembler.ts +7 -0
- package/src/lib/shader-assembly/assemble-glsl-shaders.ts +305 -0
- package/src/lib/shader-assembly/assemble-shaders.ts +13 -0
- package/src/lib/shader-assembly/assemble-wgsl-shaders.ts +801 -0
- package/src/lib/shader-assembly/platform-defines.ts +58 -0
- package/src/lib/shader-assembly/platform-info.ts +23 -0
- package/src/lib/shader-assembly/shader-assembly-shared.ts +95 -0
- package/src/lib/shader-assembly/shader-assembly-types.ts +142 -0
- package/src/lib/shader-assembly/shader-hooks.ts +141 -0
- package/src/lib/shader-assembly/shader-injections.ts +250 -0
- package/src/lib/shader-assembly/shader-plugin-varyings.ts +524 -0
- package/src/lib/shader-assembly/shader-plugin-vertex-inputs.ts +279 -0
- package/src/lib/shader-assembly/wgsl-binding-debug.ts +227 -0
- package/src/lib/shader-assembly/wgsl-binding-scan.ts +228 -0
- package/src/lib/shader-assembly/wgsl-interface-scan.ts +676 -0
- package/src/lib/shader-generator/generate-shader.ts +27 -0
- package/src/lib/shader-generator/glsl/generate-glsl.ts +101 -0
- package/src/lib/shader-generator/utils/capitalize.ts +12 -0
- package/src/lib/shader-generator/wgsl/generate-wgsl.ts +40 -0
- package/src/lib/shader-module/composite-shader-pass.ts +47 -0
- package/src/lib/shader-module/shader-module-dependencies.ts +128 -0
- package/src/lib/shader-module/shader-module-uniform-layout.ts +420 -0
- package/src/lib/shader-module/shader-module.ts +244 -0
- package/src/lib/shader-module/shader-pass.ts +69 -0
- package/src/lib/shader-plugin.ts +214 -0
- package/src/lib/shader-transpiler/shader-transpiler.ts +34 -0
- package/src/lib/shader-transpiler/transpile-glsl-shader.ts +78 -0
- package/src/lib/utils/assert.ts +13 -0
- package/src/lib/utils/uniform-types.ts +89 -0
- package/src/lib/wgsl-shader-assembler.ts +122 -0
- package/src/module-injectors.ts +32 -0
- package/src/modules/color/float-colors.ts +334 -0
- package/src/modules/engine/clip/clip.ts +149 -0
- package/src/modules/engine/filter/filter.ts +107 -0
- package/src/modules/engine/geometry/geometry.ts +45 -0
- package/src/modules/engine/gpu-animation/gpu-animation.ts +244 -0
- package/src/modules/engine/picking/README.md +88 -0
- package/src/modules/engine/picking/picking.ts +252 -0
- package/src/modules/engine/project/project.ts +166 -0
- package/src/modules/engine/skin/skin.ts +233 -0
- package/src/modules/engine/transform/transform.ts +50 -0
- package/src/modules/geometry/path-dash/path-dash.ts +68 -0
- package/src/modules/geometry/pattern-fill/pattern-fill-shaders.ts +88 -0
- package/src/modules/geometry/pattern-fill/pattern-fill.ts +54 -0
- package/src/modules/geometry/point-glow/point-glow.ts +87 -0
- package/src/modules/geometry/precipitation/README.md +19 -0
- package/src/modules/geometry/precipitation/precipitation.ts +108 -0
- package/src/modules/geometry/sketch-stroke/sketch-stroke.ts +160 -0
- package/src/modules/geospatial/dggs/dggs-wgsl.ts +2284 -0
- package/src/modules/geospatial/dggs/dggs.ts +12 -0
- package/src/modules/lighting/area-lighting/area-light-types.ts +71 -0
- package/src/modules/lighting/area-lighting/area-lighting-shaders.ts +72 -0
- package/src/modules/lighting/area-lighting/area-lighting.ts +63 -0
- package/src/modules/lighting/area-lighting/ltc-shaders.ts +163 -0
- package/src/modules/lighting/atmosphere/README.md +25 -0
- package/src/modules/lighting/atmosphere/atmosphere.ts +246 -0
- package/src/modules/lighting/clouds/README.md +24 -0
- package/src/modules/lighting/clouds/clouds.ts +216 -0
- package/src/modules/lighting/firefly/firefly.ts +64 -0
- package/src/modules/lighting/globe-clouds/globe-clouds.ts +124 -0
- package/src/modules/lighting/gouraud-material/gouraud-material.ts +55 -0
- package/src/modules/lighting/height-fog/README.md +36 -0
- package/src/modules/lighting/height-fog/height-fog-functions.ts +116 -0
- package/src/modules/lighting/height-fog/height-fog.ts +96 -0
- package/src/modules/lighting/ibl/ibl.ts +43 -0
- package/src/modules/lighting/lambert-material/lambert-material.ts +42 -0
- package/src/modules/lighting/lambert-material/lambert-shaders-glsl.ts +61 -0
- package/src/modules/lighting/lambert-material/lambert-shaders-wgsl.ts +73 -0
- package/src/modules/lighting/lights/lighting-glsl.ts +92 -0
- package/src/modules/lighting/lights/lighting-wgsl.ts +91 -0
- package/src/modules/lighting/lights/lighting.ts +385 -0
- package/src/modules/lighting/no-material/dirlight.ts +101 -0
- package/src/modules/lighting/pbr-material/pbr-material-glsl.ts +1748 -0
- package/src/modules/lighting/pbr-material/pbr-material-wgsl.ts +2043 -0
- package/src/modules/lighting/pbr-material/pbr-material.ts +517 -0
- package/src/modules/lighting/pbr-material/pbr-projection.ts +50 -0
- package/src/modules/lighting/pbr-material/pbr-scene.ts +112 -0
- package/src/modules/lighting/phong-material/phong-material.ts +53 -0
- package/src/modules/lighting/phong-material/phong-shaders-glsl.ts +73 -0
- package/src/modules/lighting/phong-material/phong-shaders-wgsl.ts +129 -0
- package/src/modules/lighting/surface-weather/README.md +28 -0
- package/src/modules/lighting/surface-weather/surface-weather.ts +198 -0
- package/src/modules/lighting/water-material/river-water-material.ts +58 -0
- package/src/modules/lighting/water-material/river-water-shaders.ts +234 -0
- package/src/modules/lighting/water-material/water-material.ts +234 -0
- package/src/modules/lighting/water-material/water-shaders-glsl.ts +233 -0
- package/src/modules/lighting/water-material/water-shaders-wgsl.ts +230 -0
- package/src/modules/math/fp16/fp16-utils.ts +156 -0
- package/src/modules/math/fp32/fp32.ts +291 -0
- package/src/modules/math/fp64/fp64-arithmetic-glsl.ts +205 -0
- package/src/modules/math/fp64/fp64-arithmetic-wgsl-hybrid.ts +129 -0
- package/src/modules/math/fp64/fp64-arithmetic-wgsl-integer.ts +564 -0
- package/src/modules/math/fp64/fp64-arithmetic-wgsl.ts +924 -0
- package/src/modules/math/fp64/fp64-functions-glsl.ts +675 -0
- package/src/modules/math/fp64/fp64-functions-wgsl.ts +157 -0
- package/src/modules/math/fp64/fp64-utils.ts +46 -0
- package/src/modules/math/fp64/fp64.ts +64 -0
- package/src/modules/math/random/random.ts +25 -0
- package/src/modules/math/value-noise/value-noise.ts +70 -0
- package/src/modules/volume/volume-raymarch.ts +87 -0
- package/src/types/align-to.ts +13 -0
- package/src/types/primitive-data-types.ts +10 -0
- package/src/types/sampler-props.ts +39 -0
- package/src/types/shader-block-layout.ts +340 -0
- package/src/types/shader-layout.ts +208 -0
- package/src/types/shader-type-decoder.ts +285 -0
- package/src/types/shader-types.ts +207 -0
- package/src/types/texture-formats.ts +155 -0
- package/src/types.ts +48 -0
- package/src/wgsl.ts +23 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {ShaderBinding as Binding, SamplerProps, TextureFormat} from '../../types';
|
|
6
|
+
import type {PickBindings, PickUniforms, ShaderModule} from './shader-module';
|
|
7
|
+
import type {UniformValue} from '../utils/uniform-types';
|
|
8
|
+
|
|
9
|
+
export type ShaderPassRenderTarget = {
|
|
10
|
+
/** Width and height scale relative to the renderer output size. */
|
|
11
|
+
scale?: [number, number];
|
|
12
|
+
/** Render target format. Defaults to the device preferred color format. */
|
|
13
|
+
format?: TextureFormat;
|
|
14
|
+
/** Optional sampling behavior when later passes read this target. */
|
|
15
|
+
sampler?: SamplerProps;
|
|
16
|
+
/** Reuse an earlier transient target with an identical size, format, and sampler. */
|
|
17
|
+
aliasFor?: string;
|
|
18
|
+
/** Allow WebGPU compute shaders to write this target as a storage texture. */
|
|
19
|
+
storage?: boolean;
|
|
20
|
+
/** Resource lifetime. History targets retain their last successfully rendered value. */
|
|
21
|
+
lifetime?: 'transient' | 'history';
|
|
22
|
+
/** Initial value used after construction, resize, or an explicit history reset. */
|
|
23
|
+
initialize?: 'original' | {clearColor: [number, number, number, number]};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type ShaderPassInputSource<TargetNameT extends string = string> =
|
|
27
|
+
| 'original'
|
|
28
|
+
| 'previous'
|
|
29
|
+
| TargetNameT;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* A ShaderPass is a ShaderModule that can be run "standalone" (e.g. post processing effects)
|
|
33
|
+
* It adds additional information on how to run the module.
|
|
34
|
+
* A ShaderPass can require one or more sub passes.
|
|
35
|
+
*/
|
|
36
|
+
export type ShaderPass<
|
|
37
|
+
PropsT extends Record<string, any> = Record<string, any>,
|
|
38
|
+
UniformsT extends Record<string, UniformValue> = PickUniforms<PropsT>,
|
|
39
|
+
BindingsT extends Record<string, Binding> = PickBindings<PropsT>,
|
|
40
|
+
RenderTargetNameT extends string = never
|
|
41
|
+
> = ShaderModule<PropsT, UniformsT, BindingsT> & {
|
|
42
|
+
/** A shader pass can run multiple sub passes */
|
|
43
|
+
passes?: ShaderSubPass<UniformsT, Extract<keyof BindingsT, string>, RenderTargetNameT>[];
|
|
44
|
+
// TODO better name
|
|
45
|
+
// subPasses?: ShaderSubPass[];
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/** Information on how to run a specific sub pass */
|
|
49
|
+
export type ShaderSubPass<
|
|
50
|
+
UniformsT extends Record<string, UniformValue> = Record<string, UniformValue>,
|
|
51
|
+
BindingNameT extends string = string,
|
|
52
|
+
RenderTargetNameT extends string = string
|
|
53
|
+
> = {
|
|
54
|
+
/**
|
|
55
|
+
* Action indicates whether this pass:
|
|
56
|
+
* - filters the color in each pixel (provides a `<pass.name>_filterColor()` shader function)
|
|
57
|
+
* - performs its own sampling (provides a `<pass.name>_sampleColor()` shader function)
|
|
58
|
+
*/
|
|
59
|
+
action?: 'filter' | 'sample';
|
|
60
|
+
sampler?: boolean;
|
|
61
|
+
filter?: boolean;
|
|
62
|
+
uniforms?: UniformsT;
|
|
63
|
+
/** Mapping from shader binding name to the logical texture source. */
|
|
64
|
+
inputs?: Partial<
|
|
65
|
+
Record<BindingNameT | 'sourceTexture', ShaderPassInputSource<RenderTargetNameT>>
|
|
66
|
+
>;
|
|
67
|
+
/** Output target for this sub pass. Defaults to the shared "previous" chain. */
|
|
68
|
+
output?: 'previous' | RenderTargetNameT;
|
|
69
|
+
};
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {ShaderInjection} from './shader-assembly/shader-injections';
|
|
6
|
+
import type {ShaderModule} from './shader-module/shader-module';
|
|
7
|
+
import {shaderTypeDecoder, type AttributeShaderType} from '../types';
|
|
8
|
+
|
|
9
|
+
/** Named shader anchor or hook target accepted by ShaderPlugin injections. */
|
|
10
|
+
export type ShaderPluginInjectionTarget =
|
|
11
|
+
| 'vs:#decl'
|
|
12
|
+
| 'vs:#main-start'
|
|
13
|
+
| 'vs:#main-end'
|
|
14
|
+
| 'fs:#decl'
|
|
15
|
+
| 'fs:#main-start'
|
|
16
|
+
| 'fs:#main-end'
|
|
17
|
+
| `vs:${string}`
|
|
18
|
+
| `fs:${string}`;
|
|
19
|
+
|
|
20
|
+
/** Named shader source injection contributed by a ShaderPlugin. */
|
|
21
|
+
export type ShaderPluginInjection = {
|
|
22
|
+
/** Named shader anchor or hook that receives this source. */
|
|
23
|
+
target: ShaderPluginInjectionTarget;
|
|
24
|
+
/** Shader source to inject at the target. */
|
|
25
|
+
injection: string;
|
|
26
|
+
/** Relative injection order within the target. */
|
|
27
|
+
order?: number;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/** Portable interpolation modes for ShaderPlugin varyings. */
|
|
31
|
+
export type ShaderPluginVaryingInterpolation = 'smooth' | 'flat';
|
|
32
|
+
|
|
33
|
+
/** Cross-stage value contributed by a ShaderPlugin. */
|
|
34
|
+
export type ShaderPluginVarying = {
|
|
35
|
+
/** Portable scalar or vector shader type. */
|
|
36
|
+
type: AttributeShaderType;
|
|
37
|
+
/** Defaults to smooth for floating-point types and flat for integer types. */
|
|
38
|
+
interpolation?: ShaderPluginVaryingInterpolation;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/** Fully normalized ShaderPlugin varying declaration. */
|
|
42
|
+
export type ResolvedShaderPluginVarying = {
|
|
43
|
+
type: AttributeShaderType;
|
|
44
|
+
interpolation: ShaderPluginVaryingInterpolation;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/** Shared or backend-specific shader assembly contributions. */
|
|
48
|
+
export type ShaderPluginVariant = {
|
|
49
|
+
/** Shader modules added to shader assembly. */
|
|
50
|
+
modules?: ShaderModule[];
|
|
51
|
+
/** Boolean preprocessor defines added to shader assembly. */
|
|
52
|
+
defines?: Record<string, boolean>;
|
|
53
|
+
/** Named code injections added to shader assembly. */
|
|
54
|
+
injections?: ShaderPluginInjection[];
|
|
55
|
+
/** Shader-facing vertex inputs added by this plugin. Buffer ownership remains with the caller. */
|
|
56
|
+
vertexInputs?: Record<string, AttributeShaderType>;
|
|
57
|
+
/** Values transported from the selected vertex entry point to the fragment entry point. */
|
|
58
|
+
varyings?: Record<string, ShaderPluginVarying>;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/** Reusable cross-backend shader assembly descriptor. */
|
|
62
|
+
export type ShaderPlugin = ShaderPluginVariant & {
|
|
63
|
+
/** Stable plugin identifier. */
|
|
64
|
+
name: string;
|
|
65
|
+
/** GLSL-only shader assembly contributions. */
|
|
66
|
+
glsl?: ShaderPluginVariant;
|
|
67
|
+
/** WGSL-only shader assembly contributions. */
|
|
68
|
+
wgsl?: ShaderPluginVariant;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/** ShaderPlugin contributions resolved for one shader language. */
|
|
72
|
+
export type ResolvedShaderPlugins = {
|
|
73
|
+
/** Resolved shader modules in plugin declaration order. */
|
|
74
|
+
modules: ShaderModule[];
|
|
75
|
+
/** Resolved boolean preprocessor defines. */
|
|
76
|
+
defines: Record<string, boolean>;
|
|
77
|
+
/** Resolved named code injections grouped by target. */
|
|
78
|
+
injections: Record<string, ShaderInjection[]>;
|
|
79
|
+
/** Resolved shader-facing vertex inputs in plugin declaration order. */
|
|
80
|
+
vertexInputs: Record<string, AttributeShaderType>;
|
|
81
|
+
/** Resolved cross-stage varyings in plugin declaration order. */
|
|
82
|
+
varyings: Record<string, ResolvedShaderPluginVarying>;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const SHADER_PLUGIN_INJECTION_TARGET_REGEX =
|
|
86
|
+
/^(vs|fs):(?:#(?:decl|main-start|main-end)|[A-Za-z_][\w-]*)$/;
|
|
87
|
+
|
|
88
|
+
/** Resolve shared and backend-specific contributions from shader plugins. */
|
|
89
|
+
export function resolveShaderPlugins(
|
|
90
|
+
plugins: readonly ShaderPlugin[] = [],
|
|
91
|
+
shaderLanguage: 'glsl' | 'wgsl'
|
|
92
|
+
): ResolvedShaderPlugins {
|
|
93
|
+
const modules: ShaderModule[] = [];
|
|
94
|
+
const defines: Record<string, boolean> = {};
|
|
95
|
+
const injections: Record<string, ShaderInjection[]> = {};
|
|
96
|
+
const vertexInputs: Record<string, AttributeShaderType> = {};
|
|
97
|
+
const varyings: Record<string, ResolvedShaderPluginVarying> = {};
|
|
98
|
+
|
|
99
|
+
for (const plugin of plugins) {
|
|
100
|
+
appendShaderPluginVariant({modules, defines, injections, vertexInputs, varyings}, plugin);
|
|
101
|
+
appendShaderPluginVariant(
|
|
102
|
+
{modules, defines, injections, vertexInputs, varyings},
|
|
103
|
+
plugin[shaderLanguage]
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
for (const name of Object.keys(varyings)) {
|
|
108
|
+
if (vertexInputs[name]) {
|
|
109
|
+
throw new Error(`ShaderPlugin name "${name}" cannot be both a vertex input and a varying`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return {modules, defines, injections, vertexInputs, varyings};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** Preserve explicit module inputs while appending plugin modules by first-seen name. */
|
|
117
|
+
export function mergeShaderPluginModules(
|
|
118
|
+
modules: readonly ShaderModule[] = [],
|
|
119
|
+
pluginModules: readonly ShaderModule[] = []
|
|
120
|
+
): ShaderModule[] {
|
|
121
|
+
const mergedModules: ShaderModule[] = [...modules];
|
|
122
|
+
const seenModuleNames = new Set(mergedModules.map(module => module.name));
|
|
123
|
+
|
|
124
|
+
for (const pluginModule of pluginModules) {
|
|
125
|
+
if (!seenModuleNames.has(pluginModule.name)) {
|
|
126
|
+
mergedModules.push(pluginModule);
|
|
127
|
+
seenModuleNames.add(pluginModule.name);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return mergedModules;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function appendShaderPluginVariant(
|
|
135
|
+
resolved: ResolvedShaderPlugins,
|
|
136
|
+
variant: ShaderPluginVariant | undefined
|
|
137
|
+
): void {
|
|
138
|
+
if (!variant) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (variant.modules?.length) {
|
|
143
|
+
resolved.modules.push(...variant.modules);
|
|
144
|
+
}
|
|
145
|
+
if (variant.defines) {
|
|
146
|
+
Object.assign(resolved.defines, variant.defines);
|
|
147
|
+
}
|
|
148
|
+
for (const [name, type] of Object.entries(variant.vertexInputs || {})) {
|
|
149
|
+
assertShaderPluginInterfaceName(name, 'vertex input');
|
|
150
|
+
const existingType = resolved.vertexInputs[name];
|
|
151
|
+
if (existingType && existingType !== type) {
|
|
152
|
+
throw new Error(
|
|
153
|
+
`ShaderPlugin vertex input "${name}" has conflicting types "${existingType}" and "${type}"`
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
resolved.vertexInputs[name] = type;
|
|
157
|
+
}
|
|
158
|
+
for (const [name, varying] of Object.entries(variant.varyings || {})) {
|
|
159
|
+
assertShaderPluginInterfaceName(name, 'varying');
|
|
160
|
+
const normalizedVarying = normalizeShaderPluginVarying(name, varying);
|
|
161
|
+
const existingVarying = resolved.varyings[name];
|
|
162
|
+
if (
|
|
163
|
+
existingVarying &&
|
|
164
|
+
(existingVarying.type !== normalizedVarying.type ||
|
|
165
|
+
existingVarying.interpolation !== normalizedVarying.interpolation)
|
|
166
|
+
) {
|
|
167
|
+
throw new Error(
|
|
168
|
+
`ShaderPlugin varying "${name}" has conflicting declarations ` +
|
|
169
|
+
`"${existingVarying.type}/${existingVarying.interpolation}" and ` +
|
|
170
|
+
`"${normalizedVarying.type}/${normalizedVarying.interpolation}"`
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
resolved.varyings[name] = normalizedVarying;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
for (const injection of variant.injections || []) {
|
|
177
|
+
assertNamedShaderPluginInjectionTarget(injection.target);
|
|
178
|
+
if (!resolved.injections[injection.target]) {
|
|
179
|
+
resolved.injections[injection.target] = [];
|
|
180
|
+
}
|
|
181
|
+
const injections = resolved.injections[injection.target];
|
|
182
|
+
injections.push({
|
|
183
|
+
injection: injection.injection,
|
|
184
|
+
order: injection.order ?? 0
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function assertShaderPluginInterfaceName(name: string, kind: 'vertex input' | 'varying'): void {
|
|
190
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name) || name.startsWith('_luma_')) {
|
|
191
|
+
throw new Error(`ShaderPlugin ${kind} "${name}" must be a valid non-reserved identifier`);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
function normalizeShaderPluginVarying(
|
|
196
|
+
name: string,
|
|
197
|
+
varying: ShaderPluginVarying
|
|
198
|
+
): ResolvedShaderPluginVarying {
|
|
199
|
+
const {primitiveType} = shaderTypeDecoder.getAttributeShaderTypeInfo(varying.type);
|
|
200
|
+
const integerType = primitiveType === 'i32' || primitiveType === 'u32';
|
|
201
|
+
const interpolation = varying.interpolation || (integerType ? 'flat' : 'smooth');
|
|
202
|
+
if (integerType && interpolation === 'smooth') {
|
|
203
|
+
throw new Error(`ShaderPlugin integer varying "${name}" must use flat interpolation`);
|
|
204
|
+
}
|
|
205
|
+
return {type: varying.type, interpolation};
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function assertNamedShaderPluginInjectionTarget(target: ShaderPluginInjectionTarget): void {
|
|
209
|
+
if (!SHADER_PLUGIN_INJECTION_TARGET_REGEX.test(target)) {
|
|
210
|
+
throw new Error(
|
|
211
|
+
`ShaderPlugin injection target "${target}" must be a named shader anchor or hook`
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {PlatformInfo} from '../shader-assembly/platform-info';
|
|
6
|
+
|
|
7
|
+
export type ShaderTranspilerEntryPoints = {
|
|
8
|
+
vertex?: string;
|
|
9
|
+
fragment?: string;
|
|
10
|
+
compute?: string;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/** One translation unit, including source-language module dependencies. */
|
|
14
|
+
export type ShaderTranspileProps = {
|
|
15
|
+
source: string;
|
|
16
|
+
target: 'glsl' | 'wgsl';
|
|
17
|
+
/** GLSL compiles one stage at a time; WGSL may compile a unified render program. */
|
|
18
|
+
stage?: 'vertex' | 'fragment' | 'compute';
|
|
19
|
+
entryPoints: ShaderTranspilerEntryPoints;
|
|
20
|
+
platformInfo: PlatformInfo;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export type ShaderTranspileResult = {
|
|
24
|
+
code: string;
|
|
25
|
+
/** Generated names selected by subsequent interface scanning and pipeline creation. */
|
|
26
|
+
entryPoints?: ShaderTranspilerEntryPoints;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/** Application-owned compiler. Shaders has no dependency on its implementation. */
|
|
30
|
+
export type ShaderTranspiler = {
|
|
31
|
+
name: string;
|
|
32
|
+
sourceLanguage: string;
|
|
33
|
+
transpile: (props: ShaderTranspileProps) => ShaderTranspileResult;
|
|
34
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
// TRANSPILATION TABLES
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Transpiles GLSL 3.00 shader source code to target GLSL version (3.00 or 1.00)
|
|
9
|
+
*
|
|
10
|
+
* @note We always run transpiler even if same version e.g. 3.00 => 3.00
|
|
11
|
+
* @note For texture sampling transpilation, apps need to use non-standard texture* calls in GLSL 3.00 source
|
|
12
|
+
* RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md
|
|
13
|
+
*/
|
|
14
|
+
export function transpileGLSLShader(source: string, stage: 'vertex' | 'fragment'): string {
|
|
15
|
+
const sourceGLSLVersion = Number(source.match(/^#version[ \t]+(\d+)/m)?.[1] || 100);
|
|
16
|
+
if (sourceGLSLVersion !== 300) {
|
|
17
|
+
// TODO - we splurge on a longer error message to help deck.gl custom layer developers
|
|
18
|
+
throw new Error('luma.gl v9 only supports GLSL 3.00 shader sources');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
switch (stage) {
|
|
22
|
+
case 'vertex':
|
|
23
|
+
source = convertShader(source, ES300_VERTEX_REPLACEMENTS);
|
|
24
|
+
return source;
|
|
25
|
+
case 'fragment':
|
|
26
|
+
source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);
|
|
27
|
+
return source;
|
|
28
|
+
default:
|
|
29
|
+
// Unknown shader stage
|
|
30
|
+
throw new Error(stage);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
type GLSLReplacement = [RegExp, string];
|
|
35
|
+
|
|
36
|
+
/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */
|
|
37
|
+
const ES300_REPLACEMENTS: GLSLReplacement[] = [
|
|
38
|
+
// Fix poorly formatted version directive
|
|
39
|
+
[/^(#version[ \t]+(100|300[ \t]+es))?[ \t]*\n/, '#version 300 es\n'],
|
|
40
|
+
// The individual `texture...()` functions were replaced with `texture()` overloads
|
|
41
|
+
[/\btexture(2D|2DProj|Cube)Lod(EXT)?\(/g, 'textureLod('],
|
|
42
|
+
[/\btexture(2D|2DProj|Cube)(EXT)?\(/g, 'texture(']
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
const ES300_VERTEX_REPLACEMENTS: GLSLReplacement[] = [
|
|
46
|
+
...ES300_REPLACEMENTS,
|
|
47
|
+
// `attribute` keyword replaced with `in`
|
|
48
|
+
[makeVariableTextRegExp('attribute'), 'in $1'],
|
|
49
|
+
// `varying` keyword replaced with `out`
|
|
50
|
+
[makeVariableTextRegExp('varying'), 'out $1']
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */
|
|
54
|
+
const ES300_FRAGMENT_REPLACEMENTS: GLSLReplacement[] = [
|
|
55
|
+
...ES300_REPLACEMENTS,
|
|
56
|
+
// `varying` keyword replaced with `in`
|
|
57
|
+
[makeVariableTextRegExp('varying'), 'in $1']
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
function convertShader(source: string, replacements: GLSLReplacement[]) {
|
|
61
|
+
for (const [pattern, replacement] of replacements) {
|
|
62
|
+
source = source.replace(pattern, replacement);
|
|
63
|
+
}
|
|
64
|
+
return source;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Creates a regexp that tests for a specific variable type
|
|
69
|
+
* @example
|
|
70
|
+
* should match:
|
|
71
|
+
* in float weight;
|
|
72
|
+
* out vec4 positions[2];
|
|
73
|
+
* should not match:
|
|
74
|
+
* void f(out float a, in float b) {}
|
|
75
|
+
*/
|
|
76
|
+
function makeVariableTextRegExp(qualifier: 'attribute' | 'varying' | 'in' | 'out'): RegExp {
|
|
77
|
+
return new RegExp(`\\b${qualifier}[ \\t]+(\\w+[ \\t]+\\w+(\\[\\w+\\])?;)`, 'g');
|
|
78
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
// Recommendation is to ignore message but current test suite checks against the
|
|
6
|
+
// message so keep it for now.
|
|
7
|
+
export function assert(condition: unknown, message?: string): void {
|
|
8
|
+
if (!condition) {
|
|
9
|
+
const error = new Error(message || 'shaders: assertion failed.');
|
|
10
|
+
Error.captureStackTrace?.(error, assert);
|
|
11
|
+
throw error;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {
|
|
6
|
+
Matrix3,
|
|
7
|
+
Matrix4,
|
|
8
|
+
Vector2,
|
|
9
|
+
Vector3,
|
|
10
|
+
Vector4,
|
|
11
|
+
NumberArray2,
|
|
12
|
+
NumberArray3,
|
|
13
|
+
NumberArray4,
|
|
14
|
+
NumberArray6,
|
|
15
|
+
NumberArray8,
|
|
16
|
+
NumberArray9,
|
|
17
|
+
NumberArray12,
|
|
18
|
+
NumberArray16
|
|
19
|
+
} from '@math.gl/core';
|
|
20
|
+
|
|
21
|
+
import type {CompositeShaderType} from '../../types';
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* Allowed types to be used for uniform values
|
|
25
|
+
*
|
|
26
|
+
* Only allow types whose length we can type-check (not `TypedArray`)
|
|
27
|
+
*/
|
|
28
|
+
export type UniformValue = Readonly<
|
|
29
|
+
| number
|
|
30
|
+
| boolean
|
|
31
|
+
| NumberArray2
|
|
32
|
+
| NumberArray3
|
|
33
|
+
| NumberArray4
|
|
34
|
+
| NumberArray6
|
|
35
|
+
| NumberArray8
|
|
36
|
+
| NumberArray9
|
|
37
|
+
| NumberArray12
|
|
38
|
+
| NumberArray16
|
|
39
|
+
| Vector2
|
|
40
|
+
| Vector3
|
|
41
|
+
| Vector4
|
|
42
|
+
| Matrix3
|
|
43
|
+
| Matrix4
|
|
44
|
+
>;
|
|
45
|
+
|
|
46
|
+
export type ShaderModuleUniformValue =
|
|
47
|
+
| UniformValue
|
|
48
|
+
| ShaderModuleUniformStruct
|
|
49
|
+
| ShaderModuleUniformArray;
|
|
50
|
+
|
|
51
|
+
export type ShaderModuleUniformStruct = {
|
|
52
|
+
[name: string]: ShaderModuleUniformValue | undefined;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export type ShaderModuleUniformArray = ReadonlyArray<ShaderModuleUniformValue | undefined>;
|
|
56
|
+
|
|
57
|
+
type UniformLeafType<ValueT extends UniformValue> = ValueT extends number | boolean
|
|
58
|
+
? 'f32' | 'i32' | 'u32'
|
|
59
|
+
: ValueT extends Readonly<NumberArray2 | Vector2>
|
|
60
|
+
? 'vec2<f32>' | 'vec2<i32>' | 'vec2<u32>'
|
|
61
|
+
: ValueT extends Readonly<NumberArray3 | Vector3>
|
|
62
|
+
? 'vec3<f32>' | 'vec3<i32>' | 'vec3<u32>'
|
|
63
|
+
: ValueT extends Readonly<NumberArray4 | Vector4>
|
|
64
|
+
? 'vec4<f32>' | 'vec4<i32>' | 'vec4<u32>' | 'mat2x2<f32>'
|
|
65
|
+
: ValueT extends Readonly<NumberArray6>
|
|
66
|
+
? 'mat2x3<f32>' | 'mat3x2<f32>'
|
|
67
|
+
: ValueT extends Readonly<NumberArray8>
|
|
68
|
+
? 'mat2x4<f32>' | 'mat4x2<f32>'
|
|
69
|
+
: ValueT extends Readonly<NumberArray9 | Matrix3>
|
|
70
|
+
? 'mat3x3<f32>'
|
|
71
|
+
: ValueT extends Readonly<NumberArray12>
|
|
72
|
+
? 'mat3x4<f32>' | 'mat4x3<f32>'
|
|
73
|
+
: ValueT extends Readonly<NumberArray16 | Matrix4>
|
|
74
|
+
? 'mat4x4<f32>'
|
|
75
|
+
: never;
|
|
76
|
+
|
|
77
|
+
type UniformType<ValueT> = ValueT extends UniformValue
|
|
78
|
+
? UniformLeafType<ValueT>
|
|
79
|
+
: ValueT extends ReadonlyArray<infer ElementT>
|
|
80
|
+
? readonly [UniformType<NonNullable<ElementT>>, number]
|
|
81
|
+
: ValueT extends Record<string, unknown>
|
|
82
|
+
? {[name in keyof ValueT]-?: UniformType<NonNullable<ValueT[name]>>}
|
|
83
|
+
: never;
|
|
84
|
+
|
|
85
|
+
type UniformProps = Record<string, unknown>;
|
|
86
|
+
|
|
87
|
+
export type UniformTypes<PropsT extends UniformProps> = {
|
|
88
|
+
[name in keyof PropsT]-?: UniformType<NonNullable<PropsT[name]>> & CompositeShaderType;
|
|
89
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {ShaderAssembler} from './shader-assembler-base';
|
|
6
|
+
import type {ShaderModule} from './shader-module/shader-module';
|
|
7
|
+
import type {AssembleShaderProps, GetUniformsFunc} from './shader-assembly/shader-assembly-types';
|
|
8
|
+
import {assembleWGSLSource} from './shader-assembly/assemble-wgsl-shaders';
|
|
9
|
+
import {
|
|
10
|
+
getShaderBindingDebugRowsFromWGSL,
|
|
11
|
+
type ShaderBindingDebugRow
|
|
12
|
+
} from './shader-assembly/wgsl-binding-debug';
|
|
13
|
+
import {preprocess} from './preprocessor/preprocessor';
|
|
14
|
+
import {scanWGSLInterface} from './shader-assembly/wgsl-interface-scan';
|
|
15
|
+
import type {ShaderLayout} from '../types';
|
|
16
|
+
import type {ShaderTranspilerEntryPoints} from './shader-transpiler/shader-transpiler';
|
|
17
|
+
|
|
18
|
+
/** Stateful assembler for unified WGSL shaders. */
|
|
19
|
+
export class WGSLShaderAssembler extends ShaderAssembler {
|
|
20
|
+
readonly shaderLanguage: 'wgsl' = 'wgsl';
|
|
21
|
+
/** Stable per-run WGSL auto-binding assignments keyed by group/module/binding. */
|
|
22
|
+
private readonly _wgslBindingRegistry = new Map<string, number>();
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Assemble a WGSL unified shader.
|
|
26
|
+
* @param props WGSL source, platform information, shader modules, defines, and injections.
|
|
27
|
+
* @returns Assembled WGSL source, resolved modules, uniforms, and binding debug metadata.
|
|
28
|
+
*/
|
|
29
|
+
assembleWGSLShader(props: AssembleShaderProps): {
|
|
30
|
+
source: string;
|
|
31
|
+
getUniforms: GetUniformsFunc;
|
|
32
|
+
modules: ShaderModule[];
|
|
33
|
+
bindingAssignments: {moduleName: string; name: string; group: number; location: number}[];
|
|
34
|
+
bindingTable: ShaderBindingDebugRow[];
|
|
35
|
+
shaderLayout: ShaderLayout | null;
|
|
36
|
+
entryPoints: ShaderTranspilerEntryPoints;
|
|
37
|
+
} {
|
|
38
|
+
const modules = this._getModuleList(props.modules); // Combine with default modules
|
|
39
|
+
const hookFunctions = this._hookFunctions; // TODO - combine with default hook functions
|
|
40
|
+
const translated = this._transpileShader(
|
|
41
|
+
props,
|
|
42
|
+
modules,
|
|
43
|
+
props.source,
|
|
44
|
+
props.shaderStage ?? (props.computeEntryPoint ? 'compute' : undefined)
|
|
45
|
+
);
|
|
46
|
+
const entryPoints = {
|
|
47
|
+
vertex: translated.entryPoints?.vertex ?? props.vertexEntryPoint,
|
|
48
|
+
fragment: translated.entryPoints?.fragment ?? props.fragmentEntryPoint,
|
|
49
|
+
compute: translated.entryPoints?.compute ?? props.computeEntryPoint
|
|
50
|
+
};
|
|
51
|
+
const defines = WGSLShaderAssembler.getShaderPreprocessorDefines(props, modules);
|
|
52
|
+
const preprocessedApplicationSource =
|
|
53
|
+
props.platformInfo.shaderLanguage === 'wgsl' && translated.code
|
|
54
|
+
? preprocess(translated.code, {defines})
|
|
55
|
+
: translated.code;
|
|
56
|
+
const {
|
|
57
|
+
source: assembledSource,
|
|
58
|
+
getUniforms,
|
|
59
|
+
bindingAssignments
|
|
60
|
+
} = assembleWGSLSource({
|
|
61
|
+
...props,
|
|
62
|
+
source: preprocessedApplicationSource,
|
|
63
|
+
vertexEntryPoint: entryPoints.vertex,
|
|
64
|
+
fragmentEntryPoint: entryPoints.fragment,
|
|
65
|
+
defines,
|
|
66
|
+
_bindingRegistry: this._wgslBindingRegistry,
|
|
67
|
+
modules: translated.modules,
|
|
68
|
+
hookFunctions
|
|
69
|
+
});
|
|
70
|
+
// WGSL does not have built-in preprocessing support (just compile time constants)
|
|
71
|
+
const preprocessedSource =
|
|
72
|
+
props.platformInfo.shaderLanguage === 'wgsl'
|
|
73
|
+
? preprocess(assembledSource, {defines})
|
|
74
|
+
: assembledSource;
|
|
75
|
+
return {
|
|
76
|
+
source: preprocessedSource,
|
|
77
|
+
entryPoints,
|
|
78
|
+
getUniforms,
|
|
79
|
+
modules,
|
|
80
|
+
bindingAssignments,
|
|
81
|
+
bindingTable: getShaderBindingDebugRowsFromWGSL(preprocessedSource, bindingAssignments),
|
|
82
|
+
shaderLayout: scanWGSLInterface(preprocessedSource, {
|
|
83
|
+
vertexEntryPoint: entryPoints.vertex,
|
|
84
|
+
scanVertexAttributes: props.scanVertexAttributes
|
|
85
|
+
})
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
private static getShaderPreprocessorDefines(
|
|
90
|
+
props: AssembleShaderProps,
|
|
91
|
+
modules: ShaderModule[]
|
|
92
|
+
): Record<string, boolean | number> {
|
|
93
|
+
return {
|
|
94
|
+
...WGSLShaderAssembler.getPlatformPreprocessorDefines(props.platformInfo),
|
|
95
|
+
...modules.reduce<Record<string, boolean | number>>((accumulator, module) => {
|
|
96
|
+
Object.assign(accumulator, module.defines);
|
|
97
|
+
return accumulator;
|
|
98
|
+
}, {}),
|
|
99
|
+
...props.defines
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
private static getPlatformPreprocessorDefines(
|
|
104
|
+
platformInfo: AssembleShaderProps['platformInfo']
|
|
105
|
+
): Record<string, boolean> {
|
|
106
|
+
const limits = platformInfo.limits || {};
|
|
107
|
+
return {
|
|
108
|
+
LUMA_SUPPORTS_VERTEX_STORAGE_BUFFERS:
|
|
109
|
+
platformInfo.type === 'webgpu' && (limits['maxStorageBuffersInVertexStage'] || 0) > 0,
|
|
110
|
+
// Native tan() does not provide enough precision on all WebGPU implementations.
|
|
111
|
+
LUMA_FP32_TAN_PRECISION_WORKAROUND:
|
|
112
|
+
platformInfo.type === 'webgpu' &&
|
|
113
|
+
platformInfo.gpu.toLowerCase() !== 'nvidia' &&
|
|
114
|
+
platformInfo.gpu.toLowerCase() !== 'amd',
|
|
115
|
+
// Metal may reassociate the floating-point transforms used by classic
|
|
116
|
+
// double-single arithmetic. The integer path makes each rounding point
|
|
117
|
+
// explicit while preserving the public vec2<f32> representation.
|
|
118
|
+
LUMA_FP64_INTEGER_ARITHMETIC:
|
|
119
|
+
platformInfo.type === 'webgpu' && platformInfo.gpu.toLowerCase() === 'apple'
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
export const MODULE_INJECTORS_VS = /* glsl */ `\
|
|
6
|
+
#ifdef MODULE_LOGDEPTH
|
|
7
|
+
logdepth_adjustPosition(gl_Position);
|
|
8
|
+
#endif
|
|
9
|
+
`;
|
|
10
|
+
|
|
11
|
+
export const MODULE_INJECTORS_FS = /* glsl */ `\
|
|
12
|
+
#ifdef MODULE_MATERIAL
|
|
13
|
+
fragColor = material_filterColor(fragColor);
|
|
14
|
+
#endif
|
|
15
|
+
|
|
16
|
+
#ifdef MODULE_LIGHTING
|
|
17
|
+
fragColor = lighting_filterColor(fragColor);
|
|
18
|
+
#endif
|
|
19
|
+
|
|
20
|
+
#ifdef MODULE_FOG
|
|
21
|
+
fragColor = fog_filterColor(fragColor);
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#ifdef MODULE_PICKING
|
|
25
|
+
fragColor = picking_filterHighlightColor(fragColor);
|
|
26
|
+
fragColor = picking_filterPickingColor(fragColor);
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
#ifdef MODULE_LOGDEPTH
|
|
30
|
+
logdepth_setFragDepth();
|
|
31
|
+
#endif
|
|
32
|
+
`;
|