@zephyr3d/scene 0.8.2 → 0.9.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/animationset.js +473 -60
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/cloth/gpu_cloth_system.js +2516 -0
- package/dist/animation/cloth/gpu_cloth_system.js.map +1 -0
- package/dist/animation/fixed_geometry_cache_track.js +138 -0
- package/dist/animation/fixed_geometry_cache_track.js.map +1 -0
- package/dist/animation/geometry_cache_utils.js +120 -0
- package/dist/animation/geometry_cache_utils.js.map +1 -0
- package/dist/animation/ik_modifier.js +9 -1
- package/dist/animation/ik_modifier.js.map +1 -1
- package/dist/animation/joint_dynamics/collision.js +469 -0
- package/dist/animation/joint_dynamics/collision.js.map +1 -0
- package/dist/animation/joint_dynamics/constraints.js +329 -0
- package/dist/animation/joint_dynamics/constraints.js.map +1 -0
- package/dist/animation/joint_dynamics/controller.js +699 -0
- package/dist/animation/joint_dynamics/controller.js.map +1 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +393 -0
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -0
- package/dist/animation/joint_dynamics/solver.js +794 -0
- package/dist/animation/joint_dynamics/solver.js.map +1 -0
- package/dist/animation/joint_dynamics/types.js +19 -0
- package/dist/animation/joint_dynamics/types.js.map +1 -0
- package/dist/animation/joint_dynamics/vrm_spring_bone.js +46 -0
- package/dist/animation/joint_dynamics/vrm_spring_bone.js.map +1 -0
- package/dist/animation/joint_dynamics_modifier.js +51 -0
- package/dist/animation/joint_dynamics_modifier.js.map +1 -0
- package/dist/animation/pca_geometry_cache_track.js +222 -0
- package/dist/animation/pca_geometry_cache_track.js.map +1 -0
- package/dist/animation/skeleton.js +2011 -139
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js +3 -5
- package/dist/animation/skeleton_modifier.js.map +1 -1
- package/dist/animation/spring/multi_chain_spring_system.js +2 -0
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
- package/dist/animation/spring/spring_chain.js +3 -2
- package/dist/animation/spring/spring_chain.js.map +1 -1
- package/dist/animation/spring/spring_collider.js +35 -5
- package/dist/animation/spring/spring_collider.js.map +1 -1
- package/dist/animation/spring/spring_particle.js +1 -0
- package/dist/animation/spring/spring_particle.js.map +1 -1
- package/dist/animation/spring/spring_system.js +325 -28
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/animation/spring2/collision.js +469 -0
- package/dist/animation/spring2/collision.js.map +1 -0
- package/dist/animation/spring2/constraints.js +329 -0
- package/dist/animation/spring2/constraints.js.map +1 -0
- package/dist/animation/spring2/controller.js +434 -0
- package/dist/animation/spring2/controller.js.map +1 -0
- package/dist/animation/spring2/math.js +16 -0
- package/dist/animation/spring2/math.js.map +1 -0
- package/dist/animation/spring2/solver.js +624 -0
- package/dist/animation/spring2/solver.js.map +1 -0
- package/dist/animation/spring2/spring_system.js +118 -0
- package/dist/animation/spring2/spring_system.js.map +1 -0
- package/dist/animation/spring2/types.js +19 -0
- package/dist/animation/spring2/types.js.map +1 -0
- package/dist/animation/spring_modifier.js +17 -1
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/app/engine.js +42 -15
- package/dist/app/engine.js.map +1 -1
- package/dist/app/runtimescript.js +132 -1
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/screen.js +3 -3
- package/dist/app/screen.js.map +1 -1
- package/dist/app/scriptingsystem.js +69 -37
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +157 -146
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +2 -1
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/zabc/zabc_loader.js +570 -0
- package/dist/asset/loaders/zabc/zabc_loader.js.map +1 -0
- package/dist/asset/model.js +192 -0
- package/dist/asset/model.js.map +1 -1
- package/dist/camera/base.js +26 -7
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +146 -24
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/fps.js +2 -2
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +2 -2
- package/dist/camera/orbit.js.map +1 -1
- package/dist/index.d.ts +11728 -8535
- package/dist/index.js +29 -8
- package/dist/index.js.map +1 -1
- package/dist/material/lambert.js +1 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +9 -3
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +54 -7
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +17 -7
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +7 -2
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +108 -16
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +222 -14
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +24 -12
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +11 -8
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +72 -5
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/pbrblueprint.js +148 -1
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js +125 -2
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/shader/helper.js +10 -4
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/water.js +2 -2
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/coloradjust.js +145 -0
- package/dist/posteffect/coloradjust.js.map +1 -0
- package/dist/posteffect/taa.js +68 -32
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/cluster_light.js +17 -12
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/deferredlightpass.js +510 -0
- package/dist/render/deferredlightpass.js.map +1 -0
- package/dist/render/deferredshadowlightpass.js +428 -0
- package/dist/render/deferredshadowlightpass.js.map +1 -0
- package/dist/render/drawable.js.map +1 -1
- package/dist/render/drawable_mixin.js +21 -12
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/envlight.js +20 -22
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/gbufferpass.js +50 -0
- package/dist/render/gbufferpass.js.map +1 -0
- package/dist/render/lightpass.js +1 -2
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/primitive.js +1 -1
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/render_queue.js +3 -2
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +5 -358
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/rendergraph/executor.js +15 -12
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +144 -88
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/history_resource_manager.js +178 -0
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -0
- package/dist/render/rendergraph/rendergraph.js +12 -1
- package/dist/render/rendergraph/rendergraph.js.map +1 -1
- package/dist/render/rendergraph/types.js +2 -2
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/sky.js +26 -9
- package/dist/render/sky.js.map +1 -1
- package/dist/scene/basesprite.js +4 -3
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +4 -4
- package/dist/scene/environment.js +7 -4
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/light.js +184 -18
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +30 -0
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/particlesys.js +3 -2
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/raycast_visitor.js +29 -3
- package/dist/scene/raycast_visitor.js.map +1 -1
- package/dist/scene/scene.js +86 -19
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +87 -31
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/script_attachment.js +59 -0
- package/dist/scene/script_attachment.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +3 -2
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +4 -3
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +3 -2
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/shadow.js +2 -2
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shadow/shadowmapper.js +74 -4
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shapes/box.js +163 -0
- package/dist/shapes/box.js.map +1 -1
- package/dist/shapes/capsule.js +216 -0
- package/dist/shapes/capsule.js.map +1 -0
- package/dist/shapes/cylinder.js +91 -0
- package/dist/shapes/cylinder.js.map +1 -1
- package/dist/shapes/plane.js +32 -0
- package/dist/shapes/plane.js.map +1 -1
- package/dist/shapes/tetrahedron.js +211 -0
- package/dist/shapes/tetrahedron.js.map +1 -1
- package/dist/shapes/torus.js +173 -0
- package/dist/shapes/torus.js.map +1 -1
- package/dist/utility/blueprint/common/math.js +111 -1
- package/dist/utility/blueprint/common/math.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js +235 -1
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/blueprint/material/ir.js +154 -10
- package/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +273 -19
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/serialization/json.js +12 -2
- package/dist/utility/serialization/json.js.map +1 -1
- package/dist/utility/serialization/manager.js +30 -11
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +250 -7
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -2
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +154 -2
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/cloth_script.js +834 -0
- package/dist/utility/serialization/scene/cloth_script.js.map +1 -0
- package/dist/utility/serialization/scene/common.js +7 -0
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +120 -4
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +453 -1
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +4 -2
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +298 -10
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +4 -2
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +100 -3
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +130 -3
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/script.js +66 -0
- package/dist/utility/serialization/scene/script.js.map +1 -0
- package/dist/utility/serialization/scene/spring_script.js +596 -0
- package/dist/utility/serialization/scene/spring_script.js.map +1 -0
- package/dist/utility/serialization/scene/sprite.js +5 -3
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +4 -2
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +4 -2
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/values.js +5 -1
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloth_script.js","sources":["../../../../src/utility/serialization/scene/cloth_script.ts"],"sourcesContent":["import type { Mesh } from '../../../scene/mesh';\r\nimport type { SceneNode } from '../../../scene/scene_node';\r\nimport { createGPUClothWrapBindingData } from '../../../animation/cloth/gpu_cloth_system';\r\nimport { defineProps, type SerializableClass } from '../types';\r\n\r\nexport type ClothColliderType = 'sphere' | 'capsule' | 'plane';\r\n\r\nconst clothConfigHostMap = new WeakMap<ClothScriptConfig, SceneNode>();\r\nconst clothTargetHostMap = new WeakMap<ClothTargetMeshConfig, SceneNode>();\r\nconst clothTargetOwnerMap = new WeakMap<ClothTargetMeshConfig, ClothScriptConfig>();\r\n\r\nfunction clamp01(value: number) {\r\n return Math.min(Math.max(value, 0), 1);\r\n}\r\n\r\nfunction normalizePlaneDirection(value: number) {\r\n return value < 0 ? -1 : 1;\r\n}\r\n\r\nfunction resolveClothHostScope(host: SceneNode) {\r\n return (\r\n (typeof (host as any)?.getPrefabNode === 'function' && (host as any).getPrefabNode()) ||\r\n host.scene?.rootNode ||\r\n host\r\n );\r\n}\r\n\r\nfunction resolveClothMeshById(host: SceneNode | null | undefined, meshId: string): Mesh | null {\r\n const id = String(meshId ?? '').trim();\r\n if (!host || !id) {\r\n return null;\r\n }\r\n const scope = resolveClothHostScope(host);\r\n const candidate = scope?.findNodeById?.(id);\r\n return candidate?.isMesh?.() && candidate.primitive ? (candidate as Mesh) : null;\r\n}\r\n\r\nfunction resolveClothMeshLabel(host: SceneNode | null | undefined, meshId: string) {\r\n const id = String(meshId ?? '').trim();\r\n if (!id) {\r\n return '';\r\n }\r\n const mesh = resolveClothMeshById(host, id);\r\n if (mesh) {\r\n const name = String(mesh.name ?? '').trim();\r\n return name || mesh.persistentId || id;\r\n }\r\n return `[Missing] ${id}`;\r\n}\r\n\r\nfunction getClothConfigHost(config: ClothScriptConfig) {\r\n return clothConfigHostMap.get(config) ?? null;\r\n}\r\n\r\nfunction getClothTargetHost(target: ClothTargetMeshConfig) {\r\n const owner = clothTargetOwnerMap.get(target);\r\n return clothTargetHostMap.get(target) ?? (owner ? clothConfigHostMap.get(owner) : null) ?? null;\r\n}\r\n\r\nfunction setClothTargetOwner(target: ClothTargetMeshConfig, owner: ClothScriptConfig, host?: SceneNode | null) {\r\n clothTargetOwnerMap.set(target, owner);\r\n if (host) {\r\n clothTargetHostMap.set(target, host);\r\n }\r\n}\r\n\r\nfunction clearClothTargetBinding(target: ClothTargetMeshConfig) {\r\n target.bindingData = '';\r\n target.bindingSignature = '';\r\n}\r\n\r\nfunction clearClothBindings(config: ClothScriptConfig) {\r\n for (const target of config.targetMeshes) {\r\n clearClothTargetBinding(target);\r\n }\r\n}\r\n\r\nfunction setClothBindingStatus(config: ClothScriptConfig, status: string) {\r\n config.bindingStatus = status;\r\n}\r\n\r\nfunction ensureDefaultTargetMeshEntry(config: ClothScriptConfig) {\r\n if (config.targetMeshes.length === 0) {\r\n const target = new ClothTargetMeshConfig();\r\n config.targetMeshes.push(target);\r\n setClothTargetOwner(target, config, getClothConfigHost(config));\r\n }\r\n}\r\n\r\nfunction invalidateClothBindings(config: ClothScriptConfig, status = 'Binding cache needs rebuild') {\r\n clearClothBindings(config);\r\n setClothBindingStatus(config, status);\r\n}\r\n\r\nasync function bindClothTargetMeshes(config: ClothScriptConfig) {\r\n const host = getClothConfigHost(config);\r\n if (config.bindingInProgress) {\r\n return;\r\n }\r\n const simulationMesh =\r\n resolveClothMeshById(host, config.simulationMeshId) || (host?.isMesh?.() && host.primitive ? (host as Mesh) : null);\r\n if (!simulationMesh) {\r\n setClothBindingStatus(config, 'Set Simulation Mesh before binding.');\r\n return;\r\n }\r\n const targetEntries = config.targetMeshes.filter((entry) => String(entry.meshId ?? '').trim().length > 0);\r\n if (targetEntries.length === 0) {\r\n setClothBindingStatus(config, 'Add at least one Target Mesh before binding.');\r\n return;\r\n }\r\n config.bindingInProgress = true;\r\n setClothBindingStatus(config, 'Binding target meshes...');\r\n let successCount = 0;\r\n const failedTargets: string[] = [];\r\n try {\r\n for (const entry of targetEntries) {\r\n const targetMesh = resolveClothMeshById(getClothTargetHost(entry), entry.meshId);\r\n if (!targetMesh) {\r\n clearClothTargetBinding(entry);\r\n failedTargets.push(resolveClothMeshLabel(host, entry.meshId));\r\n continue;\r\n }\r\n if (targetMesh === simulationMesh) {\r\n clearClothTargetBinding(entry);\r\n failedTargets.push(resolveClothMeshLabel(host, entry.meshId));\r\n continue;\r\n }\r\n try {\r\n const data = await createGPUClothWrapBindingData(simulationMesh, targetMesh);\r\n entry.bindingData = JSON.stringify(data);\r\n entry.bindingSignature =\r\n `${data.version}:${data.vertexCount}:${data.sourceVertexCount}:${data.influenceCount}`;\r\n successCount++;\r\n } catch (err) {\r\n clearClothTargetBinding(entry);\r\n failedTargets.push(\r\n `${resolveClothMeshLabel(host, entry.meshId)}: ${err instanceof Error ? err.message : String(err)}`\r\n );\r\n }\r\n }\r\n } finally {\r\n config.bindingInProgress = false;\r\n }\r\n if (successCount > 0 && failedTargets.length === 0) {\r\n setClothBindingStatus(config, `Bound ${successCount} target mesh(es).`);\r\n } else if (successCount > 0) {\r\n setClothBindingStatus(\r\n config,\r\n `Bound ${successCount} target mesh(es), ${failedTargets.length} failed: ${failedTargets.join('; ')}`\r\n );\r\n } else {\r\n setClothBindingStatus(config, failedTargets[0] || 'Binding failed.');\r\n }\r\n}\r\n\r\nexport function bindClothScriptConfigHost(config: ClothScriptConfig, host: SceneNode) {\r\n clothConfigHostMap.set(config, host);\r\n ensureDefaultTargetMeshEntry(config);\r\n for (const target of config.targetMeshes) {\r\n setClothTargetOwner(target, config, host);\r\n }\r\n}\r\n\r\nexport class ClothColliderConfig {\r\n type: ClothColliderType;\r\n enabled: boolean;\r\n bone: string;\r\n offsetX: number;\r\n offsetY: number;\r\n offsetZ: number;\r\n endOffsetX: number;\r\n endOffsetY: number;\r\n endOffsetZ: number;\r\n normalX: number;\r\n normalY: number;\r\n normalZ: number;\r\n radius: number;\r\n\r\n constructor(type: ClothColliderType = 'sphere') {\r\n this.type = type;\r\n this.enabled = true;\r\n this.bone = '';\r\n this.offsetX = 0;\r\n this.offsetY = 0;\r\n this.offsetZ = 0;\r\n this.endOffsetX = 0;\r\n this.endOffsetY = 0.2;\r\n this.endOffsetZ = 0;\r\n this.normalX = 0;\r\n this.normalY = 1;\r\n this.normalZ = 0;\r\n this.radius = 0.15;\r\n }\r\n}\r\n\r\nexport class ClothTargetMeshConfig {\r\n meshId: string;\r\n bindingData: string;\r\n bindingSignature: string;\r\n\r\n constructor() {\r\n this.meshId = '';\r\n this.bindingData = '';\r\n this.bindingSignature = '';\r\n }\r\n}\r\n\r\nexport class ClothScriptConfig {\r\n enabled: boolean;\r\n autoUpdate: boolean;\r\n simulationMeshId: string;\r\n targetMeshes: ClothTargetMeshConfig[];\r\n bindingStatus: string;\r\n bindingInProgress: boolean;\r\n damping: number;\r\n dynamicFriction: number;\r\n staticFriction: number;\r\n stiffness: number;\r\n poseFollow: number;\r\n substeps: number;\r\n gravityX: number;\r\n gravityY: number;\r\n gravityZ: number;\r\n solverIterations: number;\r\n vertexPinWeightsByTarget: string;\r\n pinnedVertexIndicesByTarget: string;\r\n maxNeighbors: number;\r\n maxTrianglesPerVertex: number;\r\n workgroupSize: number;\r\n rebuildNormals: boolean;\r\n colliders: ClothColliderConfig[];\r\n\r\n constructor() {\r\n this.enabled = true;\r\n this.autoUpdate = true;\r\n this.simulationMeshId = '';\r\n this.targetMeshes = [new ClothTargetMeshConfig()];\r\n this.bindingStatus = 'Binding cache needs rebuild';\r\n this.bindingInProgress = false;\r\n this.damping = 0.02;\r\n this.dynamicFriction = 0.15;\r\n this.staticFriction = 0.3;\r\n this.stiffness = 0.3;\r\n this.poseFollow = 0;\r\n this.substeps = 2;\r\n this.gravityX = 0;\r\n this.gravityY = -9.8;\r\n this.gravityZ = 0;\r\n this.solverIterations = 5;\r\n this.vertexPinWeightsByTarget = '';\r\n this.pinnedVertexIndicesByTarget = '';\r\n this.maxNeighbors = 8;\r\n this.maxTrianglesPerVertex = 16;\r\n this.workgroupSize = 64;\r\n this.rebuildNormals = true;\r\n this.colliders = [];\r\n }\r\n}\r\n\r\nexport function getClothColliderConfigClass(): SerializableClass {\r\n return {\r\n ctor: ClothColliderConfig,\r\n name: 'ClothColliderConfig',\r\n noTitle: true,\r\n createFunc() {\r\n return { obj: new ClothColliderConfig() };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Type',\r\n type: 'string',\r\n options: {\r\n group: 'Shape',\r\n enum: {\r\n labels: ['Sphere', 'Capsule', 'Plane'],\r\n values: ['sphere', 'capsule', 'plane']\r\n }\r\n },\r\n get(this: ClothColliderConfig, value) {\r\n value.str[0] = this.type;\r\n },\r\n set(this: ClothColliderConfig, value) {\r\n this.type = (value.str[0] as ClothColliderType) ?? 'sphere';\r\n }\r\n },\r\n {\r\n name: 'Enabled',\r\n type: 'bool',\r\n options: {\r\n group: 'General'\r\n },\r\n get(this: ClothColliderConfig, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: ClothColliderConfig, value) {\r\n this.enabled = !!value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Bone',\r\n type: 'string',\r\n options: {\r\n group: 'General'\r\n },\r\n get(this: ClothColliderConfig, value) {\r\n value.str[0] = this.bone;\r\n },\r\n set(this: ClothColliderConfig, value) {\r\n this.bone = value.str[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'Offset',\r\n type: 'vec3',\r\n options: {\r\n group: 'Shape'\r\n },\r\n isValid(this: ClothColliderConfig) {\r\n return this.type !== 'plane';\r\n },\r\n get(this: ClothColliderConfig, value) {\r\n value.num[0] = this.offsetX;\r\n value.num[1] = this.offsetY;\r\n value.num[2] = this.offsetZ;\r\n },\r\n set(this: ClothColliderConfig, value) {\r\n this.offsetX = value.num[0];\r\n this.offsetY = value.num[1];\r\n this.offsetZ = value.num[2];\r\n }\r\n },\r\n {\r\n name: 'EndOffset',\r\n type: 'vec3',\r\n options: {\r\n group: 'Shape'\r\n },\r\n isValid(this: ClothColliderConfig) {\r\n return this.type === 'capsule';\r\n },\r\n get(this: ClothColliderConfig, value) {\r\n value.num[0] = this.endOffsetX;\r\n value.num[1] = this.endOffsetY;\r\n value.num[2] = this.endOffsetZ;\r\n },\r\n set(this: ClothColliderConfig, value) {\r\n this.endOffsetX = value.num[0];\r\n this.endOffsetY = value.num[1];\r\n this.endOffsetZ = value.num[2];\r\n }\r\n },\r\n {\r\n name: 'Radius',\r\n type: 'float',\r\n options: {\r\n group: 'Shape',\r\n minValue: 0\r\n },\r\n isValid(this: ClothColliderConfig) {\r\n return this.type !== 'plane';\r\n },\r\n get(this: ClothColliderConfig, value) {\r\n value.num[0] = this.radius;\r\n },\r\n set(this: ClothColliderConfig, value) {\r\n this.radius = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Normal',\r\n type: 'float',\r\n options: {\r\n group: 'Shape',\r\n minValue: -1,\r\n maxValue: 1\r\n },\r\n isValid(this: ClothColliderConfig) {\r\n return this.type === 'plane';\r\n },\r\n get(this: ClothColliderConfig, value) {\r\n value.num[0] = this.normalY;\r\n },\r\n set(this: ClothColliderConfig, value) {\r\n this.normalX = 0;\r\n this.normalY = normalizePlaneDirection(value.num[0]);\r\n this.normalZ = 0;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getClothTargetMeshConfigClass(): SerializableClass {\r\n return {\r\n ctor: ClothTargetMeshConfig,\r\n name: 'ClothTargetMeshConfig',\r\n noTitle: true,\r\n createFunc() {\r\n return { obj: new ClothTargetMeshConfig() };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'TargetMesh',\r\n type: 'string',\r\n options: {\r\n sceneNode: {\r\n kind: 'mesh'\r\n }\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: ClothTargetMeshConfig, value) {\r\n value.str[0] = resolveClothMeshLabel(getClothTargetHost(this), this.meshId);\r\n },\r\n set(this: ClothTargetMeshConfig, value) {\r\n const nextId = String(value.str[0] ?? '').trim();\r\n if (this.meshId !== nextId) {\r\n this.meshId = nextId;\r\n clearClothTargetBinding(this);\r\n const owner = clothTargetOwnerMap.get(this);\r\n if (owner) {\r\n setClothBindingStatus(owner, 'Binding cache needs rebuild');\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'MeshId',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: ClothTargetMeshConfig, value) {\r\n value.str[0] = this.meshId;\r\n },\r\n set(this: ClothTargetMeshConfig, value) {\r\n this.meshId = value.str[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'BindingData',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: ClothTargetMeshConfig, value) {\r\n value.str[0] = this.bindingData;\r\n },\r\n set(this: ClothTargetMeshConfig, value) {\r\n this.bindingData = value.str[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'BindingSignature',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: ClothTargetMeshConfig, value) {\r\n value.str[0] = this.bindingSignature;\r\n },\r\n set(this: ClothTargetMeshConfig, value) {\r\n this.bindingSignature = value.str[0] ?? '';\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getClothScriptConfigClass(): SerializableClass {\r\n return {\r\n ctor: ClothScriptConfig,\r\n name: 'ClothScriptConfig',\r\n noTitle: true,\r\n createFunc() {\r\n return { obj: new ClothScriptConfig() };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Enabled',\r\n type: 'bool',\r\n options: {\r\n group: 'General'\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.bool[0] = this.enabled;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.enabled = !!value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'AutoUpdate',\r\n type: 'bool',\r\n options: {\r\n group: 'General'\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.bool[0] = this.autoUpdate;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.autoUpdate = !!value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'SimulationMesh',\r\n type: 'string',\r\n options: {\r\n group: 'General',\r\n sceneNode: {\r\n kind: 'mesh'\r\n }\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.str[0] = resolveClothMeshLabel(getClothConfigHost(this), this.simulationMeshId);\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n const nextId = String(value.str[0] ?? '').trim();\r\n if (this.simulationMeshId !== nextId) {\r\n this.simulationMeshId = nextId;\r\n invalidateClothBindings(this);\r\n }\r\n }\r\n },\r\n {\r\n name: 'SimulationMeshId',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.str[0] = this.simulationMeshId;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.simulationMeshId = value.str[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'TargetMesh',\r\n type: 'object_array',\r\n options: {\r\n group: 'Binding',\r\n objectTypes: [ClothTargetMeshConfig],\r\n inlineObjectArray: true\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n ensureDefaultTargetMeshEntry(this);\r\n value.object = this.targetMeshes;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.targetMeshes = ((value.object ?? []) as ClothTargetMeshConfig[]).filter(\r\n (entry): entry is ClothTargetMeshConfig => entry instanceof ClothTargetMeshConfig\r\n );\r\n ensureDefaultTargetMeshEntry(this);\r\n const host = getClothConfigHost(this);\r\n for (const entry of this.targetMeshes) {\r\n setClothTargetOwner(entry, this, host);\r\n }\r\n },\r\n add(this: ClothScriptConfig, value, index) {\r\n const target = (value.object?.[0] as ClothTargetMeshConfig) ?? new ClothTargetMeshConfig();\r\n setClothTargetOwner(target, this, getClothConfigHost(this));\r\n this.targetMeshes.splice(index ?? this.targetMeshes.length, 0, target);\r\n setClothBindingStatus(this, 'Binding cache needs rebuild');\r\n },\r\n delete(this: ClothScriptConfig, index) {\r\n this.targetMeshes.splice(index, 1);\r\n ensureDefaultTargetMeshEntry(this);\r\n setClothBindingStatus(this, 'Binding cache needs rebuild');\r\n },\r\n create() {\r\n return new ClothTargetMeshConfig();\r\n }\r\n },\r\n {\r\n name: 'BindingStatus',\r\n type: 'string',\r\n readonly: true,\r\n options: {\r\n group: 'Binding'\r\n },\r\n isPersistent() {\r\n return false;\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.str[0] = this.bindingStatus;\r\n }\r\n },\r\n {\r\n name: 'Binding',\r\n type: 'command',\r\n options: {\r\n group: 'Binding'\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.str[0] = this.bindingInProgress ? 'Binding...' : 'Bind';\r\n value.str[1] = 'Clear';\r\n },\r\n command(this: ClothScriptConfig, index) {\r\n if (index === 0) {\r\n if (!this.bindingInProgress) {\r\n void bindClothTargetMeshes(this);\r\n }\r\n } else {\r\n clearClothBindings(this);\r\n setClothBindingStatus(this, 'Binding cache cleared.');\r\n }\r\n return true;\r\n }\r\n },\r\n {\r\n name: 'VertexPinWeightsByTarget',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.str[0] = this.vertexPinWeightsByTarget;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.vertexPinWeightsByTarget = value.str[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'PinnedVertexIndicesByTarget',\r\n type: 'string',\r\n isHidden() {\r\n return true;\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.str[0] = this.pinnedVertexIndicesByTarget;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.pinnedVertexIndicesByTarget = value.str[0] ?? '';\r\n }\r\n },\r\n {\r\n name: 'Gravity',\r\n type: 'vec3',\r\n options: {\r\n group: 'Simulation'\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.gravityX;\r\n value.num[1] = this.gravityY;\r\n value.num[2] = this.gravityZ;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.gravityX = value.num[0];\r\n this.gravityY = value.num[1];\r\n this.gravityZ = value.num[2];\r\n }\r\n },\r\n {\r\n name: 'Damping',\r\n type: 'float',\r\n options: {\r\n group: 'Simulation',\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.damping;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.damping = clamp01(value.num[0]);\r\n }\r\n },\r\n {\r\n name: 'Stiffness',\r\n type: 'float',\r\n options: {\r\n group: 'Simulation',\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.stiffness;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.stiffness = clamp01(value.num[0]);\r\n }\r\n },\r\n {\r\n name: 'DynamicFriction',\r\n type: 'float',\r\n options: {\r\n group: 'Simulation',\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.dynamicFriction;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.dynamicFriction = clamp01(value.num[0]);\r\n }\r\n },\r\n {\r\n name: 'PoseFollow',\r\n type: 'float',\r\n options: {\r\n group: 'PoseFollow',\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.poseFollow;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.poseFollow = clamp01(value.num[0]);\r\n }\r\n },\r\n {\r\n name: 'StaticFriction',\r\n type: 'float',\r\n options: {\r\n group: 'Simulation',\r\n minValue: 0,\r\n maxValue: 1\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.staticFriction;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.staticFriction = clamp01(value.num[0]);\r\n }\r\n },\r\n {\r\n name: 'SolverIterations',\r\n type: 'int',\r\n options: {\r\n group: 'Simulation',\r\n minValue: 1,\r\n maxValue: 32\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.solverIterations;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.solverIterations = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'Substeps',\r\n type: 'int',\r\n options: {\r\n group: 'Simulation',\r\n minValue: 1,\r\n maxValue: 8\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.substeps;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.substeps = Math.max(1, Math.min(8, value.num[0] | 0));\r\n }\r\n },\r\n {\r\n name: 'MaxNeighbors',\r\n type: 'int',\r\n options: {\r\n group: 'Advanced',\r\n minValue: 1,\r\n maxValue: 64\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.maxNeighbors;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.maxNeighbors = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'MaxTrianglesPerVertex',\r\n type: 'int',\r\n options: {\r\n group: 'Advanced',\r\n minValue: 1,\r\n maxValue: 64\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.maxTrianglesPerVertex;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.maxTrianglesPerVertex = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'WorkgroupSize',\r\n type: 'int',\r\n options: {\r\n group: 'Advanced',\r\n minValue: 1,\r\n maxValue: 256\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.num[0] = this.workgroupSize;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.workgroupSize = value.num[0];\r\n }\r\n },\r\n {\r\n name: 'RebuildNormals',\r\n type: 'bool',\r\n options: {\r\n group: 'Advanced'\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.bool[0] = this.rebuildNormals;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.rebuildNormals = !!value.bool[0];\r\n }\r\n },\r\n {\r\n name: 'Colliders',\r\n type: 'object_array',\r\n options: {\r\n group: 'Collider',\r\n objectTypes: [ClothColliderConfig]\r\n },\r\n get(this: ClothScriptConfig, value) {\r\n value.object = this.colliders;\r\n },\r\n set(this: ClothScriptConfig, value) {\r\n this.colliders = (value.object ?? []) as ClothColliderConfig[];\r\n },\r\n add(this: ClothScriptConfig, value, index) {\r\n this.colliders.splice(index ?? this.colliders.length, 0, value.object![0] as ClothColliderConfig);\r\n },\r\n delete(this: ClothScriptConfig, index) {\r\n this.colliders.splice(index, 1);\r\n },\r\n create() {\r\n return new ClothColliderConfig();\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["clothConfigHostMap","WeakMap","clothTargetHostMap","clothTargetOwnerMap","clamp01","value","Math","min","max","normalizePlaneDirection","resolveClothHostScope","host","getPrefabNode","scene","rootNode","resolveClothMeshById","meshId","id","String","trim","scope","candidate","findNodeById","isMesh","primitive","resolveClothMeshLabel","mesh","name","persistentId","getClothConfigHost","config","get","getClothTargetHost","target","owner","setClothTargetOwner","set","clearClothTargetBinding","bindingData","bindingSignature","clearClothBindings","targetMeshes","setClothBindingStatus","status","bindingStatus","ensureDefaultTargetMeshEntry","length","ClothTargetMeshConfig","push","invalidateClothBindings","bindClothTargetMeshes","bindingInProgress","simulationMesh","simulationMeshId","targetEntries","filter","entry","successCount","failedTargets","targetMesh","data","createGPUClothWrapBindingData","JSON","stringify","version","vertexCount","sourceVertexCount","influenceCount","err","Error","message","join","bindClothScriptConfigHost","ClothColliderConfig","type","enabled","bone","offsetX","offsetY","offsetZ","endOffsetX","endOffsetY","endOffsetZ","normalX","normalY","normalZ","radius","ClothScriptConfig","autoUpdate","damping","dynamicFriction","staticFriction","stiffness","poseFollow","substeps","gravityX","gravityY","gravityZ","solverIterations","vertexPinWeightsByTarget","pinnedVertexIndicesByTarget","maxNeighbors","maxTrianglesPerVertex","workgroupSize","rebuildNormals","colliders","getClothColliderConfigClass","ctor","noTitle","createFunc","obj","getProps","defineProps","options","group","enum","labels","values","str","bool","isValid","num","minValue","maxValue","getClothTargetMeshConfigClass","sceneNode","kind","isPersistent","nextId","isHidden","getClothScriptConfigClass","objectTypes","inlineObjectArray","object","add","index","splice","delete","create","readonly","command"],"mappings":"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"}
|
|
@@ -19,6 +19,13 @@ import { getEngine, getDevice } from '../../../app/api.js';
|
|
|
19
19
|
name: `${cls.name}InstanceUniforms`,
|
|
20
20
|
async createFunc (_ctx, init) {
|
|
21
21
|
const material = await getEngine().resourceManager.fetchMaterial(init);
|
|
22
|
+
if (!material) {
|
|
23
|
+
console.error(`Material not found when creating material instance uniforms: ${String(init)}`);
|
|
24
|
+
return {
|
|
25
|
+
obj: null,
|
|
26
|
+
loadProps: false
|
|
27
|
+
};
|
|
28
|
+
}
|
|
22
29
|
return {
|
|
23
30
|
obj: new C(material.createInstance())
|
|
24
31
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sources":["../../../../src/utility/serialization/scene/common.ts"],"sourcesContent":["import type {\r\n BaseTexture,\r\n Texture2D,\r\n TextureAddressMode,\r\n TextureCube,\r\n TextureSampler\r\n} from '@zephyr3d/device';\r\nimport { defineProps, type PropertyAccessor, type SerializableClass } from '../types';\r\nimport type { Material, MeshMaterial } from '../../../material';\r\nimport type { Nullable } from '@zephyr3d/base';\r\nimport { Matrix4x4, Vector2, Vector3, Vector4 } from '@zephyr3d/base';\r\nimport type { ResourceManager } from '../manager';\r\nimport { getDevice, getEngine } from '../../../app/api';\r\n\r\n/** @internal */\r\nexport const meshInstanceClsMap: Map<\r\n {\r\n new (...args: any[]): MeshMaterial;\r\n },\r\n { C: { new (m: MeshMaterial): any }; S: SerializableClass }\r\n> = new Map();\r\n\r\n/** @internal */\r\nexport function getMeshMaterialInstanceUniformsClass(cls: {\r\n new (...args: any[]): MeshMaterial;\r\n}): SerializableClass {\r\n let info = meshInstanceClsMap.get(cls);\r\n if (!info) {\r\n class C {\r\n materialId: string;\r\n constructor(public material: MeshMaterial) {\r\n this.materialId = getEngine().resourceManager.getAssetId(material.coreMaterial) ?? '';\r\n }\r\n }\r\n const S: SerializableClass = {\r\n ctor: C,\r\n name: `${cls.name}InstanceUniforms`,\r\n async createFunc(_ctx, init) {\r\n const material = await getEngine().resourceManager.fetchMaterial<MeshMaterial>(init);\r\n return { obj: new C(material!.createInstance()) };\r\n },\r\n getInitParams(obj: C) {\r\n return obj.materialId;\r\n },\r\n getProps() {\r\n return (cls as typeof MeshMaterial).INSTANCE_UNIFORMS.filter((u) => !!u.name).map<\r\n PropertyAccessor<any, 'DUMMY'>\r\n >((u) => ({\r\n name: u.name,\r\n type: u.type,\r\n get(this: C, value) {\r\n const prop = u.prop as keyof MeshMaterial;\r\n const val = this.material[prop] as any;\r\n if (u.type === 'float') {\r\n value.num[0] = val as number;\r\n } else if (u.type === 'vec2') {\r\n value.num![0] = val.x;\r\n value.num[1] = val.y;\r\n } else if (u.type === 'vec3' || u.type === 'rgb') {\r\n value.num[0] = val.x;\r\n value.num[1] = val.y;\r\n value.num[2] = val.z;\r\n } else if (u.type === 'vec4' || u.type === 'rgba') {\r\n value.num[0] = val.x;\r\n value.num[1] = val.y;\r\n value.num[2] = val.z;\r\n value.num[3] = val.w;\r\n }\r\n },\r\n set(this: C, value) {\r\n const prop = u.prop as keyof MeshMaterial;\r\n if (u.type === 'float') {\r\n // @ts-ignore\r\n this.material[prop] = value.num[0];\r\n } else if (u.type === 'vec2') {\r\n // @ts-ignore\r\n this.material[prop] = new Vector2(value.num[0], value.num[1]);\r\n } else if (u.type === 'vec3' || u.type === 'rgb') {\r\n // @ts-ignore\r\n this.material[prop] = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n } else if (u.type === 'vec4' || u.type === 'rgba') {\r\n // @ts-ignore\r\n this.material[prop] = new Vector4(value.num[0], value.num[1], value.num[2], value.num[3]);\r\n }\r\n }\r\n }));\r\n }\r\n };\r\n info = { C, S };\r\n meshInstanceClsMap.set(cls, info);\r\n }\r\n return info.S;\r\n}\r\n\r\nexport function getTextureProps<T extends Material>(\r\n manager: ResourceManager,\r\n name: keyof T &\r\n string &\r\n { [P in keyof T]: T[P] extends Nullable<Texture2D | TextureCube> ? P : never }[keyof T],\r\n type: T[typeof name] extends Nullable<Texture2D>\r\n ? '2D'\r\n : T[typeof name] extends Nullable<TextureCube>\r\n ? 'Cube'\r\n : never,\r\n sRGB: boolean,\r\n phase: number,\r\n isValid?: (this: T) => boolean\r\n): PropertyAccessor<T>[] {\r\n return defineProps([\r\n {\r\n name: name[0].toUpperCase() + name.slice(1),\r\n type: 'object',\r\n default: '',\r\n phase: phase,\r\n options: {\r\n mimeTypes:\r\n type === '2D'\r\n ? ['image/jpeg', 'image/png', 'image/tga', 'image/vnd.radiance', 'image/x-dds', 'image/webp']\r\n : ['image/x-dds']\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n get(value) {\r\n value.str[0] = manager.getAssetId(this[name]) ?? '';\r\n },\r\n async set(value) {\r\n if (!value || !value.str[0]) {\r\n this[name] = null as any;\r\n } else {\r\n const assetId = value.str[0];\r\n let tex: Nullable<Texture2D | TextureCube>;\r\n try {\r\n tex = await manager.fetchTexture<Texture2D | TextureCube>(assetId, { linearColorSpace: !sRGB });\r\n } catch (err) {\r\n console.error(`Load asset failed: ${value.str[0]}: ${err}`);\r\n tex = null;\r\n }\r\n const isValidTextureType =\r\n type === '2D' ? tex?.isTexture2D() : type === 'Cube' ? tex?.isTextureCube() : false;\r\n if (isValidTextureType) {\r\n this[name] = tex as any;\r\n } else {\r\n console.error('Invalid texture type');\r\n }\r\n }\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return isValid.call(this);\r\n }\r\n return true;\r\n }\r\n },\r\n {\r\n name: name[0].toUpperCase() + name.slice(1, name.length - 7) + 'TexCoordScale',\r\n type: 'vec2',\r\n phase: phase + 1,\r\n default: [1, 1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: T, value) {\r\n const matrix = this[(name.slice(0, name.length - 7) + 'TexCoordMatrix') as keyof T] as Matrix4x4;\r\n if (!matrix) {\r\n value.num[0] = 1;\r\n value.num[1] = 1;\r\n } else {\r\n const scale = new Vector3();\r\n matrix.decompose(scale, null, null);\r\n value.num[0] = scale.x;\r\n value.num[1] = scale.y;\r\n }\r\n },\r\n set(this: T, value) {\r\n if (value.num[0] === 1 && value.num[1] === 1) {\r\n // @ts-ignore\r\n this[name.slice(0, name.length - 7) + 'TexCoordMatrix'] = null;\r\n } else {\r\n // @ts-ignore\r\n this[name.slice(0, name.length - 7) + 'TexCoordMatrix'] = Matrix4x4.scaling(\r\n new Vector3(value.num[0], value.num[1], 1)\r\n );\r\n }\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return !!this[name] && isValid.call(this);\r\n } else {\r\n return !!this[name];\r\n }\r\n }\r\n },\r\n {\r\n name: name[0].toUpperCase() + name.slice(1, name.length - 7) + 'TexCoordAddressU',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Clamp', 'Repeat', 'MirroredRepeat'],\r\n values: ['clamp', 'repeat', 'mirrored_repeat']\r\n }\r\n },\r\n phase: phase + 1,\r\n default: 'clamp',\r\n get(this: T, value) {\r\n const sampler =\r\n (this[\r\n (name.slice(0, name.length - 7) + 'TextureSampler') as keyof typeof this\r\n ] as TextureSampler) ?? (this[name] as BaseTexture).getDefaultSampler(false);\r\n value.str[0] = sampler.addressModeU;\r\n },\r\n set(this: T, value) {\r\n const sampler =\r\n (this[\r\n (name.slice(0, name.length - 7) + 'TextureSampler') as keyof typeof this\r\n ] as TextureSampler) ?? (this[name] as BaseTexture).getDefaultSampler(false);\r\n this[(name.slice(0, name.length - 7) + 'TextureSampler') as keyof typeof this] =\r\n getDevice().createSampler({\r\n addressU: value.str[0] as TextureAddressMode,\r\n addressV: sampler.addressModeV,\r\n lodMax: sampler.lodMax,\r\n lodMin: sampler.lodMin,\r\n magFilter: sampler.magFilter,\r\n minFilter: sampler.minFilter,\r\n mipFilter: sampler.mipFilter,\r\n maxAnisotropy: sampler.maxAnisotropy\r\n }) as any;\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return !!this[name] && isValid.call(this);\r\n } else {\r\n return !!this[name];\r\n }\r\n }\r\n },\r\n {\r\n name: name[0].toUpperCase() + name.slice(1, name.length - 7) + 'TexCoordAddressV',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Clamp', 'Repeat', 'MirroredRepeat'],\r\n values: ['clamp', 'repeat', 'mirrored_repeat']\r\n }\r\n },\r\n phase: phase + 1,\r\n default: 'clamp',\r\n get(this: T, value) {\r\n const sampler =\r\n (this[(name.slice(0, name.length - 7) + 'TextureSampler') as keyof T] as TextureSampler) ??\r\n (this[name] as BaseTexture).getDefaultSampler(false);\r\n value.str[0] = sampler.addressModeV;\r\n },\r\n set(this: T, value) {\r\n const sampler =\r\n (this[(name.slice(0, name.length - 7) + 'TextureSampler') as keyof T] as TextureSampler) ??\r\n (this[name] as BaseTexture).getDefaultSampler(false);\r\n // @ts-ignore\r\n this[name.slice(0, name.length - 7) + 'TextureSampler'] = getDevice().createSampler({\r\n addressU: sampler.addressModeU,\r\n addressV: value.str[0] as TextureAddressMode,\r\n lodMax: sampler.lodMax,\r\n lodMin: sampler.lodMin,\r\n magFilter: sampler.magFilter,\r\n minFilter: sampler.minFilter,\r\n mipFilter: sampler.mipFilter,\r\n maxAnisotropy: sampler.maxAnisotropy\r\n });\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return !!this[name] && isValid.call(this);\r\n } else {\r\n return !!this[name];\r\n }\r\n }\r\n },\r\n {\r\n name: name[0].toUpperCase() + name.slice(1, name.length - 7) + 'TexCoordIndex',\r\n type: 'int',\r\n phase: phase + 1,\r\n default: 0,\r\n get(value) {\r\n value.num[0] = this[name.slice(0, name.length - 7) + 'TexCoordIndex'];\r\n },\r\n set(value) {\r\n this[name.slice(0, name.length - 7) + 'TexCoordIndex'] = value.num[0];\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return !!this[name] && isValid.call(this);\r\n } else {\r\n return !!this[name];\r\n }\r\n }\r\n }\r\n ]);\r\n}\r\n"],"names":["meshInstanceClsMap","Map","getMeshMaterialInstanceUniformsClass","cls","info","get","C","materialId","material","getEngine","resourceManager","getAssetId","coreMaterial","S","ctor","name","createFunc","_ctx","init","fetchMaterial","obj","createInstance","getInitParams","getProps","INSTANCE_UNIFORMS","filter","u","map","type","value","prop","val","num","x","y","z","w","set","Vector2","Vector3","Vector4","getTextureProps","manager","sRGB","phase","isValid","defineProps","toUpperCase","slice","default","options","mimeTypes","isNullable","str","assetId","tex","fetchTexture","linearColorSpace","err","console","error","isValidTextureType","isTexture2D","$isInstance","call","length","animatable","matrix","scale","decompose","Matrix4x4","scaling","enum","labels","values","sampler","getDefaultSampler","addressModeU","getDevice","createSampler","addressU","addressV","addressModeV","lodMax","lodMin","magFilter","minFilter","mipFilter","maxAnisotropy"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","sources":["../../../../src/utility/serialization/scene/common.ts"],"sourcesContent":["import type {\r\n BaseTexture,\r\n Texture2D,\r\n TextureAddressMode,\r\n TextureCube,\r\n TextureSampler\r\n} from '@zephyr3d/device';\r\nimport { defineProps, type PropertyAccessor, type SerializableClass } from '../types';\r\nimport type { Material, MeshMaterial } from '../../../material';\r\nimport type { Nullable } from '@zephyr3d/base';\r\nimport { Matrix4x4, Vector2, Vector3, Vector4 } from '@zephyr3d/base';\r\nimport type { ResourceManager } from '../manager';\r\nimport { getDevice, getEngine } from '../../../app/api';\r\n\r\n/** @internal */\r\nexport const meshInstanceClsMap: Map<\r\n {\r\n new (...args: any[]): MeshMaterial;\r\n },\r\n { C: { new (m: MeshMaterial): any }; S: SerializableClass }\r\n> = new Map();\r\n\r\n/** @internal */\r\nexport function getMeshMaterialInstanceUniformsClass(cls: {\r\n new (...args: any[]): MeshMaterial;\r\n}): SerializableClass {\r\n let info = meshInstanceClsMap.get(cls);\r\n if (!info) {\r\n class C {\r\n materialId: string;\r\n constructor(public material: MeshMaterial) {\r\n this.materialId = getEngine().resourceManager.getAssetId(material.coreMaterial) ?? '';\r\n }\r\n }\r\n const S: SerializableClass = {\r\n ctor: C,\r\n name: `${cls.name}InstanceUniforms`,\r\n async createFunc(_ctx, init) {\r\n const material = await getEngine().resourceManager.fetchMaterial<MeshMaterial>(init);\r\n if (!material) {\r\n console.error(`Material not found when creating material instance uniforms: ${String(init)}`);\r\n return { obj: null, loadProps: false };\r\n }\r\n return { obj: new C(material.createInstance()) };\r\n },\r\n getInitParams(obj: C) {\r\n return obj.materialId;\r\n },\r\n getProps() {\r\n return (cls as typeof MeshMaterial).INSTANCE_UNIFORMS.filter((u) => !!u.name).map<\r\n PropertyAccessor<any, 'DUMMY'>\r\n >((u) => ({\r\n name: u.name,\r\n type: u.type,\r\n get(this: C, value) {\r\n const prop = u.prop as keyof MeshMaterial;\r\n const val = this.material[prop] as any;\r\n if (u.type === 'float') {\r\n value.num[0] = val as number;\r\n } else if (u.type === 'vec2') {\r\n value.num![0] = val.x;\r\n value.num[1] = val.y;\r\n } else if (u.type === 'vec3' || u.type === 'rgb') {\r\n value.num[0] = val.x;\r\n value.num[1] = val.y;\r\n value.num[2] = val.z;\r\n } else if (u.type === 'vec4' || u.type === 'rgba') {\r\n value.num[0] = val.x;\r\n value.num[1] = val.y;\r\n value.num[2] = val.z;\r\n value.num[3] = val.w;\r\n }\r\n },\r\n set(this: C, value) {\r\n const prop = u.prop as keyof MeshMaterial;\r\n if (u.type === 'float') {\r\n // @ts-ignore\r\n this.material[prop] = value.num[0];\r\n } else if (u.type === 'vec2') {\r\n // @ts-ignore\r\n this.material[prop] = new Vector2(value.num[0], value.num[1]);\r\n } else if (u.type === 'vec3' || u.type === 'rgb') {\r\n // @ts-ignore\r\n this.material[prop] = new Vector3(value.num[0], value.num[1], value.num[2]);\r\n } else if (u.type === 'vec4' || u.type === 'rgba') {\r\n // @ts-ignore\r\n this.material[prop] = new Vector4(value.num[0], value.num[1], value.num[2], value.num[3]);\r\n }\r\n }\r\n }));\r\n }\r\n };\r\n info = { C, S };\r\n meshInstanceClsMap.set(cls, info);\r\n }\r\n return info.S;\r\n}\r\n\r\nexport function getTextureProps<T extends Material>(\r\n manager: ResourceManager,\r\n name: keyof T &\r\n string &\r\n { [P in keyof T]: T[P] extends Nullable<Texture2D | TextureCube> ? P : never }[keyof T],\r\n type: T[typeof name] extends Nullable<Texture2D>\r\n ? '2D'\r\n : T[typeof name] extends Nullable<TextureCube>\r\n ? 'Cube'\r\n : never,\r\n sRGB: boolean,\r\n phase: number,\r\n isValid?: (this: T) => boolean\r\n): PropertyAccessor<T>[] {\r\n return defineProps([\r\n {\r\n name: name[0].toUpperCase() + name.slice(1),\r\n type: 'object',\r\n default: '',\r\n phase: phase,\r\n options: {\r\n mimeTypes:\r\n type === '2D'\r\n ? ['image/jpeg', 'image/png', 'image/tga', 'image/vnd.radiance', 'image/x-dds', 'image/webp']\r\n : ['image/x-dds']\r\n },\r\n isNullable() {\r\n return true;\r\n },\r\n get(value) {\r\n value.str[0] = manager.getAssetId(this[name]) ?? '';\r\n },\r\n async set(value) {\r\n if (!value || !value.str[0]) {\r\n this[name] = null as any;\r\n } else {\r\n const assetId = value.str[0];\r\n let tex: Nullable<Texture2D | TextureCube>;\r\n try {\r\n tex = await manager.fetchTexture<Texture2D | TextureCube>(assetId, { linearColorSpace: !sRGB });\r\n } catch (err) {\r\n console.error(`Load asset failed: ${value.str[0]}: ${err}`);\r\n tex = null;\r\n }\r\n const isValidTextureType =\r\n type === '2D' ? tex?.isTexture2D() : type === 'Cube' ? tex?.isTextureCube() : false;\r\n if (isValidTextureType) {\r\n this[name] = tex as any;\r\n } else {\r\n console.error('Invalid texture type');\r\n }\r\n }\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return isValid.call(this);\r\n }\r\n return true;\r\n }\r\n },\r\n {\r\n name: name[0].toUpperCase() + name.slice(1, name.length - 7) + 'TexCoordScale',\r\n type: 'vec2',\r\n phase: phase + 1,\r\n default: [1, 1],\r\n options: {\r\n animatable: true\r\n },\r\n get(this: T, value) {\r\n const matrix = this[(name.slice(0, name.length - 7) + 'TexCoordMatrix') as keyof T] as Matrix4x4;\r\n if (!matrix) {\r\n value.num[0] = 1;\r\n value.num[1] = 1;\r\n } else {\r\n const scale = new Vector3();\r\n matrix.decompose(scale, null, null);\r\n value.num[0] = scale.x;\r\n value.num[1] = scale.y;\r\n }\r\n },\r\n set(this: T, value) {\r\n if (value.num[0] === 1 && value.num[1] === 1) {\r\n // @ts-ignore\r\n this[name.slice(0, name.length - 7) + 'TexCoordMatrix'] = null;\r\n } else {\r\n // @ts-ignore\r\n this[name.slice(0, name.length - 7) + 'TexCoordMatrix'] = Matrix4x4.scaling(\r\n new Vector3(value.num[0], value.num[1], 1)\r\n );\r\n }\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return !!this[name] && isValid.call(this);\r\n } else {\r\n return !!this[name];\r\n }\r\n }\r\n },\r\n {\r\n name: name[0].toUpperCase() + name.slice(1, name.length - 7) + 'TexCoordAddressU',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Clamp', 'Repeat', 'MirroredRepeat'],\r\n values: ['clamp', 'repeat', 'mirrored_repeat']\r\n }\r\n },\r\n phase: phase + 1,\r\n default: 'clamp',\r\n get(this: T, value) {\r\n const sampler =\r\n (this[\r\n (name.slice(0, name.length - 7) + 'TextureSampler') as keyof typeof this\r\n ] as TextureSampler) ?? (this[name] as BaseTexture).getDefaultSampler(false);\r\n value.str[0] = sampler.addressModeU;\r\n },\r\n set(this: T, value) {\r\n const sampler =\r\n (this[\r\n (name.slice(0, name.length - 7) + 'TextureSampler') as keyof typeof this\r\n ] as TextureSampler) ?? (this[name] as BaseTexture).getDefaultSampler(false);\r\n this[(name.slice(0, name.length - 7) + 'TextureSampler') as keyof typeof this] =\r\n getDevice().createSampler({\r\n addressU: value.str[0] as TextureAddressMode,\r\n addressV: sampler.addressModeV,\r\n lodMax: sampler.lodMax,\r\n lodMin: sampler.lodMin,\r\n magFilter: sampler.magFilter,\r\n minFilter: sampler.minFilter,\r\n mipFilter: sampler.mipFilter,\r\n maxAnisotropy: sampler.maxAnisotropy\r\n }) as any;\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return !!this[name] && isValid.call(this);\r\n } else {\r\n return !!this[name];\r\n }\r\n }\r\n },\r\n {\r\n name: name[0].toUpperCase() + name.slice(1, name.length - 7) + 'TexCoordAddressV',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Clamp', 'Repeat', 'MirroredRepeat'],\r\n values: ['clamp', 'repeat', 'mirrored_repeat']\r\n }\r\n },\r\n phase: phase + 1,\r\n default: 'clamp',\r\n get(this: T, value) {\r\n const sampler =\r\n (this[(name.slice(0, name.length - 7) + 'TextureSampler') as keyof T] as TextureSampler) ??\r\n (this[name] as BaseTexture).getDefaultSampler(false);\r\n value.str[0] = sampler.addressModeV;\r\n },\r\n set(this: T, value) {\r\n const sampler =\r\n (this[(name.slice(0, name.length - 7) + 'TextureSampler') as keyof T] as TextureSampler) ??\r\n (this[name] as BaseTexture).getDefaultSampler(false);\r\n // @ts-ignore\r\n this[name.slice(0, name.length - 7) + 'TextureSampler'] = getDevice().createSampler({\r\n addressU: sampler.addressModeU,\r\n addressV: value.str[0] as TextureAddressMode,\r\n lodMax: sampler.lodMax,\r\n lodMin: sampler.lodMin,\r\n magFilter: sampler.magFilter,\r\n minFilter: sampler.minFilter,\r\n mipFilter: sampler.mipFilter,\r\n maxAnisotropy: sampler.maxAnisotropy\r\n });\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return !!this[name] && isValid.call(this);\r\n } else {\r\n return !!this[name];\r\n }\r\n }\r\n },\r\n {\r\n name: name[0].toUpperCase() + name.slice(1, name.length - 7) + 'TexCoordIndex',\r\n type: 'int',\r\n phase: phase + 1,\r\n default: 0,\r\n get(value) {\r\n value.num[0] = this[name.slice(0, name.length - 7) + 'TexCoordIndex'];\r\n },\r\n set(value) {\r\n this[name.slice(0, name.length - 7) + 'TexCoordIndex'] = value.num[0];\r\n },\r\n isValid() {\r\n if (this.$isInstance) {\r\n return false;\r\n }\r\n if (isValid) {\r\n return !!this[name] && isValid.call(this);\r\n } else {\r\n return !!this[name];\r\n }\r\n }\r\n }\r\n ]);\r\n}\r\n"],"names":["meshInstanceClsMap","Map","getMeshMaterialInstanceUniformsClass","cls","info","get","C","materialId","material","getEngine","resourceManager","getAssetId","coreMaterial","S","ctor","name","createFunc","_ctx","init","fetchMaterial","console","error","String","obj","loadProps","createInstance","getInitParams","getProps","INSTANCE_UNIFORMS","filter","u","map","type","value","prop","val","num","x","y","z","w","set","Vector2","Vector3","Vector4","getTextureProps","manager","sRGB","phase","isValid","defineProps","toUpperCase","slice","default","options","mimeTypes","isNullable","str","assetId","tex","fetchTexture","linearColorSpace","err","isValidTextureType","isTexture2D","$isInstance","call","length","animatable","matrix","scale","decompose","Matrix4x4","scaling","enum","labels","values","sampler","getDefaultSampler","addressModeU","getDevice","createSampler","addressU","addressV","addressModeV","lodMax","lodMin","magFilter","minFilter","mipFilter","maxAnisotropy"],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { PunctualLight, DirectionalLight, PointLight, SpotLight } from '../../../scene/light.js';
|
|
1
|
+
import { PunctualLight, DirectionalLight, PointLight, SpotLight, RectLight } from '../../../scene/light.js';
|
|
2
2
|
import { defineProps } from '../types.js';
|
|
3
3
|
import { Vector4, AABB, radian2degree, degree2radian } from '@zephyr3d/base';
|
|
4
4
|
import '../../../scene/scene.js';
|
|
5
5
|
import '../../../values.js';
|
|
6
|
+
import '../../../render/render_queue.js';
|
|
7
|
+
import '../../../render/primitive.js';
|
|
6
8
|
import '@zephyr3d/device';
|
|
7
9
|
import '../../../material/shader/helper.js';
|
|
8
10
|
import '../../../material/lambert.js';
|
|
@@ -18,8 +20,7 @@ import '../../../material/pbrblueprint.js';
|
|
|
18
20
|
import '../../../material/sprite.js';
|
|
19
21
|
import '../../../material/sprite_std.js';
|
|
20
22
|
import '../../blueprint/material/texture.js';
|
|
21
|
-
import '../../../render/
|
|
22
|
-
import '../../../render/primitive.js';
|
|
23
|
+
import '../../../render/rendergraph/forward_plus_builder.js';
|
|
23
24
|
import '../../../render/sky.js';
|
|
24
25
|
import '../../../render/clipmap.js';
|
|
25
26
|
import '../../../shaders/atmosphere.js';
|
|
@@ -31,6 +32,7 @@ import '../../../scene/particlesys.js';
|
|
|
31
32
|
import '../../../scene/batchgroup.js';
|
|
32
33
|
import { ClipmapTerrain } from '../../../scene/terrain-cm/terrain-cm.js';
|
|
33
34
|
import '../../../scene/terrain-cm/grass.js';
|
|
35
|
+
import '../../../scene/raycast_visitor.js';
|
|
34
36
|
|
|
35
37
|
/** @internal */ function getPunctualLightClass() {
|
|
36
38
|
return {
|
|
@@ -531,6 +533,54 @@ import '../../../scene/terrain-cm/grass.js';
|
|
|
531
533
|
set (value) {
|
|
532
534
|
this.range = value.num[0];
|
|
533
535
|
}
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
name: 'DiffuseScale',
|
|
539
|
+
type: 'float',
|
|
540
|
+
default: 1,
|
|
541
|
+
options: {
|
|
542
|
+
animatable: true,
|
|
543
|
+
minValue: 0,
|
|
544
|
+
maxValue: 10
|
|
545
|
+
},
|
|
546
|
+
get (value) {
|
|
547
|
+
value.num[0] = this.diffuseScale;
|
|
548
|
+
},
|
|
549
|
+
set (value) {
|
|
550
|
+
this.diffuseScale = value.num[0];
|
|
551
|
+
}
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
name: 'SpecularScale',
|
|
555
|
+
type: 'float',
|
|
556
|
+
default: 1,
|
|
557
|
+
options: {
|
|
558
|
+
animatable: true,
|
|
559
|
+
minValue: 0,
|
|
560
|
+
maxValue: 10
|
|
561
|
+
},
|
|
562
|
+
get (value) {
|
|
563
|
+
value.num[0] = this.specularScale;
|
|
564
|
+
},
|
|
565
|
+
set (value) {
|
|
566
|
+
this.specularScale = value.num[0];
|
|
567
|
+
}
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
name: 'SourceRadius',
|
|
571
|
+
type: 'float',
|
|
572
|
+
default: 0,
|
|
573
|
+
options: {
|
|
574
|
+
animatable: true,
|
|
575
|
+
minValue: 0,
|
|
576
|
+
maxValue: 100
|
|
577
|
+
},
|
|
578
|
+
get (value) {
|
|
579
|
+
value.num[0] = this.sourceRadius;
|
|
580
|
+
},
|
|
581
|
+
set (value) {
|
|
582
|
+
this.sourceRadius = value.num[0];
|
|
583
|
+
}
|
|
534
584
|
}
|
|
535
585
|
]);
|
|
536
586
|
}
|
|
@@ -586,6 +636,72 @@ import '../../../scene/terrain-cm/grass.js';
|
|
|
586
636
|
}
|
|
587
637
|
};
|
|
588
638
|
}
|
|
639
|
+
/** @internal */ function getRectLightClass() {
|
|
640
|
+
return {
|
|
641
|
+
ctor: RectLight,
|
|
642
|
+
name: 'RectLight',
|
|
643
|
+
parent: PunctualLight,
|
|
644
|
+
createFunc (ctx) {
|
|
645
|
+
const node = new RectLight(ctx.scene);
|
|
646
|
+
node.parent = ctx;
|
|
647
|
+
return {
|
|
648
|
+
obj: node
|
|
649
|
+
};
|
|
650
|
+
},
|
|
651
|
+
getProps () {
|
|
652
|
+
return defineProps([
|
|
653
|
+
{
|
|
654
|
+
name: 'Range',
|
|
655
|
+
type: 'float',
|
|
656
|
+
default: 10,
|
|
657
|
+
options: {
|
|
658
|
+
animatable: true,
|
|
659
|
+
minValue: 0,
|
|
660
|
+
maxValue: 1000
|
|
661
|
+
},
|
|
662
|
+
get (value) {
|
|
663
|
+
value.num[0] = this.range;
|
|
664
|
+
},
|
|
665
|
+
set (value) {
|
|
666
|
+
this.range = value.num[0];
|
|
667
|
+
}
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
name: 'Width',
|
|
671
|
+
type: 'float',
|
|
672
|
+
default: 1,
|
|
673
|
+
options: {
|
|
674
|
+
animatable: true,
|
|
675
|
+
minValue: 0,
|
|
676
|
+
maxValue: 1000
|
|
677
|
+
},
|
|
678
|
+
get (value) {
|
|
679
|
+
value.num[0] = this.width;
|
|
680
|
+
},
|
|
681
|
+
set (value) {
|
|
682
|
+
this.width = value.num[0];
|
|
683
|
+
}
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
name: 'Height',
|
|
687
|
+
type: 'float',
|
|
688
|
+
default: 1,
|
|
689
|
+
options: {
|
|
690
|
+
animatable: true,
|
|
691
|
+
minValue: 0,
|
|
692
|
+
maxValue: 1000
|
|
693
|
+
},
|
|
694
|
+
get (value) {
|
|
695
|
+
value.num[0] = this.height;
|
|
696
|
+
},
|
|
697
|
+
set (value) {
|
|
698
|
+
this.height = value.num[0];
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
]);
|
|
702
|
+
}
|
|
703
|
+
};
|
|
704
|
+
}
|
|
589
705
|
|
|
590
|
-
export { getDirectionalLightClass, getPointLightClass, getPunctualLightClass, getSpotLightClass };
|
|
706
|
+
export { getDirectionalLightClass, getPointLightClass, getPunctualLightClass, getRectLightClass, getSpotLightClass };
|
|
591
707
|
//# sourceMappingURL=light.js.map
|
|
@@ -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, 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 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 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 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 type: 'string',\r\n phase: 1,\r\n default: 'hard',\r\n options: {\r\n enum: {\r\n labels: ['Hard', 'PCF', 'PCF-PD', 'VSM', 'ESM'],\r\n values: ['hard', 'pcf-opt', 'pcf-pd', 'vsm', 'esm']\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 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 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 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;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowRegion = 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 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 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: 'ShadowCascades',\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 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-opt';\r\n }\r\n },\r\n {\r\n name: 'PCFSampleCount',\r\n type: 'int',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 128\r\n },\r\n default: 12,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pdSampleCount;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pdSampleCount = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcf-pd';\r\n }\r\n },\r\n {\r\n name: 'PCFSampleRadius',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 64\r\n },\r\n default: 4,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pdSampleRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pdSampleRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcf-pd';\r\n }\r\n },\r\n {\r\n name: 'VSMBlurKernelSize',\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 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 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 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 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: 'ESMBlurKernelSize',\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 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 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 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 }\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 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 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"],"names":["getPunctualLightClass","ctor","PunctualLight","parent","SceneNode","name","getProps","defineProps","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","isDirectionLight","depthBias","normalBias","numShadowCascades","pcfKernelSize","pdSampleCount","pdSampleRadius","vsmBlurKernelSize","vsmBlurRadius","vsmDarkness","esmDepthScale","esmBlur","esmBlurKernelSize","esmBlurRadius","getDirectionalLightClass","DirectionalLight","createFunc","ctx","node","obj","sunLight","getPointLightClass","PointLight","range","getSpotLightClass","SpotLight","radian2degree","Math","acos","cutoff","cos","degree2radian"],"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 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 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 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 type: 'string',\r\n phase: 1,\r\n default: 'hard',\r\n options: {\r\n enum: {\r\n labels: ['Hard', 'PCF', 'PCF-PD', 'VSM', 'ESM'],\r\n values: ['hard', 'pcf-opt', 'pcf-pd', 'vsm', 'esm']\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 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 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 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;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.shadowRegion = 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 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 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: 'ShadowCascades',\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 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-opt';\r\n }\r\n },\r\n {\r\n name: 'PCFSampleCount',\r\n type: 'int',\r\n phase: 2,\r\n options: {\r\n minValue: 1,\r\n maxValue: 128\r\n },\r\n default: 12,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pdSampleCount;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pdSampleCount = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcf-pd';\r\n }\r\n },\r\n {\r\n name: 'PCFSampleRadius',\r\n type: 'float',\r\n phase: 2,\r\n options: {\r\n minValue: 0,\r\n maxValue: 64\r\n },\r\n default: 4,\r\n get(this: PunctualLight, value) {\r\n value.num[0] = this.shadow.pdSampleRadius;\r\n },\r\n set(this: PunctualLight, value) {\r\n this.shadow.pdSampleRadius = value.num[0];\r\n },\r\n isValid(this: PunctualLight) {\r\n return !!this.castShadow && this.shadow.mode === 'pcf-pd';\r\n }\r\n },\r\n {\r\n name: 'VSMBlurKernelSize',\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 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 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 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 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: 'ESMBlurKernelSize',\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 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 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 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 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 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 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 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 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 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 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 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","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","isDirectionLight","depthBias","normalBias","numShadowCascades","pcfKernelSize","pdSampleCount","pdSampleRadius","vsmBlurKernelSize","vsmBlurRadius","vsmDarkness","esmDepthScale","esmBlur","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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"}
|