@zephyr3d/scene 0.5.0 → 0.6.1
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/README.md +1 -1
- package/dist/animation/animationset.js +37 -37
- package/dist/animation/morphtrack.js +7 -5
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/skeleton.js +11 -9
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/asset/assetmanager.js +2 -2
- package/dist/asset/loaders/gltf/gltf_loader.js +7 -3
- package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
- package/dist/asset/loaders/image/webimage_loader.js +16 -0
- package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
- package/dist/asset/model.js +3 -9
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js +222 -0
- package/dist/{render/temporalcache.js.map → blitter/bilateralblur.js.map} +1 -1
- package/dist/blitter/blitter.js +7 -1
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/blitter/depthlimitedgaussion.js +96 -39
- package/dist/blitter/depthlimitedgaussion.js.map +1 -1
- package/dist/blitter/gaussianblur.js +21 -21
- package/dist/camera/camera.js +142 -1
- package/dist/camera/camera.js.map +1 -1
- package/dist/index.d.ts +1178 -745
- package/dist/index.js +11 -6
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +9 -3
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/lambert.js +6 -2
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +3 -1
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +73 -33
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +5 -4
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +17 -7
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +5 -5
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +13 -4
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +13 -4
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +27 -15
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/pbrmr.js +14 -3
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +14 -3
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +36 -21
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/posteffect/bloom.js +1 -10
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js +43 -24
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/fxaa.js +3 -11
- package/dist/posteffect/fxaa.js.map +1 -1
- package/dist/posteffect/grayscale.js +3 -11
- package/dist/posteffect/grayscale.js.map +1 -1
- package/dist/posteffect/posteffect.js +4 -0
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js +44 -24
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/ssr.js +536 -0
- package/dist/{material/lit.js.map → posteffect/ssr.js.map} +1 -1
- package/dist/posteffect/tonemap.js +3 -11
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/posteffect/water.js +305 -337
- package/dist/posteffect/water.js.map +1 -1
- package/dist/render/abuffer_oit.js +2 -2
- package/dist/render/clipmap.js +16 -19
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cull_visitor.js +5 -3
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/depthpass.js +17 -1
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +25 -19
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/envlight.js +4 -2
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +989 -0
- package/dist/{shaders/framework.js.map → render/fft_wavegenerator.js.map} +1 -1
- package/dist/render/gerstner_wavegenerator.js +265 -0
- package/dist/{material/standard.js.map → render/gerstner_wavegenerator.js.map} +1 -1
- package/dist/render/globalbindgroup_allocator.js +2 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/hzb.js +273 -0
- package/dist/{material/terrainlightmodel.js.map → render/hzb.js.map} +1 -1
- package/dist/render/lightpass.js +35 -3
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/objectcolorpass.js +2 -1
- package/dist/render/objectcolorpass.js.map +1 -1
- package/dist/render/render_queue.js +72 -52
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderbundle_wrapper.js +79 -0
- package/dist/render/renderbundle_wrapper.js.map +1 -1
- package/dist/render/renderer.js +75 -36
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/renderpass.js +16 -13
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/shadowmap_pass.js +6 -0
- package/dist/render/shadowmap_pass.js.map +1 -1
- package/dist/render/sky.js +12 -13
- package/dist/render/sky.js.map +1 -1
- package/dist/render/watermesh.js +94 -828
- package/dist/render/watermesh.js.map +1 -1
- package/dist/render/wavegenerator.js +8 -0
- package/dist/render/wavegenerator.js.map +1 -0
- package/dist/scene/batchgroup.js +60 -14
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +2 -2
- package/dist/scene/graph_node.js +0 -5
- package/dist/scene/graph_node.js.map +1 -1
- package/dist/scene/light.js +5 -5
- package/dist/scene/mesh.js +34 -18
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/octree.js +5 -2
- package/dist/scene/octree.js.map +1 -1
- package/dist/scene/raycast_visitor.js +4 -2
- package/dist/scene/raycast_visitor.js.map +1 -1
- package/dist/scene/scene.js +1 -1
- package/dist/scene/scene_node.js +9 -5
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain/grass.js +3 -4
- package/dist/scene/terrain/grass.js.map +1 -1
- package/dist/scene/terrain/heightfield.js +135 -53
- package/dist/scene/terrain/heightfield.js.map +1 -1
- package/dist/scene/terrain/patch.js +3 -4
- package/dist/scene/terrain/patch.js.map +1 -1
- package/dist/scene/terrain/terrain.js +1 -1
- package/dist/scene/xform.js +7 -9
- package/dist/scene/xform.js.map +1 -1
- package/dist/shaders/misc.js +10 -1
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js +81 -16
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/shadow.js +1 -9
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssr.js +442 -0
- package/dist/{material/terrainmat.js.map → shaders/ssr.js.map} +1 -1
- package/dist/shaders/water.js +377 -250
- package/dist/shaders/water.js.map +1 -1
- package/dist/shadow/shadowmapper.js +11 -11
- package/dist/shapes/cylinder.js +6 -5
- package/dist/shapes/cylinder.js.map +1 -1
- package/dist/utility/bounding_volume.js +1 -53
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/misc.js +93 -0
- package/dist/utility/misc.js.map +1 -0
- package/dist/utility/shprojection.js +2 -7
- package/dist/utility/shprojection.js.map +1 -1
- package/dist/utility/textures/ggxlut.js +213 -0
- package/dist/utility/textures/ggxlut.js.map +1 -0
- package/dist/utility/textures/gradientnoise.js +61 -0
- package/dist/utility/textures/gradientnoise.js.map +1 -0
- package/dist/utility/textures/randomnoise.js +41 -0
- package/dist/utility/textures/randomnoise.js.map +1 -0
- package/dist/values.js +8 -1
- package/dist/values.js.map +1 -1
- package/package.json +4 -8
- package/dist/animation/usertrack.js +0 -47
- package/dist/animation/usertrack.js.map +0 -1
- package/dist/material/grassmat.js +0 -127
- package/dist/material/grassmat.js.map +0 -1
- package/dist/material/lightmodel.js +0 -2074
- package/dist/material/lightmodel.js.map +0 -1
- package/dist/material/lit.js +0 -578
- package/dist/material/mixins/pbr/metallicroughness.js +0 -126
- package/dist/material/mixins/pbr/metallicroughness.js.map +0 -1
- package/dist/material/mixins/pbr/specularglossness.js +0 -104
- package/dist/material/mixins/pbr/specularglossness.js.map +0 -1
- package/dist/material/pbr.js +0 -27
- package/dist/material/pbr.js.map +0 -1
- package/dist/material/standard.js +0 -282
- package/dist/material/terrainlightmodel.js +0 -259
- package/dist/material/terrainmat.js +0 -357
- package/dist/render/depth_pass.js +0 -47
- package/dist/render/depth_pass.js.map +0 -1
- package/dist/render/forward.js +0 -186
- package/dist/render/forward.js.map +0 -1
- package/dist/render/forward_pass.js +0 -137
- package/dist/render/forward_pass.js.map +0 -1
- package/dist/render/helper.js +0 -38
- package/dist/render/helper.js.map +0 -1
- package/dist/render/objectpool.js +0 -295
- package/dist/render/objectpool.js.map +0 -1
- package/dist/render/renderscheme.js +0 -61
- package/dist/render/renderscheme.js.map +0 -1
- package/dist/render/temporalcache.js +0 -222
- package/dist/scene/model.js +0 -111
- package/dist/scene/model.js.map +0 -1
- package/dist/scene/octree_update_visitor.js +0 -20
- package/dist/scene/octree_update_visitor.js.map +0 -1
- package/dist/shaders/builtins.js +0 -110
- package/dist/shaders/builtins.js.map +0 -1
- package/dist/shaders/framework.js +0 -723
- package/dist/shaders/lighting.js +0 -335
- package/dist/shaders/lighting.js.map +0 -1
- package/dist/utility/sheenlut.js +0 -196
- package/dist/utility/sheenlut.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"water.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"water.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -5,13 +5,14 @@ import '../material/lambert.js';
|
|
|
5
5
|
import '../material/blinn.js';
|
|
6
6
|
import '../material/unlit.js';
|
|
7
7
|
import '@zephyr3d/device';
|
|
8
|
+
import '../values.js';
|
|
9
|
+
import '../app.js';
|
|
8
10
|
import '../material/meshmaterial.js';
|
|
9
11
|
import '../material/grassmaterial.js';
|
|
10
12
|
import '../material/terrainmaterial.js';
|
|
11
13
|
import '../material/pbrmr.js';
|
|
12
14
|
import '../material/pbrsg.js';
|
|
13
15
|
import '@zephyr3d/base';
|
|
14
|
-
import '../app.js';
|
|
15
16
|
|
|
16
17
|
/**
|
|
17
18
|
* per-pixel linked list OIT renderer using ABuffer.
|
|
@@ -342,7 +343,6 @@ import '../app.js';
|
|
|
342
343
|
stencilStates.setBackOp('keep', 'keep', 'replace');
|
|
343
344
|
stencilStates.setReference(0);
|
|
344
345
|
stencilStates.setReadMask(0xff);
|
|
345
|
-
console.log(this._compositeProgram.getShaderSource('fragment'));
|
|
346
346
|
}
|
|
347
347
|
return this._compositeProgram;
|
|
348
348
|
}
|
package/dist/render/clipmap.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { AABB,
|
|
1
|
+
import { AABB, Matrix4x4, Vector3, ClipState, Vector2 } from '@zephyr3d/base';
|
|
2
2
|
import { Primitive } from './primitive.js';
|
|
3
3
|
|
|
4
4
|
const tmpAABB = new AABB();
|
|
5
|
-
const tmpExtents = new Vector2(0, 0);
|
|
6
5
|
const modelMatrices = [
|
|
7
6
|
Matrix4x4.identity(),
|
|
8
7
|
// rotation z 270
|
|
@@ -358,37 +357,35 @@ const modelMatrices = [
|
|
|
358
357
|
intervalsOverlap(a0, a1, b0, b1) {
|
|
359
358
|
return a0 <= b1 && b0 <= a1;
|
|
360
359
|
}
|
|
361
|
-
visible(aabb, camera, modelMatrix, offset, scale,
|
|
360
|
+
visible(ctx, aabb, camera, modelMatrix, offset, scale, gridScale) {
|
|
362
361
|
if (!modelMatrix) {
|
|
363
362
|
tmpAABB.minPoint.set(aabb.minPoint);
|
|
364
363
|
tmpAABB.maxPoint.set(aabb.maxPoint);
|
|
365
364
|
} else {
|
|
366
365
|
AABB.transform(aabb, modelMatrix, tmpAABB);
|
|
367
366
|
}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
tmpAABB.minPoint.y
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
tmpAABB.maxPoint.y = AABBExtents.y;
|
|
367
|
+
const minX = (tmpAABB.minPoint.x * scale + offset.x) * gridScale;
|
|
368
|
+
const maxX = (tmpAABB.maxPoint.x * scale + offset.x) * gridScale;
|
|
369
|
+
const minZ = (tmpAABB.minPoint.y * scale + offset.y) * gridScale;
|
|
370
|
+
const maxZ = (tmpAABB.maxPoint.y * scale + offset.y) * gridScale;
|
|
371
|
+
ctx.calcAABB(ctx.userData, minX, maxX, minZ, maxZ, tmpAABB);
|
|
374
372
|
return tmpAABB.getClipStateWithFrustum(camera.frustum) !== ClipState.NOT_CLIPPED;
|
|
375
373
|
}
|
|
376
374
|
draw(context, numMipmaps) {
|
|
377
375
|
let drawn = 0;
|
|
378
|
-
const distX = Math.max(Math.abs(context.position.x - context.
|
|
379
|
-
const distY = Math.max(Math.abs(context.position.y - context.
|
|
376
|
+
const distX = Math.max(Math.abs(context.position.x - context.minMaxWorldPos.x), Math.abs(context.position.x - context.minMaxWorldPos.z));
|
|
377
|
+
const distY = Math.max(Math.abs(context.position.y - context.minMaxWorldPos.y), Math.abs(context.position.y - context.minMaxWorldPos.w));
|
|
380
378
|
const maxDist = Math.min(Math.max(distX, distY), context.camera.getFarPlane());
|
|
381
|
-
const mipLevels = Math.ceil(Math.log2(maxDist / (this._tileResolution * context.gridScale))) + 1;
|
|
379
|
+
const mipLevels = Math.max(Math.ceil(Math.log2(maxDist / (this._tileResolution * context.gridScale))), 0) + 1;
|
|
382
380
|
const snappedPos = new Vector2();
|
|
383
381
|
const tileSize = new Vector2();
|
|
384
382
|
const base = new Vector2();
|
|
385
383
|
const offset = new Vector2();
|
|
386
384
|
const posX = context.position.x / context.gridScale;
|
|
387
385
|
const posY = context.position.y / context.gridScale;
|
|
388
|
-
const h = context.AABBExtents ?? tmpExtents;
|
|
389
386
|
// draw cross
|
|
390
387
|
snappedPos.setXY(Math.floor(posX), Math.floor(posY));
|
|
391
|
-
if (this.visible(this._crossMeshAABB, context.camera, null, snappedPos, 1,
|
|
388
|
+
if (this.visible(context, this._crossMeshAABB, context.camera, null, snappedPos, 1, context.gridScale)) {
|
|
392
389
|
context.drawPrimitive(this._crossMesh, modelMatrices[0], snappedPos, 1, context.gridScale);
|
|
393
390
|
drawn++;
|
|
394
391
|
}
|
|
@@ -406,8 +403,8 @@ const modelMatrices = [
|
|
|
406
403
|
const fillX = x >= 2 ? scale : 0;
|
|
407
404
|
const fillY = y >= 2 ? scale : 0;
|
|
408
405
|
offset.setXY(base.x + x * tileSize.x + fillX, base.y + y * tileSize.y + fillY);
|
|
409
|
-
if (this.intervalsOverlap(offset.x * context.gridScale, (offset.x + tileSize.x) * context.gridScale, context.
|
|
410
|
-
if (this.visible(this._tileMeshBBox, context.camera, null, offset, scale,
|
|
406
|
+
if (this.intervalsOverlap(offset.x * context.gridScale, (offset.x + tileSize.x) * context.gridScale, context.minMaxWorldPos.x, context.minMaxWorldPos.z) && this.intervalsOverlap(offset.y * context.gridScale, (offset.y + tileSize.y) * context.gridScale, context.minMaxWorldPos.y, context.minMaxWorldPos.w)) {
|
|
407
|
+
if (this.visible(context, this._tileMeshBBox, context.camera, null, offset, scale, context.gridScale)) {
|
|
411
408
|
context.drawPrimitive(this._tileMesh, modelMatrices[0], offset, scale, context.gridScale);
|
|
412
409
|
drawn++;
|
|
413
410
|
}
|
|
@@ -415,7 +412,7 @@ const modelMatrices = [
|
|
|
415
412
|
}
|
|
416
413
|
}
|
|
417
414
|
// draw filler
|
|
418
|
-
if (this.visible(this._fillerMeshAABB, context.camera, null, snappedPos, scale,
|
|
415
|
+
if (this.visible(context, this._fillerMeshAABB, context.camera, null, snappedPos, scale, context.gridScale)) {
|
|
419
416
|
context.drawPrimitive(this._fillerMesh, modelMatrices[0], snappedPos, scale, context.gridScale);
|
|
420
417
|
drawn++;
|
|
421
418
|
}
|
|
@@ -428,13 +425,13 @@ const modelMatrices = [
|
|
|
428
425
|
let r = 0;
|
|
429
426
|
r |= d.x >= scale ? 0 : 2;
|
|
430
427
|
r |= d.y >= scale ? 0 : 1;
|
|
431
|
-
if (this.visible(this._trimMeshAABB, context.camera, r === 0 ? null : modelMatrices[r], tileCentre, scale,
|
|
428
|
+
if (this.visible(context, this._trimMeshAABB, context.camera, r === 0 ? null : modelMatrices[r], tileCentre, scale, context.gridScale)) {
|
|
432
429
|
context.drawPrimitive(this._trimMesh, modelMatrices[r], tileCentre, scale, context.gridScale);
|
|
433
430
|
drawn++;
|
|
434
431
|
}
|
|
435
432
|
// draw seam
|
|
436
433
|
const nextBase = new Vector2(nextSnappedPos.x - (this._tileResolution << l + 1), nextSnappedPos.y - (this._tileResolution << l + 1));
|
|
437
|
-
if (this.visible(this._seamMeshAABB, context.camera, null, nextBase, scale,
|
|
434
|
+
if (this.visible(context, this._seamMeshAABB, context.camera, null, nextBase, scale, context.gridScale)) {
|
|
438
435
|
context.drawPrimitive(this._seamMesh, modelMatrices[0], nextBase, scale, context.gridScale);
|
|
439
436
|
drawn++;
|
|
440
437
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipmap.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clipmap.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -94,9 +94,11 @@ import { RENDER_PASS_TYPE_SHADOWMAP } from '../values.js';
|
|
|
94
94
|
}
|
|
95
95
|
/** @internal */ visitBatchGroup(node) {
|
|
96
96
|
if (!node.hidden) {
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
97
|
+
const clipState = this.getClipStateWithNode(node);
|
|
98
|
+
if (clipState !== ClipState.NOT_CLIPPED) {
|
|
99
|
+
node.cull(this);
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
100
102
|
}
|
|
101
103
|
return false;
|
|
102
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cull_visitor.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cull_visitor.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/render/depthpass.js
CHANGED
|
@@ -9,13 +9,29 @@ import { ShaderHelper } from '../material/shader/helper.js';
|
|
|
9
9
|
*
|
|
10
10
|
* @public
|
|
11
11
|
*/ class DepthPass extends RenderPass {
|
|
12
|
+
_renderBackface;
|
|
13
|
+
_encodeDepth;
|
|
12
14
|
/**
|
|
13
15
|
* Creates an instance of DepthRenderPass
|
|
14
16
|
*/ constructor(){
|
|
15
17
|
super(RENDER_PASS_TYPE_DEPTH);
|
|
18
|
+
this._renderBackface = false;
|
|
19
|
+
this._encodeDepth = false;
|
|
20
|
+
}
|
|
21
|
+
get renderBackface() {
|
|
22
|
+
return this._renderBackface;
|
|
23
|
+
}
|
|
24
|
+
set renderBackface(val) {
|
|
25
|
+
this._renderBackface = !!val;
|
|
26
|
+
}
|
|
27
|
+
get encodeDepth() {
|
|
28
|
+
return this._encodeDepth;
|
|
29
|
+
}
|
|
30
|
+
set encodeDepth(val) {
|
|
31
|
+
this._encodeDepth = !!val;
|
|
16
32
|
}
|
|
17
33
|
/** @internal */ _getGlobalBindGroupHash(ctx) {
|
|
18
|
-
return
|
|
34
|
+
return `${Number(this._renderBackface)}:${Number(this._encodeDepth)}`;
|
|
19
35
|
}
|
|
20
36
|
/** @internal */ renderItems(ctx, renderQueue) {
|
|
21
37
|
const items = renderQueue.itemList;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depthpass.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"depthpass.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { Vector4 } from '@zephyr3d/base';
|
|
2
|
-
import { ProgramBuilder } from '@zephyr3d/device';
|
|
3
2
|
import { ShaderHelper } from '../material/shader/helper.js';
|
|
4
3
|
import '../material/lambert.js';
|
|
5
4
|
import '../material/blinn.js';
|
|
6
5
|
import '../material/unlit.js';
|
|
6
|
+
import '@zephyr3d/device';
|
|
7
|
+
import { MaterialVaryingFlags } from '../values.js';
|
|
8
|
+
import { Application } from '../app.js';
|
|
7
9
|
import '../material/meshmaterial.js';
|
|
8
10
|
import '../material/grassmaterial.js';
|
|
9
11
|
import '../material/terrainmaterial.js';
|
|
10
12
|
import '../material/pbrmr.js';
|
|
11
13
|
import '../material/pbrsg.js';
|
|
12
|
-
import { Application } from '../app.js';
|
|
13
14
|
|
|
14
15
|
let _drawableId = 0;
|
|
16
|
+
const instanceBindGroupTransfromTags = new WeakMap();
|
|
17
|
+
const drawableBindGroupTransfromTags = new WeakMap();
|
|
15
18
|
function mixinDrawable(baseCls) {
|
|
16
19
|
const cls = class extends baseCls {
|
|
17
20
|
_mdRenderQueueRef;
|
|
@@ -75,11 +78,23 @@ function mixinDrawable(baseCls) {
|
|
|
75
78
|
}
|
|
76
79
|
applyTransformUniforms(renderQueue) {
|
|
77
80
|
const instanceInfo = renderQueue.getInstanceInfo(this);
|
|
78
|
-
const
|
|
81
|
+
const currentTag = this.getXForm().transformTag;
|
|
79
82
|
if (instanceInfo) {
|
|
80
|
-
|
|
83
|
+
const tag = instanceBindGroupTransfromTags.get(instanceInfo) ?? -1;
|
|
84
|
+
if (tag !== currentTag) {
|
|
85
|
+
instanceInfo.bindGroup.bindGroup.setRawData(ShaderHelper.getInstanceDataUniformName(), instanceInfo.offset * 4, this.getXForm().worldMatrix, 0, 16);
|
|
86
|
+
instanceBindGroupTransfromTags.set(instanceInfo, tag);
|
|
87
|
+
}
|
|
81
88
|
} else {
|
|
82
|
-
drawableBindGroup.
|
|
89
|
+
const drawableBindGroup = this.getDrawableBindGroup(Application.instance.device, false, renderQueue);
|
|
90
|
+
const tag = drawableBindGroupTransfromTags.get(drawableBindGroup) ?? -1;
|
|
91
|
+
if (tag !== currentTag) {
|
|
92
|
+
drawableBindGroup.setValue(ShaderHelper.getWorldMatrixUniformName(), this.getXForm().worldMatrix);
|
|
93
|
+
if (this.getBoneMatrices()) {
|
|
94
|
+
drawableBindGroup.setValue(ShaderHelper.getBoneInvBindMatrixUniformName(), this.invWorldMatrix);
|
|
95
|
+
}
|
|
96
|
+
drawableBindGroupTransfromTags.set(drawableBindGroup, tag);
|
|
97
|
+
}
|
|
83
98
|
}
|
|
84
99
|
}
|
|
85
100
|
applyMaterialUniforms(instanceInfo) {
|
|
@@ -93,13 +108,13 @@ function mixinDrawable(baseCls) {
|
|
|
93
108
|
const drawableBindGroup = this.getDrawableBindGroup(device, !!ctx.instanceData, ctx.renderQueue);
|
|
94
109
|
device.setBindGroup(1, drawableBindGroup);
|
|
95
110
|
device.setBindGroup(3, ctx.instanceData ? ctx.instanceData.bindGroup.bindGroup : null);
|
|
96
|
-
if (ctx.
|
|
111
|
+
if (ctx.materialFlags & MaterialVaryingFlags.SKIN_ANIMATION) {
|
|
97
112
|
const boneTexture = this.getBoneMatrices();
|
|
98
113
|
drawableBindGroup.setTexture(ShaderHelper.getBoneMatricesUniformName(), boneTexture);
|
|
99
|
-
drawableBindGroup.setValue(ShaderHelper.getBoneInvBindMatrixUniformName(), this.
|
|
114
|
+
drawableBindGroup.setValue(ShaderHelper.getBoneInvBindMatrixUniformName(), this.invWorldMatrix);
|
|
100
115
|
drawableBindGroup.setValue(ShaderHelper.getBoneTextureSizeUniformName(), boneTexture.width);
|
|
101
116
|
}
|
|
102
|
-
if (ctx.
|
|
117
|
+
if (ctx.materialFlags & MaterialVaryingFlags.MORPH_ANIMATION) {
|
|
103
118
|
const morphData = this.getMorphData();
|
|
104
119
|
const morphInfo = this.getMorphInfo();
|
|
105
120
|
drawableBindGroup.setTexture(ShaderHelper.getMorphDataUniformName(), morphData);
|
|
@@ -111,16 +126,8 @@ function mixinDrawable(baseCls) {
|
|
|
111
126
|
const morphing = !!this.getMorphData();
|
|
112
127
|
let bindGroup = instancing ? this._mdDrawableBindGroupInstanced.get(renderQueue) : skinning && morphing ? this._mdDrawableBindGroupSkinMorph : skinning ? this._mdDrawableBindGroupSkin : morphing ? this._mdDrawableBindGroupMorph : this._mdDrawableBindGroup;
|
|
113
128
|
if (!bindGroup) {
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
ShaderHelper.vertexShaderDrawableStuff(this, skinning, morphing, instancing);
|
|
117
|
-
pb.main(function() {});
|
|
118
|
-
},
|
|
119
|
-
fragment (pb) {
|
|
120
|
-
pb.main(function() {});
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
bindGroup = device.createBindGroup(buildInfo[2][1]);
|
|
129
|
+
const layout = ShaderHelper.getDrawableBindGroupLayout(skinning, morphing, instancing);
|
|
130
|
+
bindGroup = device.createBindGroup(layout);
|
|
124
131
|
if (instancing) {
|
|
125
132
|
this._mdDrawableBindGroupInstanced.set(renderQueue, bindGroup);
|
|
126
133
|
} else if (skinning && morphing) {
|
|
@@ -128,7 +135,6 @@ function mixinDrawable(baseCls) {
|
|
|
128
135
|
} else if (skinning) {
|
|
129
136
|
this._mdDrawableBindGroupSkin = bindGroup;
|
|
130
137
|
} else if (morphing) {
|
|
131
|
-
const layout = buildInfo[2][1];
|
|
132
138
|
const bindName = layout.nameMap?.[ShaderHelper.getMorphInfoUniformName()] ?? ShaderHelper.getMorphInfoUniformName();
|
|
133
139
|
for(let binding = 0; binding < layout.entries.length; binding++){
|
|
134
140
|
const bindingPoint = layout.entries[binding];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawable_mixin.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drawable_mixin.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/render/envlight.js
CHANGED
|
@@ -390,7 +390,9 @@ import { Application } from '../app.js';
|
|
|
390
390
|
* {@inheritDoc EnvironmentLighting.getRadiance}
|
|
391
391
|
* @override
|
|
392
392
|
*/ getRadiance(scope, refl, roughness) {
|
|
393
|
-
|
|
393
|
+
const pb = scope.$builder;
|
|
394
|
+
const factor = pb.add(pb.mul(refl.y, 0.5), 0.5);
|
|
395
|
+
return pb.mix(scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_DOWN], scope[EnvHemisphericAmbient.UNIFORM_NAME_AMBIENT_UP], factor).rgb;
|
|
394
396
|
}
|
|
395
397
|
/**
|
|
396
398
|
* {@inheritDoc EnvironmentLighting.getIrradiance}
|
|
@@ -404,7 +406,7 @@ import { Application } from '../app.js';
|
|
|
404
406
|
* {@inheritDoc EnvironmentLighting.hasRadiance}
|
|
405
407
|
* @override
|
|
406
408
|
*/ hasRadiance() {
|
|
407
|
-
return
|
|
409
|
+
return true;
|
|
408
410
|
}
|
|
409
411
|
/**
|
|
410
412
|
* {@inheritDoc EnvironmentLighting.hasIrradiance}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envlight.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"envlight.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|