@luma.gl/engine 9.1.0-beta.1 → 9.1.0-beta.12
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/compute/texture-transform.d.ts.map +1 -1
- package/dist/compute/texture-transform.js +2 -3
- package/dist/compute/texture-transform.js.map +1 -1
- package/dist/dist.dev.js +54 -160
- package/dist/dist.min.js +24 -24
- package/dist/factories/pipeline-factory.d.ts +1 -11
- package/dist/factories/pipeline-factory.d.ts.map +1 -1
- package/dist/factories/pipeline-factory.js +22 -104
- package/dist/factories/pipeline-factory.js.map +1 -1
- package/dist/factories/shader-factory.d.ts +1 -5
- package/dist/factories/shader-factory.d.ts.map +1 -1
- package/dist/factories/shader-factory.js +4 -38
- package/dist/factories/shader-factory.js.map +1 -1
- package/dist/index.cjs +54 -158
- package/dist/index.cjs.map +2 -2
- package/dist/model/model.d.ts +6 -0
- package/dist/model/model.d.ts.map +1 -1
- package/dist/model/model.js +20 -16
- package/dist/model/model.js.map +1 -1
- package/dist/models/clip-space.js +10 -10
- package/dist/models/clip-space.js.map +1 -1
- package/package.json +4 -4
- package/src/compute/texture-transform.ts +2 -3
- package/src/factories/pipeline-factory.ts +23 -119
- package/src/factories/shader-factory.ts +5 -41
- package/src/model/model.ts +21 -17
- package/src/models/clip-space.ts +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texture-transform.d.ts","sourceRoot":"","sources":["../../src/compute/texture-transform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"texture-transform.d.ts","sourceRoot":"","sources":["../../src/compute/texture-transform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAC,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAC,KAAK,EAAE,UAAU,EAAC,0BAAuB;AAGjD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG;IAC3D,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACtB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,gEAAgE;IAChE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAIF;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,YAAY,SAAK;IACjB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAQ;IACrD,QAAQ,EAAE,cAAc,EAAE,CAAM;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;gBAExB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IA8BxD,OAAO,IAAI,IAAI;IAOf,uCAAuC;IACvC,MAAM,IAAI,IAAI;IAId,GAAG,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAOpC,gBAAgB,IAAI,OAAO;IAK3B,cAAc,IAAI,WAAW,GAAG,SAAS;IAOzC,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI;IAI/C,eAAe,CAAC,KAAK,EAAE,qBAAqB;IAI5C,cAAc,CACZ,OAAO,EAAE,cAAc,EACvB,EAAC,aAAa,EAAE,cAAc,EAAE,aAAa,EAAC,EAAE,qBAAqB,GACpE,cAAc;IA8BjB,2BAA2B,IAAI,IAAI;CAOpC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
// luma.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import { getPassthroughFS } from '@luma.gl/shadertools';
|
|
5
4
|
import { Model } from "../model/model.js";
|
|
6
|
-
import {
|
|
5
|
+
import { getPassthroughFS } from '@luma.gl/shadertools';
|
|
7
6
|
const FS_OUTPUT_VARIABLE = 'transform_output';
|
|
8
7
|
/**
|
|
9
8
|
* Creates a pipeline for texture→texture transforms.
|
|
@@ -28,7 +27,7 @@ export class TextureTransform {
|
|
|
28
27
|
mipmapFilter: 'nearest'
|
|
29
28
|
});
|
|
30
29
|
this.model = new Model(this.device, {
|
|
31
|
-
id: props.id ||
|
|
30
|
+
id: props.id || 'texture-transform-model',
|
|
32
31
|
fs: props.fs ||
|
|
33
32
|
getPassthroughFS({
|
|
34
33
|
input: props.targetTextureVarying,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texture-transform.js","sourceRoot":"","sources":["../../src/compute/texture-transform.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"texture-transform.js","sourceRoot":"","sources":["../../src/compute/texture-transform.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EAAC,KAAK,EAAa,0BAAuB;AACjD,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AA2BtD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAE9C;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAClB,MAAM,CAAS;IACf,KAAK,CAAQ;IACb,OAAO,CAAU;IAE1B,YAAY,GAAG,CAAC,CAAC;IACjB,iBAAiB,GAA+B,IAAI,CAAC;IACrD,QAAQ,GAAqB,EAAE,CAAC,CAAC,2EAA2E;IAC5G,SAAS,GAAwB,EAAE,CAAC,CAAC,0BAA0B;IAE/D,YAAY,MAAc,EAAE,KAA4B;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,sCAAsC;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;YAClC,YAAY,EAAE,eAAe;YAC7B,YAAY,EAAE,eAAe;YAC7B,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;YAClC,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,yBAAyB;YACzC,EAAE,EACA,KAAK,CAAC,EAAE;gBACR,gBAAgB,CAAC;oBACf,KAAK,EAAE,KAAK,CAAC,oBAAoB;oBACjC,aAAa,EAAE,KAAK,CAAC,qBAAqB;oBAC1C,MAAM,EAAE,kBAAkB;iBAC3B,CAAC;YACJ,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,4BAA4B;YAC5D,GAAG,KAAK;SACT,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,0BAA0B;IAC1B,OAAO;QACL,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM;QACJ,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,OAAyB;QAC3B,MAAM,EAAC,WAAW,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAC,WAAW,EAAE,GAAG,OAAO,EAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,UAAU,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,gBAAgB;QACd,MAAM,EAAC,aAAa,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,cAAc;QACZ,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1D,OAAO,gBAAgB,CAAC,WAAW,CAAC;IACtC,CAAC;IAED,UAAU;IAEV,WAAW,CAAC,KAA4B;QACtC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe,CAAC,KAA4B;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;IAClG,CAAC;IAED,cAAc,CACZ,OAAuB,EACvB,EAAC,aAAa,EAAE,cAAc,EAAE,aAAa,EAAwB;QAErE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG;gBACR,aAAa,EAAE,EAAE;gBACjB,cAAc,EAAE,EAAE;gBAClB,mBAAmB;gBACnB,aAAa,EAAE,IAAI;aACpB,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACpD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;YACtC,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,GAAG,aAAa,CAAC;YACtC,+DAA+D;YAC/D,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBAClD,EAAE,EAAE,uBAAuB;gBAC3B,KAAK;gBACL,MAAM;gBACN,gBAAgB,EAAE,CAAC,aAAa,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,uDAAuD;IACvD,2BAA2B;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,MAAM,EAAC,cAAc,EAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9C,CAAC;IACH,CAAC;CACF"}
|
package/dist/dist.dev.js
CHANGED
|
@@ -1016,138 +1016,59 @@ var __exports__ = (() => {
|
|
|
1016
1016
|
return device._lumaData.defaultPipelineFactory;
|
|
1017
1017
|
}
|
|
1018
1018
|
device;
|
|
1019
|
-
cachingEnabled;
|
|
1020
1019
|
destroyPolicy;
|
|
1021
|
-
debug;
|
|
1022
1020
|
_hashCounter = 0;
|
|
1023
1021
|
_hashes = {};
|
|
1024
1022
|
_renderPipelineCache = {};
|
|
1025
1023
|
_computePipelineCache = {};
|
|
1026
|
-
get [Symbol.toStringTag]() {
|
|
1027
|
-
return "PipelineFactory";
|
|
1028
|
-
}
|
|
1029
|
-
toString() {
|
|
1030
|
-
return `PipelineFactory(${this.device.id})`;
|
|
1031
|
-
}
|
|
1032
1024
|
constructor(device) {
|
|
1033
1025
|
this.device = device;
|
|
1034
|
-
this.
|
|
1035
|
-
this.destroyPolicy = device.props._cacheDestroyPolicy;
|
|
1036
|
-
this.debug = device.props.debugFactories;
|
|
1026
|
+
this.destroyPolicy = device.props._factoryDestroyPolicy;
|
|
1037
1027
|
}
|
|
1038
|
-
/** Return a RenderPipeline matching
|
|
1028
|
+
/** Return a RenderPipeline matching props. Reuses a similar pipeline if already created. */
|
|
1039
1029
|
createRenderPipeline(props) {
|
|
1040
|
-
if (!this.cachingEnabled) {
|
|
1041
|
-
return this.device.createRenderPipeline(props);
|
|
1042
|
-
}
|
|
1043
1030
|
const allProps = { ...import_core4.RenderPipeline.defaultProps, ...props };
|
|
1044
|
-
const cache = this._renderPipelineCache;
|
|
1045
1031
|
const hash = this._hashRenderPipeline(allProps);
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
pipeline = this.device.createRenderPipeline({
|
|
1032
|
+
if (!this._renderPipelineCache[hash]) {
|
|
1033
|
+
const pipeline = this.device.createRenderPipeline({
|
|
1049
1034
|
...allProps,
|
|
1050
|
-
id: allProps.id ? `${allProps.id}-cached` :
|
|
1035
|
+
id: allProps.id ? `${allProps.id}-cached` : void 0
|
|
1051
1036
|
});
|
|
1052
1037
|
pipeline.hash = hash;
|
|
1053
|
-
|
|
1054
|
-
if (this.debug) {
|
|
1055
|
-
import_core4.log.warn(`${this}: ${pipeline} created, count=${cache[hash].useCount}`)();
|
|
1056
|
-
}
|
|
1057
|
-
} else {
|
|
1058
|
-
cache[hash].useCount++;
|
|
1059
|
-
if (this.debug) {
|
|
1060
|
-
import_core4.log.warn(
|
|
1061
|
-
`${this}: ${cache[hash].pipeline} reused, count=${cache[hash].useCount}, (id=${props.id})`
|
|
1062
|
-
)();
|
|
1063
|
-
}
|
|
1038
|
+
this._renderPipelineCache[hash] = { pipeline, useCount: 0 };
|
|
1064
1039
|
}
|
|
1065
|
-
|
|
1040
|
+
this._renderPipelineCache[hash].useCount++;
|
|
1041
|
+
return this._renderPipelineCache[hash].pipeline;
|
|
1066
1042
|
}
|
|
1067
|
-
/** Return a ComputePipeline matching supplied props. Reuses an equivalent pipeline if already created. */
|
|
1068
1043
|
createComputePipeline(props) {
|
|
1069
|
-
if (!this.cachingEnabled) {
|
|
1070
|
-
return this.device.createComputePipeline(props);
|
|
1071
|
-
}
|
|
1072
1044
|
const allProps = { ...import_core4.ComputePipeline.defaultProps, ...props };
|
|
1073
|
-
const cache = this._computePipelineCache;
|
|
1074
1045
|
const hash = this._hashComputePipeline(allProps);
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
pipeline = this.device.createComputePipeline({
|
|
1046
|
+
if (!this._computePipelineCache[hash]) {
|
|
1047
|
+
const pipeline = this.device.createComputePipeline({
|
|
1078
1048
|
...allProps,
|
|
1079
1049
|
id: allProps.id ? `${allProps.id}-cached` : void 0
|
|
1080
1050
|
});
|
|
1081
1051
|
pipeline.hash = hash;
|
|
1082
|
-
|
|
1083
|
-
if (this.debug) {
|
|
1084
|
-
import_core4.log.warn(`${this}: ${pipeline} created, count=${cache[hash].useCount}`)();
|
|
1085
|
-
}
|
|
1086
|
-
} else {
|
|
1087
|
-
cache[hash].useCount++;
|
|
1088
|
-
if (this.debug) {
|
|
1089
|
-
import_core4.log.warn(
|
|
1090
|
-
`${this}: ${cache[hash].pipeline} reused, count=${cache[hash].useCount}, (id=${props.id})`
|
|
1091
|
-
)();
|
|
1092
|
-
}
|
|
1052
|
+
this._computePipelineCache[hash] = { pipeline, useCount: 0 };
|
|
1093
1053
|
}
|
|
1094
|
-
|
|
1054
|
+
this._computePipelineCache[hash].useCount++;
|
|
1055
|
+
return this._computePipelineCache[hash].pipeline;
|
|
1095
1056
|
}
|
|
1096
1057
|
release(pipeline) {
|
|
1097
|
-
if (!this.cachingEnabled) {
|
|
1098
|
-
pipeline.destroy();
|
|
1099
|
-
return;
|
|
1100
|
-
}
|
|
1101
|
-
const cache = this._getCache(pipeline);
|
|
1102
1058
|
const hash = pipeline.hash;
|
|
1059
|
+
const cache = pipeline instanceof import_core4.ComputePipeline ? this._computePipelineCache : this._renderPipelineCache;
|
|
1103
1060
|
cache[hash].useCount--;
|
|
1104
1061
|
if (cache[hash].useCount === 0) {
|
|
1105
|
-
this.
|
|
1106
|
-
|
|
1107
|
-
|
|
1062
|
+
if (this.destroyPolicy === "unused") {
|
|
1063
|
+
cache[hash].pipeline.destroy();
|
|
1064
|
+
delete cache[hash];
|
|
1108
1065
|
}
|
|
1109
|
-
} else if (cache[hash].useCount < 0) {
|
|
1110
|
-
import_core4.log.error(`${this}: ${pipeline} released, useCount < 0, resetting`)();
|
|
1111
|
-
cache[hash].useCount = 0;
|
|
1112
|
-
} else if (this.debug) {
|
|
1113
|
-
import_core4.log.warn(`${this}: ${pipeline} released, count=${cache[hash].useCount}`)();
|
|
1114
1066
|
}
|
|
1115
1067
|
}
|
|
1116
1068
|
// PRIVATE
|
|
1117
|
-
/** Destroy a cached pipeline, removing it from the cache (depending on destroy policy) */
|
|
1118
|
-
_destroyPipeline(pipeline) {
|
|
1119
|
-
const cache = this._getCache(pipeline);
|
|
1120
|
-
switch (this.destroyPolicy) {
|
|
1121
|
-
case "never":
|
|
1122
|
-
return false;
|
|
1123
|
-
case "unused":
|
|
1124
|
-
delete cache[pipeline.hash];
|
|
1125
|
-
pipeline.destroy();
|
|
1126
|
-
return true;
|
|
1127
|
-
}
|
|
1128
|
-
}
|
|
1129
|
-
/** Get the appropriate cache for the type of pipeline */
|
|
1130
|
-
_getCache(pipeline) {
|
|
1131
|
-
let cache;
|
|
1132
|
-
if (pipeline instanceof import_core4.ComputePipeline) {
|
|
1133
|
-
cache = this._computePipelineCache;
|
|
1134
|
-
}
|
|
1135
|
-
if (pipeline instanceof import_core4.RenderPipeline) {
|
|
1136
|
-
cache = this._renderPipelineCache;
|
|
1137
|
-
}
|
|
1138
|
-
if (!cache) {
|
|
1139
|
-
throw new Error(`${this}`);
|
|
1140
|
-
}
|
|
1141
|
-
if (!cache[pipeline.hash]) {
|
|
1142
|
-
throw new Error(`${this}: ${pipeline} matched incorrect entry`);
|
|
1143
|
-
}
|
|
1144
|
-
return cache;
|
|
1145
|
-
}
|
|
1146
|
-
/** Calculate a hash based on all the inputs for a compute pipeline */
|
|
1147
1069
|
_hashComputePipeline(props) {
|
|
1148
|
-
const { type } = this.device;
|
|
1149
1070
|
const shaderHash = this._getHash(props.shader.source);
|
|
1150
|
-
return `${
|
|
1071
|
+
return `${shaderHash}`;
|
|
1151
1072
|
}
|
|
1152
1073
|
/** Calculate a hash based on all the inputs for a render pipeline */
|
|
1153
1074
|
_hashRenderPipeline(props) {
|
|
@@ -1155,14 +1076,12 @@ var __exports__ = (() => {
|
|
|
1155
1076
|
const fsHash = props.fs ? this._getHash(props.fs.source) : 0;
|
|
1156
1077
|
const varyingHash = "-";
|
|
1157
1078
|
const bufferLayoutHash = this._getHash(JSON.stringify(props.bufferLayout));
|
|
1158
|
-
|
|
1159
|
-
switch (type) {
|
|
1079
|
+
switch (this.device.type) {
|
|
1160
1080
|
case "webgl":
|
|
1161
|
-
return `${
|
|
1162
|
-
case "webgpu":
|
|
1081
|
+
return `${vsHash}/${fsHash}V${varyingHash}BL${bufferLayoutHash}`;
|
|
1163
1082
|
default:
|
|
1164
1083
|
const parameterHash = this._getHash(JSON.stringify(props.parameters));
|
|
1165
|
-
return `${
|
|
1084
|
+
return `${vsHash}/${fsHash}V${varyingHash}T${props.topology}P${parameterHash}BL${bufferLayoutHash}`;
|
|
1166
1085
|
}
|
|
1167
1086
|
}
|
|
1168
1087
|
_getHash(key) {
|
|
@@ -1184,28 +1103,15 @@ var __exports__ = (() => {
|
|
|
1184
1103
|
return device._lumaData.defaultShaderFactory;
|
|
1185
1104
|
}
|
|
1186
1105
|
device;
|
|
1187
|
-
cachingEnabled;
|
|
1188
1106
|
destroyPolicy;
|
|
1189
|
-
debug;
|
|
1190
1107
|
_cache = {};
|
|
1191
|
-
get [Symbol.toStringTag]() {
|
|
1192
|
-
return "ShaderFactory";
|
|
1193
|
-
}
|
|
1194
|
-
toString() {
|
|
1195
|
-
return `${this[Symbol.toStringTag]}(${this.device.id})`;
|
|
1196
|
-
}
|
|
1197
1108
|
/** @internal */
|
|
1198
1109
|
constructor(device) {
|
|
1199
1110
|
this.device = device;
|
|
1200
|
-
this.
|
|
1201
|
-
this.destroyPolicy = device.props._cacheDestroyPolicy;
|
|
1202
|
-
this.debug = true;
|
|
1111
|
+
this.destroyPolicy = device.props._factoryDestroyPolicy;
|
|
1203
1112
|
}
|
|
1204
1113
|
/** Requests a {@link Shader} from the cache, creating a new Shader only if necessary. */
|
|
1205
1114
|
createShader(props) {
|
|
1206
|
-
if (!this.cachingEnabled) {
|
|
1207
|
-
return this.device.createShader(props);
|
|
1208
|
-
}
|
|
1209
1115
|
const key = this._hashShader(props);
|
|
1210
1116
|
let cacheEntry = this._cache[key];
|
|
1211
1117
|
if (!cacheEntry) {
|
|
@@ -1213,24 +1119,13 @@ var __exports__ = (() => {
|
|
|
1213
1119
|
...props,
|
|
1214
1120
|
id: props.id ? `${props.id}-cached` : void 0
|
|
1215
1121
|
});
|
|
1216
|
-
this._cache[key] = cacheEntry = { shader, useCount:
|
|
1217
|
-
if (this.debug) {
|
|
1218
|
-
import_core5.log.warn(`${this}: Created new shader ${shader.id}`)();
|
|
1219
|
-
}
|
|
1220
|
-
} else {
|
|
1221
|
-
cacheEntry.useCount++;
|
|
1222
|
-
if (this.debug) {
|
|
1223
|
-
import_core5.log.warn(`${this}: Reusing shader ${cacheEntry.shader.id} count=${cacheEntry.useCount}`)();
|
|
1224
|
-
}
|
|
1122
|
+
this._cache[key] = cacheEntry = { shader, useCount: 0 };
|
|
1225
1123
|
}
|
|
1124
|
+
cacheEntry.useCount++;
|
|
1226
1125
|
return cacheEntry.shader;
|
|
1227
1126
|
}
|
|
1228
1127
|
/** Releases a previously-requested {@link Shader}, destroying it if no users remain. */
|
|
1229
1128
|
release(shader) {
|
|
1230
|
-
if (!this.cachingEnabled) {
|
|
1231
|
-
shader.destroy();
|
|
1232
|
-
return;
|
|
1233
|
-
}
|
|
1234
1129
|
const key = this._hashShader(shader);
|
|
1235
1130
|
const cacheEntry = this._cache[key];
|
|
1236
1131
|
if (cacheEntry) {
|
|
@@ -1239,14 +1134,7 @@ var __exports__ = (() => {
|
|
|
1239
1134
|
if (this.destroyPolicy === "unused") {
|
|
1240
1135
|
delete this._cache[key];
|
|
1241
1136
|
cacheEntry.shader.destroy();
|
|
1242
|
-
if (this.debug) {
|
|
1243
|
-
import_core5.log.warn(`${this}: Releasing shader ${shader.id}, destroyed`)();
|
|
1244
|
-
}
|
|
1245
1137
|
}
|
|
1246
|
-
} else if (cacheEntry.useCount < 0) {
|
|
1247
|
-
throw new Error(`ShaderFactory: Shader ${shader.id} released too many times`);
|
|
1248
|
-
} else if (this.debug) {
|
|
1249
|
-
import_core5.log.warn(`${this}: Releasing shader ${shader.id} count=${cacheEntry.useCount}`)();
|
|
1250
1138
|
}
|
|
1251
1139
|
}
|
|
1252
1140
|
}
|
|
@@ -1739,8 +1627,7 @@ var __exports__ = (() => {
|
|
|
1739
1627
|
this.shaderFactory = props.shaderFactory || ShaderFactory.getDefaultShaderFactory(this.device);
|
|
1740
1628
|
this.pipeline = this._updatePipeline();
|
|
1741
1629
|
this.vertexArray = device.createVertexArray({
|
|
1742
|
-
|
|
1743
|
-
bufferLayout: this.pipeline.bufferLayout
|
|
1630
|
+
renderPipeline: this.pipeline
|
|
1744
1631
|
});
|
|
1745
1632
|
if (this._gpuGeometry) {
|
|
1746
1633
|
this._setGeometryAttributes(this._gpuGeometry);
|
|
@@ -1778,16 +1665,16 @@ var __exports__ = (() => {
|
|
|
1778
1665
|
Object.seal(this);
|
|
1779
1666
|
}
|
|
1780
1667
|
destroy() {
|
|
1781
|
-
if (
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
this._uniformStore.destroy();
|
|
1788
|
-
this._gpuGeometry?.destroy();
|
|
1789
|
-
this._destroyed = true;
|
|
1668
|
+
if (this._destroyed)
|
|
1669
|
+
return;
|
|
1670
|
+
this.pipelineFactory.release(this.pipeline);
|
|
1671
|
+
this.shaderFactory.release(this.pipeline.vs);
|
|
1672
|
+
if (this.pipeline.fs) {
|
|
1673
|
+
this.shaderFactory.release(this.pipeline.fs);
|
|
1790
1674
|
}
|
|
1675
|
+
this._uniformStore.destroy();
|
|
1676
|
+
this._gpuGeometry?.destroy();
|
|
1677
|
+
this._destroyed = true;
|
|
1791
1678
|
}
|
|
1792
1679
|
// Draw call
|
|
1793
1680
|
/** Query redraw status. Clears the status. */
|
|
@@ -1902,8 +1789,7 @@ var __exports__ = (() => {
|
|
|
1902
1789
|
this._setPipelineNeedsUpdate("bufferLayout");
|
|
1903
1790
|
this.pipeline = this._updatePipeline();
|
|
1904
1791
|
this.vertexArray = this.device.createVertexArray({
|
|
1905
|
-
|
|
1906
|
-
bufferLayout: this.pipeline.bufferLayout
|
|
1792
|
+
renderPipeline: this.pipeline
|
|
1907
1793
|
});
|
|
1908
1794
|
if (this._gpuGeometry) {
|
|
1909
1795
|
this._setGeometryAttributes(this._gpuGeometry);
|
|
@@ -2039,6 +1925,14 @@ var __exports__ = (() => {
|
|
|
2039
1925
|
this.setNeedsRedraw("constants");
|
|
2040
1926
|
}
|
|
2041
1927
|
// DEPRECATED METHODS
|
|
1928
|
+
/**
|
|
1929
|
+
* Sets individual uniforms
|
|
1930
|
+
* @deprecated WebGL only, use uniform buffers for portability
|
|
1931
|
+
* @param uniforms
|
|
1932
|
+
*/
|
|
1933
|
+
setUniforms(uniforms) {
|
|
1934
|
+
this.setUniformsWebGL(uniforms);
|
|
1935
|
+
}
|
|
2042
1936
|
/**
|
|
2043
1937
|
* Sets individual uniforms
|
|
2044
1938
|
* @deprecated WebGL only, use uniform buffers for portability
|
|
@@ -2395,7 +2289,7 @@ var __exports__ = (() => {
|
|
|
2395
2289
|
mipmapFilter: "nearest"
|
|
2396
2290
|
});
|
|
2397
2291
|
this.model = new Model(this.device, {
|
|
2398
|
-
id: props.id ||
|
|
2292
|
+
id: props.id || "texture-transform-model",
|
|
2399
2293
|
fs: props.fs || (0, import_shadertools4.getPassthroughFS)({
|
|
2400
2294
|
input: props.targetTextureVarying,
|
|
2401
2295
|
inputChannels: props.targetTextureChannels,
|
|
@@ -2592,19 +2486,19 @@ fn vertexMain(inputs: VertexInputs) -> FragmentInputs {
|
|
|
2592
2486
|
var CLIPSPACE_VERTEX_SHADER = (
|
|
2593
2487
|
/* glsl */
|
|
2594
2488
|
`#version 300 es
|
|
2595
|
-
in vec2
|
|
2596
|
-
in vec2
|
|
2597
|
-
in vec2
|
|
2489
|
+
in vec2 clipSpacePositions;
|
|
2490
|
+
in vec2 texCoords;
|
|
2491
|
+
in vec2 coordinates;
|
|
2598
2492
|
|
|
2599
2493
|
out vec2 position;
|
|
2600
2494
|
out vec2 coordinate;
|
|
2601
2495
|
out vec2 uv;
|
|
2602
2496
|
|
|
2603
2497
|
void main(void) {
|
|
2604
|
-
gl_Position = vec4(
|
|
2605
|
-
position =
|
|
2606
|
-
coordinate =
|
|
2607
|
-
uv =
|
|
2498
|
+
gl_Position = vec4(clipSpacePositions, 0., 1.);
|
|
2499
|
+
position = clipSpacePositions;
|
|
2500
|
+
coordinate = coordinates;
|
|
2501
|
+
uv = texCoords;
|
|
2608
2502
|
}
|
|
2609
2503
|
`
|
|
2610
2504
|
);
|
|
@@ -2625,9 +2519,9 @@ ${props.source}` };
|
|
|
2625
2519
|
topology: "triangle-strip",
|
|
2626
2520
|
vertexCount: 4,
|
|
2627
2521
|
attributes: {
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2522
|
+
clipSpacePositions: { size: 2, value: new Float32Array(POSITIONS) },
|
|
2523
|
+
texCoords: { size: 2, value: new Float32Array(TEX_COORDS) },
|
|
2524
|
+
coordinates: { size: 2, value: new Float32Array(TEX_COORDS) }
|
|
2631
2525
|
}
|
|
2632
2526
|
})
|
|
2633
2527
|
});
|