@zephyr3d/scene 0.7.0 → 0.8.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/animation/animation.js +4 -33
- package/dist/animation/animation.js.map +1 -1
- package/dist/animation/animationset.js +24 -11
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js +1 -0
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +0 -1
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/ik/ccd_solver.js +372 -0
- package/dist/animation/ik/ccd_solver.js.map +1 -0
- package/dist/animation/ik/fabrik_solver.js +399 -0
- package/dist/animation/ik/fabrik_solver.js.map +1 -0
- package/dist/animation/ik/ik_angle_constraint.js +181 -0
- package/dist/animation/ik/ik_angle_constraint.js.map +1 -0
- package/dist/animation/ik/ik_chain.js +163 -0
- package/dist/animation/ik/ik_chain.js.map +1 -0
- package/dist/animation/ik/ik_chain_builder.js +68 -0
- package/dist/animation/ik/ik_chain_builder.js.map +1 -0
- package/dist/animation/ik/ik_constraint.js +25 -0
- package/dist/animation/ik/ik_constraint.js.map +1 -0
- package/dist/animation/ik/ik_pole_constraint.js +123 -0
- package/dist/animation/ik/ik_pole_constraint.js.map +1 -0
- package/dist/animation/ik/ik_solver.js +48 -0
- package/dist/animation/ik/ik_solver.js.map +1 -0
- package/dist/animation/ik/ik_track.js +96 -0
- package/dist/animation/ik/ik_track.js.map +1 -0
- package/dist/animation/ik/ik_utils.js +270 -0
- package/dist/animation/ik/ik_utils.js.map +1 -0
- package/dist/animation/ik/two_bone_ik_solver.js +332 -0
- package/dist/animation/ik/two_bone_ik_solver.js.map +1 -0
- package/dist/animation/ik_modifier.js +61 -0
- package/dist/animation/ik_modifier.js.map +1 -0
- package/dist/animation/ik_postprocessor.js +71 -0
- package/dist/animation/ik_postprocessor.js.map +1 -0
- package/dist/animation/manual_transform_processor.js +156 -0
- package/dist/animation/manual_transform_processor.js.map +1 -0
- package/dist/animation/morphtarget.js +7 -1
- package/dist/animation/morphtarget.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -3
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/proptrack.js +37 -41
- package/dist/animation/proptrack.js.map +1 -1
- package/dist/animation/rotationtrack.js +0 -1
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +0 -1
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +57 -60
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js +38 -0
- package/dist/animation/skeleton_modifier.js.map +1 -0
- package/dist/animation/skeleton_postprocessor.js +50 -0
- package/dist/animation/skeleton_postprocessor.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +503 -0
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -0
- package/dist/animation/spring/spring_chain.js +103 -0
- package/dist/animation/spring/spring_chain.js.map +1 -0
- package/dist/animation/spring/spring_collider.js +247 -0
- package/dist/animation/spring/spring_collider.js.map +1 -0
- package/dist/animation/spring/spring_constraint.js +21 -0
- package/dist/animation/spring/spring_constraint.js.map +1 -0
- package/dist/animation/spring/spring_particle.js +20 -0
- package/dist/animation/spring/spring_particle.js.map +1 -0
- package/dist/animation/spring/spring_system.js +526 -0
- package/dist/animation/spring/spring_system.js.map +1 -0
- package/dist/animation/spring_modifier.js +45 -0
- package/dist/animation/spring_modifier.js.map +1 -0
- package/dist/animation/spring_postprocessor.js +54 -0
- package/dist/animation/spring_postprocessor.js.map +1 -0
- package/dist/animation/translationtrack.js +0 -1
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app/api.js +13 -4
- package/dist/app/api.js.map +1 -1
- package/dist/app/app.js +13 -1
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +33 -45
- package/dist/app/engine.js.map +1 -1
- package/dist/app/inputmgr.js.map +1 -1
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/screen.js +318 -0
- package/dist/app/screen.js.map +1 -0
- package/dist/app/scriptingsystem.js +10 -6
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +11 -22
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +79 -58
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/builtin.js +5 -5
- package/dist/asset/builtin.js.map +1 -1
- package/dist/asset/loaders/dds/dds.js +6 -2
- package/dist/asset/loaders/dds/dds.js.map +1 -1
- package/dist/asset/loaders/dds/dds_loader.js +1 -1
- package/dist/asset/loaders/dds/dds_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +14 -6
- package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/helpers.js +6 -2
- package/dist/asset/loaders/gltf/helpers.js.map +1 -1
- package/dist/asset/loaders/hdr/hdr.js +22 -15
- package/dist/asset/loaders/hdr/hdr.js.map +1 -1
- package/dist/asset/loaders/image/tga_Loader.js +2 -1
- package/dist/asset/loaders/image/tga_Loader.js.map +1 -1
- package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
- package/dist/asset/loaders/loader.js +2 -2
- package/dist/asset/loaders/loader.js.map +1 -1
- package/dist/asset/model.js +9 -5
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/blitter.js +9 -11
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/blitter/box.js +0 -1
- package/dist/blitter/box.js.map +1 -1
- package/dist/blitter/copy.js.map +1 -1
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +1 -3
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +121 -37
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/fps.js +19 -17
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +45 -43
- package/dist/camera/orbit.js.map +1 -1
- package/dist/camera/orthocamera.js +27 -21
- package/dist/camera/orthocamera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +28 -19
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +15802 -15577
- package/dist/index.js +33 -11
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/grassmaterial.js.map +1 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +11 -5
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +10 -9
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/foliage.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +66 -4
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +7 -0
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +3 -3
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/brdf.js.map +1 -1
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +3 -0
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/particle.js.map +1 -1
- package/dist/material/pbrblueprint.js +180 -22
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +41 -56
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/sprite.js +301 -0
- package/dist/material/sprite.js.map +1 -0
- package/dist/material/sprite3d.js +301 -0
- package/dist/material/sprite3d.js.map +1 -0
- package/dist/material/sprite3d_std.js +116 -0
- package/dist/material/sprite3d_std.js.map +1 -0
- package/dist/material/sprite3dblueprint.js +235 -0
- package/dist/material/sprite3dblueprint.js.map +1 -0
- package/dist/material/sprite_std.js +116 -0
- package/dist/material/sprite_std.js.map +1 -0
- package/dist/material/spriteblueprint.js +235 -0
- package/dist/material/spriteblueprint.js.map +1 -0
- package/dist/material/terrain-cm.js +0 -1
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/fxaa.js.map +1 -1
- package/dist/posteffect/grayscale.js.map +1 -1
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/ssr.js +7 -5
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +8 -6
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +0 -10
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +4 -4
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +15 -17
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/depthpass.js +3 -4
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable.js +15 -0
- package/dist/render/drawable.js.map +1 -0
- package/dist/render/drawable_mixin.js +8 -4
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +3 -1
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +67 -64
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/fullscreenquad.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +3 -1
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +3 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/hzb.js +1 -2
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/lightpass.js +13 -13
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/objectcolorpass.js +4 -7
- package/dist/render/objectcolorpass.js.map +1 -1
- package/dist/render/primitive.js +4 -5
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/render_queue.js +10 -5
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +16 -22
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/renderpass.js +27 -52
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/rendertarget.js +5 -0
- package/dist/render/rendertarget.js.map +1 -0
- package/dist/render/screenrendertarget.js +56 -0
- package/dist/render/screenrendertarget.js.map +1 -0
- package/dist/render/shadowmap_pass.js +4 -5
- package/dist/render/shadowmap_pass.js.map +1 -1
- package/dist/render/sky.js +16 -14
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +296 -0
- package/dist/scene/basesprite.js.map +1 -0
- package/dist/scene/batchgroup.js +4 -2
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +9 -10
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/graph_node.js.map +1 -1
- package/dist/scene/light.js +22 -4
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +96 -26
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/octree.js.map +1 -1
- package/dist/scene/particlesys.js +25 -22
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/raycast_visitor.js +0 -16
- package/dist/scene/raycast_visitor.js.map +1 -1
- package/dist/scene/scene.js +7 -4
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +20 -35
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/sprite.js +18 -0
- package/dist/scene/sprite.js.map +1 -0
- package/dist/scene/sprite3d.js +18 -0
- package/dist/scene/sprite3d.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +5 -4
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +3 -1
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +65 -48
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +35 -30
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/atmosphere.js +17 -29
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/pbr.js.map +1 -1
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js.map +1 -1
- package/dist/shadow/esm.js +1 -1
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/shader.js +3 -1
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadowmapper.js +6 -18
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/box.js +9 -3
- package/dist/shapes/box.js.map +1 -1
- package/dist/shapes/cylinder.js +2 -2
- package/dist/shapes/cylinder.js.map +1 -1
- package/dist/shapes/plane.js +2 -2
- package/dist/shapes/plane.js.map +1 -1
- package/dist/shapes/shape.js +2 -1
- package/dist/shapes/shape.js.map +1 -1
- package/dist/shapes/sphere.js +2 -2
- package/dist/shapes/sphere.js.map +1 -1
- package/dist/shapes/tetrahedron.js +5 -6
- package/dist/shapes/tetrahedron.js.map +1 -1
- package/dist/shapes/torus.js +2 -2
- package/dist/shapes/torus.js.map +1 -1
- package/dist/utility/aabbtree.js +1 -1
- package/dist/utility/aabbtree.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +578 -104
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/common/math.js +471 -9
- package/dist/utility/blueprint/common/math.js.map +1 -1
- package/dist/utility/blueprint/common.js +1 -1
- package/dist/utility/blueprint/common.js.map +1 -1
- package/dist/utility/blueprint/material/func.js +9 -5
- package/dist/utility/blueprint/material/func.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/blueprint/material/ir.js +288 -80
- package/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/utility/blueprint/material/pbr.js +92 -4
- package/dist/utility/blueprint/material/pbr.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +62 -45
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/blueprint/node.js +28 -1
- package/dist/utility/blueprint/node.js.map +1 -1
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/debug.js.map +1 -1
- package/dist/utility/draco/decoder.js.map +1 -1
- package/dist/utility/misc.js +1 -1
- package/dist/utility/misc.js.map +1 -1
- package/dist/utility/panorama.js.map +1 -1
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/rendermipmap.js.map +1 -1
- package/dist/utility/serialization/json.js +19 -15
- package/dist/utility/serialization/json.js.map +1 -1
- package/dist/utility/serialization/manager.js +89 -22
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +44 -41
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -3
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +97 -9
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +102 -28
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +14 -12
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +216 -26
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +71 -100
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/misc.js +3 -2
- package/dist/utility/serialization/scene/misc.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +42 -9
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +7 -5
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +18 -15
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +3 -2
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +164 -0
- package/dist/utility/serialization/scene/sprite.js.map +1 -0
- package/dist/utility/serialization/scene/terrain.js +8 -6
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +11 -9
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js +6 -0
- package/dist/utility/serialization/types.js.map +1 -0
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/gradientnoise.js.map +1 -1
- package/dist/utility/textures/randomnoise.js.map +1 -1
- package/dist/values.js +14 -14
- package/dist/values.js.map +1 -1
- package/package.json +80 -80
|
@@ -23,19 +23,18 @@ import { ShaderHelper } from '../material/shader/helper.js';
|
|
|
23
23
|
/** @internal */ _getGlobalBindGroupHash(ctx) {
|
|
24
24
|
return `${ctx.shadowMapInfo.get(this.light).shaderHash}`;
|
|
25
25
|
}
|
|
26
|
-
/** @internal */ renderItems(ctx, renderQueue) {
|
|
26
|
+
/** @internal */ renderItems(ctx, camera, renderQueue) {
|
|
27
27
|
const items = renderQueue.itemList;
|
|
28
28
|
if (items) {
|
|
29
29
|
ctx.drawEnvLight = false;
|
|
30
30
|
ctx.env = null;
|
|
31
|
-
ctx.fogFlags = 0;
|
|
32
31
|
ctx.flip = this.isAutoFlip(ctx);
|
|
33
|
-
ctx.renderPassHash = this.getGlobalBindGroupHash(ctx);
|
|
32
|
+
ctx.renderPassHash = this.getGlobalBindGroupHash(ctx, camera);
|
|
34
33
|
const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);
|
|
35
34
|
ctx.device.setBindGroup(0, bindGroup);
|
|
36
35
|
ShaderHelper.setLightUniformsShadowMap(bindGroup, ctx, this._currentLight);
|
|
37
|
-
ShaderHelper.setCameraUniforms(bindGroup, ctx, true);
|
|
38
|
-
const reverseWinding =
|
|
36
|
+
ShaderHelper.setCameraUniforms(bindGroup, ctx, camera, true);
|
|
37
|
+
const reverseWinding = camera.worldMatrixDet < 0;
|
|
39
38
|
for (const lit of items.opaque.lit){
|
|
40
39
|
this.drawItemList(lit, ctx, reverseWinding);
|
|
41
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shadowmap_pass.js","sources":["../../src/render/shadowmap_pass.ts"],"sourcesContent":["import { RenderPass } from './renderpass';\r\nimport { RENDER_PASS_TYPE_SHADOWMAP } from '../values';\r\nimport type { PunctualLight } from '../scene/light';\r\nimport type { RenderQueue } from './render_queue';\r\nimport type { DrawContext } from './drawable';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\n\r\n/**\r\n * Shadow map render pass\r\n *\r\n * @public\r\n */\r\nexport class ShadowMapPass extends RenderPass {\r\n /** @internal */\r\n protected _currentLight: PunctualLight
|
|
1
|
+
{"version":3,"file":"shadowmap_pass.js","sources":["../../src/render/shadowmap_pass.ts"],"sourcesContent":["import { RenderPass } from './renderpass';\r\nimport { RENDER_PASS_TYPE_SHADOWMAP } from '../values';\r\nimport type { PunctualLight } from '../scene/light';\r\nimport type { RenderQueue } from './render_queue';\r\nimport type { DrawContext } from './drawable';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport type { Nullable } from '@zephyr3d/base';\r\nimport type { Camera } from '../camera';\r\n\r\n/**\r\n * Shadow map render pass\r\n *\r\n * @public\r\n */\r\nexport class ShadowMapPass extends RenderPass {\r\n /** @internal */\r\n protected _currentLight: Nullable<PunctualLight>;\r\n /**\r\n * Creates an instance of ShadowMapPass\r\n */\r\n constructor() {\r\n super(RENDER_PASS_TYPE_SHADOWMAP);\r\n this._currentLight = null;\r\n }\r\n /** The light that will be used to render shadow map */\r\n get light() {\r\n return this._currentLight;\r\n }\r\n set light(light) {\r\n this._currentLight = light;\r\n }\r\n /** @internal */\r\n protected _getGlobalBindGroupHash(ctx: DrawContext) {\r\n return `${ctx.shadowMapInfo!.get(this.light!)!.shaderHash}`;\r\n }\r\n /** @internal */\r\n protected renderItems(ctx: DrawContext, camera: Camera, renderQueue: RenderQueue) {\r\n const items = renderQueue.itemList;\r\n if (items) {\r\n ctx.drawEnvLight = false;\r\n ctx.env = null;\r\n ctx.flip = this.isAutoFlip(ctx);\r\n ctx.renderPassHash = this.getGlobalBindGroupHash(ctx, camera);\r\n const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);\r\n ctx.device.setBindGroup(0, bindGroup);\r\n ShaderHelper.setLightUniformsShadowMap(bindGroup, ctx, this._currentLight!);\r\n ShaderHelper.setCameraUniforms(bindGroup, ctx, camera, true);\r\n const reverseWinding = camera.worldMatrixDet < 0;\r\n for (const lit of items.opaque.lit) {\r\n this.drawItemList(lit, ctx, reverseWinding);\r\n }\r\n for (const unlit of items.opaque.unlit) {\r\n this.drawItemList(unlit, ctx, reverseWinding);\r\n }\r\n for (const lit of items.transmission.lit) {\r\n this.drawItemList(lit, ctx, reverseWinding);\r\n }\r\n for (const unlit of items.transmission.unlit) {\r\n this.drawItemList(unlit, ctx, reverseWinding);\r\n }\r\n }\r\n }\r\n}\r\n"],"names":["ShadowMapPass","RenderPass","RENDER_PASS_TYPE_SHADOWMAP","_currentLight","light","_getGlobalBindGroupHash","ctx","shadowMapInfo","get","shaderHash","camera","renderQueue","items","itemList","drawEnvLight","env","flip","isAutoFlip","renderPassHash","getGlobalBindGroupHash","bindGroup","globalBindGroupAllocator","getGlobalBindGroup","device","setBindGroup","ShaderHelper","setLightUniformsShadowMap","setCameraUniforms","reverseWinding","worldMatrixDet","lit","opaque","drawItemList","unlit","transmission"],"mappings":";;;;AASA;;;;IAKO,MAAMA,aAAsBC,SAAAA,UAAAA,CAAAA;qBAEjC,aAAiD;AACjD;;AAEC,MACD,WAAc,EAAA;AACZ,QAAA,KAAK,CAACC,0BAAAA,CAAAA;QACN,IAAI,CAACC,aAAa,GAAG,IAAA;AACvB;4DAEA,IAAIC,KAAQ,GAAA;QACV,OAAO,IAAI,CAACD,aAAa;AAC3B;IACA,IAAIC,KAAAA,CAAMA,KAAK,EAAE;QACf,IAAI,CAACD,aAAa,GAAGC,KAAAA;AACvB;AACA,qBACUC,uBAAwBC,CAAAA,GAAgB,EAAE;QAClD,OAAO,CAAA,EAAGA,GAAIC,CAAAA,aAAa,CAAEC,GAAG,CAAC,IAAI,CAACJ,KAAK,CAAIK,CAAAA,UAAU,CAAE,CAAA;AAC7D;qBAEA,WAAsBH,CAAAA,GAAgB,EAAEI,MAAc,EAAEC,WAAwB,EAAE;QAChF,MAAMC,KAAAA,GAAQD,YAAYE,QAAQ;AAClC,QAAA,IAAID,KAAO,EAAA;AACTN,YAAAA,GAAAA,CAAIQ,YAAY,GAAG,KAAA;AACnBR,YAAAA,GAAAA,CAAIS,GAAG,GAAG,IAAA;AACVT,YAAAA,GAAAA,CAAIU,IAAI,GAAG,IAAI,CAACC,UAAU,CAACX,GAAAA,CAAAA;AAC3BA,YAAAA,GAAAA,CAAIY,cAAc,GAAG,IAAI,CAACC,sBAAsB,CAACb,GAAKI,EAAAA,MAAAA,CAAAA;AACtD,YAAA,MAAMU,SAAYd,GAAAA,GAAAA,CAAIe,wBAAwB,CAACC,kBAAkB,CAAChB,GAAAA,CAAAA;AAClEA,YAAAA,GAAAA,CAAIiB,MAAM,CAACC,YAAY,CAAC,CAAGJ,EAAAA,SAAAA,CAAAA;AAC3BK,YAAAA,YAAAA,CAAaC,yBAAyB,CAACN,SAAAA,EAAWd,GAAK,EAAA,IAAI,CAACH,aAAa,CAAA;AACzEsB,YAAAA,YAAAA,CAAaE,iBAAiB,CAACP,SAAWd,EAAAA,GAAAA,EAAKI,MAAQ,EAAA,IAAA,CAAA;YACvD,MAAMkB,cAAAA,GAAiBlB,MAAOmB,CAAAA,cAAc,GAAG,CAAA;AAC/C,YAAA,KAAK,MAAMC,GAAOlB,IAAAA,KAAAA,CAAMmB,MAAM,CAACD,GAAG,CAAE;AAClC,gBAAA,IAAI,CAACE,YAAY,CAACF,GAAAA,EAAKxB,GAAKsB,EAAAA,cAAAA,CAAAA;AAC9B;AACA,YAAA,KAAK,MAAMK,KAASrB,IAAAA,KAAAA,CAAMmB,MAAM,CAACE,KAAK,CAAE;AACtC,gBAAA,IAAI,CAACD,YAAY,CAACC,KAAAA,EAAO3B,GAAKsB,EAAAA,cAAAA,CAAAA;AAChC;AACA,YAAA,KAAK,MAAME,GAAOlB,IAAAA,KAAAA,CAAMsB,YAAY,CAACJ,GAAG,CAAE;AACxC,gBAAA,IAAI,CAACE,YAAY,CAACF,GAAAA,EAAKxB,GAAKsB,EAAAA,cAAAA,CAAAA;AAC9B;AACA,YAAA,KAAK,MAAMK,KAASrB,IAAAA,KAAAA,CAAMsB,YAAY,CAACD,KAAK,CAAE;AAC5C,gBAAA,IAAI,CAACD,YAAY,CAACC,KAAAA,EAAO3B,GAAKsB,EAAAA,cAAAA,CAAAA;AAChC;AACF;AACF;AACF;;;;"}
|
package/dist/render/sky.js
CHANGED
|
@@ -2,7 +2,7 @@ import { linearToGamma } from '../shaders/misc.js';
|
|
|
2
2
|
import { smoothNoise3D } from '../shaders/noise.js';
|
|
3
3
|
import { getDevice, getEngine } from '../app/api.js';
|
|
4
4
|
import { getDefaultAtmosphereParams, getAerialPerspectiveLut, renderAtmosphereLUTs, getAtmosphereParamsStruct, createTransmittanceLutProgram, createMultiScatteringLutProgram, createSkyViewLutProgram, createAPLutProgram, skyBox, atmosphereLUTRendered, getTransmittanceLut, getSkyViewLut } from '../shaders/atmosphere.js';
|
|
5
|
-
import { Matrix4x4, Disposable, DRef, Vector4, Vector2, Vector3, CubeFace } from '@zephyr3d/base';
|
|
5
|
+
import { Matrix4x4, Disposable, DRef, Vector4, Vector2, Vector3, CubeFace, objectKeys } from '@zephyr3d/base';
|
|
6
6
|
import { Primitive } from './primitive.js';
|
|
7
7
|
import { BoxShape } from '../shapes/box.js';
|
|
8
8
|
import '../shapes/cylinder.js';
|
|
@@ -10,7 +10,6 @@ import '../shapes/torus.js';
|
|
|
10
10
|
import '../shapes/plane.js';
|
|
11
11
|
import '../shapes/sphere.js';
|
|
12
12
|
import '../shapes/tetrahedron.js';
|
|
13
|
-
import { Camera } from '../camera/camera.js';
|
|
14
13
|
import { prefilterCubemap } from '../utility/pmrem.js';
|
|
15
14
|
import { ShaderHelper } from '../material/shader/helper.js';
|
|
16
15
|
import { fetchSampler } from '../utility/misc.js';
|
|
@@ -19,6 +18,8 @@ import { uniformSphereSamples, Fog } from '../values.js';
|
|
|
19
18
|
import { getDefaultHeightFogParams, MAX_FOG_HEIGHT, getHeightFogParamsStruct, calculateFog } from '../shaders/fog.js';
|
|
20
19
|
import { drawFullscreenQuad } from './fullscreenquad.js';
|
|
21
20
|
import { panoramaToCubemap } from '../utility/panorama.js';
|
|
21
|
+
import '../camera/camera.js';
|
|
22
|
+
import { PerspectiveCamera } from '../camera/perspectivecamera.js';
|
|
22
23
|
|
|
23
24
|
const fogTypeMap = {
|
|
24
25
|
height_fog: Fog.FOG_TYPE_HEIGHT,
|
|
@@ -30,9 +31,7 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
|
|
|
30
31
|
* @public
|
|
31
32
|
*/ class SkyRenderer extends Disposable {
|
|
32
33
|
static _skyCamera = (()=>{
|
|
33
|
-
|
|
34
|
-
camera.setPerspective(Math.PI / 2, 1, 1, 20);
|
|
35
|
-
return camera;
|
|
34
|
+
return new PerspectiveCamera(null, Math.PI * 0.5, 1, 20, 1);
|
|
36
35
|
})();
|
|
37
36
|
static transmittanceLutProgram = null;
|
|
38
37
|
static multiScatteringLutProgram = null;
|
|
@@ -93,7 +92,7 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
|
|
|
93
92
|
*/ constructor(){
|
|
94
93
|
super();
|
|
95
94
|
this._skyType = 'scatter';
|
|
96
|
-
this._skyColor = Vector4
|
|
95
|
+
this._skyColor = new Vector4(0, 0, 0, 1);
|
|
97
96
|
this._skyImage = new DRef();
|
|
98
97
|
this._skyboxTexture = new DRef();
|
|
99
98
|
this._skyboxTextureSize = 1024;
|
|
@@ -128,8 +127,7 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
|
|
|
128
127
|
this._bindgroupSky = {};
|
|
129
128
|
this._bindgroupFog = new DRef();
|
|
130
129
|
this._bindgroupFogNoDepth = new DRef();
|
|
131
|
-
|
|
132
|
-
this._format = texCaps.getTextureFormatInfo('rg11b10uf')?.renderable ? 'rg11b10uf' : texCaps.supportHalfFloatColorBuffer && texCaps.supportLinearHalfFloatTexture ? 'rgba16f' : 'rgba32f';
|
|
130
|
+
this._format = null;
|
|
133
131
|
}
|
|
134
132
|
/** @internal */ getHash(_ctx) {
|
|
135
133
|
return `${this.skyType}:${this.fogType}`;
|
|
@@ -137,6 +135,10 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
|
|
|
137
135
|
/**
|
|
138
136
|
* Gets the preferred environment texture format.
|
|
139
137
|
*/ get envTextureFormat() {
|
|
138
|
+
if (!this._format) {
|
|
139
|
+
const texCaps = getDevice().getDeviceCaps().textureCaps;
|
|
140
|
+
this._format = texCaps.getTextureFormatInfo('rg11b10uf')?.renderable ? 'rg11b10uf' : texCaps.supportHalfFloatColorBuffer && texCaps.supportLinearHalfFloatTexture ? 'rgba16f' : 'rgba32f';
|
|
141
|
+
}
|
|
140
142
|
return this._format;
|
|
141
143
|
}
|
|
142
144
|
/** Which type of the sky should be rendered */ get skyType() {
|
|
@@ -387,7 +389,7 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
|
|
|
387
389
|
* Radiance map of the sky.
|
|
388
390
|
*/ get radianceMap() {
|
|
389
391
|
if (!this._radianceMap.get()) {
|
|
390
|
-
this._radianceMap.set(getDevice().createCubeTexture(this.
|
|
392
|
+
this._radianceMap.set(getDevice().createCubeTexture(this.envTextureFormat, this._radianceMapWidth));
|
|
391
393
|
this._radianceMap.get().name = 'SkyRadianceMap';
|
|
392
394
|
}
|
|
393
395
|
return this._radianceMap.get();
|
|
@@ -501,7 +503,7 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
|
|
|
501
503
|
this._bakedSkyboxDirty = true;
|
|
502
504
|
}
|
|
503
505
|
if (!this._skyDistantLightLut.get()) {
|
|
504
|
-
const tex = ctx.device.createTexture2D(this.
|
|
506
|
+
const tex = ctx.device.createTexture2D(this.envTextureFormat, 1, 1, {
|
|
505
507
|
mipmapping: false
|
|
506
508
|
});
|
|
507
509
|
tex.name = 'DistantSkyLut';
|
|
@@ -566,7 +568,7 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
|
|
|
566
568
|
}
|
|
567
569
|
updateBakedSkyMap(ctx) {
|
|
568
570
|
const device = ctx.device;
|
|
569
|
-
const tex = this._bakedSkyboxTexture.get() && this._bakedSkyboxTexture.get().width === this._bakedSkyboxTextureSize ? this._bakedSkyboxTexture.get() : device.createCubeTexture(this.
|
|
571
|
+
const tex = this._bakedSkyboxTexture.get() && this._bakedSkyboxTexture.get().width === this._bakedSkyboxTextureSize ? this._bakedSkyboxTexture.get() : device.createCubeTexture(this.envTextureFormat, this._bakedSkyboxTextureSize, {
|
|
570
572
|
mipmapping: false
|
|
571
573
|
});
|
|
572
574
|
tex.name = 'BakedSkyboxTexture';
|
|
@@ -691,8 +693,8 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
|
|
|
691
693
|
this._skyDistantLightLut.dispose();
|
|
692
694
|
}
|
|
693
695
|
this._bindgroupDistantLight.dispose();
|
|
694
|
-
for(const k
|
|
695
|
-
this._bindgroupSky[k]
|
|
696
|
+
for (const k of objectKeys(this._bindgroupSky)){
|
|
697
|
+
this._bindgroupSky[k]?.dispose();
|
|
696
698
|
}
|
|
697
699
|
this._bindgroupSky = {};
|
|
698
700
|
this._bindgroupFog.dispose();
|
|
@@ -704,7 +706,7 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
|
|
|
704
706
|
if (!tex.isTexture2D()) {
|
|
705
707
|
console.error(`Invalid panorama texture asset: ${this._panoramaAsset}`);
|
|
706
708
|
} else {
|
|
707
|
-
const skyboxTexture = getDevice().createCubeTexture(this.
|
|
709
|
+
const skyboxTexture = getDevice().createCubeTexture(this.envTextureFormat, this._skyboxTextureSize, {
|
|
708
710
|
mipmapping: false
|
|
709
711
|
});
|
|
710
712
|
panoramaToCubemap(tex, skyboxTexture);
|