@luma.gl/shadertools 9.3.0-alpha.2 → 9.3.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.
Files changed (66) hide show
  1. package/dist/dist.dev.js +2114 -198
  2. package/dist/dist.min.js +315 -184
  3. package/dist/index.cjs +463 -199
  4. package/dist/index.cjs.map +4 -4
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/preprocessor/preprocessor.d.ts.map +1 -1
  10. package/dist/lib/preprocessor/preprocessor.js +33 -7
  11. package/dist/lib/preprocessor/preprocessor.js.map +1 -1
  12. package/dist/lib/shader-assembler.d.ts.map +1 -1
  13. package/dist/lib/shader-assembler.js +8 -1
  14. package/dist/lib/shader-assembler.js.map +1 -1
  15. package/dist/lib/shader-module/shader-module.d.ts +1 -1
  16. package/dist/lib/shader-module/shader-module.d.ts.map +1 -1
  17. package/dist/lib/utils/assert.d.ts.map +1 -1
  18. package/dist/lib/utils/assert.js +3 -1
  19. package/dist/lib/utils/assert.js.map +1 -1
  20. package/dist/modules/engine/skin/skin.d.ts +29 -0
  21. package/dist/modules/engine/skin/skin.d.ts.map +1 -0
  22. package/dist/modules/engine/skin/skin.js +88 -0
  23. package/dist/modules/engine/skin/skin.js.map +1 -0
  24. package/dist/modules/lighting/lights/lighting-glsl.d.ts +1 -1
  25. package/dist/modules/lighting/lights/lighting-glsl.d.ts.map +1 -1
  26. package/dist/modules/lighting/lights/lighting-glsl.js +20 -2
  27. package/dist/modules/lighting/lights/lighting-glsl.js.map +1 -1
  28. package/dist/modules/lighting/lights/lighting-wgsl.d.ts +1 -1
  29. package/dist/modules/lighting/lights/lighting-wgsl.d.ts.map +1 -1
  30. package/dist/modules/lighting/lights/lighting-wgsl.js +63 -13
  31. package/dist/modules/lighting/lights/lighting-wgsl.js.map +1 -1
  32. package/dist/modules/lighting/lights/lighting.d.ts +27 -3
  33. package/dist/modules/lighting/lights/lighting.d.ts.map +1 -1
  34. package/dist/modules/lighting/lights/lighting.js +32 -6
  35. package/dist/modules/lighting/lights/lighting.js.map +1 -1
  36. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.d.ts +1 -1
  37. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.d.ts.map +1 -1
  38. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.js +106 -79
  39. package/dist/modules/lighting/pbr-material/pbr-material-wgsl.js.map +1 -1
  40. package/dist/modules/lighting/pbr-material/pbr-material.d.ts +20 -4
  41. package/dist/modules/lighting/pbr-material/pbr-material.d.ts.map +1 -1
  42. package/dist/modules/lighting/pbr-material/pbr-projection.d.ts.map +1 -1
  43. package/dist/modules/lighting/pbr-material/pbr-projection.js +12 -1
  44. package/dist/modules/lighting/pbr-material/pbr-projection.js.map +1 -1
  45. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.d.ts +1 -40
  46. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.d.ts.map +1 -1
  47. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.js +40 -76
  48. package/dist/modules/lighting/phong-material/phong-shaders-wgsl.js.map +1 -1
  49. package/dist/modules/math/random/random.d.ts +1 -1
  50. package/dist/modules/math/random/random.d.ts.map +1 -1
  51. package/dist/modules/math/random/random.js +2 -3
  52. package/dist/modules/math/random/random.js.map +1 -1
  53. package/package.json +2 -2
  54. package/src/index.ts +1 -0
  55. package/src/lib/preprocessor/preprocessor.ts +40 -7
  56. package/src/lib/shader-assembler.ts +8 -1
  57. package/src/lib/shader-module/shader-module.ts +1 -1
  58. package/src/lib/utils/assert.ts +3 -1
  59. package/src/modules/engine/skin/skin.ts +116 -0
  60. package/src/modules/lighting/lights/lighting-glsl.ts +20 -2
  61. package/src/modules/lighting/lights/lighting-wgsl.ts +63 -13
  62. package/src/modules/lighting/lights/lighting.ts +45 -9
  63. package/src/modules/lighting/pbr-material/pbr-material-wgsl.ts +106 -79
  64. package/src/modules/lighting/pbr-material/pbr-projection.ts +13 -1
  65. package/src/modules/lighting/phong-material/phong-shaders-wgsl.ts +40 -77
  66. package/src/modules/math/random/random.ts +2 -3
package/dist/index.d.ts CHANGED
@@ -31,6 +31,7 @@ export { fp32 } from "./modules/math/fp32/fp32.js";
31
31
  export { fp64, fp64arithmetic } from "./modules/math/fp64/fp64.js";
32
32
  export type { PickingProps, PickingUniforms } from "./modules/engine/picking/picking.js";
33
33
  export { picking } from "./modules/engine/picking/picking.js";
34
+ export { skin } from "./modules/engine/skin/skin.js";
34
35
  export { type Light, type AmbientLight, type PointLight, type DirectionalLight } from "./modules/lighting/lights/lighting.js";
35
36
  export type { LightingProps, LightingUniforms } from "./modules/lighting/lights/lighting.js";
