@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,62 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var area_lighting_exports = {};
|
|
19
|
+
__export(area_lighting_exports, {
|
|
20
|
+
areaLighting: () => areaLighting
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(area_lighting_exports);
|
|
23
|
+
var import_lighting = require("../lights/lighting.cjs");
|
|
24
|
+
var import_ltc_shaders = require("./ltc-shaders.cjs");
|
|
25
|
+
var import_area_lighting_shaders = require("./area-lighting-shaders.cjs");
|
|
26
|
+
var import_area_light_types = require("./area-light-types.cjs");
|
|
27
|
+
const areaLighting = {
|
|
28
|
+
name: "areaLighting",
|
|
29
|
+
props: {},
|
|
30
|
+
uniforms: {},
|
|
31
|
+
dependencies: [import_lighting.lighting],
|
|
32
|
+
defaultUniforms: {
|
|
33
|
+
lightCount: 0,
|
|
34
|
+
sampleCount: 64,
|
|
35
|
+
lights: Array.from({ length: import_area_light_types.MAX_AREA_LIGHTS }, import_area_light_types.makeEmptyLight)
|
|
36
|
+
},
|
|
37
|
+
uniformTypes: {
|
|
38
|
+
lightCount: "i32",
|
|
39
|
+
sampleCount: "i32",
|
|
40
|
+
lights: [import_area_light_types.AREA_LIGHT_UNIFORM_TYPE, import_area_light_types.MAX_AREA_LIGHTS]
|
|
41
|
+
},
|
|
42
|
+
bindingLayout: [
|
|
43
|
+
{ name: "areaLighting", group: 2 },
|
|
44
|
+
{ name: "areaLTCMatrix", group: 2 },
|
|
45
|
+
{ name: "areaLTCAmplitude", group: 2 }
|
|
46
|
+
],
|
|
47
|
+
source: import_area_lighting_shaders.areaLightingWGSL + import_ltc_shaders.areaLTCWGSL,
|
|
48
|
+
vs: import_area_lighting_shaders.areaLightingGLSL + import_ltc_shaders.areaLTCGLSL,
|
|
49
|
+
fs: import_area_lighting_shaders.areaLightingGLSL + import_ltc_shaders.areaLTCGLSL,
|
|
50
|
+
getUniforms(props = {}) {
|
|
51
|
+
const source = props.lights || [];
|
|
52
|
+
return {
|
|
53
|
+
lightCount: Math.min(source.length, import_area_light_types.MAX_AREA_LIGHTS),
|
|
54
|
+
sampleCount: props.sampleCount || 64,
|
|
55
|
+
lights: (0, import_area_light_types.packAreaLights)(source, props.useByteColors)
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
60
|
+
0 && (module.exports = {
|
|
61
|
+
areaLighting
|
|
62
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export type { AreaLight } from "./area-light-types.js";
|
|
2
|
+
import { type AreaLight, type AreaLightUniform } from "./area-light-types.js";
|
|
3
|
+
export type AreaLightingProps = {
|
|
4
|
+
lights?: readonly AreaLight[];
|
|
5
|
+
useByteColors?: boolean;
|
|
6
|
+
sampleCount?: 16 | 64 | 256;
|
|
7
|
+
};
|
|
8
|
+
type AreaLightingUniforms = {
|
|
9
|
+
lightCount: number;
|
|
10
|
+
sampleCount: number;
|
|
11
|
+
lights: readonly AreaLightUniform[];
|
|
12
|
+
};
|
|
13
|
+
/** Area-light compatibility props and shader resources for LTC or numerical reference integration. */
|
|
14
|
+
export declare const areaLighting: {
|
|
15
|
+
readonly name: "areaLighting";
|
|
16
|
+
readonly props: AreaLightingProps;
|
|
17
|
+
readonly uniforms: AreaLightingUniforms;
|
|
18
|
+
readonly dependencies: [{
|
|
19
|
+
readonly props: import("../lights/lighting").LightingProps;
|
|
20
|
+
readonly uniforms: import("../lights/lighting").LightingUniforms;
|
|
21
|
+
readonly name: "lighting";
|
|
22
|
+
readonly defines: {};
|
|
23
|
+
readonly uniformTypes: {
|
|
24
|
+
readonly enabled: "i32";
|
|
25
|
+
readonly directionalLightCount: "i32";
|
|
26
|
+
readonly pointLightCount: "i32";
|
|
27
|
+
readonly spotLightCount: "i32";
|
|
28
|
+
readonly ambientColor: "vec3<f32>";
|
|
29
|
+
readonly lights: readonly [{
|
|
30
|
+
readonly color: "vec3<f32>";
|
|
31
|
+
readonly position: "vec3<f32>";
|
|
32
|
+
readonly direction: "vec3<f32>";
|
|
33
|
+
readonly attenuation: "vec3<f32>";
|
|
34
|
+
readonly coneCos: "vec2<f32>";
|
|
35
|
+
}, 5];
|
|
36
|
+
readonly areaLightCount: "i32";
|
|
37
|
+
readonly areaLights: readonly [{
|
|
38
|
+
readonly color: "vec3<f32>";
|
|
39
|
+
readonly position: "vec3<f32>";
|
|
40
|
+
readonly halfAxisX: "vec3<f32>";
|
|
41
|
+
readonly halfAxisY: "vec3<f32>";
|
|
42
|
+
readonly normal: "vec3<f32>";
|
|
43
|
+
readonly disk: "i32";
|
|
44
|
+
}, 4];
|
|
45
|
+
};
|
|
46
|
+
readonly defaultUniforms: import("../lights/lighting").LightingUniforms;
|
|
47
|
+
readonly bindingLayout: readonly [{
|
|
48
|
+
readonly name: "lighting";
|
|
49
|
+
readonly group: 2;
|
|
50
|
+
}];
|
|
51
|
+
readonly firstBindingSlot: 0;
|
|
52
|
+
readonly source: "// #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\nconst MAX_LIGHTS: i32 = 5;\n\nstruct AmbientLight {\n color: vec3<f32>,\n};\n\nstruct PointLight {\n color: vec3<f32>,\n position: vec3<f32>,\n attenuation: vec3<f32>, // 2nd order x:Constant-y:Linear-z:Exponential\n};\n\nstruct SpotLight {\n color: vec3<f32>,\n position: vec3<f32>,\n direction: vec3<f32>,\n attenuation: vec3<f32>,\n coneCos: vec2<f32>,\n};\n\nstruct DirectionalLight {\n color: vec3<f32>,\n direction: vec3<f32>,\n};\n\nstruct UniformLight {\n color: vec3<f32>,\n position: vec3<f32>,\n direction: vec3<f32>,\n attenuation: vec3<f32>,\n coneCos: vec2<f32>,\n};\n\nstruct AreaLightUniform {\n color: vec3f, position: vec3f, halfAxisX: vec3f, halfAxisY: vec3f, normal: vec3f, disk: i32,\n};\n\nstruct lightingUniforms {\n enabled: i32,\n directionalLightCount: i32,\n pointLightCount: i32,\n spotLightCount: i32,\n ambientColor: vec3<f32>,\n lights: array<UniformLight, 5>,\n areaLightCount: i32,\n areaLights: array<AreaLightUniform, 4>,\n};\n\n@group(2) @binding(auto) var<uniform> lighting : lightingUniforms;\n\nfn lighting_getPointLight(index: i32) -> PointLight {\n let light = lighting.lights[index];\n return PointLight(light.color, light.position, light.attenuation);\n}\n\nfn lighting_getSpotLight(index: i32) -> SpotLight {\n let light = lighting.lights[lighting.pointLightCount + index];\n return SpotLight(light.color, light.position, light.direction, light.attenuation, light.coneCos);\n}\n\nfn lighting_getDirectionalLight(index: i32) -> DirectionalLight {\n let light = lighting.lights[lighting.pointLightCount + lighting.spotLightCount + index];\n return DirectionalLight(light.color, light.direction);\n}\n\nfn getPointLightAttenuation(pointLight: PointLight, distance: f32) -> f32 {\n return pointLight.attenuation.x\n + pointLight.attenuation.y * distance\n + pointLight.attenuation.z * distance * distance;\n}\n\nfn getSpotLightAttenuation(spotLight: SpotLight, positionWorldspace: vec3<f32>) -> f32 {\n let lightDirection = normalize(positionWorldspace - spotLight.position);\n let coneFactor = smoothstep(\n spotLight.coneCos.y,\n spotLight.coneCos.x,\n dot(normalize(spotLight.direction), lightDirection)\n );\n let distanceAttenuation = getPointLightAttenuation(\n PointLight(spotLight.color, spotLight.position, spotLight.attenuation),\n distance(spotLight.position, positionWorldspace)\n );\n return distanceAttenuation / max(coneFactor, 0.0001);\n}\n";
|
|
53
|
+
readonly vs: "precision highp int;\n\n// #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\nstruct AmbientLight {\n vec3 color;\n};\n\nstruct PointLight {\n vec3 color;\n vec3 position;\n vec3 attenuation; // 2nd order x:Constant-y:Linear-z:Exponential\n};\n\nstruct SpotLight {\n vec3 color;\n vec3 position;\n vec3 direction;\n vec3 attenuation;\n vec2 coneCos;\n};\n\nstruct DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nstruct UniformLight {\n vec3 color;\n vec3 position;\n vec3 direction;\n vec3 attenuation;\n vec2 coneCos;\n};\n\nstruct AreaLightUniform {\n vec3 color; vec3 position; vec3 halfAxisX; vec3 halfAxisY; vec3 normal; int disk;\n};\n\nlayout(std140) uniform lightingUniforms {\n int enabled;\n int directionalLightCount;\n int pointLightCount;\n int spotLightCount;\n vec3 ambientColor;\n UniformLight lights[5];\n int areaLightCount;\n AreaLightUniform areaLights[4];\n} lighting;\n\nPointLight lighting_getPointLight(int index) {\n UniformLight light = lighting.lights[index];\n return PointLight(light.color, light.position, light.attenuation);\n}\n\nSpotLight lighting_getSpotLight(int index) {\n UniformLight light = lighting.lights[lighting.pointLightCount + index];\n return SpotLight(light.color, light.position, light.direction, light.attenuation, light.coneCos);\n}\n\nDirectionalLight lighting_getDirectionalLight(int index) {\n UniformLight light =\n lighting.lights[lighting.pointLightCount + lighting.spotLightCount + index];\n return DirectionalLight(light.color, light.direction);\n}\n\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\n return pointLight.attenuation.x\n + pointLight.attenuation.y * distance\n + pointLight.attenuation.z * distance * distance;\n}\n\nfloat getSpotLightAttenuation(SpotLight spotLight, vec3 positionWorldspace) {\n vec3 light_direction = normalize(positionWorldspace - spotLight.position);\n float coneFactor = smoothstep(\n spotLight.coneCos.y,\n spotLight.coneCos.x,\n dot(normalize(spotLight.direction), light_direction)\n );\n float distanceAttenuation = getPointLightAttenuation(\n PointLight(spotLight.color, spotLight.position, spotLight.attenuation),\n distance(spotLight.position, positionWorldspace)\n );\n return distanceAttenuation / max(coneFactor, 0.0001);\n}\n\n// #endif\n";
|
|
54
|
+
readonly fs: "precision highp int;\n\n// #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\nstruct AmbientLight {\n vec3 color;\n};\n\nstruct PointLight {\n vec3 color;\n vec3 position;\n vec3 attenuation; // 2nd order x:Constant-y:Linear-z:Exponential\n};\n\nstruct SpotLight {\n vec3 color;\n vec3 position;\n vec3 direction;\n vec3 attenuation;\n vec2 coneCos;\n};\n\nstruct DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nstruct UniformLight {\n vec3 color;\n vec3 position;\n vec3 direction;\n vec3 attenuation;\n vec2 coneCos;\n};\n\nstruct AreaLightUniform {\n vec3 color; vec3 position; vec3 halfAxisX; vec3 halfAxisY; vec3 normal; int disk;\n};\n\nlayout(std140) uniform lightingUniforms {\n int enabled;\n int directionalLightCount;\n int pointLightCount;\n int spotLightCount;\n vec3 ambientColor;\n UniformLight lights[5];\n int areaLightCount;\n AreaLightUniform areaLights[4];\n} lighting;\n\nPointLight lighting_getPointLight(int index) {\n UniformLight light = lighting.lights[index];\n return PointLight(light.color, light.position, light.attenuation);\n}\n\nSpotLight lighting_getSpotLight(int index) {\n UniformLight light = lighting.lights[lighting.pointLightCount + index];\n return SpotLight(light.color, light.position, light.direction, light.attenuation, light.coneCos);\n}\n\nDirectionalLight lighting_getDirectionalLight(int index) {\n UniformLight light =\n lighting.lights[lighting.pointLightCount + lighting.spotLightCount + index];\n return DirectionalLight(light.color, light.direction);\n}\n\nfloat getPointLightAttenuation(PointLight pointLight, float distance) {\n return pointLight.attenuation.x\n + pointLight.attenuation.y * distance\n + pointLight.attenuation.z * distance * distance;\n}\n\nfloat getSpotLightAttenuation(SpotLight spotLight, vec3 positionWorldspace) {\n vec3 light_direction = normalize(positionWorldspace - spotLight.position);\n float coneFactor = smoothstep(\n spotLight.coneCos.y,\n spotLight.coneCos.x,\n dot(normalize(spotLight.direction), light_direction)\n );\n float distanceAttenuation = getPointLightAttenuation(\n PointLight(spotLight.color, spotLight.position, spotLight.attenuation),\n distance(spotLight.position, positionWorldspace)\n );\n return distanceAttenuation / max(coneFactor, 0.0001);\n}\n\n// #endif\n";
|
|
55
|
+
readonly getUniforms: (props?: import("../lights/lighting").LightingProps, _prevUniforms?: Partial<import("../lights/lighting").LightingUniforms>) => import("../lights/lighting").LightingUniforms;
|
|
56
|
+
}];
|
|
57
|
+
readonly defaultUniforms: {
|
|
58
|
+
readonly lightCount: 0;
|
|
59
|
+
readonly sampleCount: 64;
|
|
60
|
+
readonly lights: AreaLightUniform[];
|
|
61
|
+
};
|
|
62
|
+
readonly uniformTypes: {
|
|
63
|
+
readonly lightCount: "i32";
|
|
64
|
+
readonly sampleCount: "i32";
|
|
65
|
+
readonly lights: readonly [{
|
|
66
|
+
readonly color: "vec3<f32>";
|
|
67
|
+
readonly position: "vec3<f32>";
|
|
68
|
+
readonly halfAxisX: "vec3<f32>";
|
|
69
|
+
readonly halfAxisY: "vec3<f32>";
|
|
70
|
+
readonly normal: "vec3<f32>";
|
|
71
|
+
readonly disk: "i32";
|
|
72
|
+
}, 4];
|
|
73
|
+
};
|
|
74
|
+
readonly bindingLayout: readonly [{
|
|
75
|
+
readonly name: "areaLighting";
|
|
76
|
+
readonly group: 2;
|
|
77
|
+
}, {
|
|
78
|
+
readonly name: "areaLTCMatrix";
|
|
79
|
+
readonly group: 2;
|
|
80
|
+
}, {
|
|
81
|
+
readonly name: "areaLTCAmplitude";
|
|
82
|
+
readonly group: 2;
|
|
83
|
+
}];
|
|
84
|
+
readonly source: string;
|
|
85
|
+
readonly vs: string;
|
|
86
|
+
readonly fs: string;
|
|
87
|
+
readonly getUniforms: (props?: AreaLightingProps) => AreaLightingUniforms;
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=area-lighting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"area-lighting.d.ts","sourceRoot":"","sources":["../../../../src/modules/lighting/area-lighting/area-lighting.ts"],"names":[],"mappings":"AASA,YAAY,EAAC,SAAS,EAAC,8BAA2B;AAClD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAKtB,8BAA2B;AAE5B,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;CAC7B,CAAC;AACF,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACrC,CAAC;AAEF,sGAAsG;AACtG,eAAO,MAAM,YAAY;;oBAEV,iBAAiB;uBACd,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAoBjB,iBAAiB,KAAQ,oBAAoB;CAQY,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
import { lighting } from "../lights/lighting.js";
|
|
5
|
+
import { areaLTCGLSL, areaLTCWGSL } from "./ltc-shaders.js";
|
|
6
|
+
import { areaLightingGLSL, areaLightingWGSL } from "./area-lighting-shaders.js";
|
|
7
|
+
import { MAX_AREA_LIGHTS, AREA_LIGHT_UNIFORM_TYPE, packAreaLights, makeEmptyLight } from "./area-light-types.js";
|
|
8
|
+
/** Area-light compatibility props and shader resources for LTC or numerical reference integration. */
|
|
9
|
+
export const areaLighting = {
|
|
10
|
+
name: 'areaLighting',
|
|
11
|
+
props: {},
|
|
12
|
+
uniforms: {},
|
|
13
|
+
dependencies: [lighting],
|
|
14
|
+
defaultUniforms: {
|
|
15
|
+
lightCount: 0,
|
|
16
|
+
sampleCount: 64,
|
|
17
|
+
lights: Array.from({ length: MAX_AREA_LIGHTS }, makeEmptyLight)
|
|
18
|
+
},
|
|
19
|
+
uniformTypes: {
|
|
20
|
+
lightCount: 'i32',
|
|
21
|
+
sampleCount: 'i32',
|
|
22
|
+
lights: [AREA_LIGHT_UNIFORM_TYPE, MAX_AREA_LIGHTS]
|
|
23
|
+
},
|
|
24
|
+
bindingLayout: [
|
|
25
|
+
{ name: 'areaLighting', group: 2 },
|
|
26
|
+
{ name: 'areaLTCMatrix', group: 2 },
|
|
27
|
+
{ name: 'areaLTCAmplitude', group: 2 }
|
|
28
|
+
],
|
|
29
|
+
source: areaLightingWGSL + areaLTCWGSL,
|
|
30
|
+
vs: areaLightingGLSL + areaLTCGLSL,
|
|
31
|
+
fs: areaLightingGLSL + areaLTCGLSL,
|
|
32
|
+
getUniforms(props = {}) {
|
|
33
|
+
const source = props.lights || [];
|
|
34
|
+
return {
|
|
35
|
+
lightCount: Math.min(source.length, MAX_AREA_LIGHTS),
|
|
36
|
+
sampleCount: props.sampleCount || 64,
|
|
37
|
+
lights: packAreaLights(source, props.useByteColors)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=area-lighting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"area-lighting.js","sourceRoot":"","sources":["../../../../src/modules/lighting/area-lighting/area-lighting.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,4DAA4D;AAG5D,OAAO,EAAC,QAAQ,EAAC,8BAA2B;AAC5C,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,yBAAsB;AACvD,OAAO,EAAC,gBAAgB,EAAE,gBAAgB,EAAC,mCAAgC;AAG3E,OAAO,EAGL,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,cAAc,EACf,8BAA2B;AAa5B,sGAAsG;AACtG,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,EAAuB;IAC9B,QAAQ,EAAE,EAA0B;IACpC,YAAY,EAAE,CAAC,QAAQ,CAAC;IACxB,eAAe,EAAE;QACf,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,EAAE;QACf,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,eAAe,EAAC,EAAE,cAAc,CAAC;KAC9D;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,CAAC,uBAAuB,EAAE,eAAe,CAAC;KACnD;IACD,aAAa,EAAE;QACb,EAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAC;QAChC,EAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAC;QACjC,EAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAC;KACrC;IACD,MAAM,EAAE,gBAAgB,GAAG,WAAW;IACtC,EAAE,EAAE,gBAAgB,GAAG,WAAW;IAClC,EAAE,EAAE,gBAAgB,GAAG,WAAW;IAClC,WAAW,CAAC,QAA2B,EAAE;QACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QAClC,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;YACpD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;YACpC,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC;SACpD,CAAC;IACJ,CAAC;CAC2E,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var ltc_shaders_exports = {};
|
|
19
|
+
__export(ltc_shaders_exports, {
|
|
20
|
+
areaLTCGLSL: () => areaLTCGLSL,
|
|
21
|
+
areaLTCWGSL: () => areaLTCWGSL
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(ltc_shaders_exports);
|
|
24
|
+
const areaLTCGLSL = (
|
|
25
|
+
/* glsl */
|
|
26
|
+
`
|
|
27
|
+
#ifdef USE_AREA_LIGHT_LTC
|
|
28
|
+
uniform sampler2D areaLTCMatrix;
|
|
29
|
+
uniform sampler2D areaLTCAmplitude;
|
|
30
|
+
// GGX fit and Fresnel decomposition: Heitz, Dupuy, Hill and Neubelt, SIGGRAPH 2016.
|
|
31
|
+
// Explicit bilinear lookup avoids requiring filterable float32 textures on WebGPU.
|
|
32
|
+
vec4 areaLTC_lookup(sampler2D table, vec2 coordinate) {
|
|
33
|
+
vec2 position = clamp(coordinate, 0.0, 1.0) * 63.0;
|
|
34
|
+
ivec2 lower = ivec2(floor(position));
|
|
35
|
+
ivec2 upper = min(lower + ivec2(1), ivec2(63));
|
|
36
|
+
vec2 fraction = fract(position);
|
|
37
|
+
return mix(mix(texelFetch(table, lower, 0), texelFetch(table, ivec2(upper.x, lower.y), 0), fraction.x),
|
|
38
|
+
mix(texelFetch(table, ivec2(lower.x, upper.y), 0), texelFetch(table, upper, 0), fraction.x), fraction.y);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Exact horizon clipping followed by the spherical polygon edge integral.
|
|
42
|
+
// Disk support uses an inscribed 32-gon; the area error is below 0.65 percent.
|
|
43
|
+
float areaLTC_integral(AreaLightUniform light, vec3 receiver, vec3 normal, vec3 view, mat3 inverseTransform) {
|
|
44
|
+
if (dot(light.normal, receiver - light.position) <= 0.0) return 0.0;
|
|
45
|
+
vec3 tangent = view - normal * dot(view, normal);
|
|
46
|
+
if (dot(tangent, tangent) < 1e-8) {
|
|
47
|
+
vec3 axis = abs(normal.z) < 0.9 ? vec3(0.0, 0.0, 1.0) : vec3(0.0, 1.0, 0.0);
|
|
48
|
+
tangent = cross(axis, normal);
|
|
49
|
+
}
|
|
50
|
+
tangent = normalize(tangent);
|
|
51
|
+
mat3 transform = inverseTransform * transpose(mat3(tangent, -cross(normal, tangent), normal));
|
|
52
|
+
vec3 vertices[33];
|
|
53
|
+
int count = light.disk != 0 ? 32 : 4;
|
|
54
|
+
for (int index = 0; index < 32; index++) {
|
|
55
|
+
if (index >= count) break;
|
|
56
|
+
vec2 coordinate;
|
|
57
|
+
if (light.disk != 0) {
|
|
58
|
+
float angle = float(index) * 6.28318530718 / 32.0;
|
|
59
|
+
coordinate = vec2(cos(angle), -sin(angle));
|
|
60
|
+
} else {
|
|
61
|
+
coordinate = index == 0 ? vec2(1.0, -1.0) : index == 1 ? vec2(-1.0, -1.0) : index == 2 ? vec2(-1.0, 1.0) : vec2(1.0, 1.0);
|
|
62
|
+
}
|
|
63
|
+
vertices[index] = transform * (light.position + coordinate.x * light.halfAxisX + coordinate.y * light.halfAxisY - receiver);
|
|
64
|
+
}
|
|
65
|
+
vec3 clipped[34];
|
|
66
|
+
int clippedCount = 0;
|
|
67
|
+
for (int index = 0; index < 32; index++) {
|
|
68
|
+
if (index >= count) break;
|
|
69
|
+
vec3 start = vertices[index];
|
|
70
|
+
vec3 end = vertices[(index + 1) % count];
|
|
71
|
+
if (start.z > 0.0) { clipped[clippedCount] = start; clippedCount++; }
|
|
72
|
+
if ((start.z > 0.0) != (end.z > 0.0)) {
|
|
73
|
+
clipped[clippedCount] = mix(start, end, start.z / (start.z - end.z));
|
|
74
|
+
clippedCount++;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (clippedCount < 3) return 0.0;
|
|
78
|
+
vec3 integral = vec3(0.0);
|
|
79
|
+
for (int index = 0; index < 34; index++) {
|
|
80
|
+
if (index >= clippedCount) break;
|
|
81
|
+
vec3 start = normalize(clipped[index]);
|
|
82
|
+
vec3 end = normalize(clipped[(index + 1) % clippedCount]);
|
|
83
|
+
vec3 edge = cross(start, end);
|
|
84
|
+
float sine = length(edge);
|
|
85
|
+
if (sine > 1e-7) integral += edge * (acos(clamp(dot(start, end), -1.0, 1.0)) / sine);
|
|
86
|
+
}
|
|
87
|
+
return min(abs(integral.z) / 6.28318530718, 1.0);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
vec3 areaLTC_specular(AreaLightUniform light, vec3 receiver, vec3 normal, vec3 view, float roughness, vec3 reflectance0, vec3 reflectance90) {
|
|
91
|
+
vec2 coordinate = vec2(roughness, sqrt(1.0 - clamp(dot(normal, view), 0.0, 1.0)));
|
|
92
|
+
vec4 coefficients = areaLTC_lookup(areaLTCMatrix, coordinate);
|
|
93
|
+
vec4 amplitude = areaLTC_lookup(areaLTCAmplitude, coordinate);
|
|
94
|
+
mat3 inverseTransform = mat3(vec3(coefficients.x, 0.0, coefficients.y), vec3(0.0, 1.0, 0.0), vec3(coefficients.z, 0.0, coefficients.w));
|
|
95
|
+
vec3 fresnel = reflectance0 * amplitude.x + (reflectance90 - reflectance0) * amplitude.y;
|
|
96
|
+
return light.color * fresnel * areaLTC_integral(light, receiver, normal, view, inverseTransform);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
vec3 areaLTC_evaluate(int index, vec3 receiver, vec3 normal, vec3 view, float roughness, vec3 diffuseColor, vec3 reflectance0, vec3 reflectance90) {
|
|
100
|
+
AreaLightUniform light = areaLighting_getLight(index);
|
|
101
|
+
float diffuseIntegral = areaLTC_integral(light, receiver, normal, view, mat3(1.0));
|
|
102
|
+
return light.color * diffuseColor * (vec3(1.0) - reflectance0) * diffuseIntegral +
|
|
103
|
+
areaLTC_specular(light, receiver, normal, view, roughness, reflectance0, reflectance90);
|
|
104
|
+
}
|
|
105
|
+
#endif
|
|
106
|
+
`
|
|
107
|
+
);
|
|
108
|
+
const areaLTCWGSL = (
|
|
109
|
+
/* wgsl */
|
|
110
|
+
`
|
|
111
|
+
#ifdef USE_AREA_LIGHT_LTC
|
|
112
|
+
@group(2) @binding(auto) var areaLTCMatrix: texture_2d<f32>;
|
|
113
|
+
@group(2) @binding(auto) var areaLTCAmplitude: texture_2d<f32>;
|
|
114
|
+
fn areaLTC_lookup(table: texture_2d<f32>, coordinate: vec2f) -> vec4f {
|
|
115
|
+
let position = clamp(coordinate, vec2f(0.0), vec2f(1.0)) * 63.0;
|
|
116
|
+
let lower = vec2i(floor(position));
|
|
117
|
+
let upper = min(lower + vec2i(1), vec2i(63));
|
|
118
|
+
let fraction = fract(position);
|
|
119
|
+
return mix(mix(textureLoad(table, lower, 0), textureLoad(table, vec2i(upper.x, lower.y), 0), fraction.x),
|
|
120
|
+
mix(textureLoad(table, vec2i(lower.x, upper.y), 0), textureLoad(table, upper, 0), fraction.x), fraction.y);
|
|
121
|
+
}
|
|
122
|
+
fn areaLTC_integral(light: AreaLightUniform, receiver: vec3f, normal: vec3f, view: vec3f, inverseTransform: mat3x3f) -> f32 {
|
|
123
|
+
if (dot(light.normal, receiver - light.position) <= 0.0) { return 0.0; }
|
|
124
|
+
var tangent = view - normal * dot(view, normal);
|
|
125
|
+
if (dot(tangent, tangent) < 1e-8) {
|
|
126
|
+
let axis = select(vec3f(0.0, 1.0, 0.0), vec3f(0.0, 0.0, 1.0), abs(normal.z) < 0.9);
|
|
127
|
+
tangent = cross(axis, normal);
|
|
128
|
+
}
|
|
129
|
+
tangent = normalize(tangent);
|
|
130
|
+
let transform = inverseTransform * transpose(mat3x3f(tangent, -cross(normal, tangent), normal));
|
|
131
|
+
var vertices: array<vec3f, 33>;
|
|
132
|
+
let count = select(4, 32, light.disk != 0);
|
|
133
|
+
for (var index = 0; index < 32; index++) {
|
|
134
|
+
if (index >= count) { break; }
|
|
135
|
+
var coordinate: vec2f;
|
|
136
|
+
if (light.disk != 0) {
|
|
137
|
+
let angle = f32(index) * 6.28318530718 / 32.0;
|
|
138
|
+
coordinate = vec2f(cos(angle), -sin(angle));
|
|
139
|
+
} else {
|
|
140
|
+
coordinate = vec2f(1.0, 1.0);
|
|
141
|
+
if (index == 0) { coordinate = vec2f(1.0, -1.0); }
|
|
142
|
+
if (index == 1) { coordinate = vec2f(-1.0, -1.0); }
|
|
143
|
+
if (index == 2) { coordinate = vec2f(-1.0, 1.0); }
|
|
144
|
+
}
|
|
145
|
+
vertices[index] = transform * (light.position + coordinate.x * light.halfAxisX + coordinate.y * light.halfAxisY - receiver);
|
|
146
|
+
}
|
|
147
|
+
var clipped: array<vec3f, 34>;
|
|
148
|
+
var clippedCount = 0;
|
|
149
|
+
for (var index = 0; index < 32; index++) {
|
|
150
|
+
if (index >= count) { break; }
|
|
151
|
+
let start = vertices[index];
|
|
152
|
+
let end = vertices[(index + 1) % count];
|
|
153
|
+
if (start.z > 0.0) { clipped[clippedCount] = start; clippedCount++; }
|
|
154
|
+
if ((start.z > 0.0) != (end.z > 0.0)) {
|
|
155
|
+
clipped[clippedCount] = mix(start, end, start.z / (start.z - end.z));
|
|
156
|
+
clippedCount++;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (clippedCount < 3) { return 0.0; }
|
|
160
|
+
var integral = vec3f(0.0);
|
|
161
|
+
for (var index = 0; index < 34; index++) {
|
|
162
|
+
if (index >= clippedCount) { break; }
|
|
163
|
+
let start = normalize(clipped[index]);
|
|
164
|
+
let end = normalize(clipped[(index + 1) % clippedCount]);
|
|
165
|
+
let edge = cross(start, end);
|
|
166
|
+
let sine = length(edge);
|
|
167
|
+
if (sine > 1e-7) { integral += edge * (acos(clamp(dot(start, end), -1.0, 1.0)) / sine); }
|
|
168
|
+
}
|
|
169
|
+
return min(abs(integral.z) / 6.28318530718, 1.0);
|
|
170
|
+
}
|
|
171
|
+
fn areaLTC_specular(light: AreaLightUniform, receiver: vec3f, normal: vec3f, view: vec3f, roughness: f32, reflectance0: vec3f, reflectance90: vec3f) -> vec3f {
|
|
172
|
+
let coordinate = vec2f(roughness, sqrt(1.0 - clamp(dot(normal, view), 0.0, 1.0)));
|
|
173
|
+
let coefficients = areaLTC_lookup(areaLTCMatrix, coordinate);
|
|
174
|
+
let amplitude = areaLTC_lookup(areaLTCAmplitude, coordinate);
|
|
175
|
+
let inverseTransform = mat3x3f(vec3f(coefficients.x, 0.0, coefficients.y), vec3f(0.0, 1.0, 0.0), vec3f(coefficients.z, 0.0, coefficients.w));
|
|
176
|
+
let fresnel = reflectance0 * amplitude.x + (reflectance90 - reflectance0) * amplitude.y;
|
|
177
|
+
return light.color * fresnel * areaLTC_integral(light, receiver, normal, view, inverseTransform);
|
|
178
|
+
}
|
|
179
|
+
fn areaLTC_evaluate(index: i32, receiver: vec3f, normal: vec3f, view: vec3f, roughness: f32, diffuseColor: vec3f, reflectance0: vec3f, reflectance90: vec3f) -> vec3f {
|
|
180
|
+
let light = areaLighting_getLight(index);
|
|
181
|
+
let diffuseIntegral = areaLTC_integral(light, receiver, normal, view, mat3x3f(vec3f(1.0,0.0,0.0),vec3f(0.0,1.0,0.0),vec3f(0.0,0.0,1.0)));
|
|
182
|
+
return light.color * diffuseColor * (vec3f(1.0) - reflectance0) * diffuseIntegral +
|
|
183
|
+
areaLTC_specular(light, receiver, normal, view, roughness, reflectance0, reflectance90);
|
|
184
|
+
}
|
|
185
|
+
#endif
|
|
186
|
+
`
|
|
187
|
+
);
|
|
188
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
189
|
+
0 && (module.exports = {
|
|
190
|
+
areaLTCGLSL,
|
|
191
|
+
areaLTCWGSL
|
|
192
|
+
});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const areaLTCGLSL = "\n#ifdef USE_AREA_LIGHT_LTC\nuniform sampler2D areaLTCMatrix;\nuniform sampler2D areaLTCAmplitude;\n// GGX fit and Fresnel decomposition: Heitz, Dupuy, Hill and Neubelt, SIGGRAPH 2016.\n// Explicit bilinear lookup avoids requiring filterable float32 textures on WebGPU.\nvec4 areaLTC_lookup(sampler2D table, vec2 coordinate) {\n vec2 position = clamp(coordinate, 0.0, 1.0) * 63.0;\n ivec2 lower = ivec2(floor(position));\n ivec2 upper = min(lower + ivec2(1), ivec2(63));\n vec2 fraction = fract(position);\n return mix(mix(texelFetch(table, lower, 0), texelFetch(table, ivec2(upper.x, lower.y), 0), fraction.x),\n mix(texelFetch(table, ivec2(lower.x, upper.y), 0), texelFetch(table, upper, 0), fraction.x), fraction.y);\n}\n\n// Exact horizon clipping followed by the spherical polygon edge integral.\n// Disk support uses an inscribed 32-gon; the area error is below 0.65 percent.\nfloat areaLTC_integral(AreaLightUniform light, vec3 receiver, vec3 normal, vec3 view, mat3 inverseTransform) {\n if (dot(light.normal, receiver - light.position) <= 0.0) return 0.0;\n vec3 tangent = view - normal * dot(view, normal);\n if (dot(tangent, tangent) < 1e-8) {\n vec3 axis = abs(normal.z) < 0.9 ? vec3(0.0, 0.0, 1.0) : vec3(0.0, 1.0, 0.0);\n tangent = cross(axis, normal);\n }\n tangent = normalize(tangent);\n mat3 transform = inverseTransform * transpose(mat3(tangent, -cross(normal, tangent), normal));\n vec3 vertices[33];\n int count = light.disk != 0 ? 32 : 4;\n for (int index = 0; index < 32; index++) {\n if (index >= count) break;\n vec2 coordinate;\n if (light.disk != 0) {\n float angle = float(index) * 6.28318530718 / 32.0;\n coordinate = vec2(cos(angle), -sin(angle));\n } else {\n coordinate = index == 0 ? vec2(1.0, -1.0) : index == 1 ? vec2(-1.0, -1.0) : index == 2 ? vec2(-1.0, 1.0) : vec2(1.0, 1.0);\n }\n vertices[index] = transform * (light.position + coordinate.x * light.halfAxisX + coordinate.y * light.halfAxisY - receiver);\n }\n vec3 clipped[34];\n int clippedCount = 0;\n for (int index = 0; index < 32; index++) {\n if (index >= count) break;\n vec3 start = vertices[index];\n vec3 end = vertices[(index + 1) % count];\n if (start.z > 0.0) { clipped[clippedCount] = start; clippedCount++; }\n if ((start.z > 0.0) != (end.z > 0.0)) {\n clipped[clippedCount] = mix(start, end, start.z / (start.z - end.z));\n clippedCount++;\n }\n }\n if (clippedCount < 3) return 0.0;\n vec3 integral = vec3(0.0);\n for (int index = 0; index < 34; index++) {\n if (index >= clippedCount) break;\n vec3 start = normalize(clipped[index]);\n vec3 end = normalize(clipped[(index + 1) % clippedCount]);\n vec3 edge = cross(start, end);\n float sine = length(edge);\n if (sine > 1e-7) integral += edge * (acos(clamp(dot(start, end), -1.0, 1.0)) / sine);\n }\n return min(abs(integral.z) / 6.28318530718, 1.0);\n}\n\nvec3 areaLTC_specular(AreaLightUniform light, vec3 receiver, vec3 normal, vec3 view, float roughness, vec3 reflectance0, vec3 reflectance90) {\n vec2 coordinate = vec2(roughness, sqrt(1.0 - clamp(dot(normal, view), 0.0, 1.0)));\n vec4 coefficients = areaLTC_lookup(areaLTCMatrix, coordinate);\n vec4 amplitude = areaLTC_lookup(areaLTCAmplitude, coordinate);\n mat3 inverseTransform = mat3(vec3(coefficients.x, 0.0, coefficients.y), vec3(0.0, 1.0, 0.0), vec3(coefficients.z, 0.0, coefficients.w));\n vec3 fresnel = reflectance0 * amplitude.x + (reflectance90 - reflectance0) * amplitude.y;\n return light.color * fresnel * areaLTC_integral(light, receiver, normal, view, inverseTransform);\n}\n\nvec3 areaLTC_evaluate(int index, vec3 receiver, vec3 normal, vec3 view, float roughness, vec3 diffuseColor, vec3 reflectance0, vec3 reflectance90) {\n AreaLightUniform light = areaLighting_getLight(index);\n float diffuseIntegral = areaLTC_integral(light, receiver, normal, view, mat3(1.0));\n return light.color * diffuseColor * (vec3(1.0) - reflectance0) * diffuseIntegral +\n areaLTC_specular(light, receiver, normal, view, roughness, reflectance0, reflectance90);\n}\n#endif\n";
|
|
2
|
+
export declare const areaLTCWGSL = "\n#ifdef USE_AREA_LIGHT_LTC\n@group(2) @binding(auto) var areaLTCMatrix: texture_2d<f32>;\n@group(2) @binding(auto) var areaLTCAmplitude: texture_2d<f32>;\nfn areaLTC_lookup(table: texture_2d<f32>, coordinate: vec2f) -> vec4f {\n let position = clamp(coordinate, vec2f(0.0), vec2f(1.0)) * 63.0;\n let lower = vec2i(floor(position));\n let upper = min(lower + vec2i(1), vec2i(63));\n let fraction = fract(position);\n return mix(mix(textureLoad(table, lower, 0), textureLoad(table, vec2i(upper.x, lower.y), 0), fraction.x),\n mix(textureLoad(table, vec2i(lower.x, upper.y), 0), textureLoad(table, upper, 0), fraction.x), fraction.y);\n}\nfn areaLTC_integral(light: AreaLightUniform, receiver: vec3f, normal: vec3f, view: vec3f, inverseTransform: mat3x3f) -> f32 {\n if (dot(light.normal, receiver - light.position) <= 0.0) { return 0.0; }\n var tangent = view - normal * dot(view, normal);\n if (dot(tangent, tangent) < 1e-8) {\n let axis = select(vec3f(0.0, 1.0, 0.0), vec3f(0.0, 0.0, 1.0), abs(normal.z) < 0.9);\n tangent = cross(axis, normal);\n }\n tangent = normalize(tangent);\n let transform = inverseTransform * transpose(mat3x3f(tangent, -cross(normal, tangent), normal));\n var vertices: array<vec3f, 33>;\n let count = select(4, 32, light.disk != 0);\n for (var index = 0; index < 32; index++) {\n if (index >= count) { break; }\n var coordinate: vec2f;\n if (light.disk != 0) {\n let angle = f32(index) * 6.28318530718 / 32.0;\n coordinate = vec2f(cos(angle), -sin(angle));\n } else {\n coordinate = vec2f(1.0, 1.0);\n if (index == 0) { coordinate = vec2f(1.0, -1.0); }\n if (index == 1) { coordinate = vec2f(-1.0, -1.0); }\n if (index == 2) { coordinate = vec2f(-1.0, 1.0); }\n }\n vertices[index] = transform * (light.position + coordinate.x * light.halfAxisX + coordinate.y * light.halfAxisY - receiver);\n }\n var clipped: array<vec3f, 34>;\n var clippedCount = 0;\n for (var index = 0; index < 32; index++) {\n if (index >= count) { break; }\n let start = vertices[index];\n let end = vertices[(index + 1) % count];\n if (start.z > 0.0) { clipped[clippedCount] = start; clippedCount++; }\n if ((start.z > 0.0) != (end.z > 0.0)) {\n clipped[clippedCount] = mix(start, end, start.z / (start.z - end.z));\n clippedCount++;\n }\n }\n if (clippedCount < 3) { return 0.0; }\n var integral = vec3f(0.0);\n for (var index = 0; index < 34; index++) {\n if (index >= clippedCount) { break; }\n let start = normalize(clipped[index]);\n let end = normalize(clipped[(index + 1) % clippedCount]);\n let edge = cross(start, end);\n let sine = length(edge);\n if (sine > 1e-7) { integral += edge * (acos(clamp(dot(start, end), -1.0, 1.0)) / sine); }\n }\n return min(abs(integral.z) / 6.28318530718, 1.0);\n}\nfn areaLTC_specular(light: AreaLightUniform, receiver: vec3f, normal: vec3f, view: vec3f, roughness: f32, reflectance0: vec3f, reflectance90: vec3f) -> vec3f {\n let coordinate = vec2f(roughness, sqrt(1.0 - clamp(dot(normal, view), 0.0, 1.0)));\n let coefficients = areaLTC_lookup(areaLTCMatrix, coordinate);\n let amplitude = areaLTC_lookup(areaLTCAmplitude, coordinate);\n let inverseTransform = mat3x3f(vec3f(coefficients.x, 0.0, coefficients.y), vec3f(0.0, 1.0, 0.0), vec3f(coefficients.z, 0.0, coefficients.w));\n let fresnel = reflectance0 * amplitude.x + (reflectance90 - reflectance0) * amplitude.y;\n return light.color * fresnel * areaLTC_integral(light, receiver, normal, view, inverseTransform);\n}\nfn areaLTC_evaluate(index: i32, receiver: vec3f, normal: vec3f, view: vec3f, roughness: f32, diffuseColor: vec3f, reflectance0: vec3f, reflectance90: vec3f) -> vec3f {\n let light = areaLighting_getLight(index);\n let diffuseIntegral = areaLTC_integral(light, receiver, normal, view, mat3x3f(vec3f(1.0,0.0,0.0),vec3f(0.0,1.0,0.0),vec3f(0.0,0.0,1.0)));\n return light.color * diffuseColor * (vec3f(1.0) - reflectance0) * diffuseIntegral +\n areaLTC_specular(light, receiver, normal, view, roughness, reflectance0, reflectance90);\n}\n#endif\n";
|
|
3
|
+
//# sourceMappingURL=ltc-shaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ltc-shaders.d.ts","sourceRoot":"","sources":["../../../../src/modules/lighting/area-lighting/ltc-shaders.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,iiIAgFvB,CAAC;AAEF,eAAO,MAAM,WAAW,ohIA4EvB,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
export const areaLTCGLSL = /* glsl */ `
|
|
5
|
+
#ifdef USE_AREA_LIGHT_LTC
|
|
6
|
+
uniform sampler2D areaLTCMatrix;
|
|
7
|
+
uniform sampler2D areaLTCAmplitude;
|
|
8
|
+
// GGX fit and Fresnel decomposition: Heitz, Dupuy, Hill and Neubelt, SIGGRAPH 2016.
|
|
9
|
+
// Explicit bilinear lookup avoids requiring filterable float32 textures on WebGPU.
|
|
10
|
+
vec4 areaLTC_lookup(sampler2D table, vec2 coordinate) {
|
|
11
|
+
vec2 position = clamp(coordinate, 0.0, 1.0) * 63.0;
|
|
12
|
+
ivec2 lower = ivec2(floor(position));
|
|
13
|
+
ivec2 upper = min(lower + ivec2(1), ivec2(63));
|
|
14
|
+
vec2 fraction = fract(position);
|
|
15
|
+
return mix(mix(texelFetch(table, lower, 0), texelFetch(table, ivec2(upper.x, lower.y), 0), fraction.x),
|
|
16
|
+
mix(texelFetch(table, ivec2(lower.x, upper.y), 0), texelFetch(table, upper, 0), fraction.x), fraction.y);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Exact horizon clipping followed by the spherical polygon edge integral.
|
|
20
|
+
// Disk support uses an inscribed 32-gon; the area error is below 0.65 percent.
|
|
21
|
+
float areaLTC_integral(AreaLightUniform light, vec3 receiver, vec3 normal, vec3 view, mat3 inverseTransform) {
|
|
22
|
+
if (dot(light.normal, receiver - light.position) <= 0.0) return 0.0;
|
|
23
|
+
vec3 tangent = view - normal * dot(view, normal);
|
|
24
|
+
if (dot(tangent, tangent) < 1e-8) {
|
|
25
|
+
vec3 axis = abs(normal.z) < 0.9 ? vec3(0.0, 0.0, 1.0) : vec3(0.0, 1.0, 0.0);
|
|
26
|
+
tangent = cross(axis, normal);
|
|
27
|
+
}
|
|
28
|
+
tangent = normalize(tangent);
|
|
29
|
+
mat3 transform = inverseTransform * transpose(mat3(tangent, -cross(normal, tangent), normal));
|
|
30
|
+
vec3 vertices[33];
|
|
31
|
+
int count = light.disk != 0 ? 32 : 4;
|
|
32
|
+
for (int index = 0; index < 32; index++) {
|
|
33
|
+
if (index >= count) break;
|
|
34
|
+
vec2 coordinate;
|
|
35
|
+
if (light.disk != 0) {
|
|
36
|
+
float angle = float(index) * 6.28318530718 / 32.0;
|
|
37
|
+
coordinate = vec2(cos(angle), -sin(angle));
|
|
38
|
+
} else {
|
|
39
|
+
coordinate = index == 0 ? vec2(1.0, -1.0) : index == 1 ? vec2(-1.0, -1.0) : index == 2 ? vec2(-1.0, 1.0) : vec2(1.0, 1.0);
|
|
40
|
+
}
|
|
41
|
+
vertices[index] = transform * (light.position + coordinate.x * light.halfAxisX + coordinate.y * light.halfAxisY - receiver);
|
|
42
|
+
}
|
|
43
|
+
vec3 clipped[34];
|
|
44
|
+
int clippedCount = 0;
|
|
45
|
+
for (int index = 0; index < 32; index++) {
|
|
46
|
+
if (index >= count) break;
|
|
47
|
+
vec3 start = vertices[index];
|
|
48
|
+
vec3 end = vertices[(index + 1) % count];
|
|
49
|
+
if (start.z > 0.0) { clipped[clippedCount] = start; clippedCount++; }
|
|
50
|
+
if ((start.z > 0.0) != (end.z > 0.0)) {
|
|
51
|
+
clipped[clippedCount] = mix(start, end, start.z / (start.z - end.z));
|
|
52
|
+
clippedCount++;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (clippedCount < 3) return 0.0;
|
|
56
|
+
vec3 integral = vec3(0.0);
|
|
57
|
+
for (int index = 0; index < 34; index++) {
|
|
58
|
+
if (index >= clippedCount) break;
|
|
59
|
+
vec3 start = normalize(clipped[index]);
|
|
60
|
+
vec3 end = normalize(clipped[(index + 1) % clippedCount]);
|
|
61
|
+
vec3 edge = cross(start, end);
|
|
62
|
+
float sine = length(edge);
|
|
63
|
+
if (sine > 1e-7) integral += edge * (acos(clamp(dot(start, end), -1.0, 1.0)) / sine);
|
|
64
|
+
}
|
|
65
|
+
return min(abs(integral.z) / 6.28318530718, 1.0);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
vec3 areaLTC_specular(AreaLightUniform light, vec3 receiver, vec3 normal, vec3 view, float roughness, vec3 reflectance0, vec3 reflectance90) {
|
|
69
|
+
vec2 coordinate = vec2(roughness, sqrt(1.0 - clamp(dot(normal, view), 0.0, 1.0)));
|
|
70
|
+
vec4 coefficients = areaLTC_lookup(areaLTCMatrix, coordinate);
|
|
71
|
+
vec4 amplitude = areaLTC_lookup(areaLTCAmplitude, coordinate);
|
|
72
|
+
mat3 inverseTransform = mat3(vec3(coefficients.x, 0.0, coefficients.y), vec3(0.0, 1.0, 0.0), vec3(coefficients.z, 0.0, coefficients.w));
|
|
73
|
+
vec3 fresnel = reflectance0 * amplitude.x + (reflectance90 - reflectance0) * amplitude.y;
|
|
74
|
+
return light.color * fresnel * areaLTC_integral(light, receiver, normal, view, inverseTransform);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
vec3 areaLTC_evaluate(int index, vec3 receiver, vec3 normal, vec3 view, float roughness, vec3 diffuseColor, vec3 reflectance0, vec3 reflectance90) {
|
|
78
|
+
AreaLightUniform light = areaLighting_getLight(index);
|
|
79
|
+
float diffuseIntegral = areaLTC_integral(light, receiver, normal, view, mat3(1.0));
|
|
80
|
+
return light.color * diffuseColor * (vec3(1.0) - reflectance0) * diffuseIntegral +
|
|
81
|
+
areaLTC_specular(light, receiver, normal, view, roughness, reflectance0, reflectance90);
|
|
82
|
+
}
|
|
83
|
+
#endif
|
|
84
|
+
`;
|
|
85
|
+
export const areaLTCWGSL = /* wgsl */ `
|
|
86
|
+
#ifdef USE_AREA_LIGHT_LTC
|
|
87
|
+
@group(2) @binding(auto) var areaLTCMatrix: texture_2d<f32>;
|
|
88
|
+
@group(2) @binding(auto) var areaLTCAmplitude: texture_2d<f32>;
|
|
89
|
+
fn areaLTC_lookup(table: texture_2d<f32>, coordinate: vec2f) -> vec4f {
|
|
90
|
+
let position = clamp(coordinate, vec2f(0.0), vec2f(1.0)) * 63.0;
|
|
91
|
+
let lower = vec2i(floor(position));
|
|
92
|
+
let upper = min(lower + vec2i(1), vec2i(63));
|
|
93
|
+
let fraction = fract(position);
|
|
94
|
+
return mix(mix(textureLoad(table, lower, 0), textureLoad(table, vec2i(upper.x, lower.y), 0), fraction.x),
|
|
95
|
+
mix(textureLoad(table, vec2i(lower.x, upper.y), 0), textureLoad(table, upper, 0), fraction.x), fraction.y);
|
|
96
|
+
}
|
|
97
|
+
fn areaLTC_integral(light: AreaLightUniform, receiver: vec3f, normal: vec3f, view: vec3f, inverseTransform: mat3x3f) -> f32 {
|
|
98
|
+
if (dot(light.normal, receiver - light.position) <= 0.0) { return 0.0; }
|
|
99
|
+
var tangent = view - normal * dot(view, normal);
|
|
100
|
+
if (dot(tangent, tangent) < 1e-8) {
|
|
101
|
+
let axis = select(vec3f(0.0, 1.0, 0.0), vec3f(0.0, 0.0, 1.0), abs(normal.z) < 0.9);
|
|
102
|
+
tangent = cross(axis, normal);
|
|
103
|
+
}
|
|
104
|
+
tangent = normalize(tangent);
|
|
105
|
+
let transform = inverseTransform * transpose(mat3x3f(tangent, -cross(normal, tangent), normal));
|
|
106
|
+
var vertices: array<vec3f, 33>;
|
|
107
|
+
let count = select(4, 32, light.disk != 0);
|
|
108
|
+
for (var index = 0; index < 32; index++) {
|
|
109
|
+
if (index >= count) { break; }
|
|
110
|
+
var coordinate: vec2f;
|
|
111
|
+
if (light.disk != 0) {
|
|
112
|
+
let angle = f32(index) * 6.28318530718 / 32.0;
|
|
113
|
+
coordinate = vec2f(cos(angle), -sin(angle));
|
|
114
|
+
} else {
|
|
115
|
+
coordinate = vec2f(1.0, 1.0);
|
|
116
|
+
if (index == 0) { coordinate = vec2f(1.0, -1.0); }
|
|
117
|
+
if (index == 1) { coordinate = vec2f(-1.0, -1.0); }
|
|
118
|
+
if (index == 2) { coordinate = vec2f(-1.0, 1.0); }
|
|
119
|
+
}
|
|
120
|
+
vertices[index] = transform * (light.position + coordinate.x * light.halfAxisX + coordinate.y * light.halfAxisY - receiver);
|
|
121
|
+
}
|
|
122
|
+
var clipped: array<vec3f, 34>;
|
|
123
|
+
var clippedCount = 0;
|
|
124
|
+
for (var index = 0; index < 32; index++) {
|
|
125
|
+
if (index >= count) { break; }
|
|
126
|
+
let start = vertices[index];
|
|
127
|
+
let end = vertices[(index + 1) % count];
|
|
128
|
+
if (start.z > 0.0) { clipped[clippedCount] = start; clippedCount++; }
|
|
129
|
+
if ((start.z > 0.0) != (end.z > 0.0)) {
|
|
130
|
+
clipped[clippedCount] = mix(start, end, start.z / (start.z - end.z));
|
|
131
|
+
clippedCount++;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (clippedCount < 3) { return 0.0; }
|
|
135
|
+
var integral = vec3f(0.0);
|
|
136
|
+
for (var index = 0; index < 34; index++) {
|
|
137
|
+
if (index >= clippedCount) { break; }
|
|
138
|
+
let start = normalize(clipped[index]);
|
|
139
|
+
let end = normalize(clipped[(index + 1) % clippedCount]);
|
|
140
|
+
let edge = cross(start, end);
|
|
141
|
+
let sine = length(edge);
|
|
142
|
+
if (sine > 1e-7) { integral += edge * (acos(clamp(dot(start, end), -1.0, 1.0)) / sine); }
|
|
143
|
+
}
|
|
144
|
+
return min(abs(integral.z) / 6.28318530718, 1.0);
|
|
145
|
+
}
|
|
146
|
+
fn areaLTC_specular(light: AreaLightUniform, receiver: vec3f, normal: vec3f, view: vec3f, roughness: f32, reflectance0: vec3f, reflectance90: vec3f) -> vec3f {
|
|
147
|
+
let coordinate = vec2f(roughness, sqrt(1.0 - clamp(dot(normal, view), 0.0, 1.0)));
|
|
148
|
+
let coefficients = areaLTC_lookup(areaLTCMatrix, coordinate);
|
|
149
|
+
let amplitude = areaLTC_lookup(areaLTCAmplitude, coordinate);
|
|
150
|
+
let inverseTransform = mat3x3f(vec3f(coefficients.x, 0.0, coefficients.y), vec3f(0.0, 1.0, 0.0), vec3f(coefficients.z, 0.0, coefficients.w));
|
|
151
|
+
let fresnel = reflectance0 * amplitude.x + (reflectance90 - reflectance0) * amplitude.y;
|
|
152
|
+
return light.color * fresnel * areaLTC_integral(light, receiver, normal, view, inverseTransform);
|
|
153
|
+
}
|
|
154
|
+
fn areaLTC_evaluate(index: i32, receiver: vec3f, normal: vec3f, view: vec3f, roughness: f32, diffuseColor: vec3f, reflectance0: vec3f, reflectance90: vec3f) -> vec3f {
|
|
155
|
+
let light = areaLighting_getLight(index);
|
|
156
|
+
let diffuseIntegral = areaLTC_integral(light, receiver, normal, view, mat3x3f(vec3f(1.0,0.0,0.0),vec3f(0.0,1.0,0.0),vec3f(0.0,0.0,1.0)));
|
|
157
|
+
return light.color * diffuseColor * (vec3f(1.0) - reflectance0) * diffuseIntegral +
|
|
158
|
+
areaLTC_specular(light, receiver, normal, view, roughness, reflectance0, reflectance90);
|
|
159
|
+
}
|
|
160
|
+
#endif
|
|
161
|
+
`;
|
|
162
|
+
//# sourceMappingURL=ltc-shaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ltc-shaders.js","sourceRoot":"","sources":["../../../../src/modules/lighting/area-lighting/ltc-shaders.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,4DAA4D;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFrC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4ErC,CAAC"}
|