@damienmortini/three 0.1.183 → 0.1.185
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/LICENSE +4 -4
- package/copyExamples.js +17 -17
- package/ecs/THREEView.js +31 -31
- package/gpgpu/THREEGPGPUSystem.js +175 -175
- package/loader/THREELoader.js +117 -117
- package/loader/meshoptimizerdecoder/THREE.EXT_meshopt_compression.js +41 -41
- package/loader/meshoptimizerdecoder/meshopt_decoder.js +129 -129
- package/material/THREEBaseMaterial.js +75 -75
- package/material/THREEPBRMaterial.js +107 -107
- package/material/THREEShaderMaterial.js +97 -97
- package/object/THREELine.js +113 -113
- package/object/THREEMotionVectorObject.js +284 -284
- package/object/THREERibbon.js +49 -49
- package/object/THREESky.js +281 -281
- package/object/THREESprite.js +96 -96
- package/object/THREESpriteAnimation.js +103 -103
- package/object/THREEText.js +241 -241
- package/package.json +5 -6
- package/renderer/THREERenderer.js +123 -123
- package/renderer/THREEStereoRenderer.js +60 -60
- package/renderer/WebGLRenderTarget2D.js +63 -63
- package/shader/THREEBaseShader.js +33 -33
- package/types/index.d.ts +1 -1
- package/types/renderer/WebGLRenderTarget2D.d.ts +42 -42
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
// This file is part of meshoptimizer library and is distributed under the terms of MIT License.
|
|
2
|
-
// Copyright (C) 2016-2020, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
|
3
|
-
const MeshoptDecoder = (function () {
|
|
4
|
-
'use strict'
|
|
5
|
-
|
|
6
|
-
// Built with emcc (Emscripten gcc/clang-like replacement) 1.39.18 (a3beeb0d6c9825bd1757d03677e817d819949a77)
|
|
7
|
-
// Built from meshoptimizer 0.14
|
|
8
|
-
const wasm_base = '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pAK1BEHLCgBZCdWAEqREAKCIJALCa3QBpAK2BIC8cWAEqREAKCLJMRLCBAECFZlAECFr9zAfJHfREMGXAMCb9HIXALRVSFMAL1BBHKCgFZRNGaALCFJAKCa3QBpANCgBZAL1BFHKCgBZCOWqRNALCGJAKCa3QBpAL1BGHKCgBZCfWANqRNALCEJAKCa3QBpAL1BEHKCgBZCdWANqRNALCIJAKCa3QBpAL2BIC8cWANqRNALCLJMRVCBANCFZlANCFr9zAfJHfRNMGXAGCG6IXABATCFWJHLAQ87FBALAE87FGALAN87FISFMABATCGWJHLAQjGBALANjGNALAEjGIMAOCXlAcCEWJHLAQjGIALAEjGBAOAICGWJAQjGBAOCXlAcCFJCbZCEWJHLANjGBALAEjGIAOAICFJHICbZCGWJAEjGBAOCXlAcCGJCbZCEWJHEAQjGBAEANjGIAOAIAS9FASCb6qJHECbZCGWJANjGBAcCEJRcAEAM9FAMCb6qJMRIAmCFJRmAcCbZRcAICbZRIATCEJHTAF9JQBMMCBC99AVAt6yRcMAOCoFJ8kBAcM9SFGaCUS8oGBHFABCEJC98ZHGJRBGXAGCF9OCBABAFuyQBAB8/BCTW9LIXABTE9FQFMCUSABjGBAFbMCUNC8wjGBCaM/GGFGaABCUFJHFCaJCgF86BBABCgF86BBAFC9+JCgF86BBABCgF86BFAFC99JCgF86BBABCgF86BGAFC98JCgF86BBABCgF86BEABCBABlCEZHFJHBCajGBABCUFAFlC98ZHGJHFC98JCajGBGXAGCV9JQBABCajGNABCajGIAFC94JCajGBAFCWJCajGBAGC8Z9JQBABCajGiABCajGPABCajGTABCajGSAFC9wJCajGBAFC9sJCajGBAFC9oJCajGBAFC9kJCajGBAGABCIZCiqHGlHFCA9JQBABAGJRBEXABha83EiABha83ETABha83ENABha83EBABCAJRBAFC9gJHFC8f9LQBMMM/LSFba8jBCU/EBlHT8kBGaC9+AGCFJAI9LQBpCaAE2BBC+gF9HQBpATAEAIJHbAGlAGTFRMCUoBAG9uC/wgBZHICUGAICUG9JyRtAECFJRVGXEXASAF9PQFAtAFASlASAtJAF9JyRQGXGXAG9FIXAVRISFMAQCbJHEC9wZRmAECIrCEJCGrRYCBRfAVRcEXAbAclAY9JIXCBRVSEMAcAYJRICBRVCBREAmIXEXAbAIlCi9JQIAMCU/CBJAEJRNGXGXGXGXGXAcAECKrJ2BBAECErCKZrCEZCFlfEFGEBMANhB83EBANhB83ENSEMANAI2BIAI2BBHKCKrHLALCE6HLy86BBANAICIJALJHL2BBAKCIrCEZHOAOCE6HOy86BFANALAOJHL2BBAKCGrCEZHOAOCE6HOy86BGANALAOJHL2BBAKCEZHKAKCE6HKy86BEANALAKJHL2BBAI2BFHKCKrHOAOCE6HOy86BIANALAOJHL2BBAKCIrCEZHOAOCE6HOy86BLANALAOJHL2BBAKCGrCEZHOAOCE6HOy86BKANALAOJHL2BBAKCEZHKAKCE6HKy86BOANALAKJHL2BBAI2BGHKCKrHOAOCE6HOy86BNANALAOJHL2BBAKCIrCEZHOAOCE6HOy86BVANALAOJHL2BBAKCGrCEZHOAOCE6HOy86BcANALAOJHL2BBAKCEZHKAKCE6HKy86BMANALAKJHK2BBAI2BEHICKrHLALCE6HLy86BSANALAKJHK2BBAICIrCEZHLALCE6HLy86BQANALAKJHK2BBAICGrCEZHLALCE6HLy86BfANALAKJHN2BBAICEZHIAICE6HIy86BbAIANJRISGMANAI2BNAI2BBHKCIrHLALCb6HLy86BBANAICNJALJHL2BBAKCbZHKAKCb6HKy86BFANALAKJHK2BBAI2BFHLCIrHOAOCb6HOy86BGANAKAOJHK2BBALCbZHLALCb6HLy86BEANALAKJHK2BBAI2BGHLCIrHOAOCb6HOy86BIANAKAOJHK2BBALCbZHLALCb6HLy86BLANALAKJHK2BBAI2BEHLCIrHOAOCb6HOy86BKANAKAOJHK2BBALCbZHLALCb6HLy86BOANALAKJHK2BBAI2BIHLCIrHOAOCb6HOy86BNANAKAOJHK2BBALCbZHLALCb6HLy86BVANALAKJHK2BBAI2BLHLCIrHOAOCb6HOy86BcANAKAOJHK2BBALCbZHLALCb6HLy86BMANALAKJHK2BBAI2BKHLCIrHOAOCb6HOy86BSANAKAOJHK2BBALCbZHLALCb6HLy86BQANALAKJHK2BBAI2BOHICIrHLALCb6HLy86BfANALAKJHN2BBAICbZHIAICb6HIy86BbAIANJRISFMANAI8pBB83BBANAI8pBN83BNAICTJRIMAECTJHEAm9JQBMMAI9FQGAQIXAMAfJ2BBRcAfREEXAMCUGJAEJAcAMCU/CBJAVJ2BBHcCFrCBAcCFZl9zJHc86BBAGAEJREAVCFJHVAQ9HQBMMAIRcAfCFJHfAG9HQBMMABAGAS9sJAMCUGJAGAQ9sTFpAMAMCUGJAQCaJAG9sJAGTFpAIRVMAQCBAVyASJRSAVQBMC9+SFMCBC99AbAVlAGCAAGCA9Ly6yMRVATCU/EBJ8kBAVMMVFBCUSMG+g9m'
|
|
9
|
-
const wasm_simd = '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'
|
|
10
|
-
|
|
11
|
-
// Uses bulk-memory and simd extensions
|
|
12
|
-
const detector = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11])
|
|
13
|
-
|
|
14
|
-
// Used to unpack wasm
|
|
15
|
-
const wasmpack = new Uint8Array([32, 0, 65, 253, 3, 1, 2, 34, 4, 106, 6, 5, 11, 8, 7, 20, 13, 33, 12, 16, 128, 9, 116, 64, 19, 113, 127, 15, 10, 21, 22, 14, 255, 66, 24, 54, 136, 107, 18, 23, 192, 26, 114, 118, 132, 17, 77, 101, 130, 144, 27, 87, 131, 44, 45, 74, 156, 154, 70, 167])
|
|
16
|
-
|
|
17
|
-
if (typeof WebAssembly !== 'object') {
|
|
18
|
-
// This module requires WebAssembly to function
|
|
19
|
-
return {
|
|
20
|
-
supported: false,
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
let wasm = wasm_base
|
|
25
|
-
|
|
26
|
-
if (WebAssembly.validate(detector)) {
|
|
27
|
-
wasm = wasm_simd
|
|
28
|
-
console.log('Warning: meshopt_decoder is using experimental SIMD support')
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
let instance; let heap
|
|
32
|
-
|
|
33
|
-
const env = {
|
|
34
|
-
emscripten_notify_memory_growth: function (index) {
|
|
35
|
-
heap = new Uint8Array(instance.exports.memory.buffer)
|
|
36
|
-
},
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const promise =
|
|
40
|
-
WebAssembly.instantiate(unpack(wasm), { env })
|
|
41
|
-
.then(function (result) {
|
|
42
|
-
instance = result.instance
|
|
43
|
-
instance.exports._initialize()
|
|
44
|
-
env.emscripten_notify_memory_growth(0)
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
function unpack(data) {
|
|
48
|
-
const result = new Uint8Array(data.length)
|
|
49
|
-
for (var i = 0; i < data.length; ++i) {
|
|
50
|
-
const ch = data.charCodeAt(i)
|
|
51
|
-
result[i] = ch > 96 ? ch - 71 : ch > 64 ? ch - 65 : ch > 47 ? ch + 4 : ch > 46 ? 63 : 62
|
|
52
|
-
}
|
|
53
|
-
let write = 0
|
|
54
|
-
for (var i = 0; i < data.length; ++i) {
|
|
55
|
-
result[write++] = (result[i] < 60) ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i]
|
|
56
|
-
}
|
|
57
|
-
return result.buffer.slice(0, write)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function decode(fun, target, count, size, source, filter) {
|
|
61
|
-
const sbrk = instance.exports.sbrk
|
|
62
|
-
const count4 = (count + 3) & ~3 // pad for SIMD filter
|
|
63
|
-
const tp = sbrk(count4 * size)
|
|
64
|
-
const sp = sbrk(source.length)
|
|
65
|
-
heap.set(source, sp)
|
|
66
|
-
const res = fun(tp, count, size, sp, source.length)
|
|
67
|
-
if (res == 0 && filter) {
|
|
68
|
-
filter(tp, count4, size)
|
|
69
|
-
}
|
|
70
|
-
target.set(heap.subarray(tp, tp + count * size))
|
|
71
|
-
sbrk(tp - sbrk(0))
|
|
72
|
-
if (res != 0) {
|
|
73
|
-
throw new Error('Malformed buffer data: ' + res)
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const filters = {
|
|
78
|
-
// legacy index-based enums for glTF
|
|
79
|
-
0: '',
|
|
80
|
-
1: 'meshopt_decodeFilterOct',
|
|
81
|
-
2: 'meshopt_decodeFilterQuat',
|
|
82
|
-
3: 'meshopt_decodeFilterExp',
|
|
83
|
-
// string-based enums for glTF
|
|
84
|
-
NONE: '',
|
|
85
|
-
OCTAHEDRAL: 'meshopt_decodeFilterOct',
|
|
86
|
-
QUATERNION: 'meshopt_decodeFilterQuat',
|
|
87
|
-
EXPONENTIAL: 'meshopt_decodeFilterExp',
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const decoders = {
|
|
91
|
-
// legacy index-based enums for glTF
|
|
92
|
-
0: 'meshopt_decodeVertexBuffer',
|
|
93
|
-
1: 'meshopt_decodeIndexBuffer',
|
|
94
|
-
2: 'meshopt_decodeIndexSequence',
|
|
95
|
-
// string-based enums for glTF
|
|
96
|
-
ATTRIBUTES: 'meshopt_decodeVertexBuffer',
|
|
97
|
-
TRIANGLES: 'meshopt_decodeIndexBuffer',
|
|
98
|
-
INDICES: 'meshopt_decodeIndexSequence',
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return {
|
|
102
|
-
ready: promise,
|
|
103
|
-
supported: true,
|
|
104
|
-
decodeVertexBuffer: function (target, count, size, source, filter) {
|
|
105
|
-
decode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]])
|
|
106
|
-
},
|
|
107
|
-
decodeIndexBuffer: function (target, count, size, source) {
|
|
108
|
-
decode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source)
|
|
109
|
-
},
|
|
110
|
-
decodeIndexSequence: function (target, count, size, source) {
|
|
111
|
-
decode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source)
|
|
112
|
-
},
|
|
113
|
-
decodeGltfBuffer: function (target, count, size, source, mode, filter) {
|
|
114
|
-
decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]])
|
|
115
|
-
},
|
|
116
|
-
}
|
|
117
|
-
})()
|
|
118
|
-
|
|
119
|
-
if (typeof exports === 'object' && typeof module === 'object') {
|
|
120
|
-
module.exports = MeshoptDecoder
|
|
121
|
-
} else if (typeof define === 'function' && define['amd']) {
|
|
122
|
-
define([], function () {
|
|
123
|
-
return MeshoptDecoder
|
|
124
|
-
})
|
|
125
|
-
} else if (typeof exports === 'object') {
|
|
126
|
-
exports['MeshoptDecoder'] = MeshoptDecoder
|
|
127
|
-
} else {
|
|
128
|
-
(typeof self !== 'undefined' ? self : this).MeshoptDecoder = MeshoptDecoder
|
|
129
|
-
}
|
|
1
|
+
// This file is part of meshoptimizer library and is distributed under the terms of MIT License.
|
|
2
|
+
// Copyright (C) 2016-2020, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
|
3
|
+
const MeshoptDecoder = (function () {
|
|
4
|
+
'use strict'
|
|
5
|
+
|
|
6
|
+
// Built with emcc (Emscripten gcc/clang-like replacement) 1.39.18 (a3beeb0d6c9825bd1757d03677e817d819949a77)
|
|
7
|
+
// Built from meshoptimizer 0.14
|
|
8
|
+
const wasm_base = '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pAK1BEHLCgBZCdWAEqREAKCIJALCa3QBpAK2BIC8cWAEqREAKCLJMRLCBAECFZlAECFr9zAfJHfREMGXAMCb9HIXALRVSFMAL1BBHKCgFZRNGaALCFJAKCa3QBpANCgBZAL1BFHKCgBZCOWqRNALCGJAKCa3QBpAL1BGHKCgBZCfWANqRNALCEJAKCa3QBpAL1BEHKCgBZCdWANqRNALCIJAKCa3QBpAL2BIC8cWANqRNALCLJMRVCBANCFZlANCFr9zAfJHfRNMGXAGCG6IXABATCFWJHLAQ87FBALAE87FGALAN87FISFMABATCGWJHLAQjGBALANjGNALAEjGIMAOCXlAcCEWJHLAQjGIALAEjGBAOAICGWJAQjGBAOCXlAcCFJCbZCEWJHLANjGBALAEjGIAOAICFJHICbZCGWJAEjGBAOCXlAcCGJCbZCEWJHEAQjGBAEANjGIAOAIAS9FASCb6qJHECbZCGWJANjGBAcCEJRcAEAM9FAMCb6qJMRIAmCFJRmAcCbZRcAICbZRIATCEJHTAF9JQBMMCBC99AVAt6yRcMAOCoFJ8kBAcM9SFGaCUS8oGBHFABCEJC98ZHGJRBGXAGCF9OCBABAFuyQBAB8/BCTW9LIXABTE9FQFMCUSABjGBAFbMCUNC8wjGBCaM/GGFGaABCUFJHFCaJCgF86BBABCgF86BBAFC9+JCgF86BBABCgF86BFAFC99JCgF86BBABCgF86BGAFC98JCgF86BBABCgF86BEABCBABlCEZHFJHBCajGBABCUFAFlC98ZHGJHFC98JCajGBGXAGCV9JQBABCajGNABCajGIAFC94JCajGBAFCWJCajGBAGC8Z9JQBABCajGiABCajGPABCajGTABCajGSAFC9wJCajGBAFC9sJCajGBAFC9oJCajGBAFC9kJCajGBAGABCIZCiqHGlHFCA9JQBABAGJRBEXABha83EiABha83ETABha83ENABha83EBABCAJRBAFC9gJHFC8f9LQBMMM/LSFba8jBCU/EBlHT8kBGaC9+AGCFJAI9LQBpCaAE2BBC+gF9HQBpATAEAIJHbAGlAGTFRMCUoBAG9uC/wgBZHICUGAICUG9JyRtAECFJRVGXEXASAF9PQFAtAFASlASAtJAF9JyRQGXGXAG9FIXAVRISFMAQCbJHEC9wZRmAECIrCEJCGrRYCBRfAVRcEXAbAclAY9JIXCBRVSEMAcAYJRICBRVCBREAmIXEXAbAIlCi9JQIAMCU/CBJAEJRNGXGXGXGXGXAcAECKrJ2BBAECErCKZrCEZCFlfEFGEBMANhB83EBANhB83ENSEMANAI2BIAI2BBHKCKrHLALCE6HLy86BBANAICIJALJHL2BBAKCIrCEZHOAOCE6HOy86BFANALAOJHL2BBAKCGrCEZHOAOCE6HOy86BGANALAOJHL2BBAKCEZHKAKCE6HKy86BEANALAKJHL2BBAI2BFHKCKrHOAOCE6HOy86BIANALAOJHL2BBAKCIrCEZHOAOCE6HOy86BLANALAOJHL2BBAKCGrCEZHOAOCE6HOy86BKANALAOJHL2BBAKCEZHKAKCE6HKy86BOANALAKJHL2BBAI2BGHKCKrHOAOCE6HOy86BNANALAOJHL2BBAKCIrCEZHOAOCE6HOy86BVANALAOJHL2BBAKCGrCEZHOAOCE6HOy86BcANALAOJHL2BBAKCEZHKAKCE6HKy86BMANALAKJHK2BBAI2BEHICKrHLALCE6HLy86BSANALAKJHK2BBAICIrCEZHLALCE6HLy86BQANALAKJHK2BBAICGrCEZHLALCE6HLy86BfANALAKJHN2BBAICEZHIAICE6HIy86BbAIANJRISGMANAI2BNAI2BBHKCIrHLALCb6HLy86BBANAICNJALJHL2BBAKCbZHKAKCb6HKy86BFANALAKJHK2BBAI2BFHLCIrHOAOCb6HOy86BGANAKAOJHK2BBALCbZHLALCb6HLy86BEANALAKJHK2BBAI2BGHLCIrHOAOCb6HOy86BIANAKAOJHK2BBALCbZHLALCb6HLy86BLANALAKJHK2BBAI2BEHLCIrHOAOCb6HOy86BKANAKAOJHK2BBALCbZHLALCb6HLy86BOANALAKJHK2BBAI2BIHLCIrHOAOCb6HOy86BNANAKAOJHK2BBALCbZHLALCb6HLy86BVANALAKJHK2BBAI2BLHLCIrHOAOCb6HOy86BcANAKAOJHK2BBALCbZHLALCb6HLy86BMANALAKJHK2BBAI2BKHLCIrHOAOCb6HOy86BSANAKAOJHK2BBALCbZHLALCb6HLy86BQANALAKJHK2BBAI2BOHICIrHLALCb6HLy86BfANALAKJHN2BBAICbZHIAICb6HIy86BbAIANJRISFMANAI8pBB83BBANAI8pBN83BNAICTJRIMAECTJHEAm9JQBMMAI9FQGAQIXAMAfJ2BBRcAfREEXAMCUGJAEJAcAMCU/CBJAVJ2BBHcCFrCBAcCFZl9zJHc86BBAGAEJREAVCFJHVAQ9HQBMMAIRcAfCFJHfAG9HQBMMABAGAS9sJAMCUGJAGAQ9sTFpAMAMCUGJAQCaJAG9sJAGTFpAIRVMAQCBAVyASJRSAVQBMC9+SFMCBC99AbAVlAGCAAGCA9Ly6yMRVATCU/EBJ8kBAVMMVFBCUSMG+g9m'
|
|
9
|
+
const wasm_simd = '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'
|
|
10
|
+
|
|
11
|
+
// Uses bulk-memory and simd extensions
|
|
12
|
+
const detector = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2, 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11])
|
|
13
|
+
|
|
14
|
+
// Used to unpack wasm
|
|
15
|
+
const wasmpack = new Uint8Array([32, 0, 65, 253, 3, 1, 2, 34, 4, 106, 6, 5, 11, 8, 7, 20, 13, 33, 12, 16, 128, 9, 116, 64, 19, 113, 127, 15, 10, 21, 22, 14, 255, 66, 24, 54, 136, 107, 18, 23, 192, 26, 114, 118, 132, 17, 77, 101, 130, 144, 27, 87, 131, 44, 45, 74, 156, 154, 70, 167])
|
|
16
|
+
|
|
17
|
+
if (typeof WebAssembly !== 'object') {
|
|
18
|
+
// This module requires WebAssembly to function
|
|
19
|
+
return {
|
|
20
|
+
supported: false,
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
let wasm = wasm_base
|
|
25
|
+
|
|
26
|
+
if (WebAssembly.validate(detector)) {
|
|
27
|
+
wasm = wasm_simd
|
|
28
|
+
console.log('Warning: meshopt_decoder is using experimental SIMD support')
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
let instance; let heap
|
|
32
|
+
|
|
33
|
+
const env = {
|
|
34
|
+
emscripten_notify_memory_growth: function (index) {
|
|
35
|
+
heap = new Uint8Array(instance.exports.memory.buffer)
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const promise =
|
|
40
|
+
WebAssembly.instantiate(unpack(wasm), { env })
|
|
41
|
+
.then(function (result) {
|
|
42
|
+
instance = result.instance
|
|
43
|
+
instance.exports._initialize()
|
|
44
|
+
env.emscripten_notify_memory_growth(0)
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
function unpack(data) {
|
|
48
|
+
const result = new Uint8Array(data.length)
|
|
49
|
+
for (var i = 0; i < data.length; ++i) {
|
|
50
|
+
const ch = data.charCodeAt(i)
|
|
51
|
+
result[i] = ch > 96 ? ch - 71 : ch > 64 ? ch - 65 : ch > 47 ? ch + 4 : ch > 46 ? 63 : 62
|
|
52
|
+
}
|
|
53
|
+
let write = 0
|
|
54
|
+
for (var i = 0; i < data.length; ++i) {
|
|
55
|
+
result[write++] = (result[i] < 60) ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i]
|
|
56
|
+
}
|
|
57
|
+
return result.buffer.slice(0, write)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function decode(fun, target, count, size, source, filter) {
|
|
61
|
+
const sbrk = instance.exports.sbrk
|
|
62
|
+
const count4 = (count + 3) & ~3 // pad for SIMD filter
|
|
63
|
+
const tp = sbrk(count4 * size)
|
|
64
|
+
const sp = sbrk(source.length)
|
|
65
|
+
heap.set(source, sp)
|
|
66
|
+
const res = fun(tp, count, size, sp, source.length)
|
|
67
|
+
if (res == 0 && filter) {
|
|
68
|
+
filter(tp, count4, size)
|
|
69
|
+
}
|
|
70
|
+
target.set(heap.subarray(tp, tp + count * size))
|
|
71
|
+
sbrk(tp - sbrk(0))
|
|
72
|
+
if (res != 0) {
|
|
73
|
+
throw new Error('Malformed buffer data: ' + res)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const filters = {
|
|
78
|
+
// legacy index-based enums for glTF
|
|
79
|
+
0: '',
|
|
80
|
+
1: 'meshopt_decodeFilterOct',
|
|
81
|
+
2: 'meshopt_decodeFilterQuat',
|
|
82
|
+
3: 'meshopt_decodeFilterExp',
|
|
83
|
+
// string-based enums for glTF
|
|
84
|
+
NONE: '',
|
|
85
|
+
OCTAHEDRAL: 'meshopt_decodeFilterOct',
|
|
86
|
+
QUATERNION: 'meshopt_decodeFilterQuat',
|
|
87
|
+
EXPONENTIAL: 'meshopt_decodeFilterExp',
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const decoders = {
|
|
91
|
+
// legacy index-based enums for glTF
|
|
92
|
+
0: 'meshopt_decodeVertexBuffer',
|
|
93
|
+
1: 'meshopt_decodeIndexBuffer',
|
|
94
|
+
2: 'meshopt_decodeIndexSequence',
|
|
95
|
+
// string-based enums for glTF
|
|
96
|
+
ATTRIBUTES: 'meshopt_decodeVertexBuffer',
|
|
97
|
+
TRIANGLES: 'meshopt_decodeIndexBuffer',
|
|
98
|
+
INDICES: 'meshopt_decodeIndexSequence',
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
ready: promise,
|
|
103
|
+
supported: true,
|
|
104
|
+
decodeVertexBuffer: function (target, count, size, source, filter) {
|
|
105
|
+
decode(instance.exports.meshopt_decodeVertexBuffer, target, count, size, source, instance.exports[filters[filter]])
|
|
106
|
+
},
|
|
107
|
+
decodeIndexBuffer: function (target, count, size, source) {
|
|
108
|
+
decode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source)
|
|
109
|
+
},
|
|
110
|
+
decodeIndexSequence: function (target, count, size, source) {
|
|
111
|
+
decode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source)
|
|
112
|
+
},
|
|
113
|
+
decodeGltfBuffer: function (target, count, size, source, mode, filter) {
|
|
114
|
+
decode(instance.exports[decoders[mode]], target, count, size, source, instance.exports[filters[filter]])
|
|
115
|
+
},
|
|
116
|
+
}
|
|
117
|
+
})()
|
|
118
|
+
|
|
119
|
+
if (typeof exports === 'object' && typeof module === 'object') {
|
|
120
|
+
module.exports = MeshoptDecoder
|
|
121
|
+
} else if (typeof define === 'function' && define['amd']) {
|
|
122
|
+
define([], function () {
|
|
123
|
+
return MeshoptDecoder
|
|
124
|
+
})
|
|
125
|
+
} else if (typeof exports === 'object') {
|
|
126
|
+
exports['MeshoptDecoder'] = MeshoptDecoder
|
|
127
|
+
} else {
|
|
128
|
+
(typeof self !== 'undefined' ? self : this).MeshoptDecoder = MeshoptDecoder
|
|
129
|
+
}
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
import THREEShaderMaterial from './THREEShaderMaterial.js'
|
|
2
|
-
import { ShaderChunk } from '../../../three/src/Three.js'
|
|
3
|
-
|
|
4
|
-
export default class THREEBaseMaterial extends THREEShaderMaterial {
|
|
5
|
-
constructor({
|
|
6
|
-
vertexChunks = [],
|
|
7
|
-
fragmentChunks = [],
|
|
8
|
-
uniforms = {},
|
|
9
|
-
morphTargets = false,
|
|
10
|
-
skinning = false,
|
|
11
|
-
...options
|
|
12
|
-
} = {}) {
|
|
13
|
-
super({
|
|
14
|
-
uniforms,
|
|
15
|
-
vertex: `
|
|
16
|
-
void main() {
|
|
17
|
-
}
|
|
18
|
-
`,
|
|
19
|
-
vertexChunks: [
|
|
20
|
-
['start', `
|
|
21
|
-
${morphTargets ? '#include <morphtarget_pars_vertex>' : ''}
|
|
22
|
-
${skinning ? '#include <skinning_pars_vertex>' : ''}
|
|
23
|
-
|
|
24
|
-
in vec3 color;
|
|
25
|
-
|
|
26
|
-
out vec3 vColor;
|
|
27
|
-
out vec3 vPosition;
|
|
28
|
-
out vec3 vNormal;
|
|
29
|
-
out vec2 vUV;
|
|
30
|
-
out vec3 vWorldPosition;
|
|
31
|
-
out vec3 vViewDirection;
|
|
32
|
-
out float vFresnel;
|
|
33
|
-
`],
|
|
34
|
-
['main', `
|
|
35
|
-
vec3 transformedPosition = position;
|
|
36
|
-
vec3 transformedNormal = normal;
|
|
37
|
-
|
|
38
|
-
${skinning ? ShaderChunk.skinbase_vertex : ''}
|
|
39
|
-
|
|
40
|
-
${morphTargets ? ShaderChunk.morphnormal_vertex.replace(/objectNormal/g, 'transformedNormal') : ''}
|
|
41
|
-
${skinning ? ShaderChunk.skinnormal_vertex.replace(/objectNormal/g, 'transformedNormal') : ''}
|
|
42
|
-
|
|
43
|
-
${morphTargets ? ShaderChunk.morphtarget_vertex.replace(/transformed/g, 'transformedPosition') : ''}
|
|
44
|
-
${skinning ? ShaderChunk.skinning_vertex.replace(/transformed/g, 'transformedPosition') : ''}
|
|
45
|
-
`],
|
|
46
|
-
['end', `
|
|
47
|
-
vec3 worldPosition = (modelMatrix * vec4(transformedPosition, 1.)).xyz;
|
|
48
|
-
gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition, 1.);
|
|
49
|
-
|
|
50
|
-
vWorldPosition = worldPosition;
|
|
51
|
-
vViewDirection = normalize(worldPosition - cameraPosition);
|
|
52
|
-
vPosition = transformedPosition;
|
|
53
|
-
vNormal = normalize(mat3(modelMatrix) * transformedNormal);
|
|
54
|
-
vUV = uv;
|
|
55
|
-
vFresnel = 1. - abs(dot(-vViewDirection, vNormal));
|
|
56
|
-
vColor = color;
|
|
57
|
-
`],
|
|
58
|
-
...vertexChunks,
|
|
59
|
-
],
|
|
60
|
-
fragmentChunks: [
|
|
61
|
-
['start', `
|
|
62
|
-
in vec3 vPosition;
|
|
63
|
-
in vec3 vNormal;
|
|
64
|
-
in vec2 vUV;
|
|
65
|
-
in vec3 vWorldPosition;
|
|
66
|
-
in vec3 vViewDirection;
|
|
67
|
-
in float vFresnel;
|
|
68
|
-
in vec3 vColor;
|
|
69
|
-
`],
|
|
70
|
-
...fragmentChunks,
|
|
71
|
-
],
|
|
72
|
-
...options,
|
|
73
|
-
})
|
|
74
|
-
}
|
|
75
|
-
}
|
|
1
|
+
import THREEShaderMaterial from './THREEShaderMaterial.js'
|
|
2
|
+
import { ShaderChunk } from '../../../three/src/Three.js'
|
|
3
|
+
|
|
4
|
+
export default class THREEBaseMaterial extends THREEShaderMaterial {
|
|
5
|
+
constructor({
|
|
6
|
+
vertexChunks = [],
|
|
7
|
+
fragmentChunks = [],
|
|
8
|
+
uniforms = {},
|
|
9
|
+
morphTargets = false,
|
|
10
|
+
skinning = false,
|
|
11
|
+
...options
|
|
12
|
+
} = {}) {
|
|
13
|
+
super({
|
|
14
|
+
uniforms,
|
|
15
|
+
vertex: `
|
|
16
|
+
void main() {
|
|
17
|
+
}
|
|
18
|
+
`,
|
|
19
|
+
vertexChunks: [
|
|
20
|
+
['start', `
|
|
21
|
+
${morphTargets ? '#include <morphtarget_pars_vertex>' : ''}
|
|
22
|
+
${skinning ? '#include <skinning_pars_vertex>' : ''}
|
|
23
|
+
|
|
24
|
+
in vec3 color;
|
|
25
|
+
|
|
26
|
+
out vec3 vColor;
|
|
27
|
+
out vec3 vPosition;
|
|
28
|
+
out vec3 vNormal;
|
|
29
|
+
out vec2 vUV;
|
|
30
|
+
out vec3 vWorldPosition;
|
|
31
|
+
out vec3 vViewDirection;
|
|
32
|
+
out float vFresnel;
|
|
33
|
+
`],
|
|
34
|
+
['main', `
|
|
35
|
+
vec3 transformedPosition = position;
|
|
36
|
+
vec3 transformedNormal = normal;
|
|
37
|
+
|
|
38
|
+
${skinning ? ShaderChunk.skinbase_vertex : ''}
|
|
39
|
+
|
|
40
|
+
${morphTargets ? ShaderChunk.morphnormal_vertex.replace(/objectNormal/g, 'transformedNormal') : ''}
|
|
41
|
+
${skinning ? ShaderChunk.skinnormal_vertex.replace(/objectNormal/g, 'transformedNormal') : ''}
|
|
42
|
+
|
|
43
|
+
${morphTargets ? ShaderChunk.morphtarget_vertex.replace(/transformed/g, 'transformedPosition') : ''}
|
|
44
|
+
${skinning ? ShaderChunk.skinning_vertex.replace(/transformed/g, 'transformedPosition') : ''}
|
|
45
|
+
`],
|
|
46
|
+
['end', `
|
|
47
|
+
vec3 worldPosition = (modelMatrix * vec4(transformedPosition, 1.)).xyz;
|
|
48
|
+
gl_Position = projectionMatrix * viewMatrix * vec4(worldPosition, 1.);
|
|
49
|
+
|
|
50
|
+
vWorldPosition = worldPosition;
|
|
51
|
+
vViewDirection = normalize(worldPosition - cameraPosition);
|
|
52
|
+
vPosition = transformedPosition;
|
|
53
|
+
vNormal = normalize(mat3(modelMatrix) * transformedNormal);
|
|
54
|
+
vUV = uv;
|
|
55
|
+
vFresnel = 1. - abs(dot(-vViewDirection, vNormal));
|
|
56
|
+
vColor = color;
|
|
57
|
+
`],
|
|
58
|
+
...vertexChunks,
|
|
59
|
+
],
|
|
60
|
+
fragmentChunks: [
|
|
61
|
+
['start', `
|
|
62
|
+
in vec3 vPosition;
|
|
63
|
+
in vec3 vNormal;
|
|
64
|
+
in vec2 vUV;
|
|
65
|
+
in vec3 vWorldPosition;
|
|
66
|
+
in vec3 vViewDirection;
|
|
67
|
+
in float vFresnel;
|
|
68
|
+
in vec3 vColor;
|
|
69
|
+
`],
|
|
70
|
+
...fragmentChunks,
|
|
71
|
+
],
|
|
72
|
+
...options,
|
|
73
|
+
})
|
|
74
|
+
}
|
|
75
|
+
}
|