36
37
  export { lighting } from "./modules/lighting/lights/lighting.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,YAAY,EAAC,YAAY,EAAC,+CAA4C;AAItE,YAAY,EAAC,YAAY,EAAC,6CAA0C;AACpE,YAAY,EAAC,UAAU,EAAC,2CAAwC;AAChE,YAAY,EAAC,YAAY,EAAC,qCAAkC;AAE5D,OAAO,EAAC,sBAAsB,EAAE,uBAAuB,EAAC,6CAA0C;AAClG,OAAO,EAAC,uBAAuB,EAAC,6CAA0C;AAC1E,OAAO,EAAC,2BAA2B,EAAC,0DAAuD;AAC3F,OAAO,EAAC,6BAA6B,EAAC,6CAA0C;AAEhF,OAAO,EAAC,qBAAqB,EAAC,kDAA+C;AAE7E,OAAO,EAAC,cAAc,IAAI,eAAe,EAAC,0DAAuD;AACjG,OAAO,EAAC,kBAAkB,IAAI,mBAAmB,EAAC,0DAAuD;AAGzG,OAAO,EAAC,eAAe,EAAC,kCAA+B;AACvD,YAAY,EAAC,UAAU,EAAC,8CAA2C;AACnE,YAAY,EAAC,eAAe,EAAC,mDAAgD;AAK7E,OAAO,EAAC,aAAa,EAAC,4CAAyC;AAC/D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACd,yCAAsC;AAGvC,YAAY,EAAC,uBAAuB,EAAC,kDAA+C;AACpF,OAAO,EAAC,uBAAuB,EAAC,kDAA+C;AAC/E,OAAO,EAAC,UAAU,EAAC,mDAAgD;AAGnE,OAAO,EAAC,UAAU,EAAC,2CAAwC;AAC3D,OAAO,EAAC,sBAAsB,EAAC,kDAA+C;AAC9E,OAAO,EAAC,cAAc,EAAC,mDAAgD;AAGvE,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,0CAAuC;AAC1E,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAC,0CAAuC;AAGpF,OAAO,EAAC,MAAM,EAAC,wCAAqC;AAEpD,OAAO,EAAC,IAAI,EAAC,oCAAiC;AAC9C,OAAO,EAAC,IAAI,EAAE,cAAc,EAAC,oCAAiC;AAO9D,YAAY,EAAC,YAAY,EAAE,eAAe,EAAC,4CAAyC;AACpF,OAAO,EAAC,OAAO,EAAC,4CAAyC;AAGzD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,8CAA2C;AAE5C,YAAY,EAAC,aAAa,EAAE,gBAAgB,EAAC,8CAA2C;AACxF,OAAO,EAAC,QAAQ,EAAC,8CAA2C;AAC5D,OAAO,EAAC,QAAQ,EAAC,mDAAgD;AACjE,YAAY,EAAC,oBAAoB,EAAC,gEAA6D;AAC/F,OAAO,EAAC,eAAe,EAAC,gEAA6D;AACrF,YAAY,EAAC,kBAAkB,EAAC,4DAAyD;AACzF,OAAO,EAAC,aAAa,EAAC,4DAAyD;AAC/E,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACpB,wDAAqD;AACtD,YAAY,EAAC,kBAAkB,EAAC,0DAAuD;AAEvF,OAAO,EAAC,WAAW,EAAC,wDAAqD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,YAAY,EAAC,YAAY,EAAC,+CAA4C;AAItE,YAAY,EAAC,YAAY,EAAC,6CAA0C;AACpE,YAAY,EAAC,UAAU,EAAC,2CAAwC;AAChE,YAAY,EAAC,YAAY,EAAC,qCAAkC;AAE5D,OAAO,EAAC,sBAAsB,EAAE,uBAAuB,EAAC,6CAA0C;AAClG,OAAO,EAAC,uBAAuB,EAAC,6CAA0C;AAC1E,OAAO,EAAC,2BAA2B,EAAC,0DAAuD;AAC3F,OAAO,EAAC,6BAA6B,EAAC,6CAA0C;AAEhF,OAAO,EAAC,qBAAqB,EAAC,kDAA+C;AAE7E,OAAO,EAAC,cAAc,IAAI,eAAe,EAAC,0DAAuD;AACjG,OAAO,EAAC,kBAAkB,IAAI,mBAAmB,EAAC,0DAAuD;AAGzG,OAAO,EAAC,eAAe,EAAC,kCAA+B;AACvD,YAAY,EAAC,UAAU,EAAC,8CAA2C;AACnE,YAAY,EAAC,eAAe,EAAC,mDAAgD;AAK7E,OAAO,EAAC,aAAa,EAAC,4CAAyC;AAC/D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACd,yCAAsC;AAGvC,YAAY,EAAC,uBAAuB,EAAC,kDAA+C;AACpF,OAAO,EAAC,uBAAuB,EAAC,kDAA+C;AAC/E,OAAO,EAAC,UAAU,EAAC,mDAAgD;AAGnE,OAAO,EAAC,UAAU,EAAC,2CAAwC;AAC3D,OAAO,EAAC,sBAAsB,EAAC,kDAA+C;AAC9E,OAAO,EAAC,cAAc,EAAC,mDAAgD;AAGvE,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,0CAAuC;AAC1E,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAC,0CAAuC;AAGpF,OAAO,EAAC,MAAM,EAAC,wCAAqC;AAEpD,OAAO,EAAC,IAAI,EAAC,oCAAiC;AAC9C,OAAO,EAAC,IAAI,EAAE,cAAc,EAAC,oCAAiC;AAO9D,YAAY,EAAC,YAAY,EAAE,eAAe,EAAC,4CAAyC;AACpF,OAAO,EAAC,OAAO,EAAC,4CAAyC;AACzD,OAAO,EAAC,IAAI,EAAC,sCAAmC;AAGhD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,8CAA2C;AAE5C,YAAY,EAAC,aAAa,EAAE,gBAAgB,EAAC,8CAA2C;AACxF,OAAO,EAAC,QAAQ,EAAC,8CAA2C;AAC5D,OAAO,EAAC,QAAQ,EAAC,mDAAgD;AACjE,YAAY,EAAC,oBAAoB,EAAC,gEAA6D;AAC/F,OAAO,EAAC,eAAe,EAAC,gEAA6D;AACrF,YAAY,EAAC,kBAAkB,EAAC,4DAAyD;AACzF,OAAO,EAAC,aAAa,EAAC,4DAAyD;AAC/E,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACpB,wDAAqD;AACtD,YAAY,EAAC,kBAAkB,EAAC,0DAAuD;AAEvF,OAAO,EAAC,WAAW,EAAC,wDAAqD"}
package/dist/index.js CHANGED
@@ -28,6 +28,7 @@ export { random } from "./modules/math/random/random.js";
28
28
  export { fp32 } from "./modules/math/fp32/fp32.js";
29
29
  export { fp64, fp64arithmetic } from "./modules/math/fp64/fp64.js";
30
30
  export { picking } from "./modules/engine/picking/picking.js";
31
+ export { skin } from "./modules/engine/skin/skin.js";
31
32
  export { lighting } from "./modules/lighting/lights/lighting.js";
32
33
  export { dirlight } from "./modules/lighting/no-material/dirlight.js";
