@zephyr3d/editor 0.3.8 → 0.3.9
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/assets/{index-BZ1L8ggE.js → index-CO6yA4Rj.js} +313 -11
- package/dist/assistant/zephyr-types-index.json +13834 -11679
- package/dist/index.html +1 -1
- package/dist/modules/zephyr3d_backend-webgpu.js +1 -1
- package/dist/modules/zephyr3d_backend-webgpu.js.map +1 -1
- package/dist/modules/zephyr3d_device.js +2 -2
- package/dist/modules/zephyr3d_device.js.map +1 -1
- package/dist/modules/zephyr3d_scene.js +2325 -515
- package/dist/modules/zephyr3d_scene.js.map +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js +1 -1
- package/dist/vendor/zephyr3d/backend-webgpu/dist/renderpass_webgpu.js.map +1 -1
- package/dist/vendor/zephyr3d/device/dist/device.js +2 -2
- package/dist/vendor/zephyr3d/device/dist/device.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/app/engine.js +3 -1
- package/dist/vendor/zephyr3d/scene/dist/app/engine.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/asset/assetmanager.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/asset/assetmanager.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js +87 -0
- package/dist/vendor/zephyr3d/scene/dist/camera/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/index.d.ts +158 -4
- package/dist/vendor/zephyr3d/scene/dist/index.js +3 -0
- package/dist/vendor/zephyr3d/scene/dist/index.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/meshmaterial.js +8 -1
- package/dist/vendor/zephyr3d/scene/dist/material/meshmaterial.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js +6 -0
- package/dist/vendor/zephyr3d/scene/dist/material/shader/helper.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/material/skin.js +263 -0
- package/dist/vendor/zephyr3d/scene/dist/material/skin.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/compositor.js +3 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/compositor.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/skinsss.js +194 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/skinsss.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js +26 -49
- package/dist/vendor/zephyr3d/scene/dist/posteffect/ssr.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/sss.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/posteffect/sss.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/posteffect/taa.js +2 -40
- package/dist/vendor/zephyr3d/scene/dist/posteffect/taa.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/abuffer_oit.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/abuffer_oit.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/drawable_mixin.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/drawable_mixin.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/fbm_wavegenerator.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/gerstner_wavegenerator.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/globalbindgroup_allocator.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js +4 -1
- package/dist/vendor/zephyr3d/scene/dist/render/lightpass.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/render_queue.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/render_queue.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/renderer.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/render/renderer.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/device_pool_allocator.js +12 -5
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js +78 -8
- package/dist/vendor/zephyr3d/scene/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/basesprite.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/basesprite.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/batchgroup.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/batchgroup.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/environment.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/environment.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/light.js +158 -154
- package/dist/vendor/zephyr3d/scene/dist/scene/light.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/mesh.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/mesh.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/msdftext.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/msdftext.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/msdftextsprite.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/particlesys.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/particlesys.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/scene.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/scene.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grass.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grassmaterial.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/terrain-cm.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/scene/water.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/scene/water.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shaders/shadow.js +617 -1
- package/dist/vendor/zephyr3d/scene/dist/shaders/shadow.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/esm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_opt.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_pd.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcss.js +182 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/pcss.js.map +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/shader.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/shader.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadowmapper.js +183 -105
- package/dist/vendor/zephyr3d/scene/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/ssm.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/ssm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/shadow/vsm.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/shadow/vsm.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js +3 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/manager.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/batch.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js +122 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/common.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/light.js +102 -21
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/material.js +195 -3
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/particle.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/primitive.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/sprite.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/terrain.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/text.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/water.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/vendor/zephyr3d/scene/dist/values.js +1 -0
- package/dist/vendor/zephyr3d/scene/dist/values.js.map +1 -1
- package/electron/main.cjs +30 -6
- package/package.json +4 -4
|
@@ -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 { PBRBluePrintMaterial, type Material, type MeshMaterial } from '../../../material';\r\nimport type { PBRBlueprintOutputName } from '../../../material/pbrblueprint';\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\nfunction shouldHideBlueprintTextureProperty(object: unknown, outputs?: readonly PBRBlueprintOutputName[]) {\r\n return !!outputs && object instanceof PBRBluePrintMaterial;\r\n}\r\n\r\nfunction getTextureLabel(name: string): string {\r\n return name\r\n .replace(/Texture$/, '')\r\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\r\n .toLowerCase();\r\n}\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 description: `Per-instance override value for ${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 blueprintOutputsToHide?: readonly PBRBlueprintOutputName[]\r\n): PropertyAccessor<T>[] {\r\n const textureLabel = getTextureLabel(name);\r\n return defineProps([\r\n {\r\n name: name[0].toUpperCase() + name.slice(1),\r\n description: `Texture asset ID or file path for the ${textureLabel} texture`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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 description: `UV scale applied to the ${textureLabel} texture`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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 description: `U-axis wrap mode for the ${textureLabel} texture, possible values are clamp, repeat and mirrored_repeat`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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 description: `V-axis wrap mode for the ${textureLabel} texture, possible values are clamp, repeat and mirrored_repeat`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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 description: `UV set index used by the ${textureLabel} texture`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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":["shouldHideBlueprintTextureProperty","object","outputs","PBRBluePrintMaterial","getTextureLabel","name","replace","toLowerCase","meshInstanceClsMap","Map","getMeshMaterialInstanceUniformsClass","cls","info","get","C","materialId","material","getEngine","resourceManager","getAssetId","coreMaterial","S","ctor","createFunc","_ctx","init","fetchMaterial","console","error","String","obj","loadProps","createInstance","getInitParams","getProps","INSTANCE_UNIFORMS","filter","u","map","description","type","value","prop","val","num","x","y","z","w","set","Vector2","Vector3","Vector4","getTextureProps","manager","sRGB","phase","isValid","blueprintOutputsToHide","textureLabel","defineProps","toUpperCase","slice","default","options","mimeTypes","isNullable","str","assetId","tex","fetchTexture","linearColorSpace","err","isValidTextureType","isTexture2D","isHidden","$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 { PBRBluePrintMaterial, type Material, type MeshMaterial } from '../../../material';\r\nimport type { PBRBlueprintOutputName } from '../../../material/pbrblueprint';\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\nfunction shouldHideBlueprintTextureProperty(object: unknown, outputs?: readonly PBRBlueprintOutputName[]) {\r\n return !!outputs && object instanceof PBRBluePrintMaterial;\r\n}\r\n\r\nfunction getTextureLabel(name: string): string {\r\n return name\r\n .replace(/Texture$/, '')\r\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\r\n .toLowerCase();\r\n}\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 description: `Per-instance override value for ${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 blueprintOutputsToHide?: readonly PBRBlueprintOutputName[]\r\n): PropertyAccessor<T>[] {\r\n const textureLabel = getTextureLabel(name);\r\n return defineProps([\r\n {\r\n name: name[0].toUpperCase() + name.slice(1),\r\n description: `Texture asset ID or file path for the ${textureLabel} texture`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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 description: `UV scale applied to the ${textureLabel} texture`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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 description: `U-axis wrap mode for the ${textureLabel} texture, possible values are clamp, repeat and mirrored_repeat`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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 description: `V-axis wrap mode for the ${textureLabel} texture, possible values are clamp, repeat and mirrored_repeat`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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 description: `UV set index used by the ${textureLabel} texture`,\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 isHidden(this: T) {\r\n return shouldHideBlueprintTextureProperty(this, blueprintOutputsToHide);\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":["shouldHideBlueprintTextureProperty","object","outputs","PBRBluePrintMaterial","getTextureLabel","name","replace","toLowerCase","meshInstanceClsMap","Map","getMeshMaterialInstanceUniformsClass","cls","info","get","C","materialId","material","getEngine","resourceManager","getAssetId","coreMaterial","S","ctor","createFunc","_ctx","init","fetchMaterial","console","error","String","obj","loadProps","createInstance","getInitParams","getProps","INSTANCE_UNIFORMS","filter","u","map","description","type","value","prop","val","num","x","y","z","w","set","Vector2","Vector3","Vector4","getTextureProps","manager","sRGB","phase","isValid","blueprintOutputsToHide","textureLabel","defineProps","toUpperCase","slice","default","options","mimeTypes","isNullable","str","assetId","tex","fetchTexture","linearColorSpace","err","isValidTextureType","isTexture2D","isHidden","$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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"}
|
|
@@ -12,6 +12,7 @@ import '../../../material/blinn.js';
|
|
|
12
12
|
import '../../../material/unlit.js';
|
|
13
13
|
import '../../../material/particle.js';
|
|
14
14
|
import '../../../material/subsurfaceprofile.js';
|
|
15
|
+
import '../../../material/skin.js';
|
|
15
16
|
import '../../../material/meshmaterial.js';
|
|
16
17
|
import '../../../material/grassmaterial.js';
|
|
17
18
|
import '../../../material/terrain-cm.js';
|
|
@@ -108,16 +109,20 @@ import '../../../scene/raycast_visitor.js';
|
|
|
108
109
|
labels: [
|
|
109
110
|
'Hard',
|
|
110
111
|
'PCF',
|
|
111
|
-
'
|
|
112
|
+
'PCSS',
|
|
112
113
|
'VSM',
|
|
113
|
-
'ESM'
|
|
114
|
+
'ESM',
|
|
115
|
+
'PCF-OPT (deprecated)',
|
|
116
|
+
'PCF-PD (deprecated)'
|
|
114
117
|
],
|
|
115
118
|
values: [
|
|
116
119
|
'hard',
|
|
117
|
-
'pcf
|
|
118
|
-
'
|
|
120
|
+
'pcf',
|
|
121
|
+
'pcss',
|
|
119
122
|
'vsm',
|
|
120
|
-
'esm'
|
|
123
|
+
'esm',
|
|
124
|
+
'pcf-opt',
|
|
125
|
+
'pcf-pd'
|
|
121
126
|
]
|
|
122
127
|
}
|
|
123
128
|
},
|
|
@@ -270,6 +275,26 @@ import '../../../scene/raycast_visitor.js';
|
|
|
270
275
|
return !!this.castShadow;
|
|
271
276
|
}
|
|
272
277
|
},
|
|
278
|
+
{
|
|
279
|
+
name: 'ShadowNearClip',
|
|
280
|
+
description: 'Near clip distance for shadow camera',
|
|
281
|
+
type: 'float',
|
|
282
|
+
phase: 1,
|
|
283
|
+
default: 1,
|
|
284
|
+
options: {
|
|
285
|
+
minValue: 0.01,
|
|
286
|
+
maxValue: 10
|
|
287
|
+
},
|
|
288
|
+
get (value) {
|
|
289
|
+
value.num[0] = this.shadow.nearClip;
|
|
290
|
+
},
|
|
291
|
+
set (value) {
|
|
292
|
+
this.shadow.nearClip = value.num[0];
|
|
293
|
+
},
|
|
294
|
+
isValid () {
|
|
295
|
+
return !!this.castShadow && !this.isDirectionLight();
|
|
296
|
+
}
|
|
297
|
+
},
|
|
273
298
|
{
|
|
274
299
|
name: 'ShadowStrength',
|
|
275
300
|
description: 'Shadow strength, 0 means disabled and 1 means full effect',
|
|
@@ -337,47 +362,103 @@ import '../../../scene/raycast_visitor.js';
|
|
|
337
362
|
this.shadow.pcfKernelSize = value.num[0];
|
|
338
363
|
},
|
|
339
364
|
isValid () {
|
|
340
|
-
return !!this.castShadow && this.shadow.mode === 'pcf-opt';
|
|
365
|
+
return !!this.castShadow && (this.shadow.mode === 'pcf' || this.shadow.mode === 'pcf-opt');
|
|
341
366
|
}
|
|
342
367
|
},
|
|
343
368
|
{
|
|
344
|
-
name: '
|
|
345
|
-
description: '
|
|
369
|
+
name: 'PCSSLightRadius',
|
|
370
|
+
description: 'Light radius for PCSS shadow',
|
|
371
|
+
type: 'float',
|
|
372
|
+
phase: 2,
|
|
373
|
+
options: {
|
|
374
|
+
minValue: 0,
|
|
375
|
+
maxValue: 64
|
|
376
|
+
},
|
|
377
|
+
default: 8,
|
|
378
|
+
get (value) {
|
|
379
|
+
value.num[0] = this.shadow.pcssLightRadius;
|
|
380
|
+
},
|
|
381
|
+
set (value) {
|
|
382
|
+
this.shadow.pcssLightRadius = value.num[0];
|
|
383
|
+
},
|
|
384
|
+
isValid () {
|
|
385
|
+
return !!this.castShadow && this.shadow.mode === 'pcss';
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
name: 'PCSSBlockerSampleCount',
|
|
390
|
+
description: 'Blocker search sample count for PCSS shadow',
|
|
346
391
|
type: 'int',
|
|
347
392
|
phase: 2,
|
|
348
393
|
options: {
|
|
349
394
|
minValue: 1,
|
|
350
|
-
maxValue:
|
|
395
|
+
maxValue: 64
|
|
351
396
|
},
|
|
352
|
-
default:
|
|
397
|
+
default: 24,
|
|
353
398
|
get (value) {
|
|
354
|
-
value.num[0] = this.shadow.
|
|
399
|
+
value.num[0] = this.shadow.pcssBlockerSampleCount;
|
|
355
400
|
},
|
|
356
401
|
set (value) {
|
|
357
|
-
this.shadow.
|
|
402
|
+
this.shadow.pcssBlockerSampleCount = value.num[0];
|
|
358
403
|
},
|
|
359
404
|
isValid () {
|
|
360
|
-
return !!this.castShadow && this.shadow.mode === '
|
|
405
|
+
return !!this.castShadow && this.shadow.mode === 'pcss';
|
|
361
406
|
}
|
|
362
407
|
},
|
|
363
408
|
{
|
|
364
|
-
name: '
|
|
365
|
-
description: '
|
|
366
|
-
type: '
|
|
409
|
+
name: 'PCSSFilterSampleCount',
|
|
410
|
+
description: 'Filter sample count for PCSS shadow',
|
|
411
|
+
type: 'int',
|
|
367
412
|
phase: 2,
|
|
368
413
|
options: {
|
|
369
|
-
minValue:
|
|
414
|
+
minValue: 1,
|
|
370
415
|
maxValue: 64
|
|
371
416
|
},
|
|
372
|
-
default:
|
|
417
|
+
default: 32,
|
|
418
|
+
get (value) {
|
|
419
|
+
value.num[0] = this.shadow.pcssFilterSampleCount;
|
|
420
|
+
},
|
|
421
|
+
set (value) {
|
|
422
|
+
this.shadow.pcssFilterSampleCount = value.num[0];
|
|
423
|
+
},
|
|
424
|
+
isValid () {
|
|
425
|
+
return !!this.castShadow && this.shadow.mode === 'pcss';
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
name: 'PCSSMaxFilterRadius',
|
|
430
|
+
description: 'Maximum filter radius for PCSS shadow',
|
|
431
|
+
type: 'float',
|
|
432
|
+
phase: 2,
|
|
433
|
+
options: {
|
|
434
|
+
minValue: 1,
|
|
435
|
+
maxValue: 128
|
|
436
|
+
},
|
|
437
|
+
default: 32,
|
|
438
|
+
get (value) {
|
|
439
|
+
value.num[0] = this.shadow.pcssMaxFilterRadius;
|
|
440
|
+
},
|
|
441
|
+
set (value) {
|
|
442
|
+
this.shadow.pcssMaxFilterRadius = value.num[0];
|
|
443
|
+
},
|
|
444
|
+
isValid () {
|
|
445
|
+
return !!this.castShadow && this.shadow.mode === 'pcss';
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
name: 'PCSSTemporalJitter',
|
|
450
|
+
description: 'If true, rotate PCSS sampling pattern over frames for TAA accumulation',
|
|
451
|
+
type: 'bool',
|
|
452
|
+
phase: 2,
|
|
453
|
+
default: true,
|
|
373
454
|
get (value) {
|
|
374
|
-
value.
|
|
455
|
+
value.bool[0] = this.shadow.pcssTemporalJitter;
|
|
375
456
|
},
|
|
376
457
|
set (value) {
|
|
377
|
-
this.shadow.
|
|
458
|
+
this.shadow.pcssTemporalJitter = value.bool[0];
|
|
378
459
|
},
|
|
379
460
|
isValid () {
|
|
380
|
-
return !!this.castShadow && this.shadow.mode === '
|
|
461
|
+
return !!this.castShadow && this.shadow.mode === 'pcss';
|
|
381
462
|
}
|
|
382
463
|
},
|
|
383
464
|
{
|
|
@@ -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', '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 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: '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-opt';\r\n }\r\n },\r\n {\r\n name: 'PCFSampleCount',\r\n description: 'Sample count for PCF shadow',\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 description: 'Sample radius for PCF 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: 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 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","shadowStrength","numShadowCascades","pcfKernelSize","pdSampleCount","pdSampleRadius","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';\nimport { DirectionalLight, PointLight, PunctualLight, RectLight, SpotLight } from '../../../scene/light';\nimport { defineProps, type SerializableClass } from '../types';\nimport { AABB, degree2radian, radian2degree, Vector4 } from '@zephyr3d/base';\nimport { ClipmapTerrain, Mesh, SceneNode } from '../../../scene';\nimport type { ShadowMode } from '../../../shadow';\n\n/** @internal */\nexport function getPunctualLightClass(): SerializableClass {\n return {\n ctor: PunctualLight,\n parent: SceneNode,\n name: 'PunctualLight',\n getProps() {\n return defineProps([\n {\n name: 'Color',\n description: 'Light color',\n type: 'rgb',\n default: [1, 1, 1],\n options: {\n animatable: true\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.color.x;\n value.num[1] = this.color.y;\n value.num[2] = this.color.z;\n },\n set(this: PunctualLight, value) {\n this.color = new Vector4(value.num[0], value.num[1], value.num[2], 1);\n }\n },\n {\n name: 'Intensity',\n description: 'Light intensity',\n type: 'float',\n default: 1,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 100\n },\n get(this: BaseLight, value) {\n value.num[0] = this.intensity;\n },\n set(this: BaseLight, value) {\n this.intensity = value.num[0];\n }\n },\n {\n name: 'CastShadow',\n description: 'if true, the light cast shadows',\n type: 'bool',\n phase: 0,\n default: false,\n get(this: PunctualLight, value) {\n value.bool[0] = this.castShadow;\n },\n set(this: PunctualLight, value) {\n this.castShadow = value.bool[0];\n }\n },\n {\n name: 'ShadowType',\n description: 'Which type of shadow this light product',\n type: 'string',\n phase: 1,\n default: 'hard',\n options: {\n enum: {\n labels: ['Hard', 'PCF', 'PCSS', 'VSM', 'ESM', 'PCF-OPT (deprecated)', 'PCF-PD (deprecated)'],\n values: ['hard', 'pcf', 'pcss', 'vsm', 'esm', 'pcf-opt', 'pcf-pd']\n }\n },\n get(this: PunctualLight, value) {\n value.str[0] = this.shadow.mode;\n },\n set(this: PunctualLight, value) {\n this.shadow.mode = value.str[0] as ShadowMode;\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow;\n }\n },\n {\n name: 'ShadowDistance',\n description: 'Maximum shadow distance',\n type: 'float',\n phase: 1,\n default: 2000,\n options: {\n minValue: 0,\n maxValue: 5000\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.shadowDistance;\n },\n set(this: PunctualLight, value) {\n this.shadow.shadowDistance = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow;\n }\n },\n {\n name: 'ShadowMapSize',\n description: 'Shadow map resolution',\n phase: 1,\n type: 'int',\n default: 1024,\n options: {\n enum: {\n labels: ['128x128', '256x256', '512x512', '1024x1024', '2048x2048', '4096x4096'],\n values: [128, 256, 512, 1024, 2048, 4096]\n }\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.shadowMapSize;\n },\n set(this: PunctualLight, value) {\n this.shadow.shadowMapSize = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow;\n }\n },\n {\n name: 'ShadowRegion',\n description: 'World space AABB, objects inside this AABB can cast shadows',\n phase: 1,\n type: 'object',\n default: null,\n options: {\n edit: 'aabb',\n objectTypes: [AABB]\n },\n isNullable() {\n return true;\n },\n create(this: PunctualLight) {\n const aabb = new AABB();\n aabb.beginExtend();\n this.scene!.rootNode.iterate((child) => {\n if (child instanceof Mesh || child instanceof ClipmapTerrain) {\n if (child.castShadow) {\n const bbox = child.getWorldBoundingVolume()!.toAABB();\n aabb.extend(bbox.minPoint);\n aabb.extend(bbox.maxPoint);\n }\n }\n });\n if (!aabb.isValid()) {\n aabb.minPoint.setXYZ(-1, -1, -1);\n aabb.maxPoint.setXYZ(1, 1, 1);\n }\n return aabb;\n },\n get(this: PunctualLight, value) {\n value.object[0] = this.shadow.shadowRegion.region;\n },\n set(this: PunctualLight, value) {\n this.shadow.shadowRegion.setRegion(value.object[0] as AABB);\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.isDirectionLight();\n }\n },\n {\n name: 'ShadowDepthBias',\n description: 'Shadow depth bias',\n type: 'float',\n phase: 1,\n default: 0.5,\n options: {\n minValue: 0,\n maxValue: 5\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.depthBias;\n },\n set(this: PunctualLight, value) {\n this.shadow.depthBias = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow;\n }\n },\n {\n name: 'ShadowNormalBias',\n description: 'Shadow normal bias',\n type: 'float',\n phase: 1,\n default: 0.2,\n options: {\n minValue: 0,\n maxValue: 5\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.normalBias;\n },\n set(this: PunctualLight, value) {\n this.shadow.normalBias = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow;\n }\n },\n {\n name: 'ShadowNearClip',\n description: 'Near clip distance for shadow camera',\n type: 'float',\n phase: 1,\n default: 1,\n options: {\n minValue: 0.01,\n maxValue: 10\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.nearClip;\n },\n set(this: PunctualLight, value) {\n this.shadow.nearClip = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && !this.isDirectionLight();\n }\n },\n {\n name: 'ShadowStrength',\n description: 'Shadow strength, 0 means disabled and 1 means full effect',\n type: 'float',\n phase: 1,\n default: 1,\n options: {\n minValue: 0,\n maxValue: 1\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.shadowStrength;\n },\n set(this: PunctualLight, value) {\n this.shadow.shadowStrength = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow;\n }\n },\n {\n name: 'ShadowCascades',\n description: 'Cascade count for CSM',\n type: 'int',\n phase: 1,\n default: 1,\n options: {\n minValue: 1,\n maxValue: 4\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.numShadowCascades;\n },\n set(this: PunctualLight, value) {\n this.shadow.numShadowCascades = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow;\n }\n },\n {\n name: 'PCFKernelSize',\n description: 'Kernel size for PCF shadow',\n phase: 2,\n type: 'int',\n default: 5,\n options: {\n enum: {\n labels: ['3x3', '5x5', '7x7'],\n values: [3, 5, 7]\n }\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.pcfKernelSize;\n },\n set(this: PunctualLight, value) {\n this.shadow.pcfKernelSize = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && (this.shadow.mode === 'pcf' || this.shadow.mode === 'pcf-opt');\n }\n },\n {\n name: 'PCSSLightRadius',\n description: 'Light radius for PCSS shadow',\n type: 'float',\n phase: 2,\n options: {\n minValue: 0,\n maxValue: 64\n },\n default: 8,\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.pcssLightRadius;\n },\n set(this: PunctualLight, value) {\n this.shadow.pcssLightRadius = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'pcss';\n }\n },\n {\n name: 'PCSSBlockerSampleCount',\n description: 'Blocker search sample count for PCSS shadow',\n type: 'int',\n phase: 2,\n options: {\n minValue: 1,\n maxValue: 64\n },\n default: 24,\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.pcssBlockerSampleCount;\n },\n set(this: PunctualLight, value) {\n this.shadow.pcssBlockerSampleCount = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'pcss';\n }\n },\n {\n name: 'PCSSFilterSampleCount',\n description: 'Filter sample count for PCSS shadow',\n type: 'int',\n phase: 2,\n options: {\n minValue: 1,\n maxValue: 64\n },\n default: 32,\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.pcssFilterSampleCount;\n },\n set(this: PunctualLight, value) {\n this.shadow.pcssFilterSampleCount = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'pcss';\n }\n },\n {\n name: 'PCSSMaxFilterRadius',\n description: 'Maximum filter radius for PCSS shadow',\n type: 'float',\n phase: 2,\n options: {\n minValue: 1,\n maxValue: 128\n },\n default: 32,\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.pcssMaxFilterRadius;\n },\n set(this: PunctualLight, value) {\n this.shadow.pcssMaxFilterRadius = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'pcss';\n }\n },\n {\n name: 'PCSSTemporalJitter',\n description: 'If true, rotate PCSS sampling pattern over frames for TAA accumulation',\n type: 'bool',\n phase: 2,\n default: true,\n get(this: PunctualLight, value) {\n value.bool[0] = this.shadow.pcssTemporalJitter;\n },\n set(this: PunctualLight, value) {\n this.shadow.pcssTemporalJitter = value.bool[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'pcss';\n }\n },\n {\n name: 'VSMBlurKernelSize',\n description: 'Blur kernel size of VSM shadow',\n type: 'int',\n phase: 2,\n options: {\n minValue: 1,\n maxValue: 33\n },\n default: 5,\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.vsmBlurKernelSize;\n },\n set(this: PunctualLight, value) {\n this.shadow.vsmBlurKernelSize = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'vsm';\n }\n },\n {\n name: 'VSMBlurRadius',\n description: 'Blur radius for VSM shadow',\n type: 'float',\n phase: 2,\n options: {\n minValue: 0,\n maxValue: 32\n },\n default: 4,\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.vsmBlurRadius;\n },\n set(this: PunctualLight, value) {\n this.shadow.vsmBlurRadius = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'vsm';\n }\n },\n {\n name: 'VSMDarkness',\n description: 'Darkness for VSM shadow',\n type: 'float',\n phase: 2,\n options: {\n minValue: 0,\n maxValue: 1\n },\n default: 0.5,\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.vsmDarkness;\n },\n set(this: PunctualLight, value) {\n this.shadow.vsmDarkness = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'vsm';\n }\n },\n {\n name: 'ESMDepthScale',\n description: 'Depth scale value for ESM shadow',\n type: 'float',\n phase: 2,\n options: {\n minValue: 1,\n maxValue: 2000\n },\n default: 200,\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.esmDepthScale;\n },\n set(this: PunctualLight, value) {\n this.shadow.esmDepthScale = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'esm';\n }\n },\n {\n name: 'ESMBlur',\n description: 'If true, enable bluring for ESM shadow',\n type: 'bool',\n phase: 2,\n default: true,\n get(this: PunctualLight, value) {\n value.bool[0] = this.shadow.esmBlur;\n },\n set(this: PunctualLight, value) {\n this.shadow.esmBlur = value.bool[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'esm';\n }\n },\n {\n name: 'ESMLogSpaceBlur',\n description: 'If true, enable log space bluring for ESM shadow',\n type: 'bool',\n phase: 2,\n default: true,\n get(this: PunctualLight, value) {\n value.bool[0] = this.shadow.esmLogSpace;\n },\n set(this: PunctualLight, value) {\n this.shadow.esmLogSpace = value.bool[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'esm';\n }\n },\n {\n name: 'ESMBlurKernelSize',\n description: 'Blur kernel size for ESM shadow',\n type: 'int',\n phase: 2,\n default: 5,\n options: {\n minValue: 1,\n maxValue: 33\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.esmBlurKernelSize;\n },\n set(this: PunctualLight, value) {\n this.shadow.esmBlurKernelSize = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'esm' && this.shadow.esmBlur;\n }\n },\n {\n name: 'ESMBlurRadius',\n description: 'Blur radius for ESM shadow',\n type: 'float',\n phase: 2,\n default: 4,\n options: {\n minValue: 0,\n maxValue: 32\n },\n get(this: PunctualLight, value) {\n value.num[0] = this.shadow.esmBlurRadius;\n },\n set(this: PunctualLight, value) {\n this.shadow.esmBlurRadius = value.num[0];\n },\n isValid(this: PunctualLight) {\n return !!this.castShadow && this.shadow.mode === 'esm' && this.shadow.esmBlur;\n }\n }\n ]);\n }\n };\n}\n\n/** @internal */\nexport function getDirectionalLightClass(): SerializableClass {\n return {\n ctor: DirectionalLight,\n name: 'DirectionalLight',\n parent: PunctualLight,\n createFunc(ctx: SceneNode) {\n const node = new DirectionalLight(ctx.scene!);\n node.parent = ctx;\n return { obj: node };\n },\n getProps() {\n return defineProps([\n {\n name: 'SunLight',\n description: 'If true, this light will act as sun light and affect sky atmosphere rendering',\n type: 'bool',\n default: false,\n get(this: DirectionalLight, value) {\n value.bool[0] = this.sunLight;\n },\n set(this: DirectionalLight, value) {\n this.sunLight = value.bool[0];\n }\n }\n ]);\n }\n };\n}\n\n/** @internal */\nexport function getPointLightClass(): SerializableClass {\n return {\n ctor: PointLight,\n name: 'PointLight',\n parent: PunctualLight,\n createFunc(ctx: SceneNode) {\n const node = new PointLight(ctx.scene!);\n node.parent = ctx;\n return { obj: node };\n },\n getProps() {\n return defineProps([\n {\n name: 'Range',\n description: 'Light range in world unit',\n type: 'float',\n default: 10,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 1000\n },\n get(this: PointLight, value) {\n value.num[0] = this.range;\n },\n set(this: PointLight, value) {\n this.range = value.num[0];\n }\n },\n {\n name: 'DiffuseScale',\n description: 'Diffuse light intensity multiplier',\n type: 'float',\n default: 1,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 10\n },\n get(this: PointLight, value) {\n value.num[0] = this.diffuseScale;\n },\n set(this: PointLight, value) {\n this.diffuseScale = value.num[0];\n }\n },\n {\n name: 'SpecularScale',\n description: 'Specular light intensity multiplier',\n type: 'float',\n default: 1,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 10\n },\n get(this: PointLight, value) {\n value.num[0] = this.specularScale;\n },\n set(this: PointLight, value) {\n this.specularScale = value.num[0];\n }\n },\n {\n name: 'SourceRadius',\n description: 'Apparent radius of the light source for soft shadows and highlights',\n type: 'float',\n default: 0,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 100\n },\n get(this: PointLight, value) {\n value.num[0] = this.sourceRadius;\n },\n set(this: PointLight, value) {\n this.sourceRadius = value.num[0];\n }\n }\n ]);\n }\n };\n}\n\n/** @internal */\nexport function getSpotLightClass(): SerializableClass {\n return {\n ctor: SpotLight,\n name: 'SpotLight',\n parent: PunctualLight,\n createFunc(ctx: SceneNode) {\n const node = new SpotLight(ctx.scene!);\n node.parent = ctx;\n return { obj: node };\n },\n getProps() {\n return defineProps([\n {\n name: 'Range',\n description: 'Light range in world unit',\n type: 'float',\n default: 10,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 1000\n },\n get(this: SpotLight, value) {\n value.num[0] = this.range;\n },\n set(this: SpotLight, value) {\n this.range = value.num[0];\n }\n },\n {\n name: 'BeamAngle',\n description: 'Beam angle of cone',\n type: 'float',\n default: 90,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 180\n },\n get(this: SpotLight, value) {\n value.num[0] = radian2degree(Math.acos(this.cutoff) * 2);\n },\n set(this: SpotLight, value) {\n this.cutoff = Math.cos(degree2radian(value.num[0]) * 0.5);\n }\n }\n ]);\n }\n };\n}\n\n/** @internal */\nexport function getRectLightClass(): SerializableClass {\n return {\n ctor: RectLight,\n name: 'RectLight',\n parent: PunctualLight,\n createFunc(ctx: SceneNode) {\n const node = new RectLight(ctx.scene!);\n node.parent = ctx;\n return { obj: node };\n },\n getProps() {\n return defineProps([\n {\n name: 'Range',\n description: 'Light range in world unit',\n type: 'float',\n default: 10,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 1000\n },\n get(this: RectLight, value) {\n value.num[0] = this.range;\n },\n set(this: RectLight, value) {\n this.range = value.num[0];\n }\n },\n {\n name: 'Width',\n description: 'Width of the light',\n type: 'float',\n default: 1,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 1000\n },\n get(this: RectLight, value) {\n value.num[0] = this.width;\n },\n set(this: RectLight, value) {\n this.width = value.num[0];\n }\n },\n {\n name: 'Height',\n description: 'Height of the light',\n type: 'float',\n default: 1,\n options: {\n animatable: true,\n minValue: 0,\n maxValue: 1000\n },\n get(this: RectLight, value) {\n value.num[0] = this.height;\n },\n set(this: RectLight, value) {\n this.height = value.num[0];\n }\n }\n ]);\n }\n };\n}\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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"}
|