@zephyr3d/scene 0.1.2 → 0.2.0
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/asset/assetmanager.js +124 -67
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/builtin.js +2 -2
- package/dist/asset/loaders/gltf/gltf_loader.js +105 -59
- package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
- package/dist/asset/loaders/hdr/hdr.js +1 -1
- package/dist/blitter/blitter.js +0 -1
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/blitter/depthlimitedgaussion.js +0 -1
- package/dist/blitter/depthlimitedgaussion.js.map +1 -1
- package/dist/blitter/gaussianblur.js +0 -1
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/camera.js +10 -8
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/orbit.js +24 -7
- package/dist/camera/orbit.js.map +1 -1
- package/dist/index.d.ts +1842 -2484
- package/dist/index.js +21 -10
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +47 -57
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/grassmat.js +127 -0
- package/dist/material/grassmat.js.map +1 -0
- package/dist/material/grassmaterial.js +66 -194
- package/dist/material/grassmaterial.js.map +1 -1
- package/dist/material/lambert.js +48 -22
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/lightmodel.js +4 -4
- package/dist/material/material.js +100 -59
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +227 -186
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +29 -100
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/foliage.js +47 -0
- package/dist/material/mixins/foliage.js.map +1 -0
- package/dist/material/mixins/ggxlut.js +213 -0
- package/dist/material/mixins/ggxlut.js.map +1 -0
- package/dist/material/mixins/lightmodel/blinnphong.js +89 -0
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -0
- package/dist/material/mixins/lightmodel/lambert.js +58 -0
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -0
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +132 -0
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -0
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +105 -0
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -0
- package/dist/material/mixins/lit.js +464 -0
- package/dist/material/mixins/lit.js.map +1 -0
- package/dist/material/mixins/pbr/common.js +451 -0
- package/dist/material/mixins/pbr/common.js.map +1 -0
- package/dist/material/mixins/pbr/metallicroughness.js +126 -0
- package/dist/material/mixins/pbr/metallicroughness.js.map +1 -0
- package/dist/material/mixins/pbr/specularglossness.js +104 -0
- package/dist/material/mixins/pbr/specularglossness.js.map +1 -0
- package/dist/material/mixins/texture.js +157 -0
- package/dist/material/mixins/texture.js.map +1 -0
- package/dist/material/mixins/vertexcolor.js +16 -11
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/pbrmr.js +65 -0
- package/dist/material/pbrmr.js.map +1 -0
- package/dist/material/pbrsg.js +64 -0
- package/dist/material/pbrsg.js.map +1 -0
- package/dist/material/shader/helper.js +903 -0
- package/dist/material/shader/helper.js.map +1 -0
- package/dist/material/terrainmat.js +357 -0
- package/dist/material/terrainmat.js.map +1 -0
- package/dist/material/terrainmaterial.js +311 -103
- package/dist/material/terrainmaterial.js.map +1 -1
- package/dist/material/unlit.js +12 -9
- package/dist/material/unlit.js.map +1 -1
- package/dist/posteffect/bloom.js +8 -6
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js +14 -6
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/posteffect.js +1 -1
- package/dist/posteffect/sao.js +8 -5
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/tonemap.js +2 -2
- package/dist/posteffect/water.js +10 -8
- package/dist/posteffect/water.js.map +1 -1
- package/dist/render/cluster_light.js +6 -5
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/depthpass.js +46 -0
- package/dist/render/depthpass.js.map +1 -0
- package/dist/render/envlight.js +26 -24
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fullscreenquad.js +38 -0
- package/dist/render/fullscreenquad.js.map +1 -0
- package/dist/render/lightpass.js +98 -0
- package/dist/render/lightpass.js.map +1 -0
- package/dist/render/render_queue.js +2 -1
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +191 -0
- package/dist/render/renderer.js.map +1 -0
- package/dist/render/renderpass.js +10 -8
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/shadowmap_pass.js +3 -4
- package/dist/render/shadowmap_pass.js.map +1 -1
- package/dist/render/sky.js +31 -15
- package/dist/render/sky.js.map +1 -1
- package/dist/scene/environment.js +8 -6
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/graph_node.js +3 -0
- package/dist/scene/graph_node.js.map +1 -1
- package/dist/scene/mesh.js +13 -12
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/scene.js +11 -15
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +10 -16
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain/grass.js +4 -14
- package/dist/scene/terrain/grass.js.map +1 -1
- package/dist/scene/terrain/patch.js +3 -3
- package/dist/scene/terrain/terrain.js +4 -9
- package/dist/scene/terrain/terrain.js.map +1 -1
- package/dist/shaders/framework.js +17 -3
- package/dist/shaders/framework.js.map +1 -1
- package/dist/shaders/misc.js +13 -161
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js +7 -7
- package/dist/shaders/pbr.js +1 -82
- package/dist/shaders/pbr.js.map +1 -1
- package/dist/shaders/shadow.js +33 -31
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/water.js +3 -9
- package/dist/shaders/water.js.map +1 -1
- package/dist/shadow/esm.js +11 -9
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +15 -15
- package/dist/shadow/pcf_pd.js +15 -15
- package/dist/shadow/shadowmapper.js +13 -15
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +21 -55
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +15 -13
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/torus.js +2 -2
- package/dist/utility/bounding_volume.js +27 -27
- package/dist/utility/pmrem.js +4 -4
- package/dist/utility/sheenlut.js +196 -0
- package/dist/utility/sheenlut.js.map +1 -0
- package/dist/utility/shprojection.js +0 -1
- package/dist/utility/shprojection.js.map +1 -1
- package/dist/values.js +11 -8
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
|
@@ -14,7 +14,6 @@ import { ScaleTrack } from '../animation/scaletrack.js';
|
|
|
14
14
|
import { Skeleton } from '../animation/skeleton.js';
|
|
15
15
|
import { BoundingBox } from '../utility/bounding_volume.js';
|
|
16
16
|
import { Application } from '../app.js';
|
|
17
|
-
import '../shaders/framework.js';
|
|
18
17
|
import '@zephyr3d/device';
|
|
19
18
|
import { CopyBlitter } from '../blitter/copy.js';
|
|
20
19
|
import { getSheenLutLoader, getTestCubemapLoader } from './builtin.js';
|
|
@@ -22,9 +21,9 @@ import { GraphNode } from '../scene/graph_node.js';
|
|
|
22
21
|
import { BUILTIN_ASSET_TEXTURE_SHEEN_LUT, BUILTIN_ASSET_TEST_CUBEMAP } from '../values.js';
|
|
23
22
|
import { TGALoader } from './loaders/image/tga_Loader.js';
|
|
24
23
|
|
|
25
|
-
/**
|
|
26
|
-
* The asset manager
|
|
27
|
-
* @public
|
|
24
|
+
/**
|
|
25
|
+
* The asset manager
|
|
26
|
+
* @public
|
|
28
27
|
*/ class AssetManager {
|
|
29
28
|
/** @internal */ static _builtinTextures = {};
|
|
30
29
|
/** @internal */ static _builtinTextureLoaders = {
|
|
@@ -38,8 +37,8 @@ import { TGALoader } from './loaders/image/tga_Loader.js';
|
|
|
38
37
|
/** @internal */ _models;
|
|
39
38
|
/** @internal */ _binaryDatas;
|
|
40
39
|
/** @internal */ _textDatas;
|
|
41
|
-
/**
|
|
42
|
-
* Creates an instance of AssetManager
|
|
40
|
+
/**
|
|
41
|
+
* Creates an instance of AssetManager
|
|
43
42
|
*/ constructor(){
|
|
44
43
|
this._httpRequest = new HttpRequest();
|
|
45
44
|
this._textureLoaders = [
|
|
@@ -56,72 +55,99 @@ import { TGALoader } from './loaders/image/tga_Loader.js';
|
|
|
56
55
|
this._binaryDatas = {};
|
|
57
56
|
this._textDatas = {};
|
|
58
57
|
}
|
|
59
|
-
/**
|
|
60
|
-
* HttpRequest instance of the asset manager
|
|
58
|
+
/**
|
|
59
|
+
* HttpRequest instance of the asset manager
|
|
61
60
|
*/ get httpRequest() {
|
|
62
61
|
return this._httpRequest;
|
|
63
62
|
}
|
|
64
|
-
/**
|
|
65
|
-
* Removes all cached assets
|
|
63
|
+
/**
|
|
64
|
+
* Removes all cached assets
|
|
66
65
|
*/ clearCache() {
|
|
67
66
|
this._textures = {};
|
|
68
67
|
this._models = {};
|
|
69
68
|
this._binaryDatas = {};
|
|
70
69
|
this._textDatas = {};
|
|
71
70
|
}
|
|
72
|
-
/**
|
|
73
|
-
*
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Remove and dispose all cached assets
|
|
73
|
+
*/ purgeCache() {
|
|
74
|
+
for(const k in this._textures){
|
|
75
|
+
this._textures[k].then((tex)=>tex?.dispose()).catch((err)=>{});
|
|
76
|
+
delete this._textures[k];
|
|
77
|
+
}
|
|
78
|
+
this._models = {};
|
|
79
|
+
this._binaryDatas = {};
|
|
80
|
+
this._textDatas = {};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Adds a texture loader to the asset manager
|
|
84
|
+
*
|
|
85
|
+
* @remarks
|
|
86
|
+
* TODO: this should be a static method
|
|
87
|
+
*
|
|
88
|
+
* @param loader - The texture loader to be added
|
|
79
89
|
*/ addTextureLoader(loader) {
|
|
80
90
|
if (loader) {
|
|
81
91
|
this._textureLoaders.unshift(loader);
|
|
82
92
|
}
|
|
83
93
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Adds a model loader to the asset manager
|
|
86
|
-
*
|
|
87
|
-
* @remarks
|
|
88
|
-
* TODO: this should be a static method
|
|
89
|
-
*
|
|
90
|
-
* @param loader - The model loader to be added
|
|
94
|
+
/**
|
|
95
|
+
* Adds a model loader to the asset manager
|
|
96
|
+
*
|
|
97
|
+
* @remarks
|
|
98
|
+
* TODO: this should be a static method
|
|
99
|
+
*
|
|
100
|
+
* @param loader - The model loader to be added
|
|
91
101
|
*/ addModelLoader(loader) {
|
|
92
102
|
if (loader) {
|
|
93
103
|
this._modelLoaders.unshift(loader);
|
|
94
104
|
}
|
|
95
105
|
}
|
|
96
|
-
/**
|
|
97
|
-
* Fetches a text resource from a given URL
|
|
98
|
-
* @param url - The URL from where to fetch the resource
|
|
99
|
-
* @
|
|
100
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Fetches a text resource from a given URL
|
|
108
|
+
* @param url - The URL from where to fetch the resource
|
|
109
|
+
* @param postProcess - A function that will be involved when the text data was loaded.
|
|
110
|
+
*
|
|
111
|
+
* @remarks
|
|
112
|
+
* If a text data has already been loaded, the function will ignore the
|
|
113
|
+
* postProcess parameter and directly return the text loaded previously.
|
|
114
|
+
* To load the same text with different postProcess parameters,
|
|
115
|
+
* use different AssetManager instances separately.
|
|
116
|
+
*
|
|
117
|
+
* @returns The fetched text
|
|
118
|
+
*/ async fetchTextData(url, postProcess) {
|
|
101
119
|
let P = this._textDatas[url];
|
|
102
120
|
if (!P) {
|
|
103
|
-
P = this.loadTextData(url);
|
|
121
|
+
P = this.loadTextData(url, postProcess);
|
|
104
122
|
this._textDatas[url] = P;
|
|
105
123
|
}
|
|
106
124
|
return P;
|
|
107
125
|
}
|
|
108
|
-
/**
|
|
109
|
-
* Fetches a binary resource from a given URL
|
|
110
|
-
* @param url - The URL from where to fetch the resource
|
|
111
|
-
* @
|
|
112
|
-
|
|
126
|
+
/**
|
|
127
|
+
* Fetches a binary resource from a given URL
|
|
128
|
+
* @param url - The URL from where to fetch the resource
|
|
129
|
+
* @param postProcess - A function that will be involved when the binary data was loaded.
|
|
130
|
+
*
|
|
131
|
+
* @remarks
|
|
132
|
+
* If a binary data has already been loaded, the function will ignore the
|
|
133
|
+
* postProcess parameter and directly return the data loaded previously.
|
|
134
|
+
* To load the same data with different postProcess parameters,
|
|
135
|
+
* use different AssetManager instances separately.
|
|
136
|
+
*
|
|
137
|
+
* @returns Binary data as ArrayBuffer
|
|
138
|
+
*/ async fetchBinaryData(url, postProcess) {
|
|
113
139
|
let P = this._binaryDatas[url];
|
|
114
140
|
if (!P) {
|
|
115
|
-
P = this.loadBinaryData(url);
|
|
141
|
+
P = this.loadBinaryData(url, postProcess);
|
|
116
142
|
this._binaryDatas[url] = P;
|
|
117
143
|
}
|
|
118
144
|
return P;
|
|
119
145
|
}
|
|
120
|
-
/**
|
|
121
|
-
* Fetches a texture resource from a given URL
|
|
122
|
-
* @param url - The URL from where to fetch the resource
|
|
123
|
-
* @param options - Options for texture fetching
|
|
124
|
-
* @returns The fetched texture
|
|
146
|
+
/**
|
|
147
|
+
* Fetches a texture resource from a given URL
|
|
148
|
+
* @param url - The URL from where to fetch the resource
|
|
149
|
+
* @param options - Options for texture fetching
|
|
150
|
+
* @returns The fetched texture
|
|
125
151
|
*/ async fetchTexture(url, options) {
|
|
126
152
|
if (options?.texture) {
|
|
127
153
|
return this.loadTexture(url, options.mimeType ?? null, !options.linearColorSpace, options.samplerOptions, options.texture);
|
|
@@ -141,29 +167,53 @@ import { TGALoader } from './loaders/image/tga_Loader.js';
|
|
|
141
167
|
return P;
|
|
142
168
|
}
|
|
143
169
|
}
|
|
144
|
-
/** @internal */ async fetchModelData(scene, url, mimeType) {
|
|
170
|
+
/** @internal */ async fetchModelData(scene, url, mimeType, postProcess) {
|
|
145
171
|
let P = this._models[url];
|
|
146
172
|
if (!P) {
|
|
147
|
-
P = this.loadModel(url, mimeType);
|
|
173
|
+
P = this.loadModel(url, mimeType, postProcess);
|
|
148
174
|
this._models[url] = P;
|
|
149
175
|
}
|
|
150
176
|
return P;
|
|
151
177
|
}
|
|
152
|
-
/**
|
|
153
|
-
* Fetches a model resource from a given URL and adds it to a scene
|
|
154
|
-
* @param scene - The scene to which the model node belongs
|
|
155
|
-
* @param url - The URL from where to fetch the resource
|
|
156
|
-
* @param mimeType - The MIME type of the model resource
|
|
157
|
-
* @
|
|
158
|
-
|
|
159
|
-
|
|
178
|
+
/**
|
|
179
|
+
* Fetches a model resource from a given URL and adds it to a scene
|
|
180
|
+
* @param scene - The scene to which the model node belongs
|
|
181
|
+
* @param url - The URL from where to fetch the resource
|
|
182
|
+
* @param mimeType - The MIME type of the model resource, if not provided, model type will be determined by file extension
|
|
183
|
+
* @param postProcess - A function that will be involved when the model was loaded.
|
|
184
|
+
*
|
|
185
|
+
* @remarks
|
|
186
|
+
* If a model has already been loaded, the function will ignore the
|
|
187
|
+
* postProcess parameter and directly return the model loaded previously.
|
|
188
|
+
* To load the same model with different postProcess parameters,
|
|
189
|
+
* use different AssetManager instances separately.
|
|
190
|
+
*
|
|
191
|
+
* @returns The created model node
|
|
192
|
+
*/ async fetchModel(scene, url, mimeType, postProcess) {
|
|
193
|
+
const sharedModel = await this.fetchModelData(scene, url, mimeType, postProcess);
|
|
160
194
|
return this.createSceneNode(scene, sharedModel);
|
|
161
195
|
}
|
|
162
|
-
/** @internal */ async loadTextData(url) {
|
|
163
|
-
|
|
196
|
+
/** @internal */ async loadTextData(url, postProcess) {
|
|
197
|
+
let text = await this._httpRequest.requestText(url);
|
|
198
|
+
if (postProcess) {
|
|
199
|
+
try {
|
|
200
|
+
text = postProcess(text);
|
|
201
|
+
} catch (err) {
|
|
202
|
+
throw new Error(`Load text data post process failed: ${err}`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return text;
|
|
164
206
|
}
|
|
165
|
-
/** @internal */ async loadBinaryData(url) {
|
|
166
|
-
|
|
207
|
+
/** @internal */ async loadBinaryData(url, postProcess) {
|
|
208
|
+
let data = await this._httpRequest.requestArrayBuffer(url);
|
|
209
|
+
if (postProcess) {
|
|
210
|
+
try {
|
|
211
|
+
data = postProcess(data);
|
|
212
|
+
} catch (err) {
|
|
213
|
+
throw new Error(`Load binary data post process failed: ${err}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return data;
|
|
167
217
|
}
|
|
168
218
|
/** @internal */ async loadTexture(url, mimeType, srgb, samplerOptions, texture) {
|
|
169
219
|
const data = await this._httpRequest.requestArrayBuffer(url);
|
|
@@ -254,7 +304,7 @@ import { TGALoader } from './loaders/image/tga_Loader.js';
|
|
|
254
304
|
return tex;
|
|
255
305
|
}
|
|
256
306
|
}
|
|
257
|
-
/** @internal */ async loadModel(url, mimeType,
|
|
307
|
+
/** @internal */ async loadModel(url, mimeType, postProcess) {
|
|
258
308
|
const data = await this.httpRequest.requestBlob(url);
|
|
259
309
|
const filename = new URL(url, new URL(location.href).origin).pathname.split('/').filter((val)=>!!val).slice(-1)[0];
|
|
260
310
|
const p = filename ? filename.lastIndexOf('.') : -1;
|
|
@@ -263,19 +313,26 @@ import { TGALoader } from './loaders/image/tga_Loader.js';
|
|
|
263
313
|
if (!loader.supportExtension(ext) && !loader.supportMIMEType(mimeType || data.type)) {
|
|
264
314
|
continue;
|
|
265
315
|
}
|
|
266
|
-
|
|
316
|
+
let model = await loader.load(this, url, mimeType || data.type, data);
|
|
267
317
|
if (!model) {
|
|
268
318
|
throw new Error(`Load asset failed: ${url}`);
|
|
269
319
|
}
|
|
270
|
-
|
|
320
|
+
if (postProcess) {
|
|
321
|
+
try {
|
|
322
|
+
model = postProcess(model);
|
|
323
|
+
} catch (err) {
|
|
324
|
+
throw new Error(`Model loader post process failed: ${err}`);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
model.name = filename;
|
|
271
328
|
return model;
|
|
272
329
|
}
|
|
273
330
|
throw new Error(`Can not find loader for asset ${url}`);
|
|
274
331
|
}
|
|
275
|
-
/**
|
|
276
|
-
* Fetches a built-in texture
|
|
277
|
-
* @param name - Name of the built-in texture
|
|
278
|
-
* @returns The built-in texture
|
|
332
|
+
/**
|
|
333
|
+
* Fetches a built-in texture
|
|
334
|
+
* @param name - Name of the built-in texture
|
|
335
|
+
* @returns The built-in texture
|
|
279
336
|
*/ async fetchBuiltinTexture(name, texture) {
|
|
280
337
|
const loader = AssetManager._builtinTextureLoaders[name];
|
|
281
338
|
if (!loader) {
|
|
@@ -323,7 +380,7 @@ import { TGALoader } from './loaders/image/tga_Loader.js';
|
|
|
323
380
|
} else if (track.type === 'rotation') {
|
|
324
381
|
animation.addTrack(nodeMap.get(track.node), new RotationTrack(track.interpolator));
|
|
325
382
|
} else {
|
|
326
|
-
|
|
383
|
+
console.error(`Invalid animation track type: ${track.type}`);
|
|
327
384
|
}
|
|
328
385
|
}
|
|
329
386
|
for (const sk of animationData.skeletons){
|
|
@@ -346,10 +403,10 @@ import { TGALoader } from './loaders/image/tga_Loader.js';
|
|
|
346
403
|
animationSet
|
|
347
404
|
};
|
|
348
405
|
}
|
|
349
|
-
/**
|
|
350
|
-
* Sets the loader for a given builtin-texture
|
|
351
|
-
* @param name - Name of the builtin texture
|
|
352
|
-
* @param loader - Loader for the builtin texture
|
|
406
|
+
/**
|
|
407
|
+
* Sets the loader for a given builtin-texture
|
|
408
|
+
* @param name - Name of the builtin texture
|
|
409
|
+
* @param loader - Loader for the builtin texture
|
|
353
410
|
*/ static setBuiltinTextureLoader(name, loader) {
|
|
354
411
|
if (loader) {
|
|
355
412
|
this._builtinTextureLoaders[name] = loader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetmanager.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"assetmanager.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/asset/builtin.js
CHANGED
|
@@ -349,12 +349,12 @@ interface MicrofacetDistributionSample {
|
|
|
349
349
|
const image = new Uint16Array(textureSize * textureSize * 4);
|
|
350
350
|
let p = 0;
|
|
351
351
|
const one = encodeF16(1);
|
|
352
|
-
for(let y =
|
|
352
|
+
for(let y = textureSize - 1; y >= 0; y--){
|
|
353
353
|
const coord = Math.min(Math.max((y + 0.5) / textureSize, 0), 1);
|
|
354
354
|
const roughness = coord * coord;
|
|
355
355
|
for(let x = 0; x < textureSize; x++){
|
|
356
356
|
const NdotV = Math.min(Math.max((x + 0.5) / textureSize, 0), 1);
|
|
357
|
-
const c = dfvCharlieUniform(NdotV, roughness,
|
|
357
|
+
const c = dfvCharlieUniform(NdotV, roughness, 512);
|
|
358
358
|
const f16 = encodeF16(c);
|
|
359
359
|
image[p++] = 0;
|
|
360
360
|
image[p++] = 0;
|
|
@@ -2,16 +2,17 @@ import { Matrix4x4, Vector3, Quaternion, Interpolator, Vector4 } from '@zephyr3d
|
|
|
2
2
|
import { AssetScene, AssetSkeleton, SharedModel } from '../../model.js';
|
|
3
3
|
import { BoundingBox } from '../../../utility/bounding_volume.js';
|
|
4
4
|
import { Primitive } from '../../../render/primitive.js';
|
|
5
|
-
import '../../../material/
|
|
6
|
-
import '@zephyr3d/device';
|
|
7
|
-
import '../../../shaders/framework.js';
|
|
8
|
-
import { Application } from '../../../app.js';
|
|
9
|
-
import '../../../render/scatteringlut.js';
|
|
5
|
+
import '../../../material/shader/helper.js';
|
|
10
6
|
import '../../../material/lambert.js';
|
|
11
7
|
import '../../../material/blinn.js';
|
|
12
8
|
import { UnlitMaterial } from '../../../material/unlit.js';
|
|
13
|
-
import
|
|
14
|
-
import '../../../material/
|
|
9
|
+
import '../../../material/material.js';
|
|
10
|
+
import '../../../material/meshmaterial.js';
|
|
11
|
+
import '../../../material/grassmaterial.js';
|
|
12
|
+
import '../../../material/terrainmaterial.js';
|
|
13
|
+
import { PBRMetallicRoughnessMaterial } from '../../../material/pbrmr.js';
|
|
14
|
+
import { PBRSpecularGlossinessMaterial } from '../../../material/pbrsg.js';
|
|
15
|
+
import { Application } from '../../../app.js';
|
|
15
16
|
import { GLTFAccessor, ComponentType } from './helpers.js';
|
|
16
17
|
import { AbstractModelLoader } from '../loader.js';
|
|
17
18
|
|
|
@@ -379,13 +380,13 @@ import { AbstractModelLoader } from '../loader.js';
|
|
|
379
380
|
async _createMaterial(assetManager, assetMaterial) {
|
|
380
381
|
if (assetMaterial.type === 'unlit') {
|
|
381
382
|
const unlitAssetMaterial = assetMaterial;
|
|
382
|
-
const unlitMaterial = new UnlitMaterial; //new NewLambertMaterial();// new TestLitMaterial();// new UnlitMaterial();
|
|
383
|
+
const unlitMaterial = new UnlitMaterial(); //new NewLambertMaterial();// new TestLitMaterial();// new UnlitMaterial();
|
|
383
384
|
unlitMaterial.albedoColor = unlitAssetMaterial.diffuse ?? Vector4.one();
|
|
384
385
|
if (unlitAssetMaterial.diffuseMap) {
|
|
385
386
|
unlitMaterial.albedoTexture = unlitAssetMaterial.diffuseMap.texture;
|
|
386
387
|
unlitMaterial.albedoTextureSampler = unlitAssetMaterial.diffuseMap.sampler;
|
|
387
388
|
unlitMaterial.albedoTexCoordIndex = unlitAssetMaterial.diffuseMap.texCoord;
|
|
388
|
-
unlitMaterial.
|
|
389
|
+
unlitMaterial.albedoTexCoordMatrix = unlitAssetMaterial.diffuseMap.transform;
|
|
389
390
|
}
|
|
390
391
|
unlitMaterial.vertexColor = unlitAssetMaterial.common.vertexColor;
|
|
391
392
|
if (assetMaterial.common.alphaMode === 'blend') {
|
|
@@ -401,33 +402,48 @@ import { AbstractModelLoader } from '../loader.js';
|
|
|
401
402
|
} else if (assetMaterial.type === 'pbrSpecularGlossiness') {
|
|
402
403
|
const assetPBRMaterial = assetMaterial;
|
|
403
404
|
const pbrMaterial = new PBRSpecularGlossinessMaterial();
|
|
404
|
-
pbrMaterial.
|
|
405
|
-
pbrMaterial.
|
|
406
|
-
pbrMaterial.
|
|
407
|
-
pbrMaterial.
|
|
405
|
+
pbrMaterial.ior = assetPBRMaterial.ior;
|
|
406
|
+
pbrMaterial.albedoColor = assetPBRMaterial.diffuse;
|
|
407
|
+
pbrMaterial.specularFactor = new Vector4(assetPBRMaterial.specular.x, assetPBRMaterial.specular.y, assetPBRMaterial.specular.z, 1);
|
|
408
|
+
pbrMaterial.glossinessFactor = assetPBRMaterial.glossness;
|
|
408
409
|
if (assetPBRMaterial.diffuseMap) {
|
|
409
|
-
pbrMaterial.
|
|
410
|
+
pbrMaterial.albedoTexture = assetPBRMaterial.diffuseMap.texture;
|
|
411
|
+
pbrMaterial.albedoTextureSampler = assetPBRMaterial.diffuseMap.sampler;
|
|
412
|
+
pbrMaterial.albedoTexCoordIndex = assetPBRMaterial.diffuseMap.texCoord;
|
|
413
|
+
pbrMaterial.albedoTexCoordMatrix = assetPBRMaterial.diffuseMap.transform;
|
|
410
414
|
}
|
|
411
415
|
if (assetPBRMaterial.common.normalMap) {
|
|
412
|
-
pbrMaterial.
|
|
416
|
+
pbrMaterial.normalTexture = assetPBRMaterial.common.normalMap.texture;
|
|
417
|
+
pbrMaterial.normalTextureSampler = assetPBRMaterial.common.normalMap.sampler;
|
|
418
|
+
pbrMaterial.normalTexCoordIndex = assetPBRMaterial.common.normalMap.texCoord;
|
|
419
|
+
pbrMaterial.normalTexCoordMatrix = assetPBRMaterial.common.normalMap.transform;
|
|
413
420
|
}
|
|
414
|
-
pbrMaterial.
|
|
421
|
+
pbrMaterial.normalScale = assetPBRMaterial.common.bumpScale;
|
|
415
422
|
if (assetPBRMaterial.common.emissiveMap) {
|
|
416
|
-
pbrMaterial.
|
|
423
|
+
pbrMaterial.emissiveTexture = assetPBRMaterial.common.emissiveMap.texture;
|
|
424
|
+
pbrMaterial.emissiveTextureSampler = assetPBRMaterial.common.emissiveMap.sampler;
|
|
425
|
+
pbrMaterial.emissiveTexCoordIndex = assetPBRMaterial.common.emissiveMap.texCoord;
|
|
426
|
+
pbrMaterial.emissiveTexCoordMatrix = assetPBRMaterial.common.emissiveMap.transform;
|
|
417
427
|
}
|
|
418
|
-
pbrMaterial.
|
|
419
|
-
pbrMaterial.
|
|
428
|
+
pbrMaterial.emissiveColor = assetPBRMaterial.common.emissiveColor;
|
|
429
|
+
pbrMaterial.emissiveStrength = assetPBRMaterial.common.emissiveStrength;
|
|
420
430
|
if (assetPBRMaterial.common.occlusionMap) {
|
|
421
|
-
pbrMaterial.
|
|
431
|
+
pbrMaterial.occlusionTexture = assetPBRMaterial.common.occlusionMap.texture;
|
|
432
|
+
pbrMaterial.occlusionTextureSampler = assetPBRMaterial.common.occlusionMap.sampler;
|
|
433
|
+
pbrMaterial.occlusionTexCoordIndex = assetPBRMaterial.common.occlusionMap.texCoord;
|
|
434
|
+
pbrMaterial.occlusionTexCoordMatrix = assetPBRMaterial.common.occlusionMap.transform;
|
|
422
435
|
}
|
|
423
|
-
pbrMaterial.
|
|
436
|
+
pbrMaterial.occlusionStrength = assetPBRMaterial.common.occlusionStrength;
|
|
424
437
|
if (assetPBRMaterial.specularGlossnessMap) {
|
|
425
|
-
pbrMaterial.
|
|
438
|
+
pbrMaterial.specularTexture = assetPBRMaterial.specularGlossnessMap.texture;
|
|
439
|
+
pbrMaterial.specularTextureSampler = assetPBRMaterial.specularGlossnessMap.sampler;
|
|
440
|
+
pbrMaterial.specularTexCoordIndex = assetPBRMaterial.specularGlossnessMap.texCoord;
|
|
441
|
+
pbrMaterial.specularTexCoordMatrix = assetPBRMaterial.specularGlossnessMap.transform;
|
|
426
442
|
}
|
|
427
443
|
pbrMaterial.vertexTangent = assetPBRMaterial.common.useTangent;
|
|
428
444
|
pbrMaterial.vertexColor = assetPBRMaterial.common.vertexColor;
|
|
429
445
|
if (assetPBRMaterial.common.alphaMode === 'blend') {
|
|
430
|
-
pbrMaterial.
|
|
446
|
+
pbrMaterial.blendMode = 'blend';
|
|
431
447
|
} else if (assetPBRMaterial.common.alphaMode === 'mask') {
|
|
432
448
|
pbrMaterial.alphaCutoff = assetPBRMaterial.common.alphaCutoff;
|
|
433
449
|
}
|
|
@@ -440,73 +456,103 @@ import { AbstractModelLoader } from '../loader.js';
|
|
|
440
456
|
} else if (assetMaterial.type === 'pbrMetallicRoughness') {
|
|
441
457
|
const assetPBRMaterial = assetMaterial;
|
|
442
458
|
const pbrMaterial = new PBRMetallicRoughnessMaterial();
|
|
443
|
-
pbrMaterial.
|
|
444
|
-
pbrMaterial.
|
|
445
|
-
pbrMaterial.
|
|
446
|
-
pbrMaterial.
|
|
459
|
+
pbrMaterial.ior = assetPBRMaterial.ior;
|
|
460
|
+
pbrMaterial.albedoColor = assetPBRMaterial.diffuse;
|
|
461
|
+
pbrMaterial.metallic = assetPBRMaterial.metallic;
|
|
462
|
+
pbrMaterial.roughness = assetPBRMaterial.roughness;
|
|
447
463
|
if (assetPBRMaterial.diffuseMap) {
|
|
448
|
-
pbrMaterial.
|
|
464
|
+
pbrMaterial.albedoTexture = assetPBRMaterial.diffuseMap.texture;
|
|
465
|
+
pbrMaterial.albedoTextureSampler = assetPBRMaterial.diffuseMap.sampler;
|
|
466
|
+
pbrMaterial.albedoTexCoordIndex = assetPBRMaterial.diffuseMap.texCoord;
|
|
467
|
+
pbrMaterial.albedoTexCoordMatrix = assetPBRMaterial.diffuseMap.transform;
|
|
449
468
|
}
|
|
450
469
|
if (assetPBRMaterial.common.normalMap) {
|
|
451
|
-
pbrMaterial.
|
|
470
|
+
pbrMaterial.normalTexture = assetPBRMaterial.common.normalMap.texture;
|
|
471
|
+
pbrMaterial.normalTextureSampler = assetPBRMaterial.common.normalMap.sampler;
|
|
472
|
+
pbrMaterial.normalTexCoordIndex = assetPBRMaterial.common.normalMap.texCoord;
|
|
473
|
+
pbrMaterial.normalTexCoordMatrix = assetPBRMaterial.common.normalMap.transform;
|
|
452
474
|
}
|
|
453
|
-
pbrMaterial.
|
|
475
|
+
pbrMaterial.normalScale = assetPBRMaterial.common.bumpScale;
|
|
454
476
|
if (assetPBRMaterial.common.emissiveMap) {
|
|
455
|
-
pbrMaterial.
|
|
477
|
+
pbrMaterial.emissiveTexture = assetPBRMaterial.common.emissiveMap.texture;
|
|
478
|
+
pbrMaterial.emissiveTextureSampler = assetPBRMaterial.common.emissiveMap.sampler;
|
|
479
|
+
pbrMaterial.emissiveTexCoordIndex = assetPBRMaterial.common.emissiveMap.texCoord;
|
|
480
|
+
pbrMaterial.emissiveTexCoordMatrix = assetPBRMaterial.common.emissiveMap.transform;
|
|
456
481
|
}
|
|
457
|
-
pbrMaterial.
|
|
458
|
-
pbrMaterial.
|
|
482
|
+
pbrMaterial.emissiveColor = assetPBRMaterial.common.emissiveColor;
|
|
483
|
+
pbrMaterial.emissiveStrength = assetPBRMaterial.common.emissiveStrength;
|
|
459
484
|
if (assetPBRMaterial.common.occlusionMap) {
|
|
460
|
-
pbrMaterial.
|
|
485
|
+
pbrMaterial.occlusionTexture = assetPBRMaterial.common.occlusionMap.texture;
|
|
486
|
+
pbrMaterial.occlusionTextureSampler = assetPBRMaterial.common.occlusionMap.sampler;
|
|
487
|
+
pbrMaterial.occlusionTexCoordIndex = assetPBRMaterial.common.occlusionMap.texCoord;
|
|
488
|
+
pbrMaterial.occlusionTexCoordMatrix = assetPBRMaterial.common.occlusionMap.transform;
|
|
489
|
+
pbrMaterial.occlusionStrength = assetPBRMaterial.common.occlusionStrength;
|
|
461
490
|
}
|
|
462
|
-
pbrMaterial.lightModel.occlusionStrength = assetPBRMaterial.common.occlusionStrength;
|
|
463
491
|
if (assetPBRMaterial.metallicMap) {
|
|
464
|
-
pbrMaterial.
|
|
492
|
+
pbrMaterial.metallicRoughnessTexture = assetPBRMaterial.metallicMap.texture;
|
|
493
|
+
pbrMaterial.metallicRoughnessTextureSampler = assetPBRMaterial.metallicMap.sampler;
|
|
494
|
+
pbrMaterial.metallicRoughnessTexCoordIndex = assetPBRMaterial.metallicMap.texCoord;
|
|
495
|
+
pbrMaterial.metallicRoughnessTexCoordMatrix = assetPBRMaterial.metallicMap.transform;
|
|
465
496
|
}
|
|
466
|
-
pbrMaterial.
|
|
467
|
-
pbrMaterial.lightModel.roughnessIndex = assetPBRMaterial.roughnessIndex;
|
|
468
|
-
pbrMaterial.lightModel.specularFactor = assetPBRMaterial.specularFactor;
|
|
497
|
+
pbrMaterial.specularFactor = assetPBRMaterial.specularFactor;
|
|
469
498
|
if (assetPBRMaterial.specularMap) {
|
|
470
|
-
pbrMaterial.
|
|
499
|
+
pbrMaterial.specularTexture = assetPBRMaterial.specularMap.texture;
|
|
500
|
+
pbrMaterial.specularTextureSampler = assetPBRMaterial.specularMap.sampler;
|
|
501
|
+
pbrMaterial.specularTexCoordIndex = assetPBRMaterial.specularMap.texCoord;
|
|
502
|
+
pbrMaterial.specularTexCoordMatrix = assetPBRMaterial.specularMap.transform;
|
|
471
503
|
}
|
|
472
504
|
if (assetPBRMaterial.specularColorMap) {
|
|
473
|
-
pbrMaterial.
|
|
505
|
+
pbrMaterial.specularColorTexture = assetPBRMaterial.specularColorMap.texture;
|
|
506
|
+
pbrMaterial.specularColorTextureSampler = assetPBRMaterial.specularColorMap.sampler;
|
|
507
|
+
pbrMaterial.specularColorTexCoordIndex = assetPBRMaterial.specularColorMap.texCoord;
|
|
508
|
+
pbrMaterial.specularColorTexCoordMatrix = assetPBRMaterial.specularColorMap.transform;
|
|
474
509
|
}
|
|
475
510
|
if (assetPBRMaterial.sheen) {
|
|
476
511
|
const sheen = assetPBRMaterial.sheen;
|
|
477
|
-
pbrMaterial.
|
|
478
|
-
pbrMaterial.
|
|
479
|
-
pbrMaterial.
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
pbrMaterial.lightModel.setSheenColorMap(sheen.sheenColorMap.texture, sheen.sheenColorMap.sampler, sheen.sheenColorMap.texCoord, sheen.sheenColorMap.transform);
|
|
512
|
+
pbrMaterial.sheen = true;
|
|
513
|
+
pbrMaterial.sheenColorFactor = sheen.sheenColorFactor;
|
|
514
|
+
pbrMaterial.sheenRoughnessFactor = sheen.sheenRoughnessFactor;
|
|
515
|
+
if (sheen.sheenColorMap) {
|
|
516
|
+
pbrMaterial.sheenColorTexture = sheen.sheenColorMap.texture;
|
|
517
|
+
pbrMaterial.sheenColorTextureSampler = sheen.sheenColorMap.sampler;
|
|
518
|
+
pbrMaterial.sheenColorTexCoordIndex = sheen.sheenColorMap.texCoord;
|
|
519
|
+
pbrMaterial.sheenColorTexCoordMatrix = sheen.sheenColorMap.transform;
|
|
486
520
|
}
|
|
487
521
|
if (sheen.sheenRoughnessMap) {
|
|
488
|
-
pbrMaterial.
|
|
522
|
+
pbrMaterial.sheenRoughnessTexture = sheen.sheenRoughnessMap.texture;
|
|
523
|
+
pbrMaterial.sheenRoughnessTextureSampler = sheen.sheenRoughnessMap.sampler;
|
|
524
|
+
pbrMaterial.sheenRoughnessTexCoordIndex = sheen.sheenRoughnessMap.texCoord;
|
|
525
|
+
pbrMaterial.sheenRoughnessTexCoordMatrix = sheen.sheenRoughnessMap.transform;
|
|
489
526
|
}
|
|
490
527
|
}
|
|
491
528
|
if (assetPBRMaterial.clearcoat) {
|
|
492
529
|
const cc = assetPBRMaterial.clearcoat;
|
|
493
|
-
pbrMaterial.
|
|
494
|
-
pbrMaterial.
|
|
495
|
-
pbrMaterial.
|
|
530
|
+
pbrMaterial.clearcoat = true;
|
|
531
|
+
pbrMaterial.clearcoatIntensity = cc.clearCoatFactor;
|
|
532
|
+
pbrMaterial.clearcoatRoughnessFactor = cc.clearCoatRoughnessFactor;
|
|
496
533
|
if (cc.clearCoatIntensityMap) {
|
|
497
|
-
pbrMaterial.
|
|
534
|
+
pbrMaterial.clearcoatIntensityTexture = cc.clearCoatIntensityMap.texture;
|
|
535
|
+
pbrMaterial.clearcoatIntensityTextureSampler = cc.clearCoatIntensityMap.sampler;
|
|
536
|
+
pbrMaterial.clearcoatIntensityTexCoordIndex = cc.clearCoatIntensityMap.texCoord;
|
|
537
|
+
pbrMaterial.clearcoatIntensityTexCoordMatrix = cc.clearCoatIntensityMap.transform;
|
|
498
538
|
}
|
|
499
539
|
if (cc.clearCoatRoughnessMap) {
|
|
500
|
-
pbrMaterial.
|
|
540
|
+
pbrMaterial.clearcoatRoughnessTexture = cc.clearCoatRoughnessMap.texture;
|
|
541
|
+
pbrMaterial.clearcoatRoughnessTextureSampler = cc.clearCoatRoughnessMap.sampler;
|
|
542
|
+
pbrMaterial.clearcoatRoughnessTexCoordIndex = cc.clearCoatRoughnessMap.texCoord;
|
|
543
|
+
pbrMaterial.clearcoatRoughnessTexCoordMatrix = cc.clearCoatRoughnessMap.transform;
|
|
501
544
|
}
|
|
502
545
|
if (cc.clearCoatNormalMap) {
|
|
503
|
-
pbrMaterial.
|
|
546
|
+
pbrMaterial.clearcoatNormalTexture = cc.clearCoatNormalMap.texture;
|
|
547
|
+
pbrMaterial.clearcoatNormalTextureSampler = cc.clearCoatNormalMap.sampler;
|
|
548
|
+
pbrMaterial.clearcoatNormalTexCoordIndex = cc.clearCoatNormalMap.texCoord;
|
|
549
|
+
pbrMaterial.clearcoatNormalTexCoordMatrix = cc.clearCoatNormalMap.transform;
|
|
504
550
|
}
|
|
505
551
|
}
|
|
506
552
|
pbrMaterial.vertexTangent = assetPBRMaterial.common.useTangent;
|
|
507
553
|
pbrMaterial.vertexColor = assetPBRMaterial.common.vertexColor;
|
|
508
554
|
if (assetPBRMaterial.common.alphaMode === 'blend') {
|
|
509
|
-
pbrMaterial.
|
|
555
|
+
pbrMaterial.blendMode = 'blend';
|
|
510
556
|
} else if (assetPBRMaterial.common.alphaMode === 'mask') {
|
|
511
557
|
pbrMaterial.alphaCutoff = assetPBRMaterial.common.alphaCutoff;
|
|
512
558
|
}
|
|
@@ -875,7 +921,7 @@ import { AbstractModelLoader } from '../loader.js';
|
|
|
875
921
|
const accessor = gltf._accessors[accessorIndex];
|
|
876
922
|
const componentCount = accessor.getComponentCount(accessor.type);
|
|
877
923
|
const normalized = !!accessor.normalized;
|
|
878
|
-
const hash = `${accessorIndex}:${
|
|
924
|
+
const hash = `${accessorIndex}:${semantic || ''}:${Number(normalized)}`;
|
|
879
925
|
let buffer = gltf._bufferCache[hash];
|
|
880
926
|
if (!buffer) {
|
|
881
927
|
let data = accessor.getNormalizedDeinterlacedView(gltf);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf_loader.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gltf_loader.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -126,7 +126,7 @@ const _f16one = floatToHalf(1);
|
|
|
126
126
|
for(let j = 0; j < height; j++){
|
|
127
127
|
const scanline = [];
|
|
128
128
|
let rgbe = d8.slice(pos, pos += 4);
|
|
129
|
-
const isNewRLE = rgbe[0] == 2 && rgbe[1] == 2 && rgbe[2] == (width >> 8 &
|
|
129
|
+
const isNewRLE = rgbe[0] == 2 && rgbe[1] == 2 && rgbe[2] == (width >> 8 & 0xff) && rgbe[3] == (width & 0xff);
|
|
130
130
|
if (isNewRLE && width >= 8 && width < 32768) {
|
|
131
131
|
for(let i = 0; i < 4; i++){
|
|
132
132
|
let ptr = i * width;
|
package/dist/blitter/blitter.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blitter.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"blitter.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depthlimitedgaussion.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"depthlimitedgaussion.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gaussianblur.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gaussianblur.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|