33
34
  export { gouraudMaterial } from "./modules/lighting/gouraud-material/gouraud-material.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAgBpC,OAAO,EAAC,sBAAsB,EAAE,uBAAuB,EAAC,6CAA0C;AAClG,OAAO,EAAC,uBAAuB,EAAC,6CAA0C;AAC1E,OAAO,EAAC,2BAA2B,EAAC,0DAAuD;AAC3F,OAAO,EAAC,6BAA6B,EAAC,6CAA0C;AAEhF,OAAO,EAAC,qBAAqB,EAAC,kDAA+C;AAE7E,OAAO,EAAC,cAAc,IAAI,eAAe,EAAC,0DAAuD;AACjG,OAAO,EAAC,kBAAkB,IAAI,mBAAmB,EAAC,0DAAuD;AAEzG,kBAAkB;AAClB,OAAO,EAAC,eAAe,EAAC,kCAA+B;AAIvD,iBAAiB;AAEjB,8BAA8B;AAC9B,OAAO,EAAC,aAAa,EAAC,4CAAyC;AAC/D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACd,yCAAsC;AAIvC,OAAO,EAAC,uBAAuB,EAAC,kDAA+C;AAC/E,OAAO,EAAC,UAAU,EAAC,mDAAgD;AAEnE,uDAAuD;AACvD,OAAO,EAAC,UAAU,EAAC,2CAAwC;AAC3D,OAAO,EAAC,sBAAsB,EAAC,kDAA+C;AAC9E,OAAO,EAAC,cAAc,EAAC,mDAAgD;AAEvE,aAAa;AACb,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,0CAAuC;AAC1E,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAC,0CAAuC;AAEpF,iBAAiB;AACjB,OAAO,EAAC,MAAM,EAAC,wCAAqC;AAEpD,OAAO,EAAC,IAAI,EAAC,oCAAiC;AAC9C,OAAO,EAAC,IAAI,EAAE,cAAc,EAAC,oCAAiC;AAQ9D,OAAO,EAAC,OAAO,EAAC,4CAAyC;AAWzD,OAAO,EAAC,QAAQ,EAAC,8CAA2C;AAC5D,OAAO,EAAC,QAAQ,EAAC,mDAAgD;AAEjE,OAAO,EAAC,eAAe,EAAC,gEAA6D;AAErF,OAAO,EAAC,aAAa,EAAC,4DAAyD;AAQ/E,OAAO,EAAC,WAAW,EAAC,wDAAqD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAgBpC,OAAO,EAAC,sBAAsB,EAAE,uBAAuB,EAAC,6CAA0C;AAClG,OAAO,EAAC,uBAAuB,EAAC,6CAA0C;AAC1E,OAAO,EAAC,2BAA2B,EAAC,0DAAuD;AAC3F,OAAO,EAAC,6BAA6B,EAAC,6CAA0C;AAEhF,OAAO,EAAC,qBAAqB,EAAC,kDAA+C;AAE7E,OAAO,EAAC,cAAc,IAAI,eAAe,EAAC,0DAAuD;AACjG,OAAO,EAAC,kBAAkB,IAAI,mBAAmB,EAAC,0DAAuD;AAEzG,kBAAkB;AAClB,OAAO,EAAC,eAAe,EAAC,kCAA+B;AAIvD,iBAAiB;AAEjB,8BAA8B;AAC9B,OAAO,EAAC,aAAa,EAAC,4CAAyC;AAC/D,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACd,yCAAsC;AAIvC,OAAO,EAAC,uBAAuB,EAAC,kDAA+C;AAC/E,OAAO,EAAC,UAAU,EAAC,mDAAgD;AAEnE,uDAAuD;AACvD,OAAO,EAAC,UAAU,EAAC,2CAAwC;AAC3D,OAAO,EAAC,sBAAsB,EAAC,kDAA+C;AAC9E,OAAO,EAAC,cAAc,EAAC,mDAAgD;AAEvE,aAAa;AACb,OAAO,EAAC,WAAW,EAAE,aAAa,EAAC,0CAAuC;AAC1E,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAC,0CAAuC;AAEpF,iBAAiB;AACjB,OAAO,EAAC,MAAM,EAAC,wCAAqC;AAEpD,OAAO,EAAC,IAAI,EAAC,oCAAiC;AAC9C,OAAO,EAAC,IAAI,EAAE,cAAc,EAAC,oCAAiC;AAQ9D,OAAO,EAAC,OAAO,EAAC,4CAAyC;AACzD,OAAO,EAAC,IAAI,EAAC,sCAAmC;AAWhD,OAAO,EAAC,QAAQ,EAAC,8CAA2C;AAC5D,OAAO,EAAC,QAAQ,EAAC,mDAAgD;AAEjE,OAAO,EAAC,eAAe,EAAC,gEAA6D;AAErF,OAAO,EAAC,aAAa,EAAC,4DAAyD;AAQ/E,OAAO,EAAC,WAAW,EAAC,wDAAqD"}
