@zephyr3d/scene 0.9.21 → 0.9.23
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/joint_dynamics/collision.js +1 -7
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/constraints.js +2 -17
- package/dist/animation/joint_dynamics/constraints.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +2 -20
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +1 -3
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +14 -60
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js +3 -3
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/app/app.js +23 -0
- package/dist/app/app.js.map +1 -1
- package/dist/app/scriptregistry.js +16 -53
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +2 -0
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/model.js +22 -0
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js +3 -1
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/blitter.js +3 -3
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/camera/camera.js +398 -45
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +69 -2
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +9100 -8712
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/lambert.js +3 -3
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +8 -5
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +17 -10
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +21 -6
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +33 -11
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/brdf.js +44 -12
- package/dist/material/mixins/pbr/brdf.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +149 -14
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mtoon.js +7 -4
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrblueprint.js +5 -1
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js +1 -1
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +186 -11
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/skin.js +2 -2
- package/dist/material/skin.js.map +1 -1
- package/dist/material/terrain-cm.js +5 -5
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/water.js +6 -4
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/bloom.js +54 -4
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js +41 -0
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/posteffect.js +51 -0
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js +7 -6
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/skinsss.js +3 -3
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +1196 -0
- package/dist/posteffect/ssgi.js.map +1 -0
- package/dist/posteffect/ssr.js +83 -45
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +137 -49
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js +5 -4
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/posteffect/tonemap.js +15 -3
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +2 -2
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/cluster_light.js +12 -6
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/drawable_mixin.js +8 -5
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +10 -5
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +298 -5
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/gpu_picking.js +7 -5
- package/dist/render/gpu_picking.js.map +1 -1
- package/dist/render/hzb.js +28 -19
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/lightpass.js +18 -4
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/render_queue.js +37 -4
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +8 -3
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/blackboard.js +20 -48
- package/dist/render/rendergraph/blackboard.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js +18 -58
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/executor.js +89 -115
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +1003 -715
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/frame_graph_context.js +41 -0
- package/dist/render/rendergraph/frame_graph_context.js.map +1 -0
- package/dist/render/rendergraph/frame_resource_requirements.js +14 -0
- package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -0
- package/dist/render/rendergraph/history_resource_manager.js +74 -140
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +7 -5
- package/dist/render/rendergraph/history_resources.js.map +1 -1
- package/dist/render/rendergraph/render_context.js +19 -0
- package/dist/render/rendergraph/render_context.js.map +1 -0
- package/dist/render/rendergraph/render_pipeline.js +315 -0
- package/dist/render/rendergraph/render_pipeline.js.map +1 -0
- package/dist/render/rendergraph/rendergraph.js +158 -141
- package/dist/render/rendergraph/rendergraph.js.map +1 -1
- package/dist/render/rendergraph/scene_render_context.js +267 -0
- package/dist/render/rendergraph/scene_render_context.js.map +1 -0
- package/dist/render/rendergraph/texture_affinity_cache.js +19 -0
- package/dist/render/rendergraph/texture_affinity_cache.js.map +1 -0
- package/dist/render/rendergraph/types.js +19 -31
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/renderpass.js +3 -3
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/shadow_mask_pass.js +10 -6
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/sky.js +197 -35
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js +4 -3
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +2 -0
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +10 -0
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +61 -2
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/light.js +178 -10
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/meshdrawable.js +89 -2
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +2 -0
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +2 -0
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +2 -0
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +34 -1
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +2 -1
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +2 -0
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +2 -0
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/atmosphere.js +5 -4
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js +10 -3
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/shadow.js +96 -29
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssgi.js +63 -0
- package/dist/shaders/ssgi.js.map +1 -0
- package/dist/shaders/ssgi_reprojection.js +118 -0
- package/dist/shaders/ssgi_reprojection.js.map +1 -0
- package/dist/shaders/ssr.js +322 -154
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shadow/esm.js +13 -8
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js +15 -12
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +15 -12
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/pcss.js +17 -11
- package/dist/shadow/pcss.js.map +1 -1
- package/dist/shadow/shadow_impl.js +20 -2
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadowmapper.js +10 -3
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js +16 -13
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js +10 -8
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/utility/physical.js +74 -0
- package/dist/utility/physical.js.map +1 -0
- package/dist/utility/rendermipmap.js +2 -2
- package/dist/utility/rendermipmap.js.map +1 -1
- package/dist/utility/serialization/manager.js +3 -1
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +3 -1
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +3 -1
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +598 -2
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +180 -9
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +43 -3
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +3 -1
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +3 -1
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +3 -1
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +2 -0
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +70 -0
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +3 -1
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +3 -1
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +3 -0
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +3 -1
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/values.js +2 -3
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
- package/dist/animation/joint_dynamics/convex_collider.js +0 -320
- package/dist/animation/joint_dynamics/convex_collider.js.map +0 -1
|
@@ -27,12 +27,14 @@ import '../../../render/rendergraph/forward_plus_builder.js';
|
|
|
27
27
|
import '../../../render/lightpass.js';
|
|
28
28
|
import '../../../render/sky.js';
|
|
29
29
|
import '../../../render/clipmap.js';
|
|
30
|
+
import '../../../render/envlight.js';
|
|
30
31
|
import '../../../render/dualdepthpeeling_oit.js';
|
|
31
32
|
import '../../../shaders/atmosphere.js';
|
|
33
|
+
import '../../../render/rendergraph/scene_render_context.js';
|
|
32
34
|
import { SceneNode } from '../../../scene/scene_node.js';
|
|
33
35
|
import { Mesh } from '../../../scene/mesh.js';
|
|
34
|
-
import '../../../scene/basesprite.js';
|
|
35
36
|
import '../../../scene/meshdrawable.js';
|
|
37
|
+
import '../../../scene/basesprite.js';
|
|
36
38
|
import '../../../material/msdf_text.js';
|
|
37
39
|
import '../../../scene/water.js';
|
|
38
40
|
import '../../../scene/particlesys.js';
|
|
@@ -84,6 +86,9 @@ import '../../../scene/raycast_visitor.js';
|
|
|
84
86
|
},
|
|
85
87
|
set (value) {
|
|
86
88
|
this.intensity = value.num[0];
|
|
89
|
+
},
|
|
90
|
+
isHidden () {
|
|
91
|
+
return this.scene?.lightingMode === 'physical';
|
|
87
92
|
}
|
|
88
93
|
},
|
|
89
94
|
{
|
|
@@ -632,6 +637,27 @@ import '../../../scene/raycast_visitor.js';
|
|
|
632
637
|
},
|
|
633
638
|
getProps () {
|
|
634
639
|
return defineProps([
|
|
640
|
+
{
|
|
641
|
+
name: 'Illuminance',
|
|
642
|
+
description: 'Physical illuminance in lux',
|
|
643
|
+
type: 'float',
|
|
644
|
+
default: 100000,
|
|
645
|
+
options: {
|
|
646
|
+
label: 'Illuminance (lux)',
|
|
647
|
+
animatable: true,
|
|
648
|
+
minValue: 0,
|
|
649
|
+
group: 'Physical'
|
|
650
|
+
},
|
|
651
|
+
get (value) {
|
|
652
|
+
value.num[0] = this.illuminance;
|
|
653
|
+
},
|
|
654
|
+
set (value) {
|
|
655
|
+
this.illuminance = value.num[0];
|
|
656
|
+
},
|
|
657
|
+
isHidden () {
|
|
658
|
+
return this.scene?.lightingMode !== 'physical';
|
|
659
|
+
}
|
|
660
|
+
},
|
|
635
661
|
{
|
|
636
662
|
name: 'SunLight',
|
|
637
663
|
description: 'If true, this light will act as sun light and affect sky atmosphere rendering',
|
|
@@ -662,15 +688,55 @@ import '../../../scene/raycast_visitor.js';
|
|
|
662
688
|
},
|
|
663
689
|
getProps () {
|
|
664
690
|
return defineProps([
|
|
691
|
+
{
|
|
692
|
+
// Storage only, never shown: candela is the unit the shader consumes and the only one
|
|
693
|
+
// safe to persist, but LuminousPower below is the single field authors edit.
|
|
694
|
+
name: 'LuminousIntensity',
|
|
695
|
+
description: 'Physical luminous intensity in candela',
|
|
696
|
+
type: 'float',
|
|
697
|
+
default: 100,
|
|
698
|
+
options: {
|
|
699
|
+
minValue: 0
|
|
700
|
+
},
|
|
701
|
+
get (value) {
|
|
702
|
+
value.num[0] = this.luminousIntensity;
|
|
703
|
+
},
|
|
704
|
+
set (value) {
|
|
705
|
+
this.luminousIntensity = value.num[0];
|
|
706
|
+
},
|
|
707
|
+
isHidden: ()=>true
|
|
708
|
+
},
|
|
709
|
+
{
|
|
710
|
+
// The authored field. Non-persistent because LuminousIntensity above is the value of
|
|
711
|
+
// record -- saving both would put the same quantity in the scene file twice.
|
|
712
|
+
name: 'LuminousPower',
|
|
713
|
+
description: 'Physical luminous flux in lumen (4pi x candela)',
|
|
714
|
+
type: 'float',
|
|
715
|
+
options: {
|
|
716
|
+
label: 'Luminous power (lm)',
|
|
717
|
+
animatable: true,
|
|
718
|
+
minValue: 0,
|
|
719
|
+
group: 'Physical'
|
|
720
|
+
},
|
|
721
|
+
isPersistent: ()=>false,
|
|
722
|
+
get (value) {
|
|
723
|
+
value.num[0] = this.luminousPower;
|
|
724
|
+
},
|
|
725
|
+
set (value) {
|
|
726
|
+
this.luminousPower = value.num[0];
|
|
727
|
+
},
|
|
728
|
+
isHidden () {
|
|
729
|
+
return this.scene?.lightingMode !== 'physical';
|
|
730
|
+
}
|
|
731
|
+
},
|
|
665
732
|
{
|
|
666
733
|
name: 'Range',
|
|
667
|
-
description: 'Light
|
|
734
|
+
description: 'Light influence radius in world units. 0 auto-derives it from the physical intensity.',
|
|
668
735
|
type: 'float',
|
|
669
736
|
default: 10,
|
|
670
737
|
options: {
|
|
671
738
|
animatable: true,
|
|
672
|
-
minValue: 0
|
|
673
|
-
maxValue: 1000
|
|
739
|
+
minValue: 0
|
|
674
740
|
},
|
|
675
741
|
get (value) {
|
|
676
742
|
value.num[0] = this.range;
|
|
@@ -748,15 +814,57 @@ import '../../../scene/raycast_visitor.js';
|
|
|
748
814
|
},
|
|
749
815
|
getProps () {
|
|
750
816
|
return defineProps([
|
|
817
|
+
{
|
|
818
|
+
// Storage only, never shown. Persisting candela is also required for correctness here:
|
|
819
|
+
// the lumen conversion depends on the outer cone angle, which is a separate property
|
|
820
|
+
// applied later in this list, so a persisted lumen value would be converted back against
|
|
821
|
+
// the constructor's default angle on load -- silently changing the brightness of every
|
|
822
|
+
// spot light whose cone is not 45 degrees.
|
|
823
|
+
name: 'LuminousIntensity',
|
|
824
|
+
description: 'Physical luminous intensity in candela',
|
|
825
|
+
type: 'float',
|
|
826
|
+
default: 1000,
|
|
827
|
+
options: {
|
|
828
|
+
minValue: 0
|
|
829
|
+
},
|
|
830
|
+
get (value) {
|
|
831
|
+
value.num[0] = this.luminousIntensity;
|
|
832
|
+
},
|
|
833
|
+
set (value) {
|
|
834
|
+
this.luminousIntensity = value.num[0];
|
|
835
|
+
},
|
|
836
|
+
isHidden: ()=>true
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
// The authored field. See LuminousIntensity above for why it is not the persisted one.
|
|
840
|
+
name: 'LuminousPower',
|
|
841
|
+
description: 'Physical luminous flux in lumen (2pi(1-cos(outer)) x candela)',
|
|
842
|
+
type: 'float',
|
|
843
|
+
options: {
|
|
844
|
+
label: 'Luminous power (lm)',
|
|
845
|
+
animatable: true,
|
|
846
|
+
minValue: 0,
|
|
847
|
+
group: 'Physical'
|
|
848
|
+
},
|
|
849
|
+
isPersistent: ()=>false,
|
|
850
|
+
get (value) {
|
|
851
|
+
value.num[0] = this.luminousPower;
|
|
852
|
+
},
|
|
853
|
+
set (value) {
|
|
854
|
+
this.luminousPower = value.num[0];
|
|
855
|
+
},
|
|
856
|
+
isHidden () {
|
|
857
|
+
return this.scene?.lightingMode !== 'physical';
|
|
858
|
+
}
|
|
859
|
+
},
|
|
751
860
|
{
|
|
752
861
|
name: 'Range',
|
|
753
|
-
description: 'Light
|
|
862
|
+
description: 'Light influence radius in world units. 0 auto-derives it from the physical intensity.',
|
|
754
863
|
type: 'float',
|
|
755
864
|
default: 10,
|
|
756
865
|
options: {
|
|
757
866
|
animatable: true,
|
|
758
|
-
minValue: 0
|
|
759
|
-
maxValue: 1000
|
|
867
|
+
minValue: 0
|
|
760
868
|
},
|
|
761
869
|
get (value) {
|
|
762
870
|
value.num[0] = this.range;
|
|
@@ -780,6 +888,49 @@ import '../../../scene/raycast_visitor.js';
|
|
|
780
888
|
},
|
|
781
889
|
set (value) {
|
|
782
890
|
this.cutoff = Math.cos(degree2radian(value.num[0]) * 0.5);
|
|
891
|
+
},
|
|
892
|
+
isHidden () {
|
|
893
|
+
return this.scene?.lightingMode === 'physical';
|
|
894
|
+
}
|
|
895
|
+
},
|
|
896
|
+
{
|
|
897
|
+
name: 'PhysicalInnerConeAngle',
|
|
898
|
+
description: 'Physical inner cone half-angle in degrees',
|
|
899
|
+
type: 'float',
|
|
900
|
+
default: 22.5,
|
|
901
|
+
options: {
|
|
902
|
+
animatable: true,
|
|
903
|
+
minValue: 0,
|
|
904
|
+
maxValue: 90
|
|
905
|
+
},
|
|
906
|
+
get (value) {
|
|
907
|
+
value.num[0] = radian2degree(this.innerConeAngle);
|
|
908
|
+
},
|
|
909
|
+
set (value) {
|
|
910
|
+
this.innerConeAngle = degree2radian(value.num[0]);
|
|
911
|
+
},
|
|
912
|
+
isHidden () {
|
|
913
|
+
return this.scene?.lightingMode !== 'physical';
|
|
914
|
+
}
|
|
915
|
+
},
|
|
916
|
+
{
|
|
917
|
+
name: 'PhysicalOuterConeAngle',
|
|
918
|
+
description: 'Physical outer cone half-angle in degrees',
|
|
919
|
+
type: 'float',
|
|
920
|
+
default: 45,
|
|
921
|
+
options: {
|
|
922
|
+
animatable: true,
|
|
923
|
+
minValue: 0.01,
|
|
924
|
+
maxValue: 90
|
|
925
|
+
},
|
|
926
|
+
get (value) {
|
|
927
|
+
value.num[0] = radian2degree(this.outerConeAngle);
|
|
928
|
+
},
|
|
929
|
+
set (value) {
|
|
930
|
+
this.outerConeAngle = degree2radian(value.num[0]);
|
|
931
|
+
},
|
|
932
|
+
isHidden () {
|
|
933
|
+
return this.scene?.lightingMode !== 'physical';
|
|
783
934
|
}
|
|
784
935
|
}
|
|
785
936
|
]);
|
|
@@ -800,6 +951,27 @@ import '../../../scene/raycast_visitor.js';
|
|
|
800
951
|
},
|
|
801
952
|
getProps () {
|
|
802
953
|
return defineProps([
|
|
954
|
+
{
|
|
955
|
+
name: 'Luminance',
|
|
956
|
+
description: 'Physical luminance in candela per square meter (nit)',
|
|
957
|
+
type: 'float',
|
|
958
|
+
default: 100,
|
|
959
|
+
options: {
|
|
960
|
+
label: 'Luminance (nit)',
|
|
961
|
+
animatable: true,
|
|
962
|
+
minValue: 0,
|
|
963
|
+
group: 'Physical'
|
|
964
|
+
},
|
|
965
|
+
get (value) {
|
|
966
|
+
value.num[0] = this.luminance;
|
|
967
|
+
},
|
|
968
|
+
set (value) {
|
|
969
|
+
this.luminance = value.num[0];
|
|
970
|
+
},
|
|
971
|
+
isHidden () {
|
|
972
|
+
return this.scene?.lightingMode !== 'physical';
|
|
973
|
+
}
|
|
974
|
+
},
|
|
803
975
|
{
|
|
804
976
|
name: 'Range',
|
|
805
977
|
description: 'Light range in world unit',
|
|
@@ -807,8 +979,7 @@ import '../../../scene/raycast_visitor.js';
|
|
|
807
979
|
default: 10,
|
|
808
980
|
options: {
|
|
809
981
|
animatable: true,
|
|
810
|
-
minValue: 0
|
|
811
|
-
maxValue: 1000
|
|
982
|
+
minValue: 0
|
|
812
983
|
},
|
|
813
984
|
get (value) {
|
|
814
985
|
value.num[0] = this.range;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light.js","sources":["../../../../src/utility/serialization/scene/light.ts"],"sourcesContent":["import type { BaseLight } from '../../../scene/light';\r\nimport { DirectionalLight, PointLight, PunctualLight, RectLight, SpotLight } from '../../../scene/light';\r\nimport { defineProps, type SerializableClass } from '../types';\r\nimport { AABB, degree2radian, radian2degree, Vector4 } from '@zephyr3d/base';\r\nimport { ClipmapTerrain, Mesh, SceneNode } from '../../../scene';\r\nimport type { ShadowMode } from '../../../shadow';\r\n\r\n/** @internal */\r\nexport function getPunctualLightClass(): SerializableClass {\r\n return {\r\n ctor: PunctualLight,\r\n parent: SceneNode,\r\n name: 'PunctualLight',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Color',\r\n description: 'Light color',\r\n type: 'rgb',\r\n default: [1, 1, 1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.color.x;\r\n value.num[1] = this.color.y;\r\n value.num[2] = this.color.z;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.color = new Vector4(value.num[0], value.num[1], value.num[2], 1);\r\n }\r\n },\r\n {\r\n name: 'Intensity',\r\n description: 'Light intensity',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 100\r\n },\r\n get(this: BaseLight, value) {\r\n value.num[0] = this.intensity;\r\n },\r\n set(this: BaseLight, value) {\r\n this.intensity = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'CastShadow',\r\n description: 'if true, the light cast shadows',\r\n type: 'bool',\r\n phase: 0,\r\n default: false,\r\n get(this: PunctualLight, value) {\r\n value.bool[0] = this.castShadow;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.castShadow = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'ShadowType',\r\n description: 'Which type of shadow this light product',\r\n type: 'string',\r\n phase: 1,\r\n default: 'hard',\r\n options: {\r\n enum: {\r\n labels: ['Hard', 'PCF', 'PCSS', 'VSM', 'ESM', 'PCF-OPT (deprecated)', 'PCF-PD (deprecated)'],\r\n values: ['hard', 'pcf', 'pcss', 'vsm', 'esm', 'pcf-opt', 'pcf-pd']\r\n }\r\n },\r\n get(this: PunctualLight, value) {\r\n value.str[0] = this.shadow.mode;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.mode = value.str[0] as ShadowMode;\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowDistance',\r\n description: 'Maximum shadow distance',\r\n type: 'float',\r\n phase: 1,\r\n default: 2000,\r\n options: {\r\n minValue: 0,\r\n maxValue: 5000\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.shadowDistance;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowDistance = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowMapSize',\r\n description: 'Shadow map resolution',\r\n phase: 1,\r\n type: 'int',\r\n default: 1024,\r\n options: {\r\n enum: {\r\n labels: ['128x128', '256x256', '512x512', '1024x1024', '2048x2048', '4096x4096'],\r\n values: [128, 256, 512, 1024, 2048, 4096]\r\n }\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.shadowMapSize;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowMapSize = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowRegion',\r\n description: 'World space AABB, objects inside this AABB can cast shadows',\r\n phase: 1,\r\n type: 'object',\r\n default: null,\r\n options: {\r\n edit: 'aabb',\r\n objectTypes: [AABB]\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n create(this: PunctualLight) {\r\n const aabb = new AABB();\r\n aabb.beginExtend();\r\n this.scene!.rootNode.iterate((child) => {\r\n if (child instanceof Mesh || child instanceof ClipmapTerrain) {\r\n if (child.castShadow) {\r\n const bbox = child.getWorldBoundingVolume()!.toAABB();\r\n aabb.extend(bbox.minPoint);\r\n aabb.extend(bbox.maxPoint);\r\n }\r\n }\r\n });\r\n if (!aabb.isValid()) {\r\n aabb.minPoint.setXYZ(-1, -1, -1);\r\n aabb.maxPoint.setXYZ(1, 1, 1);\r\n }\r\n return aabb;\r\n },\r\n get(this: PunctualLight, value) {\r\n value.object[0] = this.shadow.shadowRegion.region;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowRegion.setRegion(value.object[0] as AABB);\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.isDirectionLight();\r\n }\r\n },\r\n {\r\n name: 'ShadowDepthBias',\r\n description: 'Shadow depth bias',\r\n type: 'float',\r\n phase: 1,\r\n default: 0.5,\r\n options: {\r\n minValue: 0,\r\n maxValue: 5\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.depthBias;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.depthBias = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowNormalBias',\r\n description: 'Shadow normal bias',\r\n type: 'float',\r\n phase: 1,\r\n default: 0.2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 5\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.normalBias;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.normalBias = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowNearClip',\r\n description: 'Near clip distance for shadow camera',\r\n type: 'float',\r\n phase: 1,\r\n default: 1,\r\n options: {\r\n minValue: 0.01,\r\n maxValue: 10\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.nearClip;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.nearClip = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && !this.isDirectionLight();\r\n }\r\n },\r\n {\r\n name: 'ShadowStrength',\r\n description: 'Shadow strength, 0 means disabled and 1 means full effect',\r\n type: 'float',\r\n phase: 1,\r\n default: 1,\r\n options: {\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.shadowStrength;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowStrength = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowCascades',\r\n description: 'Cascade count for CSM',\r\n type: 'int',\r\n phase: 1,\r\n default: 1,\r\n options: {\r\n minValue: 1,\r\n maxValue: 4\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.numShadowCascades;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.numShadowCascades = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'PCFKernelSize',\r\n description: 'Kernel size for PCF shadow',\r\n phase: 2,\r\n type: 'int',\r\n default: 5,\r\n options: {\r\n enum: {\r\n labels: ['3x3', '5x5', '7x7'],\r\n values: [3, 5, 7]\r\n }\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcfKernelSize;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcfKernelSize = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && (this.shadow.mode === 'pcf' || this.shadow.mode === 'pcf-opt');\r\n }\r\n },\r\n {\r\n name: 'PCSSLightRadius',\r\n description: 'Light radius for PCSS shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 64\r\n },\r\n default: 8,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcssLightRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssLightRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'PCSSBlockerSampleCount',\r\n description: 'Blocker search sample count for PCSS shadow',\r\n type: 'int',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 64\r\n },\r\n default: 24,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcssBlockerSampleCount;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssBlockerSampleCount = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'PCSSFilterSampleCount',\r\n description: 'Filter sample count for PCSS shadow',\r\n type: 'int',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 64\r\n },\r\n default: 32,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcssFilterSampleCount;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssFilterSampleCount = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'PCSSMaxFilterRadius',\r\n description: 'Maximum filter radius for PCSS shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 128\r\n },\r\n default: 32,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcssMaxFilterRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssMaxFilterRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'PCSSTemporalJitter',\r\n description: 'If true, rotate PCSS sampling pattern over frames for TAA accumulation',\r\n type: 'bool',\r\n phase: 2,\r\n default: true,\r\n get(this: PunctualLight, value) {\r\n value.bool[0] = this.shadow.pcssTemporalJitter;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssTemporalJitter = value.bool[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'VSMBlurKernelSize',\r\n description: 'Blur kernel size of VSM shadow',\r\n type: 'int',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 33\r\n },\r\n default: 5,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.vsmBlurKernelSize;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.vsmBlurKernelSize = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'vsm';\r\n }\r\n },\r\n {\r\n name: 'VSMBlurRadius',\r\n description: 'Blur radius for VSM shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 32\r\n },\r\n default: 4,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.vsmBlurRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.vsmBlurRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'vsm';\r\n }\r\n },\r\n {\r\n name: 'VSMDarkness',\r\n description: 'Darkness for VSM shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n default: 0.5,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.vsmDarkness;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.vsmDarkness = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'vsm';\r\n }\r\n },\r\n {\r\n name: 'ESMDepthScale',\r\n description: 'Depth scale value for ESM shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 2000\r\n },\r\n default: 200,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.esmDepthScale;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmDepthScale = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm';\r\n }\r\n },\r\n {\r\n name: 'ESMBlur',\r\n description: 'If true, enable bluring for ESM shadow',\r\n type: 'bool',\r\n phase: 2,\r\n default: true,\r\n get(this: PunctualLight, value) {\r\n value.bool[0] = this.shadow.esmBlur;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmBlur = value.bool[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm';\r\n }\r\n },\r\n {\r\n name: 'ESMLogSpaceBlur',\r\n description: 'If true, enable log space bluring for ESM shadow',\r\n type: 'bool',\r\n phase: 2,\r\n default: true,\r\n get(this: PunctualLight, value) {\r\n value.bool[0] = this.shadow.esmLogSpace;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmLogSpace = value.bool[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm';\r\n }\r\n },\r\n {\r\n name: 'ESMBlurKernelSize',\r\n description: 'Blur kernel size for ESM shadow',\r\n type: 'int',\r\n phase: 2,\r\n default: 5,\r\n options: {\r\n minValue: 1,\r\n maxValue: 33\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.esmBlurKernelSize;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmBlurKernelSize = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm' && this.shadow.esmBlur;\r\n }\r\n },\r\n {\r\n name: 'ESMBlurRadius',\r\n description: 'Blur radius for ESM shadow',\r\n type: 'float',\r\n phase: 2,\r\n default: 4,\r\n options: {\r\n minValue: 0,\r\n maxValue: 32\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.esmBlurRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmBlurRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm' && this.shadow.esmBlur;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getDirectionalLightClass(): SerializableClass {\r\n return {\r\n ctor: DirectionalLight,\r\n name: 'DirectionalLight',\r\n parent: PunctualLight,\r\n createFunc(ctx: SceneNode) {\r\n const node = new DirectionalLight(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'SunLight',\r\n description: 'If true, this light will act as sun light and affect sky atmosphere rendering',\r\n type: 'bool',\r\n default: false,\r\n get(this: DirectionalLight, value) {\r\n value.bool[0] = this.sunLight;\r\n },\r\n set(this: DirectionalLight, value) {\r\n this.sunLight = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getPointLightClass(): SerializableClass {\r\n return {\r\n ctor: PointLight,\r\n name: 'PointLight',\r\n parent: PunctualLight,\r\n createFunc(ctx: SceneNode) {\r\n const node = new PointLight(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Range',\r\n description: 'Light range in world unit',\r\n type: 'float',\r\n default: 10,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 1000\r\n },\r\n get(this: PointLight, value) {\r\n value.num[0] = this.range;\r\n },\r\n set(this: PointLight, value) {\r\n this.range = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'DiffuseScale',\r\n description: 'Diffuse light intensity multiplier',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 10\r\n },\r\n get(this: PointLight, value) {\r\n value.num[0] = this.diffuseScale;\r\n },\r\n set(this: PointLight, value) {\r\n this.diffuseScale = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'SpecularScale',\r\n description: 'Specular light intensity multiplier',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 10\r\n },\r\n get(this: PointLight, value) {\r\n value.num[0] = this.specularScale;\r\n },\r\n set(this: PointLight, value) {\r\n this.specularScale = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'SourceRadius',\r\n description: 'Apparent radius of the light source for soft shadows and highlights',\r\n type: 'float',\r\n default: 0,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 100\r\n },\r\n get(this: PointLight, value) {\r\n value.num[0] = this.sourceRadius;\r\n },\r\n set(this: PointLight, value) {\r\n this.sourceRadius = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSpotLightClass(): SerializableClass {\r\n return {\r\n ctor: SpotLight,\r\n name: 'SpotLight',\r\n parent: PunctualLight,\r\n createFunc(ctx: SceneNode) {\r\n const node = new SpotLight(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Range',\r\n description: 'Light range in world unit',\r\n type: 'float',\r\n default: 10,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 1000\r\n },\r\n get(this: SpotLight, value) {\r\n value.num[0] = this.range;\r\n },\r\n set(this: SpotLight, value) {\r\n this.range = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'BeamAngle',\r\n description: 'Beam angle of cone',\r\n type: 'float',\r\n default: 90,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 180\r\n },\r\n get(this: SpotLight, value) {\r\n value.num[0] = radian2degree(Math.acos(this.cutoff) * 2);\r\n },\r\n set(this: SpotLight, value) {\r\n this.cutoff = Math.cos(degree2radian(value.num[0]) * 0.5);\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getRectLightClass(): SerializableClass {\r\n return {\r\n ctor: RectLight,\r\n name: 'RectLight',\r\n parent: PunctualLight,\r\n createFunc(ctx: SceneNode) {\r\n const node = new RectLight(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Range',\r\n description: 'Light range in world unit',\r\n type: 'float',\r\n default: 10,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 1000\r\n },\r\n get(this: RectLight, value) {\r\n value.num[0] = this.range;\r\n },\r\n set(this: RectLight, value) {\r\n this.range = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Width',\r\n description: 'Width of the light',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 1000\r\n },\r\n get(this: RectLight, value) {\r\n value.num[0] = this.width;\r\n },\r\n set(this: RectLight, value) {\r\n this.width = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Height',\r\n description: 'Height of the light',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 1000\r\n },\r\n get(this: RectLight, value) {\r\n value.num[0] = this.height;\r\n },\r\n set(this: RectLight, value) {\r\n this.height = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["getPunctualLightClass","ctor","PunctualLight","parent","SceneNode","name","getProps","defineProps","description","type","default","options","animatable","get","value","num","color","x","y","z","set","Vector4","minValue","maxValue","intensity","phase","bool","castShadow","enum","labels","values","str","shadow","mode","isValid","shadowDistance","shadowMapSize","edit","objectTypes","AABB","isNullable","create","aabb","beginExtend","scene","rootNode","iterate","child","Mesh","ClipmapTerrain","bbox","getWorldBoundingVolume","toAABB","extend","minPoint","maxPoint","setXYZ","object","shadowRegion","region","setRegion","isDirectionLight","depthBias","normalBias","nearClip","shadowStrength","numShadowCascades","pcfKernelSize","pcssLightRadius","pcssBlockerSampleCount","pcssFilterSampleCount","pcssMaxFilterRadius","pcssTemporalJitter","vsmBlurKernelSize","vsmBlurRadius","vsmDarkness","esmDepthScale","esmBlur","esmLogSpace","esmBlurKernelSize","esmBlurRadius","getDirectionalLightClass","DirectionalLight","createFunc","ctx","node","obj","sunLight","getPointLightClass","PointLight","range","diffuseScale","specularScale","sourceRadius","getSpotLightClass","SpotLight","radian2degree","Math","acos","cutoff","cos","degree2radian","getRectLightClass","RectLight","width","height"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"light.js","sources":["../../../../src/utility/serialization/scene/light.ts"],"sourcesContent":["import type { BaseLight } from '../../../scene/light';\r\nimport { DirectionalLight, PointLight, PunctualLight, RectLight, SpotLight } from '../../../scene/light';\r\nimport { defineProps, type SerializableClass } from '../types';\r\nimport { AABB, degree2radian, radian2degree, Vector4 } from '@zephyr3d/base';\r\nimport { ClipmapTerrain, Mesh, SceneNode } from '../../../scene';\r\nimport type { ShadowMode } from '../../../shadow';\r\n\r\n/** @internal */\r\nexport function getPunctualLightClass(): SerializableClass {\r\n return {\r\n ctor: PunctualLight,\r\n parent: SceneNode,\r\n name: 'PunctualLight',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Color',\r\n description: 'Light color',\r\n type: 'rgb',\r\n default: [1, 1, 1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.color.x;\r\n value.num[1] = this.color.y;\r\n value.num[2] = this.color.z;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.color = new Vector4(value.num[0], value.num[1], value.num[2], 1);\r\n }\r\n },\r\n {\r\n name: 'Intensity',\r\n description: 'Light intensity',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 100\r\n },\r\n get(this: BaseLight, value) {\r\n value.num[0] = this.intensity;\r\n },\r\n set(this: BaseLight, value) {\r\n this.intensity = value.num[0];\r\n },\r\n isHidden(this: BaseLight) {\r\n return this.scene?.lightingMode === 'physical';\r\n }\r\n },\r\n {\r\n name: 'CastShadow',\r\n description: 'if true, the light cast shadows',\r\n type: 'bool',\r\n phase: 0,\r\n default: false,\r\n get(this: PunctualLight, value) {\r\n value.bool[0] = this.castShadow;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.castShadow = value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'ShadowType',\r\n description: 'Which type of shadow this light product',\r\n type: 'string',\r\n phase: 1,\r\n default: 'hard',\r\n options: {\r\n enum: {\r\n labels: ['Hard', 'PCF', 'PCSS', 'VSM', 'ESM', 'PCF-OPT (deprecated)', 'PCF-PD (deprecated)'],\r\n values: ['hard', 'pcf', 'pcss', 'vsm', 'esm', 'pcf-opt', 'pcf-pd']\r\n }\r\n },\r\n get(this: PunctualLight, value) {\r\n value.str[0] = this.shadow.mode;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.mode = value.str[0] as ShadowMode;\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowDistance',\r\n description: 'Maximum shadow distance',\r\n type: 'float',\r\n phase: 1,\r\n default: 2000,\r\n options: {\r\n minValue: 0,\r\n maxValue: 5000\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.shadowDistance;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowDistance = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowMapSize',\r\n description: 'Shadow map resolution',\r\n phase: 1,\r\n type: 'int',\r\n default: 1024,\r\n options: {\r\n enum: {\r\n labels: ['128x128', '256x256', '512x512', '1024x1024', '2048x2048', '4096x4096'],\r\n values: [128, 256, 512, 1024, 2048, 4096]\r\n }\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.shadowMapSize;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowMapSize = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowRegion',\r\n description: 'World space AABB, objects inside this AABB can cast shadows',\r\n phase: 1,\r\n type: 'object',\r\n default: null,\r\n options: {\r\n edit: 'aabb',\r\n objectTypes: [AABB]\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n create(this: PunctualLight) {\r\n const aabb = new AABB();\r\n aabb.beginExtend();\r\n this.scene!.rootNode.iterate((child) => {\r\n if (child instanceof Mesh || child instanceof ClipmapTerrain) {\r\n if (child.castShadow) {\r\n const bbox = child.getWorldBoundingVolume()!.toAABB();\r\n aabb.extend(bbox.minPoint);\r\n aabb.extend(bbox.maxPoint);\r\n }\r\n }\r\n });\r\n if (!aabb.isValid()) {\r\n aabb.minPoint.setXYZ(-1, -1, -1);\r\n aabb.maxPoint.setXYZ(1, 1, 1);\r\n }\r\n return aabb;\r\n },\r\n get(this: PunctualLight, value) {\r\n value.object[0] = this.shadow.shadowRegion.region;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowRegion.setRegion(value.object[0] as AABB);\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.isDirectionLight();\r\n }\r\n },\r\n {\r\n name: 'ShadowDepthBias',\r\n description: 'Shadow depth bias',\r\n type: 'float',\r\n phase: 1,\r\n default: 0.5,\r\n options: {\r\n minValue: 0,\r\n maxValue: 5\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.depthBias;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.depthBias = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowNormalBias',\r\n description: 'Shadow normal bias',\r\n type: 'float',\r\n phase: 1,\r\n default: 0.2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 5\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.normalBias;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.normalBias = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowNearClip',\r\n description: 'Near clip distance for shadow camera',\r\n type: 'float',\r\n phase: 1,\r\n default: 1,\r\n options: {\r\n minValue: 0.01,\r\n maxValue: 10\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.nearClip;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.nearClip = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && !this.isDirectionLight();\r\n }\r\n },\r\n {\r\n name: 'ShadowStrength',\r\n description: 'Shadow strength, 0 means disabled and 1 means full effect',\r\n type: 'float',\r\n phase: 1,\r\n default: 1,\r\n options: {\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.shadowStrength;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowStrength = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'ShadowCascades',\r\n description: 'Cascade count for CSM',\r\n type: 'int',\r\n phase: 1,\r\n default: 1,\r\n options: {\r\n minValue: 1,\r\n maxValue: 4\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.numShadowCascades;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.numShadowCascades = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow;\r\n }\r\n },\r\n {\r\n name: 'PCFKernelSize',\r\n description: 'Kernel size for PCF shadow',\r\n phase: 2,\r\n type: 'int',\r\n default: 5,\r\n options: {\r\n enum: {\r\n labels: ['3x3', '5x5', '7x7'],\r\n values: [3, 5, 7]\r\n }\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcfKernelSize;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcfKernelSize = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && (this.shadow.mode === 'pcf' || this.shadow.mode === 'pcf-opt');\r\n }\r\n },\r\n {\r\n name: 'PCSSLightRadius',\r\n description: 'Light radius for PCSS shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 64\r\n },\r\n default: 8,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcssLightRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssLightRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'PCSSBlockerSampleCount',\r\n description: 'Blocker search sample count for PCSS shadow',\r\n type: 'int',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 64\r\n },\r\n default: 24,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcssBlockerSampleCount;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssBlockerSampleCount = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'PCSSFilterSampleCount',\r\n description: 'Filter sample count for PCSS shadow',\r\n type: 'int',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 64\r\n },\r\n default: 32,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcssFilterSampleCount;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssFilterSampleCount = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'PCSSMaxFilterRadius',\r\n description: 'Maximum filter radius for PCSS shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 128\r\n },\r\n default: 32,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pcssMaxFilterRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssMaxFilterRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'PCSSTemporalJitter',\r\n description: 'If true, rotate PCSS sampling pattern over frames for TAA accumulation',\r\n type: 'bool',\r\n phase: 2,\r\n default: true,\r\n get(this: PunctualLight, value) {\r\n value.bool[0] = this.shadow.pcssTemporalJitter;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pcssTemporalJitter = value.bool[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcss';\r\n }\r\n },\r\n {\r\n name: 'VSMBlurKernelSize',\r\n description: 'Blur kernel size of VSM shadow',\r\n type: 'int',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 33\r\n },\r\n default: 5,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.vsmBlurKernelSize;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.vsmBlurKernelSize = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'vsm';\r\n }\r\n },\r\n {\r\n name: 'VSMBlurRadius',\r\n description: 'Blur radius for VSM shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 32\r\n },\r\n default: 4,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.vsmBlurRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.vsmBlurRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'vsm';\r\n }\r\n },\r\n {\r\n name: 'VSMDarkness',\r\n description: 'Darkness for VSM shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n default: 0.5,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.vsmDarkness;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.vsmDarkness = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'vsm';\r\n }\r\n },\r\n {\r\n name: 'ESMDepthScale',\r\n description: 'Depth scale value for ESM shadow',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 2000\r\n },\r\n default: 200,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.esmDepthScale;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmDepthScale = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm';\r\n }\r\n },\r\n {\r\n name: 'ESMBlur',\r\n description: 'If true, enable bluring for ESM shadow',\r\n type: 'bool',\r\n phase: 2,\r\n default: true,\r\n get(this: PunctualLight, value) {\r\n value.bool[0] = this.shadow.esmBlur;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmBlur = value.bool[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm';\r\n }\r\n },\r\n {\r\n name: 'ESMLogSpaceBlur',\r\n description: 'If true, enable log space bluring for ESM shadow',\r\n type: 'bool',\r\n phase: 2,\r\n default: true,\r\n get(this: PunctualLight, value) {\r\n value.bool[0] = this.shadow.esmLogSpace;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmLogSpace = value.bool[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm';\r\n }\r\n },\r\n {\r\n name: 'ESMBlurKernelSize',\r\n description: 'Blur kernel size for ESM shadow',\r\n type: 'int',\r\n phase: 2,\r\n default: 5,\r\n options: {\r\n minValue: 1,\r\n maxValue: 33\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.esmBlurKernelSize;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmBlurKernelSize = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm' && this.shadow.esmBlur;\r\n }\r\n },\r\n {\r\n name: 'ESMBlurRadius',\r\n description: 'Blur radius for ESM shadow',\r\n type: 'float',\r\n phase: 2,\r\n default: 4,\r\n options: {\r\n minValue: 0,\r\n maxValue: 32\r\n },\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.esmBlurRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.esmBlurRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'esm' && this.shadow.esmBlur;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getDirectionalLightClass(): SerializableClass {\r\n return {\r\n ctor: DirectionalLight,\r\n name: 'DirectionalLight',\r\n parent: PunctualLight,\r\n createFunc(ctx: SceneNode) {\r\n const node = new DirectionalLight(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Illuminance',\r\n description: 'Physical illuminance in lux',\r\n type: 'float',\r\n default: 100000,\r\n options: {\r\n label: 'Illuminance (lux)',\r\n animatable: true,\r\n minValue: 0,\r\n group: 'Physical'\r\n },\r\n get(this: DirectionalLight, value) {\r\n value.num[0] = this.illuminance;\r\n },\r\n set(this: DirectionalLight, value) {\r\n this.illuminance = value.num[0];\r\n },\r\n isHidden(this: DirectionalLight) {\r\n return this.scene?.lightingMode !== 'physical';\r\n }\r\n },\r\n {\r\n name: 'SunLight',\r\n description: 'If true, this light will act as sun light and affect sky atmosphere rendering',\r\n type: 'bool',\r\n default: false,\r\n get(this: DirectionalLight, value) {\r\n value.bool[0] = this.sunLight;\r\n },\r\n set(this: DirectionalLight, value) {\r\n this.sunLight = value.bool[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getPointLightClass(): SerializableClass {\r\n return {\r\n ctor: PointLight,\r\n name: 'PointLight',\r\n parent: PunctualLight,\r\n createFunc(ctx: SceneNode) {\r\n const node = new PointLight(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n // Storage only, never shown: candela is the unit the shader consumes and the only one\r\n // safe to persist, but LuminousPower below is the single field authors edit.\r\n name: 'LuminousIntensity',\r\n description: 'Physical luminous intensity in candela',\r\n type: 'float',\r\n default: 100,\r\n options: {\r\n minValue: 0\r\n },\r\n get(this: PointLight, value) {\r\n value.num[0] = this.luminousIntensity;\r\n },\r\n set(this: PointLight, value) {\r\n this.luminousIntensity = value.num[0];\r\n },\r\n isHidden: () => true\r\n },\r\n {\r\n // The authored field. Non-persistent because LuminousIntensity above is the value of\r\n // record -- saving both would put the same quantity in the scene file twice.\r\n name: 'LuminousPower',\r\n description: 'Physical luminous flux in lumen (4pi x candela)',\r\n type: 'float',\r\n options: {\r\n label: 'Luminous power (lm)',\r\n animatable: true,\r\n minValue: 0,\r\n group: 'Physical'\r\n },\r\n isPersistent: () => false,\r\n get(this: PointLight, value) {\r\n value.num[0] = this.luminousPower;\r\n },\r\n set(this: PointLight, value) {\r\n this.luminousPower = value.num[0];\r\n },\r\n isHidden(this: PointLight) {\r\n return this.scene?.lightingMode !== 'physical';\r\n }\r\n },\r\n {\r\n name: 'Range',\r\n description:\r\n 'Light influence radius in world units. 0 auto-derives it from the physical intensity.',\r\n type: 'float',\r\n default: 10,\r\n options: {\r\n animatable: true,\r\n minValue: 0\r\n },\r\n get(this: PointLight, value) {\r\n value.num[0] = this.range;\r\n },\r\n set(this: PointLight, value) {\r\n this.range = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'DiffuseScale',\r\n description: 'Diffuse light intensity multiplier',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 10\r\n },\r\n get(this: PointLight, value) {\r\n value.num[0] = this.diffuseScale;\r\n },\r\n set(this: PointLight, value) {\r\n this.diffuseScale = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'SpecularScale',\r\n description: 'Specular light intensity multiplier',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 10\r\n },\r\n get(this: PointLight, value) {\r\n value.num[0] = this.specularScale;\r\n },\r\n set(this: PointLight, value) {\r\n this.specularScale = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'SourceRadius',\r\n description: 'Apparent radius of the light source for soft shadows and highlights',\r\n type: 'float',\r\n default: 0,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 100\r\n },\r\n get(this: PointLight, value) {\r\n value.num[0] = this.sourceRadius;\r\n },\r\n set(this: PointLight, value) {\r\n this.sourceRadius = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getSpotLightClass(): SerializableClass {\r\n return {\r\n ctor: SpotLight,\r\n name: 'SpotLight',\r\n parent: PunctualLight,\r\n createFunc(ctx: SceneNode) {\r\n const node = new SpotLight(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n // Storage only, never shown. Persisting candela is also required for correctness here:\r\n // the lumen conversion depends on the outer cone angle, which is a separate property\r\n // applied later in this list, so a persisted lumen value would be converted back against\r\n // the constructor's default angle on load -- silently changing the brightness of every\r\n // spot light whose cone is not 45 degrees.\r\n name: 'LuminousIntensity',\r\n description: 'Physical luminous intensity in candela',\r\n type: 'float',\r\n default: 1000,\r\n options: {\r\n minValue: 0\r\n },\r\n get(this: SpotLight, value) {\r\n value.num[0] = this.luminousIntensity;\r\n },\r\n set(this: SpotLight, value) {\r\n this.luminousIntensity = value.num[0];\r\n },\r\n isHidden: () => true\r\n },\r\n {\r\n // The authored field. See LuminousIntensity above for why it is not the persisted one.\r\n name: 'LuminousPower',\r\n description: 'Physical luminous flux in lumen (2pi(1-cos(outer)) x candela)',\r\n type: 'float',\r\n options: {\r\n label: 'Luminous power (lm)',\r\n animatable: true,\r\n minValue: 0,\r\n group: 'Physical'\r\n },\r\n isPersistent: () => false,\r\n get(this: SpotLight, value) {\r\n value.num[0] = this.luminousPower;\r\n },\r\n set(this: SpotLight, value) {\r\n this.luminousPower = value.num[0];\r\n },\r\n isHidden(this: SpotLight) {\r\n return this.scene?.lightingMode !== 'physical';\r\n }\r\n },\r\n {\r\n name: 'Range',\r\n description:\r\n 'Light influence radius in world units. 0 auto-derives it from the physical intensity.',\r\n type: 'float',\r\n default: 10,\r\n options: {\r\n animatable: true,\r\n minValue: 0\r\n },\r\n get(this: SpotLight, value) {\r\n value.num[0] = this.range;\r\n },\r\n set(this: SpotLight, value) {\r\n this.range = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'BeamAngle',\r\n description: 'Beam angle of cone',\r\n type: 'float',\r\n default: 90,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 180\r\n },\r\n get(this: SpotLight, value) {\r\n value.num[0] = radian2degree(Math.acos(this.cutoff) * 2);\r\n },\r\n set(this: SpotLight, value) {\r\n this.cutoff = Math.cos(degree2radian(value.num[0]) * 0.5);\r\n },\r\n isHidden(this: SpotLight) {\r\n return this.scene?.lightingMode === 'physical';\r\n }\r\n },\r\n {\r\n name: 'PhysicalInnerConeAngle',\r\n description: 'Physical inner cone half-angle in degrees',\r\n type: 'float',\r\n default: 22.5,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 90\r\n },\r\n get(this: SpotLight, value) {\r\n value.num[0] = radian2degree(this.innerConeAngle);\r\n },\r\n set(this: SpotLight, value) {\r\n this.innerConeAngle = degree2radian(value.num[0]);\r\n },\r\n isHidden(this: SpotLight) {\r\n return this.scene?.lightingMode !== 'physical';\r\n }\r\n },\r\n {\r\n name: 'PhysicalOuterConeAngle',\r\n description: 'Physical outer cone half-angle in degrees',\r\n type: 'float',\r\n default: 45,\r\n options: {\r\n animatable: true,\r\n minValue: 0.01,\r\n maxValue: 90\r\n },\r\n get(this: SpotLight, value) {\r\n value.num[0] = radian2degree(this.outerConeAngle);\r\n },\r\n set(this: SpotLight, value) {\r\n this.outerConeAngle = degree2radian(value.num[0]);\r\n },\r\n isHidden(this: SpotLight) {\r\n return this.scene?.lightingMode !== 'physical';\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getRectLightClass(): SerializableClass {\r\n return {\r\n ctor: RectLight,\r\n name: 'RectLight',\r\n parent: PunctualLight,\r\n createFunc(ctx: SceneNode) {\r\n const node = new RectLight(ctx.scene!);\r\n node.parent = ctx;\r\n return { obj: node };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Luminance',\r\n description: 'Physical luminance in candela per square meter (nit)',\r\n type: 'float',\r\n default: 100,\r\n options: {\r\n label: 'Luminance (nit)',\r\n animatable: true,\r\n minValue: 0,\r\n group: 'Physical'\r\n },\r\n get(this: RectLight, value) {\r\n value.num[0] = this.luminance;\r\n },\r\n set(this: RectLight, value) {\r\n this.luminance = value.num[0];\r\n },\r\n isHidden(this: RectLight) {\r\n return this.scene?.lightingMode !== 'physical';\r\n }\r\n },\r\n {\r\n name: 'Range',\r\n description: 'Light range in world unit',\r\n type: 'float',\r\n default: 10,\r\n options: {\r\n animatable: true,\r\n minValue: 0\r\n },\r\n get(this: RectLight, value) {\r\n value.num[0] = this.range;\r\n },\r\n set(this: RectLight, value) {\r\n this.range = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Width',\r\n description: 'Width of the light',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 1000\r\n },\r\n get(this: RectLight, value) {\r\n value.num[0] = this.width;\r\n },\r\n set(this: RectLight, value) {\r\n this.width = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Height',\r\n description: 'Height of the light',\r\n type: 'float',\r\n default: 1,\r\n options: {\r\n animatable: true,\r\n minValue: 0,\r\n maxValue: 1000\r\n },\r\n get(this: RectLight, value) {\r\n value.num[0] = this.height;\r\n },\r\n set(this: RectLight, value) {\r\n this.height = value.num[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["getPunctualLightClass","ctor","PunctualLight","parent","SceneNode","name","getProps","defineProps","description","type","default","options","animatable","get","value","num","color","x","y","z","set","Vector4","minValue","maxValue","intensity","isHidden","scene","lightingMode","phase","bool","castShadow","enum","labels","values","str","shadow","mode","isValid","shadowDistance","shadowMapSize","edit","objectTypes","AABB","isNullable","create","aabb","beginExtend","rootNode","iterate","child","Mesh","ClipmapTerrain","bbox","getWorldBoundingVolume","toAABB","extend","minPoint","maxPoint","setXYZ","object","shadowRegion","region","setRegion","isDirectionLight","depthBias","normalBias","nearClip","shadowStrength","numShadowCascades","pcfKernelSize","pcssLightRadius","pcssBlockerSampleCount","pcssFilterSampleCount","pcssMaxFilterRadius","pcssTemporalJitter","vsmBlurKernelSize","vsmBlurRadius","vsmDarkness","esmDepthScale","esmBlur","esmLogSpace","esmBlurKernelSize","esmBlurRadius","getDirectionalLightClass","DirectionalLight","createFunc","ctx","node","obj","label","group","illuminance","sunLight","getPointLightClass","PointLight","luminousIntensity","isPersistent","luminousPower","range","diffuseScale","specularScale","sourceRadius","getSpotLightClass","SpotLight","radian2degree","Math","acos","cutoff","cos","degree2radian","innerConeAngle","outerConeAngle","getRectLightClass","RectLight","luminance","width","height"],"mappings":"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"}
|
|
@@ -326,12 +326,11 @@ function getPBRCommonProps(manager) {
|
|
|
326
326
|
},
|
|
327
327
|
{
|
|
328
328
|
name: 'EmissiveStrength',
|
|
329
|
-
description: '
|
|
329
|
+
description: 'Display-referred intensity multiplier for the emissive color and texture, used by legacy ' + 'lighting. Physical lighting uses EmissiveLuminance instead.',
|
|
330
330
|
type: 'float',
|
|
331
331
|
options: {
|
|
332
332
|
animatable: true,
|
|
333
|
-
minValue: 0
|
|
334
|
-
maxValue: 1
|
|
333
|
+
minValue: 0
|
|
335
334
|
},
|
|
336
335
|
get (value) {
|
|
337
336
|
value.num[0] = this.emissiveStrength;
|
|
@@ -344,6 +343,47 @@ function getPBRCommonProps(manager) {
|
|
|
344
343
|
return this.$isInstance ? this.coreMaterial.emissiveStrength : 1;
|
|
345
344
|
}
|
|
346
345
|
},
|
|
346
|
+
{
|
|
347
|
+
name: 'EmissiveLuminance',
|
|
348
|
+
description: 'Emissive multiplier used by physical lighting. With EmissiveExposureWeight at 1 it is a ' + 'luminance in cd/m²: a display is 200-1000, a neon sign 5,000-20,000, a sunlit white ' + 'surface ~25,000. With the weight at 0, as on imported glTF/FBX materials, the exposure ' + 'cancels out and it is a display-referred multiplier where the useful range is about [0, 1].',
|
|
349
|
+
type: 'float',
|
|
350
|
+
options: {
|
|
351
|
+
animatable: true,
|
|
352
|
+
minValue: 0
|
|
353
|
+
},
|
|
354
|
+
get (value) {
|
|
355
|
+
value.num[0] = this.emissiveLuminance;
|
|
356
|
+
},
|
|
357
|
+
set (value) {
|
|
358
|
+
this.emissiveLuminance = value.num[0];
|
|
359
|
+
},
|
|
360
|
+
isHidden: createBlueprintOutputHiddenPredicate(),
|
|
361
|
+
getDefaultValue () {
|
|
362
|
+
return this.$isInstance ? this.coreMaterial.emissiveLuminance : 1000;
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
name: 'EmissiveExposureWeight',
|
|
367
|
+
description: 'How strongly the emissive term follows camera exposure, and therefore what unit ' + 'EmissiveLuminance carries. 1 reads it as a cd/m² luminance that dims as the camera stops ' + 'down; 0 cancels the exposure out, making it a display-referred multiplier that ignores ' + 'aperture, shutter and ISO. Imported glTF/FBX materials are set to 0.',
|
|
368
|
+
type: 'float',
|
|
369
|
+
options: {
|
|
370
|
+
animatable: true,
|
|
371
|
+
minValue: 0,
|
|
372
|
+
maxValue: 1
|
|
373
|
+
},
|
|
374
|
+
get (value) {
|
|
375
|
+
value.num[0] = this.emissiveExposureWeight;
|
|
376
|
+
},
|
|
377
|
+
set (value) {
|
|
378
|
+
this.emissiveExposureWeight = value.num[0];
|
|
379
|
+
},
|
|
380
|
+
// Materials are not scene-bound, so this cannot be gated on lightingMode. It is inert in
|
|
381
|
+
// legacy anyway (pre-exposure is 1 there), so it stays visible like the other emissive props.
|
|
382
|
+
isHidden: createBlueprintOutputHiddenPredicate(),
|
|
383
|
+
getDefaultValue () {
|
|
384
|
+
return this.$isInstance ? this.coreMaterial.emissiveExposureWeight : 1;
|
|
385
|
+
}
|
|
386
|
+
},
|
|
347
387
|
{
|
|
348
388
|
name: 'RectSpecularScale',
|
|
349
389
|
type: 'float',
|