@zephyr3d/scene 0.4.0 → 0.5.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.
Files changed (116) hide show
  1. package/dist/animation/animation.js +25 -117
  2. package/dist/animation/animation.js.map +1 -1
  3. package/dist/animation/animationset.js +164 -24
  4. package/dist/animation/animationset.js.map +1 -1
  5. package/dist/animation/animationtrack.js +6 -18
  6. package/dist/animation/animationtrack.js.map +1 -1
  7. package/dist/animation/eulerrotationtrack.js +16 -6
  8. package/dist/animation/eulerrotationtrack.js.map +1 -1
  9. package/dist/animation/morphtarget.js +104 -0
  10. package/dist/animation/morphtarget.js.map +1 -0
  11. package/dist/animation/morphtrack.js +68 -0
  12. package/dist/animation/morphtrack.js.map +1 -0
  13. package/dist/animation/rotationtrack.js +15 -7
  14. package/dist/animation/rotationtrack.js.map +1 -1
  15. package/dist/animation/scaletrack.js +15 -7
  16. package/dist/animation/scaletrack.js.map +1 -1
  17. package/dist/animation/skeleton.js +101 -1
  18. package/dist/animation/skeleton.js.map +1 -1
  19. package/dist/animation/translationtrack.js +15 -7
  20. package/dist/animation/translationtrack.js.map +1 -1
  21. package/dist/animation/usertrack.js +2 -2
  22. package/dist/app.js +4 -26
  23. package/dist/app.js.map +1 -1
  24. package/dist/asset/assetmanager.js +58 -107
  25. package/dist/asset/assetmanager.js.map +1 -1
  26. package/dist/asset/loaders/dds/dds.js +77 -3
  27. package/dist/asset/loaders/dds/dds.js.map +1 -1
  28. package/dist/asset/loaders/dds/dds_loader.js +1 -1
  29. package/dist/asset/loaders/gltf/gltf_loader.js +280 -37
  30. package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
  31. package/dist/asset/loaders/image/tga_Loader.js +1 -1
  32. package/dist/asset/model.js +13 -0
  33. package/dist/asset/model.js.map +1 -1
  34. package/dist/blitter/blitter.js +2 -2
  35. package/dist/camera/camera.js +58 -3
  36. package/dist/camera/camera.js.map +1 -1
  37. package/dist/index.d.ts +3026 -2839
  38. package/dist/index.js +2 -5
  39. package/dist/index.js.map +1 -1
  40. package/dist/material/blinn.js +9 -4
  41. package/dist/material/blinn.js.map +1 -1
  42. package/dist/material/lambert.js +22 -17
  43. package/dist/material/lambert.js.map +1 -1
  44. package/dist/material/material.js +11 -2
  45. package/dist/material/material.js.map +1 -1
  46. package/dist/material/meshmaterial.js +36 -4
  47. package/dist/material/meshmaterial.js.map +1 -1
  48. package/dist/material/mixins/albedocolor.js +1 -1
  49. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +3 -3
  50. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +3 -3
  51. package/dist/material/mixins/lit.js +2 -2
  52. package/dist/material/mixins/pbr/common.js +433 -10
  53. package/dist/material/mixins/pbr/common.js.map +1 -1
  54. package/dist/material/pbrmr.js +17 -6
  55. package/dist/material/pbrmr.js.map +1 -1
  56. package/dist/material/pbrsg.js +16 -9
  57. package/dist/material/pbrsg.js.map +1 -1
  58. package/dist/material/shader/helper.js +94 -4
  59. package/dist/material/shader/helper.js.map +1 -1
  60. package/dist/material/unlit.js +8 -4
  61. package/dist/material/unlit.js.map +1 -1
  62. package/dist/posteffect/bloom.js +33 -43
  63. package/dist/posteffect/bloom.js.map +1 -1
  64. package/dist/posteffect/compositor.js +8 -37
  65. package/dist/posteffect/compositor.js.map +1 -1
  66. package/dist/posteffect/sao.js +11 -24
  67. package/dist/posteffect/sao.js.map +1 -1
  68. package/dist/posteffect/water.js +2 -4
  69. package/dist/posteffect/water.js.map +1 -1
  70. package/dist/render/cull_visitor.js +3 -3
  71. package/dist/render/depthpass.js +13 -13
  72. package/dist/render/drawable_mixin.js +48 -6
  73. package/dist/render/drawable_mixin.js.map +1 -1
  74. package/dist/render/envlight.js +165 -31
  75. package/dist/render/envlight.js.map +1 -1
  76. package/dist/render/lightpass.js +35 -27
  77. package/dist/render/lightpass.js.map +1 -1
  78. package/dist/render/objectcolorpass.js +50 -0
  79. package/dist/render/objectcolorpass.js.map +1 -0
  80. package/dist/render/objectpool.js +295 -0
  81. package/dist/render/objectpool.js.map +1 -0
  82. package/dist/render/render_queue.js +189 -156
  83. package/dist/render/render_queue.js.map +1 -1
  84. package/dist/render/renderer.js +97 -20
  85. package/dist/render/renderer.js.map +1 -1
  86. package/dist/render/renderpass.js +18 -14
  87. package/dist/render/renderpass.js.map +1 -1
  88. package/dist/render/shadowmap_pass.js +14 -14
  89. package/dist/render/weightedblended_oit.js +11 -28
  90. package/dist/render/weightedblended_oit.js.map +1 -1
  91. package/dist/scene/environment.js +22 -1
  92. package/dist/scene/environment.js.map +1 -1
  93. package/dist/scene/graph_node.js +0 -9
  94. package/dist/scene/graph_node.js.map +1 -1
  95. package/dist/scene/mesh.js +32 -1
  96. package/dist/scene/mesh.js.map +1 -1
  97. package/dist/scene/scene.js +5 -8
  98. package/dist/scene/scene.js.map +1 -1
  99. package/dist/scene/scene_node.js +2 -3
  100. package/dist/scene/scene_node.js.map +1 -1
  101. package/dist/scene/terrain/grass.js +9 -0
  102. package/dist/scene/terrain/grass.js.map +1 -1
  103. package/dist/scene/terrain/patch.js +9 -0
  104. package/dist/scene/terrain/patch.js.map +1 -1
  105. package/dist/scene/terrain/quadtree.js +2 -2
  106. package/dist/shadow/esm.js +4 -22
  107. package/dist/shadow/esm.js.map +1 -1
  108. package/dist/shadow/shadowmapper.js +45 -20
  109. package/dist/shadow/shadowmapper.js.map +1 -1
  110. package/dist/shadow/vsm.js +4 -24
  111. package/dist/shadow/vsm.js.map +1 -1
  112. package/dist/utility/draco/decoder.js +116 -0
  113. package/dist/utility/draco/decoder.js.map +1 -0
  114. package/dist/values.js +18 -1
  115. package/dist/values.js.map +1 -1
  116. package/package.json +7 -6