@@ -1 +1 @@
1
- {"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../../../src/lib/preprocessor/preprocessor.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAmBhF"}
1
+ {"version":3,"file":"preprocessor.d.ts","sourceRoot":"","sources":["../../../src/lib/preprocessor/preprocessor.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAgDhF"}
@@ -2,26 +2,52 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
  const IFDEF_REGEXP = /^\s*\#\s*ifdef\s*([a-zA-Z_]+)\s*$/;
5
+ const IFNDEF_REGEXP = /^\s*\#\s*ifndef\s*([a-zA-Z_]+)\s*(?:\/\/.*)?$/;
6
+ const ELSE_REGEXP = /^\s*\#\s*else\s*(?:\/\/.*)?$/;
5
7
  const ENDIF_REGEXP = /^\s*\#\s*endif\s*$/;
8
+ const IFDEF_WITH_COMMENT_REGEXP = /^\s*\#\s*ifdef\s*([a-zA-Z_]+)\s*(?:\/\/.*)?$/;
9
+ const ENDIF_WITH_COMMENT_REGEXP = /^\s*\#\s*endif\s*(?:\/\/.*)?$/;
6
10
  export function preprocess(source, options) {
7
11
  const lines = source.split('\n');
8
12
  const output = [];
13
+ const conditionalStack = [];
9
14
  let conditional = true;
10
- let currentDefine = null;
11
15
  for (const line of lines) {
12
- const matchIf = line.match(IFDEF_REGEXP);
13
- const matchEnd = line.match(ENDIF_REGEXP);
14
- if (matchIf) {
15
- currentDefine = matchIf[1];
16
- conditional = Boolean(options?.defines?.[currentDefine]);
16
+ const matchIf = line.match(IFDEF_WITH_COMMENT_REGEXP) || line.match(IFDEF_REGEXP);
17
+ const matchIfNot = line.match(IFNDEF_REGEXP);
18
+ const matchElse = line.match(ELSE_REGEXP);
19
+ const matchEnd = line.match(ENDIF_WITH_COMMENT_REGEXP) || line.match(ENDIF_REGEXP);
20
+ if (matchIf || matchIfNot) {
21
+ const defineName = (matchIf || matchIfNot)?.[1];
22
+ const defineValue = Boolean(options?.defines?.[defineName]);
23
+ const branchTaken = matchIf ? defineValue : !defineValue;
24
+ const active = conditional && branchTaken;
25
+ conditionalStack.push({ parentActive: conditional, branchTaken, active });
26
+ conditional = active;
27
+ }
28
+ else if (matchElse) {
29
+ const currentConditional = conditionalStack[conditionalStack.length - 1];
30
+ if (!currentConditional) {
31
+ throw new Error('Encountered #else without matching #ifdef or #ifndef');
32
+ }
33
+ currentConditional.active =
34
+ currentConditional.parentActive && !currentConditional.branchTaken;
35
+ currentConditional.branchTaken = true;
36
+ conditional = currentConditional.active;
17
37
  }
18
38
  else if (matchEnd) {
19
- conditional = true;
39
+ conditionalStack.pop();
40
+ conditional = conditionalStack.length
41
+ ? conditionalStack[conditionalStack.length - 1].active
42
+ : true;
20
43
  }
21
44
  else if (conditional) {
22
45
  output.push(line);
23
46
  }
24
47
  }
48
+ if (conditionalStack.length > 0) {
49
+ throw new Error('Unterminated conditional block in shader source');
50
+ }
25
51
  return output.join('\n');
26
52
  }
27
53
  //# sourceMappingURL=preprocessor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../../../src/lib/preprocessor/preprocessor.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,YAAY,GAAG,mCAAmC,CAAC;AACzD,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAM1C,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,OAA6B;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3B,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"preprocessor.js","sourceRoot":"","sources":["../../../src/lib/preprocessor/preprocessor.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,YAAY,GAAG,mCAAmC,CAAC;AACzD,MAAM,aAAa,GAAG,+CAA+C,CAAC;AACtE,MAAM,WAAW,GAAG,8BAA8B,CAAC;AACnD,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAC1C,MAAM,yBAAyB,GAAG,8CAA8C,CAAC;AACjF,MAAM,yBAAyB,GAAG,+BAA+B,CAAC;AAMlE,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,OAA6B;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,gBAAgB,GAIjB,EAAE,CAAC;IACR,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEnF,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,CAAC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,WAAW,GAAY,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,UAAW,CAAC,CAAC,CAAC;YACtE,MAAM,WAAW,GAAY,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAClE,MAAM,MAAM,GAAY,WAAW,IAAI,WAAW,CAAC;YACnD,gBAAgB,CAAC,IAAI,CAAC,EAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAC,CAAC,CAAC;YACxE,WAAW,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,CAAC;YACD,kBAAkB,CAAC,MAAM;gBACvB,kBAAkB,CAAC,YAAY,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;YACrE,kBAAkB,CAAC,WAAW,GAAG,IAAI,CAAC;YACtC,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC;QAC1C,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,gBAAgB,CAAC,GAAG,EAAE,CAAC;YACvB,WAAW,GAAG,gBAAgB,CAAC,MAAM;gBACnC,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM;gBACtD,CAAC,CAAC,IAAI,CAAC;QACX,CAAC;aAAM,IAAI,WAAW,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shader-assembler.d.ts","sourceRoot":"","sources":["../../src/lib/shader-assembler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,yCAAsC;AAEhE,OAAO,EACL,mBAAmB,EACnB,eAAe,EAGhB,8CAA2C;AAG5C;;;GAGG;AACH,qBAAa,eAAe;IAC1B,uCAAuC;IACvC,MAAM,CAAC,sBAAsB,EAAE,eAAe,CAAC;IAC/C,qBAAqB;IACrB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,qBAAqB;IACrB,OAAO,CAAC,eAAe,CAAsB;IAE7C;;;OAGG;IACH,MAAM,CAAC,yBAAyB,IAAI,eAAe;IAMnD;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAU5C;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAK/C;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAO7C;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG;QAC9C,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,eAAe,CAAC;QAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;KACzB;IAgBD;;;;;OAKG;IACH,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG;QAClD,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,eAAe,CAAC;QAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;KACzB;IAgBD;;OAEG;IACH,cAAc,CAAC,UAAU,GAAE,YAAY,EAAO,GAAG,YAAY,EAAE;CA0BhE"}
1
+ {"version":3,"file":"shader-assembler.d.ts","sourceRoot":"","sources":["../../src/lib/shader-assembler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,YAAY,EAAC,yCAAsC;AAEhE,OAAO,EACL,mBAAmB,EACnB,eAAe,EAGhB,8CAA2C;AAG5C;;;GAGG;AACH,qBAAa,eAAe;IAC1B,uCAAuC;IACvC,MAAM,CAAC,sBAAsB,EAAE,eAAe,CAAC;IAC/C,qBAAqB;IACrB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAa;IAC5C,qBAAqB;IACrB,OAAO,CAAC,eAAe,CAAsB;IAE7C;;;OAGG;IACH,MAAM,CAAC,yBAAyB,IAAI,eAAe;IAMnD;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAU5C;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAK/C;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAO7C;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG;QAC9C,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,eAAe,CAAC;QAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;KACzB;IAuBD;;;;;OAKG;IACH,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG;QAClD,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,eAAe,CAAC;QAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;KACzB;IAgBD;;OAEG;IACH,cAAc,CAAC,UAAU,GAAE,YAAY,EAAO,GAAG,YAAY,EAAE;CA0BhE"}
@@ -66,8 +66,15 @@ export class ShaderAssembler {
66
66
  modules,
67
67
  hookFunctions
68
68
  });
69
+ const defines = {
70
+ ...modules.reduce((accumulator, module) => {
71
+ Object.assign(accumulator, module.defines);
72
+ return accumulator;
73
+ }, {}),
74
+ ...props.defines
75
+ };
69
76
  // WGSL does not have built-in preprocessing support (just compile time constants)
70
- const preprocessedSource = props.platformInfo.shaderLanguage === 'wgsl' ? preprocess(source) : source;
77
+ const preprocessedSource = props.platformInfo.shaderLanguage === 'wgsl' ? preprocess(source, { defines }) : source;
71
78
  return { source: preprocessedSource, getUniforms, modules };
72
79
  }
73
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"shader-assembler.js","sourceRoot":"","sources":["../../src/lib/shader-assembler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shader-assembler.js","sourceRoot":"","sources":["../../src/lib/shader-assembler.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ export type ShaderModule<PropsT extends Record<string, any> = Record<string, any
49
49
  defaultUniforms?: Required<UniformsT>;
50
50
  /** Function that maps props to uniforms & bindings */
51
51
  getUniforms?: (props: Partial<PropsT>, prevUniforms?: UniformsT) => Partial<UniformsT & BindingsT>;
52
- defines?: Record<string, boolean>;
52
+ defines?: Record<string, boolean | number>;
53
53
  /** Injections */
54
54
  inject?: Record<string, string | {
55
55
  injection: string;
@@ -1 +1 @@
1
- {"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../../src/lib/shader-module/shader-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shader-module.d.ts","sourceRoot":"","sources":["../../../src/lib/shader-module/shader-module.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/assert.ts"],"names":[],"mappings":"AAMA,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAIjE"}
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/assert.ts"],"names":[],"mappings":"AAMA,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAMjE"}
@@ -5,7 +5,9 @@
5
5
  // message so keep it for now.
6
6
  export function assert(condition, message) {
7
7
  if (!condition) {
8
- throw new Error(message || 'shadertools: assertion failed.');
8
+ const error = new Error(message || 'shadertools: assertion failed.');
9
+ Error.captureStackTrace?.(error, assert);
10
+ throw error;
9
11
  }
10
12
  }
11
13
  //# sourceMappingURL=assert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../../src/lib/utils/assert.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,+EAA+E;AAC/E,8BAA8B;AAC9B,MAAM,UAAU,MAAM,CAAC,SAAkB,EAAE,OAAgB;IACzD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,gCAAgC,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../../src/lib/utils/assert.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,+EAA+E;AAC/E,8BAA8B;AAC9B,MAAM,UAAU,MAAM,CAAC,SAAkB,EAAE,OAAgB;IACzD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,IAAI,gCAAgC,CAAC,CAAC;QACrE,KAAK,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,29 @@
1
+ export declare const source = "\nstruct skinUniforms {\n jointMatrix: array<mat4x4<f32>, 20>,\n};\n\n@binding(19) @group(0) var<uniform> skin: skinUniforms;\n\nfn getSkinMatrix(weights: vec4f, joints: vec4u) -> mat4x4<f32> {\n return (weights.x * skin.jointMatrix[joints.x])\n + (weights.y * skin.jointMatrix[joints.y])\n + (weights.z * skin.jointMatrix[joints.z])\n + (weights.w * skin.jointMatrix[joints.w]);\n}\n";
2
+ export declare const vs = "\nuniform skinUniforms {\n mat4 jointMatrix[SKIN_MAX_JOINTS];\n} skin;\n\nmat4 getSkinMatrix(vec4 weights, uvec4 joints) {\n return (weights.x * skin.jointMatrix[joints.x])\n + (weights.y * skin.jointMatrix[joints.y])\n + (weights.z * skin.jointMatrix[joints.z])\n + (weights.w * skin.jointMatrix[joints.w]);\n}\n\n";
3
+ export declare const fs = "";
4
+ export type SkinProps = {
5
+ scenegraphsFromGLTF?: any;
6
+ };
7
+ export type SkinUniforms = {
8
+ jointMatrix?: any;
9
+ };
10
+ export declare const skin: {
11
+ readonly props: SkinProps;
12
+ readonly uniforms: SkinUniforms;
13
+ readonly name: "skin";
14
+ readonly dependencies: [];
15
+ readonly source: "\nstruct skinUniforms {\n jointMatrix: array<mat4x4<f32>, 20>,\n};\n\n@binding(19) @group(0) var<uniform> skin: skinUniforms;\n\nfn getSkinMatrix(weights: vec4f, joints: vec4u) -> mat4x4<f32> {\n return (weights.x * skin.jointMatrix[joints.x])\n + (weights.y * skin.jointMatrix[joints.y])\n + (weights.z * skin.jointMatrix[joints.z])\n + (weights.w * skin.jointMatrix[joints.w]);\n}\n";
16
+ readonly vs: "\nuniform skinUniforms {\n mat4 jointMatrix[SKIN_MAX_JOINTS];\n} skin;\n\nmat4 getSkinMatrix(vec4 weights, uvec4 joints) {\n return (weights.x * skin.jointMatrix[joints.x])\n + (weights.y * skin.jointMatrix[joints.y])\n + (weights.z * skin.jointMatrix[joints.z])\n + (weights.w * skin.jointMatrix[joints.w]);\n}\n\n";
17
+ readonly fs: "";
18
+ readonly defines: {
19
+ readonly SKIN_MAX_JOINTS: 20;
20
+ };
21
+ readonly getUniforms: (props?: SkinProps, prevUniforms?: SkinUniforms) => SkinUniforms;
22
+ readonly uniformTypes: {
23
+ readonly jointMatrix: "mat4x4<f32>";
24
+ };
25
+ readonly uniformSizes: {
26
+ readonly jointMatrix: 20;
27
+ };
28
+ };
29
+ //# sourceMappingURL=skin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skin.d.ts","sourceRoot":"","sources":["../../../../src/modules/engine/skin/skin.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,MAAM,yZAalB,CAAC;AAEF,eAAO,MAAM,EAAE,oVAad,CAAC;AAEF,eAAO,MAAM,EAAE,KACd,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,mBAAmB,CAAC,EAAE,GAAG,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,IAAI;oBACF,SAAS;uBACN,YAAY;;;;;;;;;mCAYP,SAAS,iBAAsB,YAAY,KAAG,YAAY;;;;;;;CAkDvB,CAAC"}
@@ -0,0 +1,88 @@
1
+ // luma.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { Matrix4 } from '@math.gl/core';
5
+ const SKIN_MAX_JOINTS = 20;
6
+ export const source = /* wgsl */ `
7
+ struct skinUniforms {
8
+ jointMatrix: array<mat4x4<f32>, ${SKIN_MAX_JOINTS}>,
9
+ };
10
+
11
+ @binding(19) @group(0) var<uniform> skin: skinUniforms;
12
+
13
+ fn getSkinMatrix(weights: vec4f, joints: vec4u) -> mat4x4<f32> {
14
+ return (weights.x * skin.jointMatrix[joints.x])
15
+ + (weights.y * skin.jointMatrix[joints.y])
16
+ + (weights.z * skin.jointMatrix[joints.z])
17
+ + (weights.w * skin.jointMatrix[joints.w]);
18
+ }
19
+ `;
20
+ export const vs = /* glsl */ `\
21
+
22
+ uniform skinUniforms {
23
+ mat4 jointMatrix[SKIN_MAX_JOINTS];
24
+ } skin;
25
+
26
+ mat4 getSkinMatrix(vec4 weights, uvec4 joints) {
27
+ return (weights.x * skin.jointMatrix[joints.x])
28
+ + (weights.y * skin.jointMatrix[joints.y])
29
+ + (weights.z * skin.jointMatrix[joints.z])
30
+ + (weights.w * skin.jointMatrix[joints.w]);
31
+ }
32
+
33
+ `;
34
+ export const fs = /* glsl */ `\
35
+ `;
36
+ export const skin = {
37
+ props: {},
38
+ uniforms: {},
39
+ name: 'skin',
40
+ dependencies: [],
41
+ source,
42
+ vs,
43
+ fs,
44
+ defines: {
45
+ SKIN_MAX_JOINTS
46
+ },
47
+ getUniforms: (props = {}, prevUniforms) => {
48
+ const { scenegraphsFromGLTF } = props;
49
+ if (!scenegraphsFromGLTF?.gltf?.skins?.[0]) {
50
+ return { jointMatrix: [] };
51
+ }
52
+ const { inverseBindMatrices, joints, skeleton } = scenegraphsFromGLTF.gltf.skins[0];
53
+ const matsib = [];
54
+ const countib = inverseBindMatrices.value.length / 16;
55
+ for (let i = 0; i < countib; i++) {
56
+ const slice = inverseBindMatrices.value.subarray(i * 16, i * 16 + 16);
57
+ matsib.push(new Matrix4(Array.from(slice)));
58
+ }
59
+ const top = scenegraphsFromGLTF.gltfNodeIndexToNodeMap.get(skeleton);
60
+ const matrices = {};
61
+ top.preorderTraversal((node, { worldMatrix }) => {
62
+ matrices[node.id] = worldMatrix;
63
+ });
64
+ const mats = new Float32Array(SKIN_MAX_JOINTS * 16); // 16 floats per 4x4 matrix
65
+ for (let i = 0; i < SKIN_MAX_JOINTS; ++i) {
66
+ const nodeIndex = joints[i];
67
+ if (nodeIndex === undefined)
68
+ break;
69
+ const worldMat = matrices[scenegraphsFromGLTF.gltfNodeIndexToNodeMap.get(nodeIndex).id];
70
+ const invBindMat = matsib[i];
71
+ const Z = new Matrix4().copy(worldMat).multiplyRight(invBindMat);
72
+ const off = i * 16;
73
+ for (let j = 0; j < 16; j++) {
74
+ mats[off + j] = Z[j];
75
+ }
76
+ }
77
+ return {
78
+ jointMatrix: mats
79
+ };
80
+ },
81
+ uniformTypes: {
82
+ jointMatrix: 'mat4x4<f32>'
83
+ },
84
+ uniformSizes: {
85
+ jointMatrix: SKIN_MAX_JOINTS
86
+ }
87
+ };
88
+ //# sourceMappingURL=skin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skin.js","sourceRoot":"","sources":["../../../../src/modules/engine/skin/skin.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAItC,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAC;;oCAEG,eAAe;;;;;;;;;;;CAWlD,CAAC;AAEF,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;;;;;;;;;;;;;CAa5B,CAAC;AAEF,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;CAC5B,CAAC;AAUF,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,KAAK,EAAE,EAAe;IACtB,QAAQ,EAAE,EAAkB;IAE5B,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,EAAE;IAChB,MAAM;IACN,EAAE;IACF,EAAE;IAEF,OAAO,EAAE;QACP,eAAe;KAChB;IAED,WAAW,EAAE,CAAC,QAAmB,EAAE,EAAE,YAA2B,EAAgB,EAAE;QAChF,MAAM,EAAC,mBAAmB,EAAC,GAAG,KAAK,CAAC;QAEpC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAC,WAAW,EAAE,EAAE,EAAC,CAAC;QAC3B,CAAC;QAED,MAAM,EAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAElF,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,GAAG,GAAG,mBAAmB,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAS,EAAE,EAAC,WAAW,EAAM,EAAE,EAAE;YACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,2BAA2B;QAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,SAAS,KAAK,SAAS;gBAAE,MAAM;YAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;YACxF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAE7B,MAAM,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAEjE,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO;YACL,WAAW,EAAE,IAAI;SAClB,CAAC;IACJ,CAAC;IAED,YAAY,EAAE;QACZ,WAAW,EAAE,aAAa;KAC3B;IACD,YAAY,EAAE;QACZ,WAAW,EAAE,eAAe;KAC7B;CACuD,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const lightingUniformsGLSL = "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 DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nuniform lightingUniforms {\n int enabled;\n int lightType;\n\n int directionalLightCount;\n int pointLightCount;\n\n vec3 ambientColor;\n\n vec3 lightColor0;\n vec3 lightPosition0;\n vec3 lightDirection0;\n vec3 lightAttenuation0;\n\n vec3 lightColor1;\n vec3 lightPosition1;\n vec3 lightDirection1;\n vec3 lightAttenuation1;\n\n vec3 lightColor2;\n vec3 lightPosition2;\n vec3 lightDirection2;\n vec3 lightAttenuation2;\n} lighting;\n\nPointLight lighting_getPointLight(int index) {\n switch (index) {\n case 0:\n return PointLight(lighting.lightColor0, lighting.lightPosition0, lighting.lightAttenuation0);\n case 1:\n return PointLight(lighting.lightColor1, lighting.lightPosition1, lighting.lightAttenuation1);\n case 2:\n default: \n return PointLight(lighting.lightColor2, lighting.lightPosition2, lighting.lightAttenuation2);\n }\n}\n\nDirectionalLight lighting_getDirectionalLight(int index) {\n switch (index) {\n case 0:\n return DirectionalLight(lighting.lightColor0, lighting.lightDirection0);\n case 1:\n return DirectionalLight(lighting.lightColor1, lighting.lightDirection1);\n case 2:\n default: \n return DirectionalLight(lighting.lightColor2, lighting.lightDirection2);\n }\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\n// #endif\n";
1
+ export declare const lightingUniformsGLSL = "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 DirectionalLight {\n vec3 color;\n vec3 direction;\n};\n\nuniform lightingUniforms {\n int enabled;\n int lightType;\n\n int directionalLightCount;\n int pointLightCount;\n\n vec3 ambientColor;\n\n vec3 lightColor0;\n vec3 lightPosition0;\n vec3 lightDirection0;\n vec3 lightAttenuation0;\n\n vec3 lightColor1;\n vec3 lightPosition1;\n vec3 lightDirection1;\n vec3 lightAttenuation1;\n\n vec3 lightColor2;\n vec3 lightPosition2;\n vec3 lightDirection2;\n vec3 lightAttenuation2;\n\n vec3 lightColor3;\n vec3 lightPosition3;\n vec3 lightDirection3;\n vec3 lightAttenuation3;\n\n vec3 lightColor4;\n vec3 lightPosition4;\n vec3 lightDirection4;\n vec3 lightAttenuation4;\n} lighting;\n\nPointLight lighting_getPointLight(int index) {\n switch (index) {\n case 0:\n return PointLight(lighting.lightColor0, lighting.lightPosition0, lighting.lightAttenuation0);\n case 1:\n return PointLight(lighting.lightColor1, lighting.lightPosition1, lighting.lightAttenuation1);\n case 2:\n return PointLight(lighting.lightColor2, lighting.lightPosition2, lighting.lightAttenuation2);\n case 3:\n return PointLight(lighting.lightColor3, lighting.lightPosition3, lighting.lightAttenuation3);\n case 4:\n default: \n return PointLight(lighting.lightColor4, lighting.lightPosition4, lighting.lightAttenuation4);\n }\n}\n\nDirectionalLight lighting_getDirectionalLight(int index) {\n switch (index) {\n case 0:\n return DirectionalLight(lighting.lightColor0, lighting.lightDirection0);\n case 1:\n return DirectionalLight(lighting.lightColor1, lighting.lightDirection1);\n case 2:\n return DirectionalLight(lighting.lightColor2, lighting.lightDirection2);\n case 3:\n return DirectionalLight(lighting.lightColor3, lighting.lightDirection3);\n case 4:\n default: \n return DirectionalLight(lighting.lightColor4, lighting.lightDirection4);\n }\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\n// #endif\n";
2
2
  //# sourceMappingURL=lighting-glsl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lighting-glsl.d.ts","sourceRoot":"","sources":["../../../../src/modules/lighting/lights/lighting-glsl.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,g3DA2EhC,CAAC"}
1
+ {"version":3,"file":"lighting-glsl.d.ts","sourceRoot":"","sources":["../../../../src/modules/lighting/lights/lighting-glsl.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,o9EA6FhC,CAAC"}
@@ -43,6 +43,16 @@ uniform lightingUniforms {
43
43
  vec3 lightPosition2;
44
44
  vec3 lightDirection2;
45
45
  vec3 lightAttenuation2;
46
+
47
+ vec3 lightColor3;
48
+ vec3 lightPosition3;
49
+ vec3 lightDirection3;
50
+ vec3 lightAttenuation3;
51
+
52
+ vec3 lightColor4;
53
+ vec3 lightPosition4;
54
+ vec3 lightDirection4;
55
+ vec3 lightAttenuation4;
46
56
  } lighting;
47
57
 
48
58
  PointLight lighting_getPointLight(int index) {
@@ -52,8 +62,12 @@ PointLight lighting_getPointLight(int index) {
52
62
  case 1:
53
63
  return PointLight(lighting.lightColor1, lighting.lightPosition1, lighting.lightAttenuation1);
54
64
  case 2:
55
- default:
56
65
  return PointLight(lighting.lightColor2, lighting.lightPosition2, lighting.lightAttenuation2);
66
+ case 3:
67
+ return PointLight(lighting.lightColor3, lighting.lightPosition3, lighting.lightAttenuation3);
68
+ case 4:
69
+ default:
70
+ return PointLight(lighting.lightColor4, lighting.lightPosition4, lighting.lightAttenuation4);
57
71
  }
58
72
  }
59
73
 
@@ -64,8 +78,12 @@ DirectionalLight lighting_getDirectionalLight(int index) {
64
78
  case 1:
65
79
  return DirectionalLight(lighting.lightColor1, lighting.lightDirection1);
66
80
  case 2:
67
- default:
68
81
  return DirectionalLight(lighting.lightColor2, lighting.lightDirection2);
82
+ case 3:
83
+ return DirectionalLight(lighting.lightColor3, lighting.lightDirection3);
84
+ case 4:
85
+ default:
86
+ return DirectionalLight(lighting.lightColor4, lighting.lightDirection4);
69
87
  }
70
88
  }
71
89
 
@@ -1 +1 @@
1
- {"version":3,"file":"lighting-glsl.js","sourceRoot":"","sources":["../../../../src/modules/lighting/lights/lighting-glsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2E9C,CAAC"}
1
+ {"version":3,"file":"lighting-glsl.js","sourceRoot":"","sources":["../../../../src/modules/lighting/lights/lighting-glsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6F9C,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const lightingUniformsWGSL = "// #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))\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 DirectionalLight {\n color: vec3<f32>,\n direction: vec3<f32>,\n};\n\nstruct lightingUniforms {\n enabled: i32,\n pointLightCount: i32,\n directionalLightCount: i32,\n\n ambientColor: vec3<f32>,\n\n // TODO - support multiple lights by uncommenting arrays below\n lightType: i32,\n lightColor: vec3<f32>,\n lightDirection: vec3<f32>,\n lightPosition: vec3<f32>,\n lightAttenuation: vec3<f32>,\n\n // AmbientLight ambientLight;\n // PointLight pointLight[MAX_LIGHTS];\n // DirectionalLight directionalLight[MAX_LIGHTS];\n};\n\n// Binding 0:1 is reserved for lighting (Note: could go into separate bind group as it is stable across draw calls)\n@binding(1) @group(0) var<uniform> lighting : lightingUniforms;\n\nfn lighting_getPointLight(index: i32) -> PointLight {\n return PointLight(lighting.lightColor, lighting.lightPosition, lighting.lightAttenuation);\n}\n\nfn lighting_getDirectionalLight(index: i32) -> DirectionalLight {\n return DirectionalLight(lighting.lightColor, lighting.lightDirection);\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";
1
+ export declare const lightingUniformsWGSL = "// #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 DirectionalLight {\n color: vec3<f32>,\n direction: vec3<f32>,\n};\n\nstruct lightingUniforms {\n enabled: i32,\n lightType: i32,\n\n directionalLightCount: i32,\n pointLightCount: i32,\n\n ambientColor: vec3<f32>,\n\n lightColor0: vec3<f32>,\n lightPosition0: vec3<f32>,\n lightDirection0: vec3<f32>,\n lightAttenuation0: vec3<f32>,\n\n lightColor1: vec3<f32>,\n lightPosition1: vec3<f32>,\n lightDirection1: vec3<f32>,\n lightAttenuation1: vec3<f32>,\n\n lightColor2: vec3<f32>,\n lightPosition2: vec3<f32>,\n lightDirection2: vec3<f32>,\n lightAttenuation2: vec3<f32>,\n\n lightColor3: vec3<f32>,\n lightPosition3: vec3<f32>,\n lightDirection3: vec3<f32>,\n lightAttenuation3: vec3<f32>,\n\n lightColor4: vec3<f32>,\n lightPosition4: vec3<f32>,\n lightDirection4: vec3<f32>,\n lightAttenuation4: vec3<f32>,\n};\n\n// Binding 0:1 is reserved for lighting (Note: could go into separate bind group as it is stable across draw calls)\n@binding(1) @group(0) var<uniform> lighting : lightingUniforms;\n\nfn lighting_getPointLight(index: i32) -> PointLight {\n switch (index) {\n case 0: {\n return PointLight(lighting.lightColor0, lighting.lightPosition0, lighting.lightAttenuation0);\n }\n case 1: {\n return PointLight(lighting.lightColor1, lighting.lightPosition1, lighting.lightAttenuation1);\n }\n case 2: {\n return PointLight(lighting.lightColor2, lighting.lightPosition2, lighting.lightAttenuation2);\n }\n case 3: {\n return PointLight(lighting.lightColor3, lighting.lightPosition3, lighting.lightAttenuation3);\n }\n case 4, default: {\n return PointLight(lighting.lightColor4, lighting.lightPosition4, lighting.lightAttenuation4);\n }\n }\n}\n\nfn lighting_getDirectionalLight(index: i32) -> DirectionalLight {\n switch (index) {\n case 0: {\n return DirectionalLight(lighting.lightColor0, lighting.lightDirection0);\n }\n case 1: {\n return DirectionalLight(lighting.lightColor1, lighting.lightDirection1);\n }\n case 2: {\n return DirectionalLight(lighting.lightColor2, lighting.lightDirection2);\n }\n case 3: {\n return DirectionalLight(lighting.lightColor3, lighting.lightDirection3);\n }\n case 4, default: {\n return DirectionalLight(lighting.lightColor4, lighting.lightDirection4);\n }\n }\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";
2
2
  //# sourceMappingURL=lighting-wgsl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lighting-wgsl.d.ts","sourceRoot":"","sources":["../../../../src/modules/lighting/lights/lighting-wgsl.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,gjDAoDhC,CAAC"}
1
+ {"version":3,"file":"lighting-wgsl.d.ts","sourceRoot":"","sources":["../../../../src/modules/lighting/lights/lighting-wgsl.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,oBAAoB,83FAsGhC,CAAC"}
@@ -3,6 +3,8 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
  export const lightingUniformsWGSL = /* wgsl */ `\
5
5
  // #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
6
+ const MAX_LIGHTS: i32 = 5;
7
+
6
8
  struct AmbientLight {
7
9
  color: vec3<f32>,
8
10
  };
@@ -20,32 +22,80 @@ struct DirectionalLight {
20
22
 
21
23
  struct lightingUniforms {
22
24
  enabled: i32,
23
- pointLightCount: i32,
25
+ lightType: i32,
26
+
24
27
  directionalLightCount: i32,
28
+ pointLightCount: i32,
25
29
 
26
30
  ambientColor: vec3<f32>,
27
31
 
28
- // TODO - support multiple lights by uncommenting arrays below
29
- lightType: i32,
30
- lightColor: vec3<f32>,
31
- lightDirection: vec3<f32>,
32
- lightPosition: vec3<f32>,
33
- lightAttenuation: vec3<f32>,
34
-
35
- // AmbientLight ambientLight;
36
- // PointLight pointLight[MAX_LIGHTS];
37
- // DirectionalLight directionalLight[MAX_LIGHTS];
32
+ lightColor0: vec3<f32>,
33
+ lightPosition0: vec3<f32>,
34
+ lightDirection0: vec3<f32>,
35
+ lightAttenuation0: vec3<f32>,
36
+
37
+ lightColor1: vec3<f32>,
38
+ lightPosition1: vec3<f32>,
39
+ lightDirection1: vec3<f32>,
40
+ lightAttenuation1: vec3<f32>,
41
+
42
+ lightColor2: vec3<f32>,
43
+ lightPosition2: vec3<f32>,
44
+ lightDirection2: vec3<f32>,
45
+ lightAttenuation2: vec3<f32>,
46
+
47
+ lightColor3: vec3<f32>,
48
+ lightPosition3: vec3<f32>,
49
+ lightDirection3: vec3<f32>,
50
+ lightAttenuation3: vec3<f32>,
51
+
52
+ lightColor4: vec3<f32>,
53
+ lightPosition4: vec3<f32>,
54
+ lightDirection4: vec3<f32>,
55
+ lightAttenuation4: vec3<f32>,
38
56
  };
39
57
 
40
58
  // Binding 0:1 is reserved for lighting (Note: could go into separate bind group as it is stable across draw calls)
41
59
  @binding(1) @group(0) var<uniform> lighting : lightingUniforms;
42
60
 
43
61
  fn lighting_getPointLight(index: i32) -> PointLight {
44
- return PointLight(lighting.lightColor, lighting.lightPosition, lighting.lightAttenuation);
62
+ switch (index) {
63
+ case 0: {
64
+ return PointLight(lighting.lightColor0, lighting.lightPosition0, lighting.lightAttenuation0);
65
+ }
66
+ case 1: {
67
+ return PointLight(lighting.lightColor1, lighting.lightPosition1, lighting.lightAttenuation1);
68
+ }
69
+ case 2: {
70
+ return PointLight(lighting.lightColor2, lighting.lightPosition2, lighting.lightAttenuation2);
71
+ }
72
+ case 3: {
73
+ return PointLight(lighting.lightColor3, lighting.lightPosition3, lighting.lightAttenuation3);
74
+ }
75
+ case 4, default: {
76
+ return PointLight(lighting.lightColor4, lighting.lightPosition4, lighting.lightAttenuation4);
77
+ }
78
+ }
45
79
  }
46
80
 
47
81
  fn lighting_getDirectionalLight(index: i32) -> DirectionalLight {
48
- return DirectionalLight(lighting.lightColor, lighting.lightDirection);
82
+ switch (index) {
83
+ case 0: {
84
+ return DirectionalLight(lighting.lightColor0, lighting.lightDirection0);
85
+ }
86
+ case 1: {
87
+ return DirectionalLight(lighting.lightColor1, lighting.lightDirection1);
88
+ }
89
+ case 2: {
90
+ return DirectionalLight(lighting.lightColor2, lighting.lightDirection2);
91
+ }
92
+ case 3: {
93
+ return DirectionalLight(lighting.lightColor3, lighting.lightDirection3);
94
+ }
95
+ case 4, default: {
96
+ return DirectionalLight(lighting.lightColor4, lighting.lightDirection4);
97
+ }
98
+ }
49
99
  }
50
100
 
51
101
  fn getPointLightAttenuation(pointLight: PointLight, distance: f32) -> f32 {
@@ -1 +1 @@
1
- {"version":3,"file":"lighting-wgsl.js","sourceRoot":"","sources":["../../../../src/modules/lighting/lights/lighting-wgsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD9C,CAAC"}
1
+ {"version":3,"file":"lighting-wgsl.js","sourceRoot":"","sources":["../../../../src/modules/lighting/lights/lighting-wgsl.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAEpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsG9C,CAAC"}