@luma.gl/shadertools 9.0.0-alpha.20 → 9.0.0-alpha.21

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 (51) hide show
  1. package/dist/dist.dev.js +60 -60
  2. package/dist/index.cjs +59 -59
  3. package/dist/lib/shader-assembler/assemble-shaders.js +2 -2
  4. package/dist/lib/shader-assembler/assemble-shaders.js.map +1 -1
  5. package/dist/lib/shader-assembler/inject-shader.d.ts +1 -1
  6. package/dist/lib/shader-assembler/inject-shader.d.ts.map +1 -1
  7. package/dist/lib/shader-assembler/inject-shader.js +1 -1
  8. package/dist/lib/shader-assembler/inject-shader.js.map +1 -1
  9. package/dist/lib/transpiler/transpile-shader.d.ts +1 -1
  10. package/dist/lib/transpiler/transpile-shader.d.ts.map +1 -1
  11. package/dist/lib/transpiler/transpile-shader.js +1 -1
  12. package/dist/lib/transpiler/transpile-shader.js.map +1 -1
  13. package/dist/modules/image-blur-filters/tiltshift.js.map +1 -1
  14. package/dist/modules/lights/lights.glsl.d.ts +1 -2
  15. package/dist/modules/lights/lights.glsl.d.ts.map +1 -1
  16. package/dist/modules/lights/lights.glsl.js +1 -1
  17. package/dist/modules/lights/lights.glsl.js.map +1 -1
  18. package/dist/modules/lights/lights.js +1 -1
  19. package/dist/modules/lights/lights.js.map +1 -1
  20. package/dist/modules/pbr/pbr-fragment.glsl.d.ts +1 -2
  21. package/dist/modules/pbr/pbr-fragment.glsl.d.ts.map +1 -1
  22. package/dist/modules/pbr/pbr-fragment.glsl.js +1 -1
  23. package/dist/modules/pbr/pbr-fragment.glsl.js.map +1 -1
  24. package/dist/modules/pbr/pbr-vertex.glsl.d.ts +1 -2
  25. package/dist/modules/pbr/pbr-vertex.glsl.d.ts.map +1 -1
  26. package/dist/modules/pbr/pbr-vertex.glsl.js +1 -1
  27. package/dist/modules/pbr/pbr-vertex.glsl.js.map +1 -1
  28. package/dist/modules/pbr/pbr.js +2 -2
  29. package/dist/modules/pbr/pbr.js.map +1 -1
  30. package/dist/modules/phong-lighting/phong-lighting.glsl.d.ts +1 -2
  31. package/dist/modules/phong-lighting/phong-lighting.glsl.d.ts.map +1 -1
  32. package/dist/modules/phong-lighting/phong-lighting.glsl.js +1 -1
  33. package/dist/modules/phong-lighting/phong-lighting.glsl.js.map +1 -1
  34. package/dist/modules/phong-lighting/phong-lighting.js +1 -1
  35. package/dist/modules/phong-lighting/phong-lighting.js.map +1 -1
  36. package/dist.min.js +35 -35
  37. package/package.json +3 -3
  38. package/src/.DS_Store +0 -0
  39. package/src/lib/.DS_Store +0 -0
  40. package/src/lib/shader-assembler/assemble-shaders.ts +2 -2
  41. package/src/lib/shader-assembler/inject-shader.ts +1 -1
  42. package/src/lib/transpiler/transpile-shader.ts +1 -1
  43. package/src/modules/.DS_Store +0 -0
  44. package/src/modules/image-blur-filters/tiltshift.ts +1 -1
  45. package/src/modules/lights/lights.glsl.ts +1 -1
  46. package/src/modules/lights/lights.ts +1 -1
  47. package/src/modules/pbr/pbr-fragment.glsl.ts +1 -1
  48. package/src/modules/pbr/pbr-vertex.glsl.ts +1 -1
  49. package/src/modules/pbr/pbr.ts +2 -2
  50. package/src/modules/phong-lighting/phong-lighting.glsl.ts +1 -1
  51. package/src/modules/phong-lighting/phong-lighting.ts +1 -1
