@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,129 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
export const PHONG_WGSL = /* wgsl */ `\
|
|
5
|
+
struct phongMaterialUniforms {
|
|
6
|
+
unlit: u32,
|
|
7
|
+
ambient: f32,
|
|
8
|
+
diffuse: f32,
|
|
9
|
+
shininess: f32,
|
|
10
|
+
specularColor: vec3<f32>,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
@group(3) @binding(auto) var<uniform> phongMaterial : phongMaterialUniforms;
|
|
14
|
+
|
|
15
|
+
fn lighting_getLightColor(surfaceColor: vec3<f32>, light_direction: vec3<f32>, view_direction: vec3<f32>, normal_worldspace: vec3<f32>, color: vec3<f32>) -> vec3<f32> {
|
|
16
|
+
let halfway_direction: vec3<f32> = normalize(light_direction + view_direction);
|
|
17
|
+
var lambertian: f32 = dot(light_direction, normal_worldspace);
|
|
18
|
+
var specular: f32 = 0.0;
|
|
19
|
+
if (lambertian > 0.0) {
|
|
20
|
+
let specular_angle = max(dot(normal_worldspace, halfway_direction), 0.0);
|
|
21
|
+
specular = pow(specular_angle, phongMaterial.shininess);
|
|
22
|
+
}
|
|
23
|
+
lambertian = max(lambertian, 0.0);
|
|
24
|
+
return (
|
|
25
|
+
lambertian * phongMaterial.diffuse * surfaceColor +
|
|
26
|
+
specular * floatColors_normalize(phongMaterial.specularColor)
|
|
27
|
+
) * color;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
fn lighting_getLightColor2(surfaceColor: vec3<f32>, cameraPosition: vec3<f32>, position_worldspace: vec3<f32>, normal_worldspace: vec3<f32>) -> vec3<f32> {
|
|
31
|
+
var lightColor: vec3<f32> = surfaceColor;
|
|
32
|
+
|
|
33
|
+
if (phongMaterial.unlit != 0u) {
|
|
34
|
+
return surfaceColor;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (lighting.enabled == 0) {
|
|
38
|
+
return lightColor;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let view_direction: vec3<f32> = normalize(cameraPosition - position_worldspace);
|
|
42
|
+
lightColor = phongMaterial.ambient * surfaceColor * lighting.ambientColor;
|
|
43
|
+
|
|
44
|
+
for (var i: i32 = 0; i < lighting.pointLightCount; i++) {
|
|
45
|
+
let pointLight: PointLight = lighting_getPointLight(i);
|
|
46
|
+
let light_position_worldspace: vec3<f32> = pointLight.position;
|
|
47
|
+
let light_direction: vec3<f32> = normalize(light_position_worldspace - position_worldspace);
|
|
48
|
+
let light_attenuation = getPointLightAttenuation(
|
|
49
|
+
pointLight,
|
|
50
|
+
distance(light_position_worldspace, position_worldspace)
|
|
51
|
+
);
|
|
52
|
+
lightColor += lighting_getLightColor(
|
|
53
|
+
surfaceColor,
|
|
54
|
+
light_direction,
|
|
55
|
+
view_direction,
|
|
56
|
+
normal_worldspace,
|
|
57
|
+
pointLight.color / light_attenuation
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
for (var i: i32 = 0; i < lighting.spotLightCount; i++) {
|
|
62
|
+
let spotLight: SpotLight = lighting_getSpotLight(i);
|
|
63
|
+
let light_position_worldspace: vec3<f32> = spotLight.position;
|
|
64
|
+
let light_direction: vec3<f32> = normalize(light_position_worldspace - position_worldspace);
|
|
65
|
+
let light_attenuation = getSpotLightAttenuation(spotLight, position_worldspace);
|
|
66
|
+
lightColor += lighting_getLightColor(
|
|
67
|
+
surfaceColor,
|
|
68
|
+
light_direction,
|
|
69
|
+
view_direction,
|
|
70
|
+
normal_worldspace,
|
|
71
|
+
spotLight.color / light_attenuation
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
for (var i: i32 = 0; i < lighting.directionalLightCount; i++) {
|
|
76
|
+
let directionalLight: DirectionalLight = lighting_getDirectionalLight(i);
|
|
77
|
+
lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return lightColor;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
fn lighting_getSpecularLightColor(cameraPosition: vec3<f32>, position_worldspace: vec3<f32>, normal_worldspace: vec3<f32>) -> vec3<f32>{
|
|
84
|
+
var lightColor = vec3<f32>(0, 0, 0);
|
|
85
|
+
let surfaceColor = vec3<f32>(0, 0, 0);
|
|
86
|
+
|
|
87
|
+
if (lighting.enabled != 0) {
|
|
88
|
+
let view_direction = normalize(cameraPosition - position_worldspace);
|
|
89
|
+
|
|
90
|
+
for (var i: i32 = 0; i < lighting.pointLightCount; i++) {
|
|
91
|
+
let pointLight: PointLight = lighting_getPointLight(i);
|
|
92
|
+
let light_position_worldspace: vec3<f32> = pointLight.position;
|
|
93
|
+
let light_direction: vec3<f32> = normalize(light_position_worldspace - position_worldspace);
|
|
94
|
+
let light_attenuation = getPointLightAttenuation(
|
|
95
|
+
pointLight,
|
|
96
|
+
distance(light_position_worldspace, position_worldspace)
|
|
97
|
+
);
|
|
98
|
+
lightColor += lighting_getLightColor(
|
|
99
|
+
surfaceColor,
|
|
100
|
+
light_direction,
|
|
101
|
+
view_direction,
|
|
102
|
+
normal_worldspace,
|
|
103
|
+
pointLight.color / light_attenuation
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
for (var i: i32 = 0; i < lighting.spotLightCount; i++) {
|
|
108
|
+
let spotLight: SpotLight = lighting_getSpotLight(i);
|
|
109
|
+
let light_position_worldspace: vec3<f32> = spotLight.position;
|
|
110
|
+
let light_direction: vec3<f32> = normalize(light_position_worldspace - position_worldspace);
|
|
111
|
+
let light_attenuation = getSpotLightAttenuation(spotLight, position_worldspace);
|
|
112
|
+
lightColor += lighting_getLightColor(
|
|
113
|
+
surfaceColor,
|
|
114
|
+
light_direction,
|
|
115
|
+
view_direction,
|
|
116
|
+
normal_worldspace,
|
|
117
|
+
spotLight.color / light_attenuation
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
for (var i: i32 = 0; i < lighting.directionalLightCount; i++) {
|
|
122
|
+
let directionalLight: DirectionalLight = lighting_getDirectionalLight(i);
|
|
123
|
+
lightColor += lighting_getLightColor(surfaceColor, -directionalLight.direction, view_direction, normal_worldspace, directionalLight.color);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return lightColor;
|
|
127
|
+
}
|
|
128
|
+
`;
|
|
129
|
+
//# sourceMappingURL=phong-shaders-wgsl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phong-shaders-wgsl.js","sourceRoot":"","sources":["../../../../src/modules/lighting/phong-material/phong-shaders-wgsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,4DAA4D;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4HpC,CAAC"}
|
|
@@ -0,0 +1,199 @@
|
|
|
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 surface_weather_exports = {};
|
|
19
|
+
__export(surface_weather_exports, {
|
|
20
|
+
integrateSurfaceWeather: () => integrateSurfaceWeather,
|
|
21
|
+
surfaceWeather: () => surfaceWeather
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(surface_weather_exports);
|
|
24
|
+
var import_value_noise = require("../../math/value-noise/value-noise.cjs");
|
|
25
|
+
function integrateSurfaceWeather(state, rates, elapsedSeconds) {
|
|
26
|
+
function integrate(value, incoming, outgoing) {
|
|
27
|
+
const total = Math.max(incoming, 0) + Math.max(outgoing, 0);
|
|
28
|
+
const bounded = Math.min(1, Math.max(0, value));
|
|
29
|
+
if (total === 0 || elapsedSeconds <= 0)
|
|
30
|
+
return bounded;
|
|
31
|
+
const target = Math.max(incoming, 0) / total;
|
|
32
|
+
return target + (bounded - target) * Math.exp(-total * Math.max(elapsedSeconds, 0));
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
wetness: integrate(state.wetness, rates.rainfall, rates.evaporation),
|
|
36
|
+
snow: integrate(state.snow, rates.snowfall, rates.snowmelt)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const DEFAULT_UNIFORMS = {
|
|
40
|
+
wetness: 0,
|
|
41
|
+
snow: 0,
|
|
42
|
+
puddles: 0.8,
|
|
43
|
+
scale: 20,
|
|
44
|
+
snowColor: [0.9, 0.94, 0.98],
|
|
45
|
+
skyColor: [0.48, 0.6, 0.72]
|
|
46
|
+
};
|
|
47
|
+
const surfaceWeather = {
|
|
48
|
+
name: "surfaceWeather",
|
|
49
|
+
dependencies: [import_value_noise.valueNoise],
|
|
50
|
+
uniformTypes: {
|
|
51
|
+
wetness: "f32",
|
|
52
|
+
snow: "f32",
|
|
53
|
+
puddles: "f32",
|
|
54
|
+
scale: "f32",
|
|
55
|
+
snowColor: "vec3<f32>",
|
|
56
|
+
skyColor: "vec3<f32>"
|
|
57
|
+
},
|
|
58
|
+
defaultUniforms: DEFAULT_UNIFORMS,
|
|
59
|
+
getUniforms(props = {}, previousUniforms = DEFAULT_UNIFORMS) {
|
|
60
|
+
return { ...DEFAULT_UNIFORMS, ...previousUniforms, ...props };
|
|
61
|
+
},
|
|
62
|
+
fs: (
|
|
63
|
+
/* glsl */
|
|
64
|
+
`
|
|
65
|
+
layout(std140) uniform surfaceWeatherUniforms {
|
|
66
|
+
float wetness;
|
|
67
|
+
float snow;
|
|
68
|
+
float puddles;
|
|
69
|
+
float scale;
|
|
70
|
+
vec3 snowColor;
|
|
71
|
+
vec3 skyColor;
|
|
72
|
+
} surfaceWeather;
|
|
73
|
+
|
|
74
|
+
float surfaceWeather_getSnow(vec3 position, vec3 normal, float exposure) {
|
|
75
|
+
if (surfaceWeather.snow <= 0.0 || exposure <= 0.0) return 0.0;
|
|
76
|
+
float slope = smoothstep(0.4, 0.85, normalize(normal).z);
|
|
77
|
+
float variation = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01));
|
|
78
|
+
float coverage = smoothstep(variation * 0.65, variation * 0.65 + 0.35, surfaceWeather.snow);
|
|
79
|
+
return coverage * slope * clamp(exposure, 0.0, 1.0);
|
|
80
|
+
}
|
|
81
|
+
float surfaceWeather_getWetness(vec3 position, vec3 normal, float exposure) {
|
|
82
|
+
if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) return 0.0;
|
|
83
|
+
return clamp(surfaceWeather.wetness, 0.0, 1.0) * clamp(exposure, 0.0, 1.0) * (1.0 - surfaceWeather_getSnow(position, normal, exposure));
|
|
84
|
+
}
|
|
85
|
+
float surfaceWeather_getPuddle(vec3 position, vec3 normal, float exposure) {
|
|
86
|
+
if (surfaceWeather.wetness <= 0.0 || surfaceWeather.puddles <= 0.0 || exposure <= 0.0) return 0.0;
|
|
87
|
+
float variation = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01) + vec2(8.3, 2.7));
|
|
88
|
+
return surfaceWeather_getWetness(position, normal, exposure) * clamp(surfaceWeather.puddles, 0.0, 1.0) *
|
|
89
|
+
smoothstep(0.8, 0.98, normalize(normal).z) * smoothstep(0.38, 0.7, variation);
|
|
90
|
+
}
|
|
91
|
+
vec3 surfaceWeather_getAlbedo(vec3 albedo, vec3 position, vec3 normal, float exposure) {
|
|
92
|
+
if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) return albedo;
|
|
93
|
+
float wetness = surfaceWeather_getWetness(position, normal, exposure);
|
|
94
|
+
float snow = surfaceWeather_getSnow(position, normal, exposure);
|
|
95
|
+
return mix(albedo * (1.0 - wetness * 0.38), surfaceWeather.snowColor, snow);
|
|
96
|
+
}
|
|
97
|
+
float surfaceWeather_getRoughness(float roughness, vec3 position, vec3 normal, float exposure) {
|
|
98
|
+
if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) return roughness;
|
|
99
|
+
float wetness = surfaceWeather_getWetness(position, normal, exposure);
|
|
100
|
+
float puddle = surfaceWeather_getPuddle(position, normal, exposure);
|
|
101
|
+
float snow = surfaceWeather_getSnow(position, normal, exposure);
|
|
102
|
+
return mix(mix(roughness, 0.16, max(puddle, wetness * 0.6)), 0.95, snow);
|
|
103
|
+
}
|
|
104
|
+
// Approximate dielectric highlights and sky tint; callers may use the albedo/roughness helpers with PBR instead.
|
|
105
|
+
vec3 surfaceWeather_getReflection(vec3 position, vec3 normal, vec3 camera, vec3 lightDirection, vec3 lightColor, float exposure) {
|
|
106
|
+
if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) return vec3(0.0);
|
|
107
|
+
vec3 surfaceNormal = normalize(normal);
|
|
108
|
+
vec3 view = normalize(camera - position);
|
|
109
|
+
vec3 halfway = normalize(view + normalize(lightDirection));
|
|
110
|
+
float wetness = surfaceWeather_getWetness(position, normal, exposure);
|
|
111
|
+
float puddle = surfaceWeather_getPuddle(position, normal, exposure);
|
|
112
|
+
float facing = max(dot(surfaceNormal, view), 0.0);
|
|
113
|
+
float fresnel = 0.02 + 0.98 * pow(1.0 - facing, 5.0);
|
|
114
|
+
float highlight = pow(max(dot(surfaceNormal, halfway), 0.0), mix(36.0, 160.0, puddle)) * max(dot(surfaceNormal, normalize(lightDirection)), 0.0);
|
|
115
|
+
return wetness * (surfaceWeather.skyColor * fresnel * (0.15 + puddle * 0.85) + lightColor * highlight * 0.6);
|
|
116
|
+
}
|
|
117
|
+
`
|
|
118
|
+
),
|
|
119
|
+
source: (
|
|
120
|
+
/* wgsl */
|
|
121
|
+
`
|
|
122
|
+
struct surfaceWeatherUniforms {
|
|
123
|
+
wetness: f32,
|
|
124
|
+
snow: f32,
|
|
125
|
+
puddles: f32,
|
|
126
|
+
scale: f32,
|
|
127
|
+
snowColor: vec3f,
|
|
128
|
+
skyColor: vec3f,
|
|
129
|
+
};
|
|
130
|
+
@group(3) @binding(auto) var<uniform> surfaceWeather: surfaceWeatherUniforms;
|
|
131
|
+
|
|
132
|
+
fn surfaceWeather_getSnow(position: vec3f,
|
|
133
|
+
normal: vec3f,
|
|
134
|
+
exposure: f32) -> f32 {
|
|
135
|
+
if (surfaceWeather.snow <= 0.0 || exposure <= 0.0) { return 0.0; }
|
|
136
|
+
var slope: f32 = smoothstep(0.4, 0.85, normalize(normal).z);
|
|
137
|
+
var variation: f32 = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01));
|
|
138
|
+
var coverage: f32 = smoothstep(variation * 0.65, variation * 0.65 + 0.35, surfaceWeather.snow);
|
|
139
|
+
return coverage * slope * clamp(exposure, 0.0, 1.0);
|
|
140
|
+
}
|
|
141
|
+
fn surfaceWeather_getWetness(position: vec3f,
|
|
142
|
+
normal: vec3f,
|
|
143
|
+
exposure: f32) -> f32 {
|
|
144
|
+
if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) { return 0.0; }
|
|
145
|
+
return clamp(surfaceWeather.wetness, 0.0, 1.0) * clamp(exposure, 0.0, 1.0) * (1.0 - surfaceWeather_getSnow(position, normal, exposure));
|
|
146
|
+
}
|
|
147
|
+
fn surfaceWeather_getPuddle(position: vec3f,
|
|
148
|
+
normal: vec3f,
|
|
149
|
+
exposure: f32) -> f32 {
|
|
150
|
+
if (surfaceWeather.wetness <= 0.0 || surfaceWeather.puddles <= 0.0 || exposure <= 0.0) { return 0.0; }
|
|
151
|
+
var variation: f32 = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01) + vec2f(8.3, 2.7));
|
|
152
|
+
return surfaceWeather_getWetness(position, normal, exposure) * clamp(surfaceWeather.puddles, 0.0, 1.0) *
|
|
153
|
+
smoothstep(0.8, 0.98, normalize(normal).z) * smoothstep(0.38, 0.7, variation);
|
|
154
|
+
}
|
|
155
|
+
fn surfaceWeather_getAlbedo(albedo: vec3f,
|
|
156
|
+
position: vec3f,
|
|
157
|
+
normal: vec3f,
|
|
158
|
+
exposure: f32) -> vec3f {
|
|
159
|
+
if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) { return albedo; }
|
|
160
|
+
var wetness: f32 = surfaceWeather_getWetness(position, normal, exposure);
|
|
161
|
+
var snow: f32 = surfaceWeather_getSnow(position, normal, exposure);
|
|
162
|
+
return mix(albedo * (1.0 - wetness * 0.38), surfaceWeather.snowColor, snow);
|
|
163
|
+
}
|
|
164
|
+
fn surfaceWeather_getRoughness(roughness: f32,
|
|
165
|
+
position: vec3f,
|
|
166
|
+
normal: vec3f,
|
|
167
|
+
exposure: f32) -> f32 {
|
|
168
|
+
if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) { return roughness; }
|
|
169
|
+
var wetness: f32 = surfaceWeather_getWetness(position, normal, exposure);
|
|
170
|
+
var puddle: f32 = surfaceWeather_getPuddle(position, normal, exposure);
|
|
171
|
+
var snow: f32 = surfaceWeather_getSnow(position, normal, exposure);
|
|
172
|
+
return mix(mix(roughness, 0.16, max(puddle, wetness * 0.6)), 0.95, snow);
|
|
173
|
+
}
|
|
174
|
+
// Approximate dielectric highlights and sky tint; callers may use the albedo/roughness helpers with PBR instead.
|
|
175
|
+
fn surfaceWeather_getReflection(position: vec3f,
|
|
176
|
+
normal: vec3f,
|
|
177
|
+
camera: vec3f,
|
|
178
|
+
lightDirection: vec3f,
|
|
179
|
+
lightColor: vec3f,
|
|
180
|
+
exposure: f32) -> vec3f {
|
|
181
|
+
if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) { return vec3f(0.0); }
|
|
182
|
+
var surfaceNormal: vec3f = normalize(normal);
|
|
183
|
+
var view: vec3f = normalize(camera - position);
|
|
184
|
+
var halfway: vec3f = normalize(view + normalize(lightDirection));
|
|
185
|
+
var wetness: f32 = surfaceWeather_getWetness(position, normal, exposure);
|
|
186
|
+
var puddle: f32 = surfaceWeather_getPuddle(position, normal, exposure);
|
|
187
|
+
var facing: f32 = max(dot(surfaceNormal, view), 0.0);
|
|
188
|
+
var fresnel: f32 = 0.02 + 0.98 * pow(1.0 - facing, 5.0);
|
|
189
|
+
var highlight: f32 = pow(max(dot(surfaceNormal, halfway), 0.0), mix(36.0, 160.0, puddle)) * max(dot(surfaceNormal, normalize(lightDirection)), 0.0);
|
|
190
|
+
return wetness * (surfaceWeather.skyColor * fresnel * (0.15 + puddle * 0.85) + lightColor * highlight * 0.6);
|
|
191
|
+
}
|
|
192
|
+
`
|
|
193
|
+
)
|
|
194
|
+
};
|
|
195
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
196
|
+
0 && (module.exports = {
|
|
197
|
+
integrateSurfaceWeather,
|
|
198
|
+
surfaceWeather
|
|
199
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export type SurfaceWeatherState = {
|
|
2
|
+
wetness: number;
|
|
3
|
+
snow: number;
|
|
4
|
+
};
|
|
5
|
+
export type SurfaceWeatherUniforms = SurfaceWeatherState & {
|
|
6
|
+
puddles: number;
|
|
7
|
+
/** World-anchored patch size in metres. */
|
|
8
|
+
scale: number;
|
|
9
|
+
snowColor: [number, number, number];
|
|
10
|
+
skyColor: [number, number, number];
|
|
11
|
+
};
|
|
12
|
+
export type SurfaceWeatherProps = Partial<SurfaceWeatherUniforms>;
|
|
13
|
+
export type SurfaceWeatherRates = {
|
|
14
|
+
/** Per-second rates; precipitation fills the remaining capacity. */
|
|
15
|
+
rainfall: number;
|
|
16
|
+
snowfall: number;
|
|
17
|
+
evaporation: number;
|
|
18
|
+
snowmelt: number;
|
|
19
|
+
};
|
|
20
|
+
/** Exact integration of bounded accumulation/decay for a constant-rate interval.
|
|
21
|
+
* Caller owns the state, clock, rates and any spatial exposure map. Pausing requires no GPU state.
|
|
22
|
+
*/
|
|
23
|
+
export declare function integrateSurfaceWeather(state: Readonly<SurfaceWeatherState>, rates: Readonly<SurfaceWeatherRates>, elapsedSeconds: number): SurfaceWeatherState;
|
|
24
|
+
/** Material helpers for persistent wetness, puddles and upward-facing snow.
|
|
25
|
+
* Every helper accepts a caller-provided exposure mask, so water and sheltered surfaces can opt out.
|
|
26
|
+
*/
|
|
27
|
+
export declare const surfaceWeather: {
|
|
28
|
+
readonly name: "surfaceWeather";
|
|
29
|
+
readonly dependencies: [{
|
|
30
|
+
readonly name: "valueNoise";
|
|
31
|
+
readonly fs: "\nfloat valueNoise_hash(vec2 cell) {\n vec3 value = fract(vec3(cell.x, cell.y, cell.x) * 0.1031);\n value += dot(value, value.yzx + 33.33);\n return fract((value.x + value.y) * value.z);\n}\nfloat valueNoise_noise(vec2 position) {\n vec2 cell = floor(position);\n vec2 fraction = fract(position);\n vec2 blend = fraction * fraction * (3.0 - 2.0 * fraction);\n return mix(mix(valueNoise_hash(cell), valueNoise_hash(cell + vec2(1.0, 0.0)), blend.x),\n mix(valueNoise_hash(cell + vec2(0.0, 1.0)), valueNoise_hash(cell + vec2(1.0)), blend.x), blend.y);\n}\n\nfloat valueNoise_hash3(vec3 cell) {\n vec3 value = fract(cell * 0.1031);\n value += dot(value, value.yzx + 33.33);\n return fract((value.x + value.y) * value.z);\n}\nfloat valueNoise_noise3(vec3 position) {\n vec3 cell = floor(position);\n vec3 fraction = fract(position);\n vec3 blend = fraction * fraction * (3.0 - 2.0 * fraction);\n float bottom = mix(mix(valueNoise_hash3(cell), valueNoise_hash3(cell + vec3(1.0, 0.0, 0.0)), blend.x),\n mix(valueNoise_hash3(cell + vec3(0.0, 1.0, 0.0)), valueNoise_hash3(cell + vec3(1.0, 1.0, 0.0)), blend.x), blend.y);\n float top = mix(mix(valueNoise_hash3(cell + vec3(0.0, 0.0, 1.0)), valueNoise_hash3(cell + vec3(1.0, 0.0, 1.0)), blend.x),\n mix(valueNoise_hash3(cell + vec3(0.0, 1.0, 1.0)), valueNoise_hash3(cell + vec3(1.0)), blend.x), blend.y);\n return mix(bottom, top, blend.z);\n}\n";
|
|
32
|
+
readonly source: "\nfn valueNoise_hash(cell: vec2f) -> f32 {\n var value = fract(vec3f(cell.x, cell.y, cell.x) * 0.1031);\n value += vec3f(dot(value, value.yzx + vec3f(33.33)));\n return fract((value.x + value.y) * value.z);\n}\nfn valueNoise_noise(position: vec2f) -> f32 {\n let cell = floor(position);\n let fraction = fract(position);\n let blend = fraction * fraction * (vec2f(3.0) - 2.0 * fraction);\n return mix(mix(valueNoise_hash(cell), valueNoise_hash(cell + vec2f(1.0, 0.0)), blend.x),\n mix(valueNoise_hash(cell + vec2f(0.0, 1.0)), valueNoise_hash(cell + vec2f(1.0)), blend.x), blend.y);\n}\n\nfn valueNoise_hash3(cell: vec3f) -> f32 {\n var value = fract(cell * 0.1031);\n value += vec3f(dot(value, value.yzx + vec3f(33.33)));\n return fract((value.x + value.y) * value.z);\n}\nfn valueNoise_noise3(position: vec3f) -> f32 {\n let cell = floor(position);\n let fraction = fract(position);\n let blend = fraction * fraction * (vec3f(3.0) - 2.0 * fraction);\n let bottom = mix(mix(valueNoise_hash3(cell), valueNoise_hash3(cell + vec3f(1.0, 0.0, 0.0)), blend.x),\n mix(valueNoise_hash3(cell + vec3f(0.0, 1.0, 0.0)), valueNoise_hash3(cell + vec3f(1.0, 1.0, 0.0)), blend.x), blend.y);\n let top = mix(mix(valueNoise_hash3(cell + vec3f(0.0, 0.0, 1.0)), valueNoise_hash3(cell + vec3f(1.0, 0.0, 1.0)), blend.x),\n mix(valueNoise_hash3(cell + vec3f(0.0, 1.0, 1.0)), valueNoise_hash3(cell + vec3f(1.0)), blend.x), blend.y);\n return mix(bottom, top, blend.z);\n}\n";
|
|
33
|
+
}];
|
|
34
|
+
readonly uniformTypes: {
|
|
35
|
+
readonly wetness: "f32";
|
|
36
|
+
readonly snow: "f32";
|
|
37
|
+
readonly puddles: "f32";
|
|
38
|
+
readonly scale: "f32";
|
|
39
|
+
readonly snowColor: "vec3<f32>";
|
|
40
|
+
readonly skyColor: "vec3<f32>";
|
|
41
|
+
};
|
|
42
|
+
readonly defaultUniforms: SurfaceWeatherUniforms;
|
|
43
|
+
readonly getUniforms: (props?: Partial<Partial<SurfaceWeatherUniforms>>, previousUniforms?: SurfaceWeatherUniforms | undefined) => {
|
|
44
|
+
wetness: number;
|
|
45
|
+
snow: number;
|
|
46
|
+
puddles: number;
|
|
47
|
+
scale: number;
|
|
48
|
+
snowColor: [number, number, number];
|
|
49
|
+
skyColor: [number, number, number];
|
|
50
|
+
};
|
|
51
|
+
readonly fs: "\nlayout(std140) uniform surfaceWeatherUniforms {\n float wetness;\n float snow;\n float puddles;\n float scale;\n vec3 snowColor;\n vec3 skyColor;\n} surfaceWeather;\n\nfloat surfaceWeather_getSnow(vec3 position, vec3 normal, float exposure) {\n if (surfaceWeather.snow <= 0.0 || exposure <= 0.0) return 0.0;\n float slope = smoothstep(0.4, 0.85, normalize(normal).z);\n float variation = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01));\n float coverage = smoothstep(variation * 0.65, variation * 0.65 + 0.35, surfaceWeather.snow);\n return coverage * slope * clamp(exposure, 0.0, 1.0);\n}\nfloat surfaceWeather_getWetness(vec3 position, vec3 normal, float exposure) {\n if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) return 0.0;\n return clamp(surfaceWeather.wetness, 0.0, 1.0) * clamp(exposure, 0.0, 1.0) * (1.0 - surfaceWeather_getSnow(position, normal, exposure));\n}\nfloat surfaceWeather_getPuddle(vec3 position, vec3 normal, float exposure) {\n if (surfaceWeather.wetness <= 0.0 || surfaceWeather.puddles <= 0.0 || exposure <= 0.0) return 0.0;\n float variation = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01) + vec2(8.3, 2.7));\n return surfaceWeather_getWetness(position, normal, exposure) * clamp(surfaceWeather.puddles, 0.0, 1.0) *\n smoothstep(0.8, 0.98, normalize(normal).z) * smoothstep(0.38, 0.7, variation);\n}\nvec3 surfaceWeather_getAlbedo(vec3 albedo, vec3 position, vec3 normal, float exposure) {\n if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) return albedo;\n float wetness = surfaceWeather_getWetness(position, normal, exposure);\n float snow = surfaceWeather_getSnow(position, normal, exposure);\n return mix(albedo * (1.0 - wetness * 0.38), surfaceWeather.snowColor, snow);\n}\nfloat surfaceWeather_getRoughness(float roughness, vec3 position, vec3 normal, float exposure) {\n if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) return roughness;\n float wetness = surfaceWeather_getWetness(position, normal, exposure);\n float puddle = surfaceWeather_getPuddle(position, normal, exposure);\n float snow = surfaceWeather_getSnow(position, normal, exposure);\n return mix(mix(roughness, 0.16, max(puddle, wetness * 0.6)), 0.95, snow);\n}\n// Approximate dielectric highlights and sky tint; callers may use the albedo/roughness helpers with PBR instead.\nvec3 surfaceWeather_getReflection(vec3 position, vec3 normal, vec3 camera, vec3 lightDirection, vec3 lightColor, float exposure) {\n if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) return vec3(0.0);\n vec3 surfaceNormal = normalize(normal);\n vec3 view = normalize(camera - position);\n vec3 halfway = normalize(view + normalize(lightDirection));\n float wetness = surfaceWeather_getWetness(position, normal, exposure);\n float puddle = surfaceWeather_getPuddle(position, normal, exposure);\n float facing = max(dot(surfaceNormal, view), 0.0);\n float fresnel = 0.02 + 0.98 * pow(1.0 - facing, 5.0);\n float highlight = pow(max(dot(surfaceNormal, halfway), 0.0), mix(36.0, 160.0, puddle)) * max(dot(surfaceNormal, normalize(lightDirection)), 0.0);\n return wetness * (surfaceWeather.skyColor * fresnel * (0.15 + puddle * 0.85) + lightColor * highlight * 0.6);\n}\n";
|
|
52
|
+
readonly source: "\nstruct surfaceWeatherUniforms {\n wetness: f32,\n snow: f32,\n puddles: f32,\n scale: f32,\n snowColor: vec3f,\n skyColor: vec3f,\n};\n@group(3) @binding(auto) var<uniform> surfaceWeather: surfaceWeatherUniforms;\n\nfn surfaceWeather_getSnow(position: vec3f,\n normal: vec3f,\n exposure: f32) -> f32 {\n if (surfaceWeather.snow <= 0.0 || exposure <= 0.0) { return 0.0; }\n var slope: f32 = smoothstep(0.4, 0.85, normalize(normal).z);\n var variation: f32 = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01));\n var coverage: f32 = smoothstep(variation * 0.65, variation * 0.65 + 0.35, surfaceWeather.snow);\n return coverage * slope * clamp(exposure, 0.0, 1.0);\n}\nfn surfaceWeather_getWetness(position: vec3f,\n normal: vec3f,\n exposure: f32) -> f32 {\n if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) { return 0.0; }\n return clamp(surfaceWeather.wetness, 0.0, 1.0) * clamp(exposure, 0.0, 1.0) * (1.0 - surfaceWeather_getSnow(position, normal, exposure));\n}\nfn surfaceWeather_getPuddle(position: vec3f,\n normal: vec3f,\n exposure: f32) -> f32 {\n if (surfaceWeather.wetness <= 0.0 || surfaceWeather.puddles <= 0.0 || exposure <= 0.0) { return 0.0; }\n var variation: f32 = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01) + vec2f(8.3, 2.7));\n return surfaceWeather_getWetness(position, normal, exposure) * clamp(surfaceWeather.puddles, 0.0, 1.0) *\n smoothstep(0.8, 0.98, normalize(normal).z) * smoothstep(0.38, 0.7, variation);\n}\nfn surfaceWeather_getAlbedo(albedo: vec3f,\n position: vec3f,\n normal: vec3f,\n exposure: f32) -> vec3f {\n if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) { return albedo; }\n var wetness: f32 = surfaceWeather_getWetness(position, normal, exposure);\n var snow: f32 = surfaceWeather_getSnow(position, normal, exposure);\n return mix(albedo * (1.0 - wetness * 0.38), surfaceWeather.snowColor, snow);\n}\nfn surfaceWeather_getRoughness(roughness: f32,\n position: vec3f,\n normal: vec3f,\n exposure: f32) -> f32 {\n if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) { return roughness; }\n var wetness: f32 = surfaceWeather_getWetness(position, normal, exposure);\n var puddle: f32 = surfaceWeather_getPuddle(position, normal, exposure);\n var snow: f32 = surfaceWeather_getSnow(position, normal, exposure);\n return mix(mix(roughness, 0.16, max(puddle, wetness * 0.6)), 0.95, snow);\n}\n// Approximate dielectric highlights and sky tint; callers may use the albedo/roughness helpers with PBR instead.\nfn surfaceWeather_getReflection(position: vec3f,\n normal: vec3f,\n camera: vec3f,\n lightDirection: vec3f,\n lightColor: vec3f,\n exposure: f32) -> vec3f {\n if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) { return vec3f(0.0); }\n var surfaceNormal: vec3f = normalize(normal);\n var view: vec3f = normalize(camera - position);\n var halfway: vec3f = normalize(view + normalize(lightDirection));\n var wetness: f32 = surfaceWeather_getWetness(position, normal, exposure);\n var puddle: f32 = surfaceWeather_getPuddle(position, normal, exposure);\n var facing: f32 = max(dot(surfaceNormal, view), 0.0);\n var fresnel: f32 = 0.02 + 0.98 * pow(1.0 - facing, 5.0);\n var highlight: f32 = pow(max(dot(surfaceNormal, halfway), 0.0), mix(36.0, 160.0, puddle)) * max(dot(surfaceNormal, normalize(lightDirection)), 0.0);\n return wetness * (surfaceWeather.skyColor * fresnel * (0.15 + puddle * 0.85) + lightColor * highlight * 0.6);\n}\n";
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=surface-weather.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface-weather.d.ts","sourceRoot":"","sources":["../../../../src/modules/lighting/surface-weather/surface-weather.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,mBAAmB,GAAG;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC;AAClE,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG;IAChC,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACpC,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACpC,cAAc,EAAE,MAAM,GACrB,mBAAmB,CAYrB;AAUD;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;iBAjDiB,MAAM;cAAQ,MAAM;iBAErD,MAAM;eAER,MAAM;mBACF,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;kBACzB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;;;CAwL0C,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
// luma.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
import { valueNoise } from "../../math/value-noise/value-noise.js";
|
|
5
|
+
/** Exact integration of bounded accumulation/decay for a constant-rate interval.
|
|
6
|
+
* Caller owns the state, clock, rates and any spatial exposure map. Pausing requires no GPU state.
|
|
7
|
+
*/
|
|
8
|
+
export function integrateSurfaceWeather(state, rates, elapsedSeconds) {
|
|
9
|
+
function integrate(value, incoming, outgoing) {
|
|
10
|
+
const total = Math.max(incoming, 0) + Math.max(outgoing, 0);
|
|
11
|
+
const bounded = Math.min(1, Math.max(0, value));
|
|
12
|
+
if (total === 0 || elapsedSeconds <= 0)
|
|
13
|
+
return bounded;
|
|
14
|
+
const target = Math.max(incoming, 0) / total;
|
|
15
|
+
return target + (bounded - target) * Math.exp(-total * Math.max(elapsedSeconds, 0));
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
wetness: integrate(state.wetness, rates.rainfall, rates.evaporation),
|
|
19
|
+
snow: integrate(state.snow, rates.snowfall, rates.snowmelt)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const DEFAULT_UNIFORMS = {
|
|
23
|
+
wetness: 0,
|
|
24
|
+
snow: 0,
|
|
25
|
+
puddles: 0.8,
|
|
26
|
+
scale: 20,
|
|
27
|
+
snowColor: [0.9, 0.94, 0.98],
|
|
28
|
+
skyColor: [0.48, 0.6, 0.72]
|
|
29
|
+
};
|
|
30
|
+
/** Material helpers for persistent wetness, puddles and upward-facing snow.
|
|
31
|
+
* Every helper accepts a caller-provided exposure mask, so water and sheltered surfaces can opt out.
|
|
32
|
+
*/
|
|
33
|
+
export const surfaceWeather = {
|
|
34
|
+
name: 'surfaceWeather',
|
|
35
|
+
dependencies: [valueNoise],
|
|
36
|
+
uniformTypes: {
|
|
37
|
+
wetness: 'f32',
|
|
38
|
+
snow: 'f32',
|
|
39
|
+
puddles: 'f32',
|
|
40
|
+
scale: 'f32',
|
|
41
|
+
snowColor: 'vec3<f32>',
|
|
42
|
+
skyColor: 'vec3<f32>'
|
|
43
|
+
},
|
|
44
|
+
defaultUniforms: DEFAULT_UNIFORMS,
|
|
45
|
+
getUniforms(props = {}, previousUniforms = DEFAULT_UNIFORMS) {
|
|
46
|
+
return { ...DEFAULT_UNIFORMS, ...previousUniforms, ...props };
|
|
47
|
+
},
|
|
48
|
+
fs: /* glsl */ `
|
|
49
|
+
layout(std140) uniform surfaceWeatherUniforms {
|
|
50
|
+
float wetness;
|
|
51
|
+
float snow;
|
|
52
|
+
float puddles;
|
|
53
|
+
float scale;
|
|
54
|
+
vec3 snowColor;
|
|
55
|
+
vec3 skyColor;
|
|
56
|
+
} surfaceWeather;
|
|
57
|
+
|
|
58
|
+
float surfaceWeather_getSnow(vec3 position, vec3 normal, float exposure) {
|
|
59
|
+
if (surfaceWeather.snow <= 0.0 || exposure <= 0.0) return 0.0;
|
|
60
|
+
float slope = smoothstep(0.4, 0.85, normalize(normal).z);
|
|
61
|
+
float variation = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01));
|
|
62
|
+
float coverage = smoothstep(variation * 0.65, variation * 0.65 + 0.35, surfaceWeather.snow);
|
|
63
|
+
return coverage * slope * clamp(exposure, 0.0, 1.0);
|
|
64
|
+
}
|
|
65
|
+
float surfaceWeather_getWetness(vec3 position, vec3 normal, float exposure) {
|
|
66
|
+
if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) return 0.0;
|
|
67
|
+
return clamp(surfaceWeather.wetness, 0.0, 1.0) * clamp(exposure, 0.0, 1.0) * (1.0 - surfaceWeather_getSnow(position, normal, exposure));
|
|
68
|
+
}
|
|
69
|
+
float surfaceWeather_getPuddle(vec3 position, vec3 normal, float exposure) {
|
|
70
|
+
if (surfaceWeather.wetness <= 0.0 || surfaceWeather.puddles <= 0.0 || exposure <= 0.0) return 0.0;
|
|
71
|
+
float variation = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01) + vec2(8.3, 2.7));
|
|
72
|
+
return surfaceWeather_getWetness(position, normal, exposure) * clamp(surfaceWeather.puddles, 0.0, 1.0) *
|
|
73
|
+
smoothstep(0.8, 0.98, normalize(normal).z) * smoothstep(0.38, 0.7, variation);
|
|
74
|
+
}
|
|
75
|
+
vec3 surfaceWeather_getAlbedo(vec3 albedo, vec3 position, vec3 normal, float exposure) {
|
|
76
|
+
if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) return albedo;
|
|
77
|
+
float wetness = surfaceWeather_getWetness(position, normal, exposure);
|
|
78
|
+
float snow = surfaceWeather_getSnow(position, normal, exposure);
|
|
79
|
+
return mix(albedo * (1.0 - wetness * 0.38), surfaceWeather.snowColor, snow);
|
|
80
|
+
}
|
|
81
|
+
float surfaceWeather_getRoughness(float roughness, vec3 position, vec3 normal, float exposure) {
|
|
82
|
+
if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) return roughness;
|
|
83
|
+
float wetness = surfaceWeather_getWetness(position, normal, exposure);
|
|
84
|
+
float puddle = surfaceWeather_getPuddle(position, normal, exposure);
|
|
85
|
+
float snow = surfaceWeather_getSnow(position, normal, exposure);
|
|
86
|
+
return mix(mix(roughness, 0.16, max(puddle, wetness * 0.6)), 0.95, snow);
|
|
87
|
+
}
|
|
88
|
+
// Approximate dielectric highlights and sky tint; callers may use the albedo/roughness helpers with PBR instead.
|
|
89
|
+
vec3 surfaceWeather_getReflection(vec3 position, vec3 normal, vec3 camera, vec3 lightDirection, vec3 lightColor, float exposure) {
|
|
90
|
+
if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) return vec3(0.0);
|
|
91
|
+
vec3 surfaceNormal = normalize(normal);
|
|
92
|
+
vec3 view = normalize(camera - position);
|
|
93
|
+
vec3 halfway = normalize(view + normalize(lightDirection));
|
|
94
|
+
float wetness = surfaceWeather_getWetness(position, normal, exposure);
|
|
95
|
+
float puddle = surfaceWeather_getPuddle(position, normal, exposure);
|
|
96
|
+
float facing = max(dot(surfaceNormal, view), 0.0);
|
|
97
|
+
float fresnel = 0.02 + 0.98 * pow(1.0 - facing, 5.0);
|
|
98
|
+
float highlight = pow(max(dot(surfaceNormal, halfway), 0.0), mix(36.0, 160.0, puddle)) * max(dot(surfaceNormal, normalize(lightDirection)), 0.0);
|
|
99
|
+
return wetness * (surfaceWeather.skyColor * fresnel * (0.15 + puddle * 0.85) + lightColor * highlight * 0.6);
|
|
100
|
+
}
|
|
101
|
+
`,
|
|
102
|
+
source: /* wgsl */ `
|
|
103
|
+
struct surfaceWeatherUniforms {
|
|
104
|
+
wetness: f32,
|
|
105
|
+
snow: f32,
|
|
106
|
+
puddles: f32,
|
|
107
|
+
scale: f32,
|
|
108
|
+
snowColor: vec3f,
|
|
109
|
+
skyColor: vec3f,
|
|
110
|
+
};
|
|
111
|
+
@group(3) @binding(auto) var<uniform> surfaceWeather: surfaceWeatherUniforms;
|
|
112
|
+
|
|
113
|
+
fn surfaceWeather_getSnow(position: vec3f,
|
|
114
|
+
normal: vec3f,
|
|
115
|
+
exposure: f32) -> f32 {
|
|
116
|
+
if (surfaceWeather.snow <= 0.0 || exposure <= 0.0) { return 0.0; }
|
|
117
|
+
var slope: f32 = smoothstep(0.4, 0.85, normalize(normal).z);
|
|
118
|
+
var variation: f32 = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01));
|
|
119
|
+
var coverage: f32 = smoothstep(variation * 0.65, variation * 0.65 + 0.35, surfaceWeather.snow);
|
|
120
|
+
return coverage * slope * clamp(exposure, 0.0, 1.0);
|
|
121
|
+
}
|
|
122
|
+
fn surfaceWeather_getWetness(position: vec3f,
|
|
123
|
+
normal: vec3f,
|
|
124
|
+
exposure: f32) -> f32 {
|
|
125
|
+
if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) { return 0.0; }
|
|
126
|
+
return clamp(surfaceWeather.wetness, 0.0, 1.0) * clamp(exposure, 0.0, 1.0) * (1.0 - surfaceWeather_getSnow(position, normal, exposure));
|
|
127
|
+
}
|
|
128
|
+
fn surfaceWeather_getPuddle(position: vec3f,
|
|
129
|
+
normal: vec3f,
|
|
130
|
+
exposure: f32) -> f32 {
|
|
131
|
+
if (surfaceWeather.wetness <= 0.0 || surfaceWeather.puddles <= 0.0 || exposure <= 0.0) { return 0.0; }
|
|
132
|
+
var variation: f32 = valueNoise_noise(position.xy / max(surfaceWeather.scale, 0.01) + vec2f(8.3, 2.7));
|
|
133
|
+
return surfaceWeather_getWetness(position, normal, exposure) * clamp(surfaceWeather.puddles, 0.0, 1.0) *
|
|
134
|
+
smoothstep(0.8, 0.98, normalize(normal).z) * smoothstep(0.38, 0.7, variation);
|
|
135
|
+
}
|
|
136
|
+
fn surfaceWeather_getAlbedo(albedo: vec3f,
|
|
137
|
+
position: vec3f,
|
|
138
|
+
normal: vec3f,
|
|
139
|
+
exposure: f32) -> vec3f {
|
|
140
|
+
if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) { return albedo; }
|
|
141
|
+
var wetness: f32 = surfaceWeather_getWetness(position, normal, exposure);
|
|
142
|
+
var snow: f32 = surfaceWeather_getSnow(position, normal, exposure);
|
|
143
|
+
return mix(albedo * (1.0 - wetness * 0.38), surfaceWeather.snowColor, snow);
|
|
144
|
+
}
|
|
145
|
+
fn surfaceWeather_getRoughness(roughness: f32,
|
|
146
|
+
position: vec3f,
|
|
147
|
+
normal: vec3f,
|
|
148
|
+
exposure: f32) -> f32 {
|
|
149
|
+
if ((surfaceWeather.wetness <= 0.0 && surfaceWeather.snow <= 0.0) || exposure <= 0.0) { return roughness; }
|
|
150
|
+
var wetness: f32 = surfaceWeather_getWetness(position, normal, exposure);
|
|
151
|
+
var puddle: f32 = surfaceWeather_getPuddle(position, normal, exposure);
|
|
152
|
+
var snow: f32 = surfaceWeather_getSnow(position, normal, exposure);
|
|
153
|
+
return mix(mix(roughness, 0.16, max(puddle, wetness * 0.6)), 0.95, snow);
|
|
154
|
+
}
|
|
155
|
+
// Approximate dielectric highlights and sky tint; callers may use the albedo/roughness helpers with PBR instead.
|
|
156
|
+
fn surfaceWeather_getReflection(position: vec3f,
|
|
157
|
+
normal: vec3f,
|
|
158
|
+
camera: vec3f,
|
|
159
|
+
lightDirection: vec3f,
|
|
160
|
+
lightColor: vec3f,
|
|
161
|
+
exposure: f32) -> vec3f {
|
|
162
|
+
if (surfaceWeather.wetness <= 0.0 || exposure <= 0.0) { return vec3f(0.0); }
|
|
163
|
+
var surfaceNormal: vec3f = normalize(normal);
|
|
164
|
+
var view: vec3f = normalize(camera - position);
|
|
165
|
+
var halfway: vec3f = normalize(view + normalize(lightDirection));
|
|
166
|
+
var wetness: f32 = surfaceWeather_getWetness(position, normal, exposure);
|
|
167
|
+
var puddle: f32 = surfaceWeather_getPuddle(position, normal, exposure);
|
|
168
|
+
var facing: f32 = max(dot(surfaceNormal, view), 0.0);
|
|
169
|
+
var fresnel: f32 = 0.02 + 0.98 * pow(1.0 - facing, 5.0);
|
|
170
|
+
var highlight: f32 = pow(max(dot(surfaceNormal, halfway), 0.0), mix(36.0, 160.0, puddle)) * max(dot(surfaceNormal, normalize(lightDirection)), 0.0);
|
|
171
|
+
return wetness * (surfaceWeather.skyColor * fresnel * (0.15 + puddle * 0.85) + lightColor * highlight * 0.6);
|
|
172
|
+
}
|
|
173
|
+
`
|
|
174
|
+
};
|
|
175
|
+
//# sourceMappingURL=surface-weather.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface-weather.js","sourceRoot":"","sources":["../../../../src/modules/lighting/surface-weather/surface-weather.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,4DAA4D;AAG5D,OAAO,EAAC,UAAU,EAAC,8CAA2C;AAmB9D;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAoC,EACpC,KAAoC,EACpC,cAAsB;IAEtB,SAAS,SAAS,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAChD,IAAI,KAAK,KAAK,CAAC,IAAI,cAAc,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;QAC7C,OAAO,MAAM,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC;QACpE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC;KAC5D,CAAC;AACJ,CAAC;AACD,MAAM,gBAAgB,GAA2B;IAC/C,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC;IAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,YAAY,EAAE,CAAC,UAAU,CAAC;IAC1B,YAAY,EAAE;QACZ,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,WAAW;KACtB;IACD,eAAe,EAAE,gBAAgB;IACjC,WAAW,CAAC,KAAK,GAAG,EAAE,EAAE,gBAAgB,GAAG,gBAAgB;QACzD,OAAO,EAAC,GAAG,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,GAAG,KAAK,EAAC,CAAC;IAC9D,CAAC;IACD,EAAE,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDhB;IACC,MAAM,EAAE,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEpB;CAC6E,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
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 river_water_material_exports = {};
|
|
19
|
+
__export(river_water_material_exports, {
|
|
20
|
+
riverWaterMaterial: () => riverWaterMaterial
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(river_water_material_exports);
|
|
23
|
+
var import_water_material = require("./water-material.cjs");
|
|
24
|
+
var import_river_water_shaders = require("./river-water-shaders.cjs");
|
|
25
|
+
const riverWaterMaterial = {
|
|
26
|
+
name: "riverWaterMaterial",
|
|
27
|
+
firstBindingSlot: 1,
|
|
28
|
+
bindingLayout: [{ name: "riverWaterMaterial", group: 3 }],
|
|
29
|
+
dependencies: [import_water_material.waterMaterial],
|
|
30
|
+
source: import_river_water_shaders.RIVER_WATER_WGSL,
|
|
31
|
+
fs: import_river_water_shaders.RIVER_WATER_GLSL,
|
|
32
|
+
uniformTypes: {
|
|
33
|
+
enabled: "i32",
|
|
34
|
+
flowDirection: "vec2<f32>",
|
|
35
|
+
skyZenithColor: "vec3<f32>",
|
|
36
|
+
skyUpDirection: "vec3<f32>"
|
|
37
|
+
},
|
|
38
|
+
defaultUniforms: {
|
|
39
|
+
enabled: 0,
|
|
40
|
+
flowDirection: [0, 1],
|
|
41
|
+
skyZenithColor: [0.22, 0.48, 0.57],
|
|
42
|
+
skyUpDirection: [0, 0, 1]
|
|
43
|
+
},
|
|
44
|
+
getUniforms(props = {}, previousUniforms = {}) {
|
|
45
|
+
return {
|
|
46
|
+
enabled: props.enabled ?? previousUniforms.enabled ?? 0,
|
|
47
|
+
flowDirection: props.flowDirection ?? previousUniforms.flowDirection ?? [0, 1],
|
|
48
|
+
skyZenithColor: props.skyZenithColor ?? previousUniforms.skyZenithColor ?? [0.22, 0.48, 0.57],
|
|
49
|
+
skyUpDirection: props.skyUpDirection ?? previousUniforms.skyUpDirection ?? [0, 0, 1]
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
54
|
+
0 && (module.exports = {
|
|
55
|
+
riverWaterMaterial
|
|
56
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ShaderModule } from "../../../lib/shader-module/shader-module.js";
|
|
2
|
+
export type RiverWaterMaterialProps = {
|
|
3
|
+
enabled?: number;
|
|
4
|
+
/** Local east/north direction of river flow. */
|
|
5
|
+
flowDirection?: [number, number];
|
|
6
|
+
/** Linear sky tint above the horizon. The horizon uses waterMaterial.fresnelColor. */
|
|
7
|
+
skyZenithColor?: [number, number, number];
|
|
8
|
+
/** Unit up direction in the same coordinate frame as the supplied surface normal. */
|
|
9
|
+
skyUpDirection?: [number, number, number];
|
|
10
|
+
};
|
|
11
|
+
export type RiverWaterMaterialUniforms = {
|
|
12
|
+
enabled?: number;
|
|
13
|
+
flowDirection?: [number, number];
|
|
14
|
+
/** Linear sky tint above the horizon. The horizon uses waterMaterial.fresnelColor. */
|
|
15
|
+
skyZenithColor?: [number, number, number];
|
|
16
|
+
/** Unit up direction in the same coordinate frame as the supplied surface normal. */
|
|
17
|
+
skyUpDirection?: [number, number, number];
|
|
18
|
+
};
|
|
19
|
+
/** A layered, animated river surface variant built on top of the shared water uniforms. */
|
|
20
|
+
export declare const riverWaterMaterial: ShaderModule<RiverWaterMaterialProps, RiverWaterMaterialUniforms>;
|
|
21
|
+
//# sourceMappingURL=river-water-material.d.ts.map
|