@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.
- package/dist/dist.dev.js +60 -60
- package/dist/index.cjs +59 -59
- package/dist/lib/shader-assembler/assemble-shaders.js +2 -2
- package/dist/lib/shader-assembler/assemble-shaders.js.map +1 -1
- package/dist/lib/shader-assembler/inject-shader.d.ts +1 -1
- package/dist/lib/shader-assembler/inject-shader.d.ts.map +1 -1
- package/dist/lib/shader-assembler/inject-shader.js +1 -1
- package/dist/lib/shader-assembler/inject-shader.js.map +1 -1
- package/dist/lib/transpiler/transpile-shader.d.ts +1 -1
- package/dist/lib/transpiler/transpile-shader.d.ts.map +1 -1
- package/dist/lib/transpiler/transpile-shader.js +1 -1
- package/dist/lib/transpiler/transpile-shader.js.map +1 -1
- package/dist/modules/image-blur-filters/tiltshift.js.map +1 -1
- package/dist/modules/lights/lights.glsl.d.ts +1 -2
- package/dist/modules/lights/lights.glsl.d.ts.map +1 -1
- package/dist/modules/lights/lights.glsl.js +1 -1
- package/dist/modules/lights/lights.glsl.js.map +1 -1
- package/dist/modules/lights/lights.js +1 -1
- package/dist/modules/lights/lights.js.map +1 -1
- package/dist/modules/pbr/pbr-fragment.glsl.d.ts +1 -2
- package/dist/modules/pbr/pbr-fragment.glsl.d.ts.map +1 -1
- package/dist/modules/pbr/pbr-fragment.glsl.js +1 -1
- package/dist/modules/pbr/pbr-fragment.glsl.js.map +1 -1
- package/dist/modules/pbr/pbr-vertex.glsl.d.ts +1 -2
- package/dist/modules/pbr/pbr-vertex.glsl.d.ts.map +1 -1
- package/dist/modules/pbr/pbr-vertex.glsl.js +1 -1
- package/dist/modules/pbr/pbr-vertex.glsl.js.map +1 -1
- package/dist/modules/pbr/pbr.js +2 -2
- package/dist/modules/pbr/pbr.js.map +1 -1
- package/dist/modules/phong-lighting/phong-lighting.glsl.d.ts +1 -2
- package/dist/modules/phong-lighting/phong-lighting.glsl.d.ts.map +1 -1
- package/dist/modules/phong-lighting/phong-lighting.glsl.js +1 -1
- package/dist/modules/phong-lighting/phong-lighting.glsl.js.map +1 -1
- package/dist/modules/phong-lighting/phong-lighting.js +1 -1
- package/dist/modules/phong-lighting/phong-lighting.js.map +1 -1
- package/dist.min.js +35 -35
- package/package.json +3 -3
- package/src/.DS_Store +0 -0
- package/src/lib/.DS_Store +0 -0
- package/src/lib/shader-assembler/assemble-shaders.ts +2 -2
- package/src/lib/shader-assembler/inject-shader.ts +1 -1
- package/src/lib/transpiler/transpile-shader.ts +1 -1
- package/src/modules/.DS_Store +0 -0
- package/src/modules/image-blur-filters/tiltshift.ts +1 -1
- package/src/modules/lights/lights.glsl.ts +1 -1
- package/src/modules/lights/lights.ts +1 -1
- package/src/modules/pbr/pbr-fragment.glsl.ts +1 -1
- package/src/modules/pbr/pbr-vertex.glsl.ts +1 -1
- package/src/modules/pbr/pbr.ts +2 -2
- package/src/modules/phong-lighting/phong-lighting.glsl.ts +1 -1
- 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:
|
|
165
|
-
fs:
|
|
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 =
|
|
176
|
-
this.fs =
|
|
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:
|
|
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:
|
|
631
|
-
fs: assembleShader(platformInfo, __spreadProps(__spreadValues({}, options), { source:
|
|
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
|
|
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:
|
|
2226
|
-
fs:
|
|
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
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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:
|
|
2973
|
-
fs:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
3161
|
+
fs: fs9,
|
|
3162
3162
|
passes: [{ filter: true }]
|
|
3163
3163
|
};
|
|
3164
3164
|
|
|
3165
3165
|
// src/modules/image-adjust-filters/denoise.ts
|
|
3166
|
-
var
|
|
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:
|
|
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
|
|
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:
|
|
3243
|
+
fs: fs11,
|
|
3244
3244
|
passes: [{ filter: true }]
|
|
3245
3245
|
};
|
|
3246
3246
|
|
|
3247
3247
|
// src/modules/image-adjust-filters/noise.ts
|
|
3248
|
-
var
|
|
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:
|
|
3272
|
+
fs: fs12,
|
|
3273
3273
|
passes: [{ filter: true }]
|
|
3274
3274
|
};
|
|
3275
3275
|
|
|
3276
3276
|
// src/modules/image-adjust-filters/sepia.ts
|
|
3277
|
-
var
|
|
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:
|
|
3303
|
+
fs: fs13,
|
|
3304
3304
|
passes: [{ filter: true }]
|
|
3305
3305
|
};
|
|
3306
3306
|
|
|
3307
3307
|
// src/modules/image-adjust-filters/vibrance.ts
|
|
3308
|
-
var
|
|
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:
|
|
3329
|
+
fs: fs14,
|
|
3330
3330
|
passes: [{ filter: true }]
|
|
3331
3331
|
};
|
|
3332
3332
|
|
|
3333
3333
|
// src/modules/image-adjust-filters/vignette.ts
|
|
3334
|
-
var
|
|
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:
|
|
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
|
|
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:
|
|
3402
|
+
fs: fs16,
|
|
3403
3403
|
passes: [{ filter: true }]
|
|
3404
3404
|
};
|
|
3405
3405
|
|
|
3406
3406
|
// src/modules/image-fun-filters/dotscreen.ts
|
|
3407
|
-
var
|
|
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:
|
|
3437
|
+
fs: fs17,
|
|
3438
3438
|
passes: [{ filter: true }]
|
|
3439
3439
|
};
|
|
3440
3440
|
|
|
3441
3441
|
// src/modules/image-fun-filters/edgework.ts
|
|
3442
|
-
var
|
|
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:
|
|
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
|
|
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:
|
|
3567
|
+
fs: fs19,
|
|
3568
3568
|
passes: [{ sampler: true }]
|
|
3569
3569
|
};
|
|
3570
3570
|
|
|
3571
3571
|
// src/modules/image-fun-filters/ink.ts
|
|
3572
|
-
var
|
|
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:
|
|
3605
|
+
fs: fs20,
|
|
3606
3606
|
passes: [{ sampler: true }]
|
|
3607
3607
|
};
|
|
3608
3608
|
|
|
3609
3609
|
// src/modules/image-fun-filters/magnify.ts
|
|
3610
|
-
var
|
|
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:
|
|
3640
|
+
fs: fs21,
|
|
3641
3641
|
passes: [{ sampler: true }]
|
|
3642
3642
|
};
|
|
3643
3643
|
|
|
3644
3644
|
// src/modules/image-warp-filters/warp.ts
|
|
3645
|
-
var
|
|
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:
|
|
3659
|
+
fs: fs22
|
|
3660
3660
|
};
|
|
3661
3661
|
|
|
3662
3662
|
// src/modules/image-warp-filters/bulgepinch.ts
|
|
3663
|
-
var
|
|
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:
|
|
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
|
|
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:
|
|
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
|
|
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:
|
|
4331
|
+
fs: fs25,
|
|
4332
4332
|
passes: [{ sampler: true }]
|
|
4333
4333
|
};
|
|
4334
4334
|
|
|
4335
4335
|
// src/modules/transform/transform.ts
|
|
4336
|
-
var
|
|
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:
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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);
|