@@ -63,7 +63,7 @@ const defaultInstanceBindGroupAlloator = new InstanceBindGroupAllocator();
63
63
  * A queue that contains the items to be rendered
64
64
  * @public
65
65
  */ class RenderQueue {
66
- /** @internal */ _itemLists;
66
+ /** @internal */ _itemList;
67
67
  /** @internal */ _renderPass;
68
68
  /** @internal */ _shadowedLightList;
69
69
  /** @internal */ _unshadowedLightList;
@@ -71,12 +71,15 @@ const defaultInstanceBindGroupAlloator = new InstanceBindGroupAllocator();
71
71
  /** @internal */ _bindGroupAllocator;
72
72
  /** @internal */ _ref;
73
73
  /** @internal */ _instanceInfo;
74
+ /** @internal */ _needSceneColor;
75
+ /** @internal */ _drawTransparent;
76
+ /** @internal */ _objectColorMaps;
74
77
  /**
75
78
  * Creates an instance of a render queue
76
79
  * @param renderPass - The render pass to which the render queue belongs
77
80
  */ constructor(renderPass, bindGroupAllocator){
78
81
  this._bindGroupAllocator = bindGroupAllocator ?? defaultInstanceBindGroupAlloator;
79
- this._itemLists = {};
82
+ this._itemList = null;
80
83
  this._renderPass = renderPass;
81
84
  this._shadowedLightList = [];
82
85
  this._unshadowedLightList = [];
@@ -85,6 +88,11 @@ const defaultInstanceBindGroupAlloator = new InstanceBindGroupAllocator();
85
88
  ref: this
86
89
  };
87
90
  this._instanceInfo = new Map();
91
+ this._needSceneColor = false;
92
+ this._drawTransparent = false;
93
+ this._objectColorMaps = [
94
+ new Map()
95
+ ];
88
96
  }