package/dist/index.cjs CHANGED
@@ -161,8 +161,8 @@ var ShaderModuleInstance = class {
161
161
  this.uniforms = {};
162
162
  const {
163
163
  name,
164
- vs: vs4,
165
- fs: fs25,
164
+ vs: vs5,
165
+ fs: fs26,
166
166
  dependencies = [],
167
167
  uniforms: uniforms18 = {},
168
168
  getUniforms: getUniforms7,
@@ -172,8 +172,8 @@ var ShaderModuleInstance = class {
172
172
  } = props;
173
173
  assert(typeof name === "string");
174
174
  this.name = name;
175
- this.vs = vs4;
176
- this.fs = fs25;
175
+ this.vs = vs5;
176
+ this.fs = fs26;
177
177
  this.getModuleUniforms = getUniforms7;
178
178
  this.dependencies = dependencies;
179
179
  this.deprecations = this._parseDeprecationDefinitions(deprecations);
@@ -624,11 +624,11 @@ precision highp float;
624
624
 
625
625
  `;
626
626
  function assembleShaders(platformInfo, options) {
627
- const { vs: vs4, fs: fs25 } = options;
627
+ const { vs: vs5, fs: fs26 } = options;
628
628
  const modules = resolveModules(options.modules || []);
629
629
  return {
630
- vs: assembleShader(platformInfo, __spreadProps(__spreadValues({}, options), { source: vs4, type: "vs", modules })),
631
- fs: assembleShader(platformInfo, __spreadProps(__spreadValues({}, options), { source: fs25, type: "fs", modules })),
630
+ vs: assembleShader(platformInfo, __spreadProps(__spreadValues({}, options), { source: vs5, type: "vs", modules })),
631
+ fs: assembleShader(platformInfo, __spreadProps(__spreadValues({}, options), { source: fs26, type: "fs", modules })),
632
632
  getUniforms: assembleGetUniforms(modules)
633
633
  };
634
634
  }
@@ -2111,7 +2111,7 @@ var project = {
2111
2111
  };
2112
2112
 
2113
2113
  // src/modules/lights/lights.glsl.ts
2114
- var lights_glsl_default = glsl`\
2114
+ var lightingShader = glsl`\
2115
2115
  #if (defined(SHADER_TYPE_FRAGMENT) && defined(LIGHTING_FRAGMENT)) || (defined(SHADER_TYPE_VERTEX) && defined(LIGHTING_VERTEX))
2116
2116
 
2117
2117
  struct AmbientLight {
@@ -2222,8 +2222,8 @@ function getUniforms3(opts = INITIAL_MODULE_OPTIONS) {
2222
2222
  }
2223
2223
  var lights = {
2224
2224
  name: "lights",
2225
- vs: lights_glsl_default,
2226
- fs: lights_glsl_default,
2225
+ vs: lightingShader,
2226
+ fs: lightingShader,
2227
2227
  getUniforms: getUniforms3,
2228
2228
  defines: {
2229
2229
  MAX_LIGHTS: 3
@@ -2407,7 +2407,7 @@ var picking = {
2407
2407
  };
2408
2408
 
2409
2409
  // src/modules/phong-lighting/phong-lighting.glsl.ts
2410
- var phong_lighting_glsl_default = glsl`\
2410
+ var lightingShader2 = glsl`\
2411
2411
 
2412
2412
  uniform float lighting_uAmbient;
2413
2413
  uniform float lighting_uDiffuse;
@@ -2507,7 +2507,7 @@ function getUniforms6(opts = INITIAL_MODULE_OPTIONS2) {
2507
2507
  var gouraudLighting = {
2508
2508
  name: "gouraud-lighting",
2509
2509
  dependencies: [lights],
2510
- vs: phong_lighting_glsl_default,
2510
+ vs: lightingShader2,
2511
2511
  defines: {
2512
2512
  LIGHTING_VERTEX: 1
2513
2513
  },
@@ -2516,7 +2516,7 @@ var gouraudLighting = {
2516
2516
  var phongLighting = {
2517
2517
  name: "phong-lighting",
2518
2518
  dependencies: [lights],
2519
- fs: phong_lighting_glsl_default,
2519
+ fs: lightingShader2,
2520
2520
  defines: {
2521
2521
  LIGHTING_FRAGMENT: 1
2522
2522
  },
@@ -2524,7 +2524,7 @@ var phongLighting = {
2524
2524
  };
2525
2525
 
2526
2526
  // src/modules/pbr/pbr-vertex.glsl.ts
2527
- var pbr_vertex_glsl_default = glsl`\
2527
+ var vs3 = glsl`\
2528
2528
  uniform mat4 u_MVPMatrix;
2529
2529
  uniform mat4 u_ModelMatrix;
2530
2530
  uniform mat4 u_NormalMatrix;
@@ -2565,7 +2565,7 @@ void pbr_setPositionNormalTangentUV(vec4 position, vec4 normal, vec4 tangent, ve
2565
2565
  `;
2566
2566
 
2567
2567
  // src/modules/pbr/pbr-fragment.glsl.ts
2568
- var pbr_fragment_glsl_default = glsl`\
2568
+ var fs5 = glsl`\
2569
2569
  #if defined(USE_TEX_LOD) && !defined(FEATURE_GLSL_TEXTURE_LOD)
2570
2570
  # error PBR fragment shader: Texture LOD is not available
2571
2571
  #endif
@@ -2969,8 +2969,8 @@ vec4 pbr_filterColor(vec4 colorUnused)
2969
2969
  // src/modules/pbr/pbr.ts
2970
2970
  var pbr = {
2971
2971
  name: "pbr",
2972
- vs: pbr_vertex_glsl_default,
2973
- fs: pbr_fragment_glsl_default,
2972
+ vs: vs3,
2973
+ fs: fs5,
2974
2974
  defines: {
2975
2975
  LIGHTING_FRAGMENT: 1
2976
2976
  },
@@ -2978,7 +2978,7 @@ var pbr = {
2978
2978
  };
2979
2979
 
2980
2980
  // src/modules/image-blur-filters/tiltshift.ts
2981
- var fs5 = `uniform float blurRadius;
2981
+ var fs6 = `uniform float blurRadius;
2982
2982
  uniform float gradientRadius;
2983
2983
  uniform vec2 start;
2984
2984
  uniform vec2 end;
@@ -3030,7 +3030,7 @@ var uniforms = {
3030
3030
  var tiltShift = {
3031
3031
  name: "tiltShift",
3032
3032
  uniforms,
3033
- fs: fs5,
3033
+ fs: fs6,
3034
3034
  dependencies: [random],
3035
3035
  passes: [
3036
3036
  { sampler: true, uniforms: { invert: false } },
@@ -3039,7 +3039,7 @@ var tiltShift = {
3039
3039
  };
3040
3040
 
3041
3041
  // src/modules/image-blur-filters/triangleblur.ts
3042
- var fs6 = glsl`\
3042
+ var fs7 = glsl`\
3043
3043
  uniform float radius;
3044
3044
  uniform vec2 delta;
3045
3045
 
@@ -3079,7 +3079,7 @@ var uniforms2 = {
3079
3079
  var triangleBlur = {
3080
3080
  name: "triangleBlur",
3081
3081
  uniforms: uniforms2,
3082
- fs: fs6,
3082
+ fs: fs7,
3083
3083
  dependencies: [random],
3084
3084
  passes: [
3085
3085
  { sampler: true, uniforms: { delta: [1, 0] } },
@@ -3088,7 +3088,7 @@ var triangleBlur = {
3088
3088
  };
3089
3089
 
3090
3090
  // src/modules/image-blur-filters/zoomblur.ts
3091
- var fs7 = `
3091
+ var fs8 = `
3092
3092
  uniform vec2 center;
3093
3093
  uniform float strength;
3094
3094
 
@@ -3127,7 +3127,7 @@ var uniforms3 = {
3127
3127
  var zoomBlur = {
3128
3128
  name: "zoomBlur",
3129
3129
  uniforms: uniforms3,
3130
- fs: fs7,
3130
+ fs: fs8,
3131
3131
  dependencies: [random],
3132
3132
  passes: [{ sampler: true }]
3133
3133
  };
@@ -3137,7 +3137,7 @@ var uniforms4 = {
3137
3137
  brightness: { value: 0, min: -1, max: 1 },
3138
3138
  contrast: { value: 0, min: -1, max: 1 }
3139
3139
  };
3140
- var fs8 = glsl`\
3140
+ var fs9 = glsl`\
3141
3141
  uniform float brightness;
3142
3142
  uniform float contrast;
3143
3143
 
@@ -3158,12 +3158,12 @@ vec4 brightnessContrast_filterColor(vec4 color, vec2 texSize, vec2 texCoords) {
3158
3158
  var brightnessContrast = {
3159
3159
  name: "brightnessContrast",
3160
3160
  uniforms: uniforms4,
3161
- fs: fs8,
3161
+ fs: fs9,
3162
3162
  passes: [{ filter: true }]
3163
3163
  };
3164
3164
 
3165
3165
  // src/modules/image-adjust-filters/denoise.ts
3166
- var fs9 = glsl`\
3166
+ var fs10 = glsl`\
3167
3167
  uniform float strength;
3168
3168
 
3169
3169
  vec4 denoise_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
@@ -3197,12 +3197,12 @@ var uniforms5 = {
3197
3197
  var denoise = {
3198
3198
  name: "denoise",
3199
3199
  uniforms: uniforms5,
3200
- fs: fs9,
3200
+ fs: fs10,
3201
3201
  passes: [{ sampler: true }, { sampler: true }]
3202
3202
  };
3203
3203
 
3204
3204
  // src/modules/image-adjust-filters/huesaturation.ts
3205
- var fs10 = glsl`\
3205
+ var fs11 = glsl`\
3206
3206
  uniform float hue;
3207
3207
  uniform float saturation;
3208
3208
 
@@ -3240,12 +3240,12 @@ var uniforms6 = {
3240
3240
  var hueSaturation = {
3241
3241
  name: "hueSaturation",
3242
3242
  uniforms: uniforms6,
3243
- fs: fs10,
3243
+ fs: fs11,
3244
3244
  passes: [{ filter: true }]
3245
3245
  };
3246
3246
 
3247
3247
  // src/modules/image-adjust-filters/noise.ts
3248
- var fs11 = glsl`\
3248
+ var fs12 = glsl`\
3249
3249
  uniform float amount;
3250
3250
 
3251
3251
  float rand(vec2 co) {
@@ -3269,12 +3269,12 @@ var noise = {
3269
3269
  uniforms: {
3270
3270
  amount: { value: 0.5, min: 0, max: 1 }
3271
3271
  },
3272
- fs: fs11,
3272
+ fs: fs12,
3273
3273
  passes: [{ filter: true }]
3274
3274
  };
3275
3275
 
3276
3276
  // src/modules/image-adjust-filters/sepia.ts
3277
- var fs12 = glsl`\
3277
+ var fs13 = glsl`\
3278
3278
  uniform float amount;
3279
3279
 
3280
3280
  vec4 sepia_filterColor(vec4 color) {
@@ -3300,12 +3300,12 @@ var uniforms7 = {
3300
3300
  var sepia = {
3301
3301
  name: "sepia",
3302
3302
  uniforms: uniforms7,
3303
- fs: fs12,
3303
+ fs: fs13,
3304
3304
  passes: [{ filter: true }]
3305
3305
  };
3306
3306
 
3307
3307
  // src/modules/image-adjust-filters/vibrance.ts
3308
- var fs13 = glsl`\
3308
+ var fs14 = glsl`\
3309
3309
  uniform float amount;
3310
3310
 
3311
3311
  vec4 vibrance_filterColor(vec4 color) {
@@ -3326,12 +3326,12 @@ var uniforms8 = {
3326
3326
  var vibrance = {
3327
3327
  name: "vibrance",
3328
3328
  uniforms: uniforms8,
3329
- fs: fs13,
3329
+ fs: fs14,
3330
3330
  passes: [{ filter: true }]
3331
3331
  };
3332
3332
 
3333
3333
  // src/modules/image-adjust-filters/vignette.ts
3334
- var fs14 = glsl`\
3334
+ var fs15 = glsl`\
3335
3335
  uniform float radius;
3336
3336
  uniform float amount;
3337
3337
 
@@ -3351,13 +3351,13 @@ var uniforms9 = {
3351
3351
  };
3352
3352
  var vignette = {
3353
3353
  name: "vignette",
3354
- fs: fs14,
3354
+ fs: fs15,
3355
3355
  uniforms: uniforms9,
3356
3356
  passes: [{ filter: true }]
3357
3357
  };
3358
3358
 
3359
3359
  // src/modules/image-fun-filters/colorhalftone.ts
3360
- var fs15 = glsl`\
3360
+ var fs16 = glsl`\
3361
3361
  uniform vec2 center;
3362
3362
  uniform float angle;
3363
3363
  uniform float size;
@@ -3399,12 +3399,12 @@ var uniforms10 = {
3399
3399
  var colorHalftone = {
3400
3400
  name: "colorHalftone",
3401
3401
  uniforms: uniforms10,
3402
- fs: fs15,
3402
+ fs: fs16,
3403
3403
  passes: [{ filter: true }]
3404
3404
  };
3405
3405
 
3406
3406
  // src/modules/image-fun-filters/dotscreen.ts
3407
- var fs16 = glsl`\
3407
+ var fs17 = glsl`\
3408
3408
  uniform vec2 center;
3409
3409
  uniform float angle;
3410
3410
  uniform float size;
@@ -3434,12 +3434,12 @@ var uniforms11 = {
3434
3434
  var dotScreen = {
3435
3435
  name: "dotScreen",
3436
3436
  uniforms: uniforms11,
3437
- fs: fs16,
3437
+ fs: fs17,
3438
3438
  passes: [{ filter: true }]
3439
3439
  };
3440
3440
 
3441
3441
  // src/modules/image-fun-filters/edgework.ts
3442
- var fs17 = glsl`\
3442
+ var fs18 = glsl`\
3443
3443
  uniform float radius;
3444
3444
  uniform vec2 delta;
3445
3445
 
@@ -3500,7 +3500,7 @@ var uniforms12 = {
3500
3500
  var edgeWork = {
3501
3501
  name: "edgeWork",
3502
3502
  uniforms: uniforms12,
3503
- fs: fs17,
3503
+ fs: fs18,
3504
3504
  dependencies: [random],
3505
3505
  passes: [
3506
3506
  {
@@ -3515,7 +3515,7 @@ var edgeWork = {
3515
3515
  };
3516
3516
 
3517
3517
  // src/modules/image-fun-filters/hexagonalpixelate.ts
3518
- var fs18 = glsl`\
3518
+ var fs19 = glsl`\
3519
3519
  uniform vec2 center;
3520
3520
  uniform float scale;
3521
3521
 
@@ -3564,12 +3564,12 @@ var uniforms13 = {
3564
3564
  var hexagonalPixelate = {
3565
3565
  name: "hexagonalPixelate",
3566
3566
  uniforms: uniforms13,
3567
- fs: fs18,
3567
+ fs: fs19,
3568
3568
  passes: [{ sampler: true }]
3569
3569
  };
3570
3570
 
3571
3571
  // src/modules/image-fun-filters/ink.ts
3572
- var fs19 = glsl`\
3572
+ var fs20 = glsl`\
3573
3573
  uniform float strength;
3574
3574
 
3575
3575
  vec4 ink_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
@@ -3602,12 +3602,12 @@ var uniforms14 = {
3602
3602
  var ink = {
3603
3603
  name: "ink",
3604
3604
  uniforms: uniforms14,
3605
- fs: fs19,
3605
+ fs: fs20,
3606
3606
  passes: [{ sampler: true }]
3607
3607
  };
3608
3608
 
3609
3609
  // src/modules/image-fun-filters/magnify.ts
3610
- var fs20 = `uniform vec2 screenXY;
3610
+ var fs21 = `uniform vec2 screenXY;
3611
3611
  uniform float radiusPixels;
3612
3612
  uniform float zoom;
3613
3613
  uniform float borderWidthPixels;
@@ -3637,12 +3637,12 @@ var uniforms15 = {
3637
3637
  var magnify = {
3638
3638
  name: "magnify",
3639
3639
  uniforms: uniforms15,
3640
- fs: fs20,
3640
+ fs: fs21,
3641
3641
  passes: [{ sampler: true }]
3642
3642
  };
3643
3643
 
3644
3644
  // src/modules/image-warp-filters/warp.ts
3645
- var fs21 = glsl`\
3645
+ var fs22 = glsl`\
3646
3646
  vec4 warp_sampleColor(sampler2D texture, vec2 texSize, vec2 coord) {
3647
3647
  vec4 color = texture2D(texture, coord / texSize);
3648
3648
  vec2 clampedCoord = clamp(coord, vec2(0.0), texSize);
@@ -3656,11 +3656,11 @@ vec4 warp_sampleColor(sampler2D texture, vec2 texSize, vec2 coord) {
3656
3656
  `;
3657
3657
  var warp = {
3658
3658
  name: "warp",
3659
- fs: fs21
3659
+ fs: fs22
3660
3660
  };
3661
3661
 
3662
3662
  // src/modules/image-warp-filters/bulgepinch.ts
3663
- var fs22 = glsl`\
3663
+ var fs23 = glsl`\
3664
3664
  uniform float radius;
3665
3665
  uniform float strength;
3666
3666
  uniform vec2 center;
@@ -3694,14 +3694,14 @@ var uniforms16 = {
3694
3694
  };
3695
3695
  var bulgePinch = {
3696
3696
  name: "bulgePinch",
3697
- fs: fs22,
3697
+ fs: fs23,
3698
3698
  uniforms: uniforms16,
3699
3699
  dependencies: [warp],
3700
3700
  passes: [{ sampler: true }]
3701
3701
  };
3702
3702
 
3703
3703
  // src/modules/image-warp-filters/swirl.ts
3704
- var fs23 = glsl`\
3704
+ var fs24 = glsl`\
3705
3705
  uniform float radius;
3706
3706
  uniform float angle;
3707
3707
  uniform vec2 center;
@@ -3737,14 +3737,14 @@ var uniforms17 = {
3737
3737
  };
3738
3738
  var swirl = {
3739
3739
  name: "swirl",
3740
- fs: fs23,
3740
+ fs: fs24,
3741
3741
  uniforms: uniforms17,
3742
3742
  dependencies: [warp],
3743
3743
  passes: [{ sampler: true }]
3744
3744
  };
3745
3745
 
3746
3746
  // src/modules/fxaa/fxaa.ts
3747
- var fs24 = `
3747
+ var fs25 = `
3748
3748
  #define FXAA_QUALITY_PRESET 29
3749
3749
 
3750
3750
  #if (FXAA_QUALITY_PRESET == 10)
@@ -4328,12 +4328,12 @@ vec4 fxaa_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
4328
4328
  var fxaa = {
4329
4329
  name: "fxaa",
4330
4330
  uniforms: {},
4331
- fs: fs24,
4331
+ fs: fs25,
4332
4332
  passes: [{ sampler: true }]
4333
4333
  };
4334
4334
 
4335
4335
  // src/modules/transform/transform.ts
4336
- var vs3 = glsl`\
4336
+ var vs4 = glsl`\
4337
4337
  attribute float transform_elementID;
4338
4338
 
4339
4339
  // returns half of pixel size, used to move the pixel position to center of the pixel.
@@ -4375,7 +4375,7 @@ vec4 transform_getInput(sampler2D texSampler, vec2 size) {
4375
4375
  `;
4376
4376
  var transform = {
4377
4377
  name: "transform",
4378
- vs: vs3
4378
+ vs: vs4
4379
4379
  };
4380
4380
  /**
4381
4381
  * ORIGINAL LICENCE
@@ -3,8 +3,8 @@ var _templateObject;
3
3
  import { glsl } from "../glsl-utils/highlight.js";
4
4
  import { resolveModules } from "./resolve-modules.js";
5
5
  import { getPlatformShaderDefines, getVersionDefines } from "./platform-defines.js";
6
- import injectShader, { DECLARATION_INJECT_MARKER } from "./inject-shader.js";
7
- import transpileShader from "../transpiler/transpile-shader.js";
6
+ import { injectShader, DECLARATION_INJECT_MARKER } from "./inject-shader.js";
7
+ import { transpileShader } from "../transpiler/transpile-shader.js";
8
8
  import { assert } from "../utils/assert.js";
9
9
  const INJECT_SHADER_DECLARATIONS = "\n\n".concat(DECLARATION_INJECT_MARKER, "\n\n");
10
10
  const SHADER_TYPE = {
@@ -1 +1 @@
1
- {"version":3,"file":"assemble-shaders.js","names":["glsl","resolveModules","getPlatformShaderDefines","getVersionDefines","injectShader","DECLARATION_INJECT_MARKER","transpileShader","assert","INJECT_SHADER_DECLARATIONS","concat","SHADER_TYPE","FRAGMENT_SHADER_PROLOGUE","_templateObject","_taggedTemplateLiteral","assembleShaders","platformInfo","options","vs","fs","modules","assembleShader","source","type","getUniforms","assembleGetUniforms","id","defines","hookFunctions","inject","transpileToGLSL100","prologue","log","isVertex","sourceLines","split","glslVersion","versionLine","coreSource","indexOf","slice","join","allDefines","forEach","module","Object","assign","getDefines","assembledSource","getShaderNameDefine","getShaderType","getApplicationDefines","hookFunctionMap","normalizeHookFunctions","hookInjections","declInjections","mainInjections","key","injection","order","match","exec","hash","name","checkDeprecations","moduleSource","getModuleSource","injections","injectionType","push","getHookFunctions","opts","uniforms","moduleUniforms","toUpperCase","injectShaderName","arguments","length","undefined","count","sourceText","define","value","Number","isFinite","result","hookName","hookFunction","signature","header","sort","a","b","footer","hook","trim","stage","replace","Error"],"sources":["../../../src/lib/shader-assembler/assemble-shaders.ts"],"sourcesContent":["// luma.gl, MIT license\nimport {glsl} from '../glsl-utils/highlight';\nimport {resolveModules} from './resolve-modules';\nimport {getPlatformShaderDefines, getVersionDefines, PlatformInfo} from './platform-defines';\nimport injectShader, {DECLARATION_INJECT_MARKER} from './inject-shader';\nimport transpileShader from '../transpiler/transpile-shader';\nimport {assert} from '../utils/assert';\nimport {ShaderModuleInstance} from '../shader-module/shader-module-instance';\nimport type { Injection } from '../shader-module/shader-module-instance';\n\n\nconst INJECT_SHADER_DECLARATIONS = `\\n\\n${DECLARATION_INJECT_MARKER}\\n\\n`;\n\nconst SHADER_TYPE = {\n 'fs': 'fragment',\n 'vs': 'vertex'\n};\n\n/**\n * Precision prologue to inject before functions are injected in shader\n * TODO - extract any existing prologue in the fragment source and move it up...\n */\nconst FRAGMENT_SHADER_PROLOGUE = glsl`\\\nprecision highp float;\n\n`;\n\n/** Define map */\ntype Defines = Record<string, string | number | boolean>;\n\nexport type HookFunction = { hook: string; header: string; footer: string; signature?: string};\n\nexport type AssembleShaderOptions = {\n id?: string;\n vs: string;\n fs: string;\n type?: any;\n modules?: any[];\n defines?: Defines;\n hookFunctions?: (HookFunction | string | { hook: string; header: string; footer: string; })[];\n inject?: object;\n transpileToGLSL100?: boolean;\n prologue?: boolean;\n log?: any;\n};\n\n/**\n * Inject a list of shader modules into shader sources\n */\nexport function assembleShaders(\n platformInfo: PlatformInfo,\n options: AssembleShaderOptions\n): {\n vs: string;\n fs: string;\n getUniforms: any;\n} {\n const {vs, fs} = options;\n const modules = resolveModules(options.modules || []);\n return {\n vs: assembleShader(platformInfo, {...options, source: vs, type: 'vs', modules}),\n fs: assembleShader(platformInfo, {...options, source: fs, type: 'fs', modules}),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n\n/**\n * Pulls together complete source code for either a vertex or a fragment shader\n * adding prologues, requested module chunks, and any final injections.\n * @param gl \n * @param options \n * @returns \n */\nfunction assembleShader(\n platformInfo: PlatformInfo,\n options: {\n id?: string;\n source: string;\n type: 'vs' | 'fs';\n modules: any[];\n defines?: Defines;\n hookFunctions?: any[];\n inject?: Record<string, any>;\n transpileToGLSL100?: boolean;\n prologue?: boolean;\n log?: any;\n }\n) {\n const {\n id,\n source,\n type,\n modules,\n defines = {},\n hookFunctions = [],\n inject = {},\n transpileToGLSL100 = false,\n prologue = true,\n log\n } = options;\n\n assert(typeof source === 'string', 'shader source must be a string');\n\n const isVertex = type === 'vs';\n\n const sourceLines = source.split('\\n');\n let glslVersion = 100;\n let versionLine = '';\n let coreSource = source;\n // Extract any version directive string from source.\n // TODO : keep all pre-processor statements at the beginning of the shader.\n if (sourceLines[0].indexOf('#version ') === 0) {\n glslVersion = 300; // TODO - regexp that matches actual version number\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join('\\n');\n } else {\n versionLine = `#version ${glslVersion}`;\n }\n\n // Combine Module and Application Defines\n const allDefines = {};\n modules.forEach((module) => {\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = prologue\n ? `\\\n${versionLine}\n${getShaderNameDefine({id, source, type})}\n${getShaderType(type)}\n${getPlatformShaderDefines(platformInfo)}\n${getVersionDefines(platformInfo)}\n${getApplicationDefines(allDefines)}\n${isVertex ? '' : FRAGMENT_SHADER_PROLOGUE}\n`\n : `${versionLine}\n`;\n\n const hookFunctionMap = normalizeHookFunctions(hookFunctions);\n\n // Add source of dependent modules in resolved order\n const hookInjections: Record<string, Injection[]> = {};\n const declInjections: Record<string, Injection[]> = {};\n const mainInjections: Record<string, Injection[]> = {};\n\n for (const key in inject) {\n const injection =\n typeof inject[key] === 'string' ? {injection: inject[key], order: 0} : inject[key];\n const match = /^(v|f)s:(#)?([\\w-]+)$/.exec(key);\n if (match) {\n const hash = match[2];\n const name = match[3];\n if (hash) {\n if (name === 'decl') {\n declInjections[key] = [injection];\n } else {\n mainInjections[key] = [injection];\n }\n } else {\n hookInjections[key] = [injection];\n }\n } else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n\n for (const module of modules) {\n if (log) {\n module.checkDeprecations(coreSource, log);\n }\n const moduleSource = module.getModuleSource(type, glslVersion);\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n\n const injections = module.injections[type];\n for (const key in injections) {\n const match = /^(v|f)s:#([\\w-]+)$/.exec(key);\n if (match) {\n const name = match[2];\n const injectionType = name === 'decl' ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n\n assembledSource = injectShader(assembledSource, type, declInjections);\n\n assembledSource += getHookFunctions(hookFunctionMap[type], hookInjections);\n\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, type, mainInjections);\n\n assembledSource = transpileShader(\n assembledSource,\n transpileToGLSL100 ? 100 : glslVersion,\n isVertex\n );\n\n return assembledSource;\n}\n\n/**\n * Returns a combined `getUniforms` covering the options for all the modules,\n * the created function will pass on options to the inidividual `getUniforms`\n * function of each shader module and combine the results into one object that\n * can be passed to setUniforms.\n * @param modules \n * @returns \n */\nfunction assembleGetUniforms(modules: ShaderModuleInstance[]) {\n return function getUniforms(opts: Record<string, any>): Record<string, any> {\n const uniforms = {};\n for (const module of modules) {\n // `modules` is already sorted by dependency level. This guarantees that\n // modules have access to the uniforms that are generated by their dependencies.\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\n\nfunction getShaderType(type: 'fs' | 'vs') {\n return `\n#define SHADER_TYPE_${SHADER_TYPE[type].toUpperCase()}\n`;\n}\n\n/**\n * Generate \"glslify-compatible\" SHADER_NAME defines\n * These are understood by the GLSL error parsing function\n * If id is provided and no SHADER_NAME constant is present in source, create one\n */\nfunction getShaderNameDefine(options: {id?: string, source: string, type: 'vs' | 'fs'}): string {\n const {id, source, type} = options;\n const injectShaderName = id && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName\n ? `\n#define SHADER_NAME ${id}_${SHADER_TYPE[type]}\n\n`\n : '';\n}\n\n/** Generates application defines from an object of key value pairs */\nfunction getApplicationDefines(defines: Defines = {}): string {\n let count = 0;\n let sourceText = '';\n for (const define in defines) {\n if (count === 0) {\n sourceText += '\\n// APPLICATION DEFINES\\n';\n }\n count++;\n\n const value = defines[define];\n if (value || Number.isFinite(value)) {\n sourceText += `#define ${define.toUpperCase()} ${defines[define]}\\n`;\n }\n }\n if (count === 0) {\n sourceText += '\\n';\n }\n return sourceText;\n}\n\nfunction getHookFunctions(\n hookFunctions: Record<string, HookFunction>, hookInjections: Record<string, Injection[]>): string {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a: {order: number}, b: {order: number}): number => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n\n return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions: (string | HookFunction)[]): {\n vs: Record<string, HookFunction>, \n fs: Record<string, HookFunction>\n} {\n const result: {vs: Record<string, any>, fs: Record<string, any>} = {\n vs: {},\n fs: {}\n };\n\n hookFunctions.forEach((hookFunction: string | HookFunction) => {\n let opts: HookFunction;\n let hook: string;\n if (typeof hookFunction !== 'string') {\n opts = hookFunction;\n hook = opts.hook;\n } else {\n opts = {} as HookFunction;\n hook = hookFunction;\n }\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n if (stage !== 'vs' && stage !== 'fs') {\n throw new Error(stage);\n }\n result[stage][name] = Object.assign(opts, {signature});\n });\n\n return result;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"assemble-shaders.js","names":["glsl","resolveModules","getPlatformShaderDefines","getVersionDefines","injectShader","DECLARATION_INJECT_MARKER","transpileShader","assert","INJECT_SHADER_DECLARATIONS","concat","SHADER_TYPE","FRAGMENT_SHADER_PROLOGUE","_templateObject","_taggedTemplateLiteral","assembleShaders","platformInfo","options","vs","fs","modules","assembleShader","source","type","getUniforms","assembleGetUniforms","id","defines","hookFunctions","inject","transpileToGLSL100","prologue","log","isVertex","sourceLines","split","glslVersion","versionLine","coreSource","indexOf","slice","join","allDefines","forEach","module","Object","assign","getDefines","assembledSource","getShaderNameDefine","getShaderType","getApplicationDefines","hookFunctionMap","normalizeHookFunctions","hookInjections","declInjections","mainInjections","key","injection","order","match","exec","hash","name","checkDeprecations","moduleSource","getModuleSource","injections","injectionType","push","getHookFunctions","opts","uniforms","moduleUniforms","toUpperCase","injectShaderName","arguments","length","undefined","count","sourceText","define","value","Number","isFinite","result","hookName","hookFunction","signature","header","sort","a","b","footer","hook","trim","stage","replace","Error"],"sources":["../../../src/lib/shader-assembler/assemble-shaders.ts"],"sourcesContent":["// luma.gl, MIT license\nimport {glsl} from '../glsl-utils/highlight';\nimport {resolveModules} from './resolve-modules';\nimport {getPlatformShaderDefines, getVersionDefines, PlatformInfo} from './platform-defines';\nimport {injectShader, DECLARATION_INJECT_MARKER} from './inject-shader';\nimport {transpileShader} from '../transpiler/transpile-shader';\nimport {assert} from '../utils/assert';\nimport {ShaderModuleInstance} from '../shader-module/shader-module-instance';\nimport type { Injection } from '../shader-module/shader-module-instance';\n\n\nconst INJECT_SHADER_DECLARATIONS = `\\n\\n${DECLARATION_INJECT_MARKER}\\n\\n`;\n\nconst SHADER_TYPE = {\n 'fs': 'fragment',\n 'vs': 'vertex'\n};\n\n/**\n * Precision prologue to inject before functions are injected in shader\n * TODO - extract any existing prologue in the fragment source and move it up...\n */\nconst FRAGMENT_SHADER_PROLOGUE = glsl`\\\nprecision highp float;\n\n`;\n\n/** Define map */\ntype Defines = Record<string, string | number | boolean>;\n\nexport type HookFunction = { hook: string; header: string; footer: string; signature?: string};\n\nexport type AssembleShaderOptions = {\n id?: string;\n vs: string;\n fs: string;\n type?: any;\n modules?: any[];\n defines?: Defines;\n hookFunctions?: (HookFunction | string | { hook: string; header: string; footer: string; })[];\n inject?: object;\n transpileToGLSL100?: boolean;\n prologue?: boolean;\n log?: any;\n};\n\n/**\n * Inject a list of shader modules into shader sources\n */\nexport function assembleShaders(\n platformInfo: PlatformInfo,\n options: AssembleShaderOptions\n): {\n vs: string;\n fs: string;\n getUniforms: any;\n} {\n const {vs, fs} = options;\n const modules = resolveModules(options.modules || []);\n return {\n vs: assembleShader(platformInfo, {...options, source: vs, type: 'vs', modules}),\n fs: assembleShader(platformInfo, {...options, source: fs, type: 'fs', modules}),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n\n/**\n * Pulls together complete source code for either a vertex or a fragment shader\n * adding prologues, requested module chunks, and any final injections.\n * @param gl \n * @param options \n * @returns \n */\nfunction assembleShader(\n platformInfo: PlatformInfo,\n options: {\n id?: string;\n source: string;\n type: 'vs' | 'fs';\n modules: any[];\n defines?: Defines;\n hookFunctions?: any[];\n inject?: Record<string, any>;\n transpileToGLSL100?: boolean;\n prologue?: boolean;\n log?: any;\n }\n) {\n const {\n id,\n source,\n type,\n modules,\n defines = {},\n hookFunctions = [],\n inject = {},\n transpileToGLSL100 = false,\n prologue = true,\n log\n } = options;\n\n assert(typeof source === 'string', 'shader source must be a string');\n\n const isVertex = type === 'vs';\n\n const sourceLines = source.split('\\n');\n let glslVersion = 100;\n let versionLine = '';\n let coreSource = source;\n // Extract any version directive string from source.\n // TODO : keep all pre-processor statements at the beginning of the shader.\n if (sourceLines[0].indexOf('#version ') === 0) {\n glslVersion = 300; // TODO - regexp that matches actual version number\n versionLine = sourceLines[0];\n coreSource = sourceLines.slice(1).join('\\n');\n } else {\n versionLine = `#version ${glslVersion}`;\n }\n\n // Combine Module and Application Defines\n const allDefines = {};\n modules.forEach((module) => {\n Object.assign(allDefines, module.getDefines());\n });\n Object.assign(allDefines, defines);\n\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = prologue\n ? `\\\n${versionLine}\n${getShaderNameDefine({id, source, type})}\n${getShaderType(type)}\n${getPlatformShaderDefines(platformInfo)}\n${getVersionDefines(platformInfo)}\n${getApplicationDefines(allDefines)}\n${isVertex ? '' : FRAGMENT_SHADER_PROLOGUE}\n`\n : `${versionLine}\n`;\n\n const hookFunctionMap = normalizeHookFunctions(hookFunctions);\n\n // Add source of dependent modules in resolved order\n const hookInjections: Record<string, Injection[]> = {};\n const declInjections: Record<string, Injection[]> = {};\n const mainInjections: Record<string, Injection[]> = {};\n\n for (const key in inject) {\n const injection =\n typeof inject[key] === 'string' ? {injection: inject[key], order: 0} : inject[key];\n const match = /^(v|f)s:(#)?([\\w-]+)$/.exec(key);\n if (match) {\n const hash = match[2];\n const name = match[3];\n if (hash) {\n if (name === 'decl') {\n declInjections[key] = [injection];\n } else {\n mainInjections[key] = [injection];\n }\n } else {\n hookInjections[key] = [injection];\n }\n } else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n\n for (const module of modules) {\n if (log) {\n module.checkDeprecations(coreSource, log);\n }\n const moduleSource = module.getModuleSource(type, glslVersion);\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n\n const injections = module.injections[type];\n for (const key in injections) {\n const match = /^(v|f)s:#([\\w-]+)$/.exec(key);\n if (match) {\n const name = match[2];\n const injectionType = name === 'decl' ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n } else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n\n assembledSource = injectShader(assembledSource, type, declInjections);\n\n assembledSource += getHookFunctions(hookFunctionMap[type], hookInjections);\n\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, type, mainInjections);\n\n assembledSource = transpileShader(\n assembledSource,\n transpileToGLSL100 ? 100 : glslVersion,\n isVertex\n );\n\n return assembledSource;\n}\n\n/**\n * Returns a combined `getUniforms` covering the options for all the modules,\n * the created function will pass on options to the inidividual `getUniforms`\n * function of each shader module and combine the results into one object that\n * can be passed to setUniforms.\n * @param modules \n * @returns \n */\nfunction assembleGetUniforms(modules: ShaderModuleInstance[]) {\n return function getUniforms(opts: Record<string, any>): Record<string, any> {\n const uniforms = {};\n for (const module of modules) {\n // `modules` is already sorted by dependency level. This guarantees that\n // modules have access to the uniforms that are generated by their dependencies.\n const moduleUniforms = module.getUniforms(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\n\nfunction getShaderType(type: 'fs' | 'vs') {\n return `\n#define SHADER_TYPE_${SHADER_TYPE[type].toUpperCase()}\n`;\n}\n\n/**\n * Generate \"glslify-compatible\" SHADER_NAME defines\n * These are understood by the GLSL error parsing function\n * If id is provided and no SHADER_NAME constant is present in source, create one\n */\nfunction getShaderNameDefine(options: {id?: string, source: string, type: 'vs' | 'fs'}): string {\n const {id, source, type} = options;\n const injectShaderName = id && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName\n ? `\n#define SHADER_NAME ${id}_${SHADER_TYPE[type]}\n\n`\n : '';\n}\n\n/** Generates application defines from an object of key value pairs */\nfunction getApplicationDefines(defines: Defines = {}): string {\n let count = 0;\n let sourceText = '';\n for (const define in defines) {\n if (count === 0) {\n sourceText += '\\n// APPLICATION DEFINES\\n';\n }\n count++;\n\n const value = defines[define];\n if (value || Number.isFinite(value)) {\n sourceText += `#define ${define.toUpperCase()} ${defines[define]}\\n`;\n }\n }\n if (count === 0) {\n sourceText += '\\n';\n }\n return sourceText;\n}\n\nfunction getHookFunctions(\n hookFunctions: Record<string, HookFunction>, hookInjections: Record<string, Injection[]>): string {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a: {order: number}, b: {order: number}): number => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n\n return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions: (string | HookFunction)[]): {\n vs: Record<string, HookFunction>, \n fs: Record<string, HookFunction>\n} {\n const result: {vs: Record<string, any>, fs: Record<string, any>} = {\n vs: {},\n fs: {}\n };\n\n hookFunctions.forEach((hookFunction: string | HookFunction) => {\n let opts: HookFunction;\n let hook: string;\n if (typeof hookFunction !== 'string') {\n opts = hookFunction;\n hook = opts.hook;\n } else {\n opts = {} as HookFunction;\n hook = hookFunction;\n }\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n if (stage !== 'vs' && stage !== 'fs') {\n throw new Error(stage);\n }\n result[stage][name] = Object.assign(opts, {signature});\n });\n\n return result;\n}\n"],"mappings":"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"}
@@ -9,6 +9,6 @@ export declare const DECLARATION_INJECT_MARKER = "__LUMA_INJECT_DECLARATIONS__";
9
9
  * @param injectStandardStubs
10
10
  * @returns
11
11
  */
12
- export default function injectShader(source: string, type: 'vs' | 'fs', inject: Record<string, Injection[]>, injectStandardStubs?: boolean): string;
12
+ export declare function injectShader(source: string, type: 'vs' | 'fs', inject: Record<string, Injection[]>, injectStandardStubs?: boolean): string;
13
13
  export declare function combineInjects(injects: any[]): Record<string, string>;
14
14
  //# sourceMappingURL=inject-shader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inject-shader.d.ts","sourceRoot":"","sources":["../../../src/lib/shader-assembler/inject-shader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,eAAO,MAAM,yBAAyB,iCAAiC,CAAC;AAExE;;;;;;;;GAQG;AAEH,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EACnC,mBAAmB,UAAQ,GAC1B,MAAM,CAkER;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASrE"}
1
+ {"version":3,"file":"inject-shader.d.ts","sourceRoot":"","sources":["../../../src/lib/shader-assembler/inject-shader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,eAAO,MAAM,yBAAyB,iCAAiC,CAAC;AAExE;;;;;;;;GAQG;AAEH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EACnC,mBAAmB,UAAQ,GAC1B,MAAM,CAkER;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASrE"}
@@ -8,7 +8,7 @@ const REGEX_START_OF_MAIN = /void\s+main\s*\([^)]*\)\s*\{\n?/;
8
8
  const REGEX_END_OF_MAIN = /}\n?[^{}]*$/;
9
9
  const fragments = [];
10
10
  export const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__';
11
- export default function injectShader(source, type, inject) {
11
+ export function injectShader(source, type, inject) {
12
12
  let injectStandardStubs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
13
13
  const isVertex = type === 'vs';
14
14
  for (const key in inject) {
@@ -1 +1 @@
1
- {"version":3,"file":"inject-shader.js","names":["MODULE_INJECTORS_VS","MODULE_INJECTORS_FS","assert","MODULE_INJECTORS","vs","fs","REGEX_START_OF_MAIN","REGEX_END_OF_MAIN","fragments","DECLARATION_INJECT_MARKER","injectShader","source","type","inject","injectStandardStubs","arguments","length","undefined","isVertex","key","fragmentData","sort","a","b","order","i","len","injection","fragmentString","concat","join","replace","match","combineInjects","injects","result","Array","isArray","forEach"],"sources":["../../../src/lib/shader-assembler/inject-shader.ts"],"sourcesContent":["import {MODULE_INJECTORS_VS, MODULE_INJECTORS_FS} from '../../modules/module-injectors';\nimport type { Injection } from '../shader-module/shader-module-instance';\nimport {assert} from '../utils/assert';\n\n// TODO - experimental\nconst MODULE_INJECTORS = {\n vs: MODULE_INJECTORS_VS,\n fs: MODULE_INJECTORS_FS\n};\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/; // End of main, assumes main is last function\nconst fragments: string[] = [];\n\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__';\n\n/**\n// A minimal shader injection/templating system.\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/shader-injection-rfc.md\n * @param source \n * @param type \n * @param inject \n * @param injectStandardStubs \n * @returns \n */\n// eslint-disable-next-line complexity\nexport default function injectShader(\n source: string, \n type: 'vs' | 'fs', \n inject: Record<string, Injection[]>, \n injectStandardStubs = false\n): string {\n const isVertex = type === 'vs';\n\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a: Injection, b: Injection): number => a.order - b.order);\n fragments.length = fragmentData.length;\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n const fragmentString = `${fragments.join('\\n')}\\n`;\n switch (key) {\n // declarations are injected before the main function\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, (match: string) => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, (match: string) => fragmentString + match);\n }\n break;\n // declarations are injected before the main function\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, (match: string) => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, (match: string) => fragmentString + match);\n }\n break;\n\n default:\n // TODO(Tarek): I think this usage should be deprecated.\n\n // inject code after key, leaving key in place\n source = source.replace(key, (match: string) => match + fragmentString);\n }\n }\n\n // Remove if it hasn't already been replaced\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n // Finally, if requested, insert an automatic module injector chunk\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, (match: string) => match + MODULE_INJECTORS[type]);\n }\n\n return source;\n}\n\n// Takes an array of inject objects and combines them into one\nexport function combineInjects(injects: any[]): Record<string, string> {\n const result: Record<string, string> = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach((inject) => {\n for (const key in inject) {\n result[key] = result[key] ? `${result[key]}\\n${inject[key]}` : inject[key];\n }\n });\n return result;\n}\n"],"mappings":"SAAQA,mBAAmB,EAAEC,mBAAmB;AAAA,SAExCC,MAAM;AAGd,MAAMC,gBAAgB,GAAG;EACvBC,EAAE,EAAEJ,mBAAmB;EACvBK,EAAE,EAAEJ;AACN,CAAC;AAED,MAAMK,mBAAmB,GAAG,iCAAiC;AAC7D,MAAMC,iBAAiB,GAAG,aAAa;AACvC,MAAMC,SAAmB,GAAG,EAAE;AAE9B,OAAO,MAAMC,yBAAyB,GAAG,8BAA8B;AAYvE,eAAe,SAASC,YAAYA,CAClCC,MAAc,EACdC,IAAiB,EACjBC,MAAmC,EAE3B;EAAA,IADRC,mBAAmB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAE3B,MAAMG,QAAQ,GAAGN,IAAI,KAAK,IAAI;EAE9B,KAAK,MAAMO,GAAG,IAAIN,MAAM,EAAE;IACxB,MAAMO,YAAY,GAAGP,MAAM,CAACM,GAAG,CAAC;IAChCC,YAAY,CAACC,IAAI,CAAC,CAACC,CAAY,EAAEC,CAAY,KAAaD,CAAC,CAACE,KAAK,GAAGD,CAAC,CAACC,KAAK,CAAC;IAC5EhB,SAAS,CAACQ,MAAM,GAAGI,YAAY,CAACJ,MAAM;IACtC,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEC,GAAG,GAAGN,YAAY,CAACJ,MAAM,EAAES,CAAC,GAAGC,GAAG,EAAE,EAAED,CAAC,EAAE;MACvDjB,SAAS,CAACiB,CAAC,CAAC,GAAGL,YAAY,CAACK,CAAC,CAAC,CAACE,SAAS;IAC1C;IACA,MAAMC,cAAc,MAAAC,MAAA,CAAMrB,SAAS,CAACsB,IAAI,CAAC,IAAI,CAAC,OAAI;IAClD,QAAQX,GAAG;MAET,KAAK,UAAU;QACb,IAAID,QAAQ,EAAE;UACZP,MAAM,GAAGA,MAAM,CAACoB,OAAO,CAACtB,yBAAyB,EAAEmB,cAAc,CAAC;QACpE;QACA;MAEF,KAAK,gBAAgB;QACnB,IAAIV,QAAQ,EAAE;UACZP,MAAM,GAAGA,MAAM,CAACoB,OAAO,CAACzB,mBAAmB,EAAG0B,KAAa,IAAKA,KAAK,GAAGJ,cAAc,CAAC;QACzF;QACA;MAEF,KAAK,cAAc;QACjB,IAAIV,QAAQ,EAAE;UACZP,MAAM,GAAGA,MAAM,CAACoB,OAAO,CAACxB,iBAAiB,EAAGyB,KAAa,IAAKJ,cAAc,GAAGI,KAAK,CAAC;QACvF;QACA;MAEF,KAAK,UAAU;QACb,IAAI,CAACd,QAAQ,EAAE;UACbP,MAAM,GAAGA,MAAM,CAACoB,OAAO,CAACtB,yBAAyB,EAAEmB,cAAc,CAAC;QACpE;QACA;MAEF,KAAK,gBAAgB;QACnB,IAAI,CAACV,QAAQ,EAAE;UACbP,MAAM,GAAGA,MAAM,CAACoB,OAAO,CAACzB,mBAAmB,EAAG0B,KAAa,IAAKA,KAAK,GAAGJ,cAAc,CAAC;QACzF;QACA;MAEF,KAAK,cAAc;QACjB,IAAI,CAACV,QAAQ,EAAE;UACbP,MAAM,GAAGA,MAAM,CAACoB,OAAO,CAACxB,iBAAiB,EAAGyB,KAAa,IAAKJ,cAAc,GAAGI,KAAK,CAAC;QACvF;QACA;MAEF;QAIErB,MAAM,GAAGA,MAAM,CAACoB,OAAO,CAACZ,GAAG,EAAGa,KAAa,IAAKA,KAAK,GAAGJ,cAAc,CAAC;IAAC;EAE9E;EAGAjB,MAAM,GAAGA,MAAM,CAACoB,OAAO,CAACtB,yBAAyB,EAAE,EAAE,CAAC;EAGtD,IAAIK,mBAAmB,EAAE;IACvBH,MAAM,GAAGA,MAAM,CAACoB,OAAO,CAAC,QAAQ,EAAGC,KAAa,IAAKA,KAAK,GAAG7B,gBAAgB,CAACS,IAAI,CAAC,CAAC;EACtF;EAEA,OAAOD,MAAM;AACf;AAGA,OAAO,SAASsB,cAAcA,CAACC,OAAc,EAA0B;EACrE,MAAMC,MAA8B,GAAG,CAAC,CAAC;EACzCjC,MAAM,CAACkC,KAAK,CAACC,OAAO,CAACH,OAAO,CAAC,IAAIA,OAAO,CAAClB,MAAM,GAAG,CAAC,CAAC;EACpDkB,OAAO,CAACI,OAAO,CAAEzB,MAAM,IAAK;IAC1B,KAAK,MAAMM,GAAG,IAAIN,MAAM,EAAE;MACxBsB,MAAM,CAAChB,GAAG,CAAC,GAAGgB,MAAM,CAAChB,GAAG,CAAC,MAAAU,MAAA,CAAMM,MAAM,CAAChB,GAAG,CAAC,QAAAU,MAAA,CAAKhB,MAAM,CAACM,GAAG,CAAC,IAAKN,MAAM,CAACM,GAAG,CAAC;IAC5E;EACF,CAAC,CAAC;EACF,OAAOgB,MAAM;AACf"}
1
+ {"version":3,"file":"inject-shader.js","names":["MODULE_INJECTORS_VS","MODULE_INJECTORS_FS","assert","MODULE_INJECTORS","vs","fs","REGEX_START_OF_MAIN","REGEX_END_OF_MAIN","fragments","DECLARATION_INJECT_MARKER","injectShader","source","type","inject","injectStandardStubs","arguments","length","undefined","isVertex","key","fragmentData","sort","a","b","order","i","len","injection","fragmentString","concat","join","replace","match","combineInjects","injects","result","Array","isArray","forEach"],"sources":["../../../src/lib/shader-assembler/inject-shader.ts"],"sourcesContent":["import {MODULE_INJECTORS_VS, MODULE_INJECTORS_FS} from '../../modules/module-injectors';\nimport type { Injection } from '../shader-module/shader-module-instance';\nimport {assert} from '../utils/assert';\n\n// TODO - experimental\nconst MODULE_INJECTORS = {\n vs: MODULE_INJECTORS_VS,\n fs: MODULE_INJECTORS_FS\n};\n\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/; // End of main, assumes main is last function\nconst fragments: string[] = [];\n\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__';\n\n/**\n// A minimal shader injection/templating system.\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/shader-injection-rfc.md\n * @param source \n * @param type \n * @param inject \n * @param injectStandardStubs \n * @returns \n */\n// eslint-disable-next-line complexity\nexport function injectShader(\n source: string, \n type: 'vs' | 'fs', \n inject: Record<string, Injection[]>, \n injectStandardStubs = false\n): string {\n const isVertex = type === 'vs';\n\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a: Injection, b: Injection): number => a.order - b.order);\n fragments.length = fragmentData.length;\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n const fragmentString = `${fragments.join('\\n')}\\n`;\n switch (key) {\n // declarations are injected before the main function\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, (match: string) => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, (match: string) => fragmentString + match);\n }\n break;\n // declarations are injected before the main function\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, (match: string) => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, (match: string) => fragmentString + match);\n }\n break;\n\n default:\n // TODO(Tarek): I think this usage should be deprecated.\n\n // inject code after key, leaving key in place\n source = source.replace(key, (match: string) => match + fragmentString);\n }\n }\n\n // Remove if it hasn't already been replaced\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n\n // Finally, if requested, insert an automatic module injector chunk\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, (match: string) => match + MODULE_INJECTORS[type]);\n }\n\n return source;\n}\n\n// Takes an array of inject objects and combines them into one\nexport function combineInjects(injects: any[]): Record<string, string> {\n const result: Record<string, string> = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach((inject) => {\n for (const key in inject) {\n result[key] = result[key] ? `${result[key]}\\n${inject[key]}` : inject[key];\n }\n });\n return result;\n}\n"],"mappings":"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"}
@@ -4,5 +4,5 @@
4
4
  * @note We always run transpiler even if same version e.g. 3.00 => 3.00
5
5
  * RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md
6
6
  */
7
- export default function transpileShader(source: string, targetGLSLVersion: number, isVertex: boolean): string;
7
+ export declare function transpileShader(source: string, targetGLSLVersion: number, isVertex: boolean): string;
8
8
  //# sourceMappingURL=transpile-shader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transpile-shader.d.ts","sourceRoot":"","sources":["../../../src/lib/transpiler/transpile-shader.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAa5G"}
1
+ {"version":3,"file":"transpile-shader.d.ts","sourceRoot":"","sources":["../../../src/lib/transpiler/transpile-shader.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAapG"}
@@ -1,4 +1,4 @@
1
- export default function transpileShader(source, targetGLSLVersion, isVertex) {
1
+ export function transpileShader(source, targetGLSLVersion, isVertex) {
2
2
  switch (targetGLSLVersion) {
3
3
  case 300:
4
4
  return isVertex ? convertShader(source, ES300_VERTEX_REPLACEMENTS) : convertFragmentShaderTo300(source);