89
97
  /** The sun light */ get sunLight() {
90
98
  return this._sunLight;
@@ -92,13 +100,19 @@ const defaultInstanceBindGroupAlloator = new InstanceBindGroupAllocator();
92
100
  set sunLight(light) {
93
101
  this._sunLight = light;
94
102
  }
103
+ /** Whether this render queue requires scene color pass */ get needSceneColor() {
104
+ return this._needSceneColor;
105
+ }
106
+ /** Whether this render queue has transparent objects to be drawn */ get drawTransparent() {
107
+ return this._drawTransparent;
108
+ }
95
109
  /** The render pass to which the render queue belongs */ get renderPass() {
96
110
  return this._renderPass;
97
111
  }
98
112
  /**
99
113
  * Gets the items of the render queue
100
- */ get items() {
101
- return this._itemLists;
114
+ */ get itemList() {
115
+ return this._itemList;
102
116
  }
103
117
  /**
104
118
  * Gets the shadowed lights
@@ -147,35 +161,43 @@ const defaultInstanceBindGroupAlloator = new InstanceBindGroupAllocator();
147
161
  * Push items from another render queue
148
162
  * @param queue - The render queue to be pushed
149
163
  */ pushRenderQueue(queue) {
150
- for(const order in queue._itemLists){
151
- let itemLists = this._itemLists[order];
152
- if (!itemLists) {
153
- itemLists = this.newRenderItemList(true);
154
- this._itemLists[order] = itemLists;
155
- }
156
- const newItemLists = queue._itemLists[order];
157
- itemLists.opaque.lit.push(...newItemLists.opaque.lit);
158
- itemLists.opaque.unlit.push(...newItemLists.opaque.unlit);
159
- itemLists.transparent.lit.push(...newItemLists.transparent.lit);
160
- itemLists.transparent.unlit.push(...newItemLists.transparent.unlit);
164
+ const newItemLists = queue._itemList;
165
+ if (!newItemLists) {
166
+ return;
161
167
  }
168
+ if (!this._itemList) {
169
+ this._itemList = this.newRenderItemList();
170
+ }
171
+ this._itemList.opaque.lit.push(...newItemLists.opaque.lit);
172
+ this._itemList.opaque.unlit.push(...newItemLists.opaque.unlit);
173
+ this._itemList.transmission.lit.push(...newItemLists.transmission.lit);
174
+ this._itemList.transmission.unlit.push(...newItemLists.transmission.unlit);
175
+ this._itemList.transparent.lit.push(...newItemLists.transparent.lit);
176
+ this._itemList.transparent.unlit.push(...newItemLists.transparent.unlit);
177
+ this._needSceneColor ||= queue._needSceneColor;
178
+ this._drawTransparent ||= queue._drawTransparent;
179
+ this._objectColorMaps.push(...queue._objectColorMaps);
162
180
  }
163
181
  /**
164
182
  * Push an item to the render queue
165
183
  * @param camera - The camera for drawing the item
166
184
  * @param drawable - The object to be drawn
167
- * @param renderOrder - Render order of the object
168
- */ push(camera, drawable, renderOrder) {
185
+ */ push(camera, drawable) {
169
186
  if (drawable) {
170
- let itemList = this._itemLists[renderOrder];
171
- if (!itemList) {
172
- itemList = this.newRenderItemList(false);
173
- this._itemLists[renderOrder] = itemList;
187
+ if (!this._itemList) {
188
+ this._itemList = this.newRenderItemList();
174
189
  }
175
190
  const trans = drawable.getQueueType() === QUEUE_TRANSPARENT;
176
191
  const unlit = drawable.isUnlit();
192
+ const transmission = !trans && drawable.needSceneColor();
193
+ this._needSceneColor ||= transmission;
194
+ this._drawTransparent ||= trans;
195
+ if (camera.enablePicking) {
196
+ drawable.getMaterial().objectColor = drawable.getObjectColor();
197
+ this._objectColorMaps[0].set(drawable.getId(), drawable);
198
+ }
177
199
  if (drawable.isBatchable()) {
178
- const instanceList = trans ? unlit ? itemList.transparent.unlit[0].instanceList : itemList.transparent.lit[0].instanceList : unlit ? itemList.opaque.unlit[0].instanceList : itemList.opaque.lit[0].instanceList;
200
+ const instanceList = trans ? unlit ? this._itemList.transparent.unlit[0].instanceList : this._itemList.transparent.lit[0].instanceList : unlit ? transmission ? this._itemList.transmission.unlit[0].instanceList : this._itemList.opaque.unlit[0].instanceList : transmission ? this._itemList.transmission.lit[0].instanceList : this._itemList.opaque.lit[0].instanceList;
179
201
  const hash = drawable.getInstanceId(this._renderPass);
180
202
  let drawableList = instanceList[hash];
181
203
  if (!drawableList) {
@@ -184,8 +206,20 @@ const defaultInstanceBindGroupAlloator = new InstanceBindGroupAllocator();
184
206
  }
185
207
  drawableList.push(drawable);
186
208
  } else {
187
- const list = trans ? unlit ? itemList.transparent.unlit[0] : itemList.transparent.lit[0] : unlit ? itemList.opaque.unlit[0] : itemList.opaque.lit[0];
188
- this.binaryInsert(drawable.getBoneMatrices() ? list.skinItemList : list.itemList, {
209
+ const list = trans ? unlit ? this._itemList.transparent.unlit[0] : this._itemList.transparent.lit[0] : unlit ? transmission ? this._itemList.transmission.unlit[0] : this._itemList.opaque.unlit[0] : transmission ? this._itemList.transmission.lit[0] : this._itemList.opaque.lit[0];
210
+ const skinAnimation = !!drawable.getBoneMatrices();
211
+ const morphAnimation = !!drawable.getMorphData();
212
+ let queue;
213
+ if (skinAnimation && morphAnimation) {
214
+ queue = list.skinAndMorphItemList;
215
+ } else if (skinAnimation) {
216
+ queue = list.skinItemList;
217
+ } else if (morphAnimation) {
218
+ queue = list.morphItemList;
219
+ } else {
220
+ queue = list.itemList;
221
+ }
222
+ this.binaryInsert(queue, {
189
223
  drawable,
190
224
  sortDistance: drawable.getSortDistance(camera),
191
225
  instanceData: null
@@ -199,13 +233,25 @@ const defaultInstanceBindGroupAlloator = new InstanceBindGroupAllocator();
199
233
  drawable.pushRenderQueueRef(this._ref);
200
234
  }
201
235
  }
236
+ /** @internal */ getDrawableByColor(c) {
237
+ const id = (c[0] << 24) + (c[1] << 16) + (c[2] << 8) + c[3];
238
+ for (const m of this._objectColorMaps){
239
+ const drawable = m.get(id);
240
+ if (drawable) {
241
+ return drawable;
242
+ }
243
+ }
244
+ return null;
245
+ }
202
246
  /**
203
247
  * Removes all items in the render queue
204
248
  */ reset() {
205
- this._itemLists = {};
249
+ this._itemList = null;
206
250
  this._shadowedLightList = [];
207
251
  this._unshadowedLightList = [];
208
252
  this._sunLight = null;
253
+ this._needSceneColor = false;
254
+ this._drawTransparent = false;
209
255
  }
210
256
  /** @internal */ dispose() {
211
257
  this._ref.ref = null;
@@ -214,95 +260,97 @@ const defaultInstanceBindGroupAlloator = new InstanceBindGroupAllocator();
214
260
  }
215
261
  /** @internal */ end(camera, createRenderBundles) {
216
262
  const frameCounter = Application.instance.device.frameInfo.frameCounter;
217
- for(const k in this._itemLists){
218
- const itemList = this._itemLists[k];
219
- const lists = [
220
- itemList.opaque.lit,
221
- itemList.opaque.unlit,
222
- itemList.transparent.lit,
223
- itemList.transparent.unlit
224
- ];
225
- for(let i = 0; i < 4; i++){
226
- const list = lists[i];
227
- for (const info of list){
228
- if (info.renderQueue !== this) {
229
- continue;
230
- }
231
- const instanceList = info.instanceList;
232
- for(const x in instanceList){
233
- const drawables = instanceList[x];
234
- if (drawables.length === 1) {
235
- this.binaryInsert(info.itemList, {
236
- drawable: drawables[0],
237
- sortDistance: drawables[0].getSortDistance(camera),
238
- instanceData: null
239
- });
240
- drawables[0].applyTransformUniforms(this);
241
- const mat = drawables[0].getMaterial();
263
+ const itemList = this._itemList;
264
+ if (!this.itemList) {
265
+ return this;
266
+ }
267
+ const lists = [
268
+ itemList.opaque.lit,
269
+ itemList.opaque.unlit,
270
+ itemList.transmission.lit,
271
+ itemList.transmission.unlit,
272
+ itemList.transparent.lit,
273
+ itemList.transparent.unlit
274
+ ];
275
+ for(let i = 0; i < lists.length; i++){
276
+ const list = lists[i];
277
+ for (const info of list){
278
+ if (info.renderQueue !== this) {
279
+ continue;
280
+ }
281
+ const instanceList = info.instanceList;
282
+ for(const x in instanceList){
283
+ const drawables = instanceList[x];
284
+ if (drawables.length === 1) {
285
+ this.binaryInsert(info.itemList, {
286
+ drawable: drawables[0],
287
+ sortDistance: drawables[0].getSortDistance(camera),
288
+ instanceData: null
289
+ });
290
+ drawables[0].applyTransformUniforms(this);
291
+ const mat = drawables[0].getMaterial();
292
+ if (mat) {
293
+ info.materialList.add(mat.coreMaterial);
294
+ }
295
+ } else {
296
+ let bindGroup = null;
297
+ let item = null;
298
+ for(let i = 0; i < drawables.length; i++){
299
+ const drawable = drawables[i];
300
+ const instanceUniforms = drawable.getInstanceUniforms();
301
+ const instanceUniformsSize = instanceUniforms?.length ?? 0;
302
+ const stride = 16 + instanceUniformsSize;
303
+ if (!bindGroup || bindGroup.offset + stride > maxBufferSizeInFloats) {
304
+ bindGroup = this._bindGroupAllocator.allocateInstanceBindGroup(frameCounter, stride);
305
+ item = {
306
+ drawable,
307
+ sortDistance: drawable.getSortDistance(camera),
308
+ instanceData: {
309
+ bindGroup,
310
+ offset: bindGroup.offset,
311
+ numInstances: 0,
312
+ stride
313
+ }
314
+ };
315
+ this.binaryInsert(info.instanceItemList, item);
316
+ drawable.applyInstanceOffsetAndStride(this, stride, bindGroup.offset);
317
+ }
318
+ const instanceInfo = {
319
+ bindGroup,
320
+ offset: bindGroup.offset
321
+ };
322
+ this._instanceInfo.set(drawable, instanceInfo);
323
+ drawable.applyTransformUniforms(this);
324
+ drawable.applyMaterialUniforms(instanceInfo);
325
+ bindGroup.offset += stride;
326
+ item.instanceData.numInstances++;
327
+ const mat = drawable.getMaterial();
242
328
  if (mat) {
243
329
  info.materialList.add(mat.coreMaterial);
244
330
  }
245
- } else {
246
- let bindGroup = null;
247
- let item = null;
248
- for(let i = 0; i < drawables.length; i++){
249
- const drawable = drawables[i];
250
- const instanceUniforms = drawable.getInstanceUniforms();
251
- const instanceUniformsSize = instanceUniforms?.length ?? 0;
252
- const stride = 16 + instanceUniformsSize;
253
- if (!bindGroup || bindGroup.offset + stride > maxBufferSizeInFloats) {
254
- bindGroup = this._bindGroupAllocator.allocateInstanceBindGroup(frameCounter, stride);
255
- item = {
256
- drawable,
257
- sortDistance: drawable.getSortDistance(camera),
258
- instanceData: {
259
- bindGroup,
260
- offset: bindGroup.offset,
261
- numInstances: 0,
262
- stride
263
- }
264
- };
265
- this.binaryInsert(info.instanceItemList, item);
266
- drawable.applyInstanceOffsetAndStride(this, stride, bindGroup.offset);
267
- }
268
- const instanceInfo = {
269
- bindGroup,
270
- offset: bindGroup.offset
271
- };
272
- this._instanceInfo.set(drawable, instanceInfo);
273
- drawable.applyTransformUniforms(this);
274
- drawable.applyMaterialUniforms(instanceInfo);
275
- bindGroup.offset += stride;
276
- item.instanceData.numInstances++;
277
- const mat = drawable.getMaterial();
278
- if (mat) {
279
- info.materialList.add(mat.coreMaterial);
280
- }
281
- }
282
331
  }
283
332
  }
284
- info.instanceList = {};
285
- if (createRenderBundles) {
286
- if (info.itemList.length > 0) {
287
- info.renderBundle = new RenderBundleWrapper();
288
- }
289
- if (info.skinItemList.length > 0) {
290
- info.skinRenderBundle = new RenderBundleWrapper();
291
- }
292
- if (info.instanceItemList.length > 0) {
293
- info.instanceRenderBundle = new RenderBundleWrapper();
294
- }
333
+ }
334
+ info.instanceList = {};
335
+ if (createRenderBundles) {
336
+ if (info.itemList.length > 0) {
337
+ info.renderBundle = new RenderBundleWrapper();
338
+ }
339
+ if (info.skinItemList.length > 0) {
340
+ info.skinRenderBundle = new RenderBundleWrapper();
341
+ }
342
+ if (info.morphItemList.length > 0) {
343
+ info.morphRenderBundle = new RenderBundleWrapper();
344
+ }
345
+ if (info.skinAndMorphItemList.length > 0) {
346
+ info.skinAndMorphRenderBundle = new RenderBundleWrapper();
347
+ }
348
+ if (info.instanceItemList.length > 0) {
349
+ info.instanceRenderBundle = new RenderBundleWrapper();
295
350
  }
296
351
  }
297
352
  }
298
- /*
299
- itemList.opaque.lit.forEach(info => {
300
- info.itemList.sort((a, b) => (a.drawable.getMaterial()?.instanceId ?? 0) - (b.drawable.getMaterial()?.instanceId ?? 0))
301
- });
302
- itemList.opaque.unlit.forEach(info => {
303
- info.itemList.sort((a, b) => (a.drawable.getMaterial()?.instanceId ?? 0) - (b.drawable.getMaterial()?.instanceId ?? 0))
304
- });
305
- */ }
353
+ }
306
354
  return this;
307
355
  }
308
356
  binaryInsert(itemList, item) {
@@ -326,63 +374,48 @@ const defaultInstanceBindGroupAlloator = new InstanceBindGroupAllocator();
326
374
  /**
327
375
  * Sorts the items in the render queue for rendering
328
376
  */ sortTransparentItems(cameraPos) {
329
- for (const list of Object.values(this._itemLists)){
330
- list.transparent.lit[0].itemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
331
- list.transparent.lit[0].skinItemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
332
- list.transparent.unlit[0].itemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
333
- list.transparent.unlit[0].skinItemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
377
+ if (this._itemList) {
378
+ this._itemList.transparent.lit[0].itemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
379
+ this._itemList.transparent.lit[0].skinItemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
380
+ this._itemList.transparent.lit[0].morphItemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
381
+ this._itemList.transparent.lit[0].skinAndMorphItemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
382
+ this._itemList.transparent.unlit[0].itemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
383
+ this._itemList.transparent.unlit[0].skinItemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
384
+ this._itemList.transparent.unlit[0].morphItemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
385
+ this._itemList.transparent.unlit[0].skinAndMorphItemList.sort((a, b)=>this.drawableDistanceToCamera(b.drawable, cameraPos) - this.drawableDistanceToCamera(a.drawable, cameraPos));
334
386
  }
335
387
  }
336
388
  drawableDistanceToCamera(drawable, cameraPos) {
337
389
  const drawablePos = drawable.getXForm().position;
338
390
  return Vector3.distanceSq(drawablePos, cameraPos);
339
391
  }
340
- newRenderItemList(empty) {
392
+ newRenderItemListInfo() {
341
393
  return {
342
- opaque: {
343
- lit: empty ? [] : [
344
- {
345
- itemList: [],
346
- skinItemList: [],
347
- instanceItemList: [],
348
- materialList: new Set(),
349
- instanceList: {},
350
- renderQueue: this
351
- }
352
- ],
353
- unlit: empty ? [] : [
354
- {
355
- itemList: [],
356
- skinItemList: [],
357
- instanceItemList: [],
358
- materialList: new Set(),
359
- instanceList: {},
360
- renderQueue: this
361
- }
362
- ]
363
- },
364
- transparent: {
365
- lit: empty ? [] : [
366
- {
367
- itemList: [],
368
- skinItemList: [],
369
- instanceItemList: [],
370
- materialList: new Set(),
371
- instanceList: {},
372
- renderQueue: this
373
- }
374
- ],
375
- unlit: empty ? [] : [
376
- {
377
- itemList: [],
378
- skinItemList: [],
379
- instanceItemList: [],
380
- materialList: new Set(),
381
- instanceList: {},
382
- renderQueue: this
383
- }
384
- ]
385
- }
394
+ itemList: [],
395
+ skinItemList: [],
396
+ morphItemList: [],
397
+ skinAndMorphItemList: [],
398
+ instanceItemList: [],
399
+ materialList: new Set(),
400
+ instanceList: {},
401
+ renderQueue: this
402
+ };
403
+ }
404
+ newRenderItemListBundle() {
405
+ return {
406
+ lit: [
407
+ this.newRenderItemListInfo()
408
+ ],
409
+ unlit: [
410
+ this.newRenderItemListInfo()
411
+ ]
412
+ };
413
+ }
414
+ newRenderItemList() {
415
+ return {
416
+ opaque: this.newRenderItemListBundle(),
417
+ transmission: this.newRenderItemListBundle(),
418
+ transparent: this.newRenderItemListBundle()
386
419
  };
387
420
  }
388
421
  }
@@ -1 +1 @@
1
- {"version":3,"file":"render_queue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"render_queue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}