@zephyr3d/scene 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/animation.js +4 -33
- package/dist/animation/animation.js.map +1 -1
- package/dist/animation/animationset.js +24 -11
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js +1 -0
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +0 -1
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/ik/ccd_solver.js +372 -0
- package/dist/animation/ik/ccd_solver.js.map +1 -0
- package/dist/animation/ik/fabrik_solver.js +399 -0
- package/dist/animation/ik/fabrik_solver.js.map +1 -0
- package/dist/animation/ik/ik_angle_constraint.js +181 -0
- package/dist/animation/ik/ik_angle_constraint.js.map +1 -0
- package/dist/animation/ik/ik_chain.js +163 -0
- package/dist/animation/ik/ik_chain.js.map +1 -0
- package/dist/animation/ik/ik_chain_builder.js +68 -0
- package/dist/animation/ik/ik_chain_builder.js.map +1 -0
- package/dist/animation/ik/ik_constraint.js +25 -0
- package/dist/animation/ik/ik_constraint.js.map +1 -0
- package/dist/animation/ik/ik_pole_constraint.js +123 -0
- package/dist/animation/ik/ik_pole_constraint.js.map +1 -0
- package/dist/animation/ik/ik_solver.js +48 -0
- package/dist/animation/ik/ik_solver.js.map +1 -0
- package/dist/animation/ik/ik_track.js +96 -0
- package/dist/animation/ik/ik_track.js.map +1 -0
- package/dist/animation/ik/ik_utils.js +270 -0
- package/dist/animation/ik/ik_utils.js.map +1 -0
- package/dist/animation/ik/two_bone_ik_solver.js +332 -0
- package/dist/animation/ik/two_bone_ik_solver.js.map +1 -0
- package/dist/animation/ik_modifier.js +61 -0
- package/dist/animation/ik_modifier.js.map +1 -0
- package/dist/animation/ik_postprocessor.js +71 -0
- package/dist/animation/ik_postprocessor.js.map +1 -0
- package/dist/animation/manual_transform_processor.js +156 -0
- package/dist/animation/manual_transform_processor.js.map +1 -0
- package/dist/animation/morphtarget.js +7 -1
- package/dist/animation/morphtarget.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -3
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/proptrack.js +37 -41
- package/dist/animation/proptrack.js.map +1 -1
- package/dist/animation/rotationtrack.js +0 -1
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +0 -1
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +57 -60
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js +38 -0
- package/dist/animation/skeleton_modifier.js.map +1 -0
- package/dist/animation/skeleton_postprocessor.js +50 -0
- package/dist/animation/skeleton_postprocessor.js.map +1 -0
- package/dist/animation/spring/multi_chain_spring_system.js +503 -0
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -0
- package/dist/animation/spring/spring_chain.js +103 -0
- package/dist/animation/spring/spring_chain.js.map +1 -0
- package/dist/animation/spring/spring_collider.js +247 -0
- package/dist/animation/spring/spring_collider.js.map +1 -0
- package/dist/animation/spring/spring_constraint.js +21 -0
- package/dist/animation/spring/spring_constraint.js.map +1 -0
- package/dist/animation/spring/spring_particle.js +20 -0
- package/dist/animation/spring/spring_particle.js.map +1 -0
- package/dist/animation/spring/spring_system.js +526 -0
- package/dist/animation/spring/spring_system.js.map +1 -0
- package/dist/animation/spring_modifier.js +45 -0
- package/dist/animation/spring_modifier.js.map +1 -0
- package/dist/animation/spring_postprocessor.js +54 -0
- package/dist/animation/spring_postprocessor.js.map +1 -0
- package/dist/animation/translationtrack.js +0 -1
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app/api.js +13 -4
- package/dist/app/api.js.map +1 -1
- package/dist/app/app.js +13 -1
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +33 -45
- package/dist/app/engine.js.map +1 -1
- package/dist/app/inputmgr.js.map +1 -1
- package/dist/app/runtimescript.js.map +1 -1
- package/dist/app/screen.js +318 -0
- package/dist/app/screen.js.map +1 -0
- package/dist/app/scriptingsystem.js +10 -6
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +11 -22
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +79 -58
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/builtin.js +5 -5
- package/dist/asset/builtin.js.map +1 -1
- package/dist/asset/loaders/dds/dds.js +6 -2
- package/dist/asset/loaders/dds/dds.js.map +1 -1
- package/dist/asset/loaders/dds/dds_loader.js +1 -1
- package/dist/asset/loaders/dds/dds_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +14 -6
- package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
- package/dist/asset/loaders/gltf/helpers.js +6 -2
- package/dist/asset/loaders/gltf/helpers.js.map +1 -1
- package/dist/asset/loaders/hdr/hdr.js +22 -15
- package/dist/asset/loaders/hdr/hdr.js.map +1 -1
- package/dist/asset/loaders/image/tga_Loader.js +2 -1
- package/dist/asset/loaders/image/tga_Loader.js.map +1 -1
- package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
- package/dist/asset/loaders/loader.js +2 -2
- package/dist/asset/loaders/loader.js.map +1 -1
- package/dist/asset/model.js +9 -5
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js.map +1 -1
- package/dist/blitter/blitter.js +9 -11
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/blitter/box.js +0 -1
- package/dist/blitter/box.js.map +1 -1
- package/dist/blitter/copy.js.map +1 -1
- package/dist/blitter/gaussianblur.js.map +1 -1
- package/dist/camera/base.js +1 -3
- package/dist/camera/base.js.map +1 -1
- package/dist/camera/camera.js +121 -37
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/fps.js +19 -17
- package/dist/camera/fps.js.map +1 -1
- package/dist/camera/orbit.js +45 -43
- package/dist/camera/orbit.js.map +1 -1
- package/dist/camera/orthocamera.js +27 -21
- package/dist/camera/orthocamera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +28 -19
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +15802 -15577
- package/dist/index.js +33 -11
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/grassmaterial.js.map +1 -1
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +11 -5
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +10 -9
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/foliage.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +66 -4
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +7 -0
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +3 -3
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/brdf.js.map +1 -1
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +3 -0
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mixins/vertexcolor.js.map +1 -1
- package/dist/material/particle.js.map +1 -1
- package/dist/material/pbrblueprint.js +180 -22
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +41 -56
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/sprite.js +301 -0
- package/dist/material/sprite.js.map +1 -0
- package/dist/material/sprite3d.js +301 -0
- package/dist/material/sprite3d.js.map +1 -0
- package/dist/material/sprite3d_std.js +116 -0
- package/dist/material/sprite3d_std.js.map +1 -0
- package/dist/material/sprite3dblueprint.js +235 -0
- package/dist/material/sprite3dblueprint.js.map +1 -0
- package/dist/material/sprite_std.js +116 -0
- package/dist/material/sprite_std.js.map +1 -0
- package/dist/material/spriteblueprint.js +235 -0
- package/dist/material/spriteblueprint.js.map +1 -0
- package/dist/material/terrain-cm.js +0 -1
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/material/unlit.js.map +1 -1
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/fxaa.js.map +1 -1
- package/dist/posteffect/grayscale.js.map +1 -1
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/ssr.js +7 -5
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +8 -6
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/clipmap.js +0 -10
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cluster_light.js +4 -4
- package/dist/render/cluster_light.js.map +1 -1
- package/dist/render/cull_visitor.js +15 -17
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/depthpass.js +3 -4
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable.js +15 -0
- package/dist/render/drawable.js.map +1 -0
- package/dist/render/drawable_mixin.js +8 -4
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +3 -1
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +67 -64
- package/dist/render/fft_wavegenerator.js.map +1 -1
- package/dist/render/fullscreenquad.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +3 -1
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +3 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/hzb.js +1 -2
- package/dist/render/hzb.js.map +1 -1
- package/dist/render/lightpass.js +13 -13
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/objectcolorpass.js +4 -7
- package/dist/render/objectcolorpass.js.map +1 -1
- package/dist/render/primitive.js +4 -5
- package/dist/render/primitive.js.map +1 -1
- package/dist/render/render_queue.js +10 -5
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderer.js +16 -22
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/renderpass.js +27 -52
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/rendertarget.js +5 -0
- package/dist/render/rendertarget.js.map +1 -0
- package/dist/render/screenrendertarget.js +56 -0
- package/dist/render/screenrendertarget.js.map +1 -0
- package/dist/render/shadowmap_pass.js +4 -5
- package/dist/render/shadowmap_pass.js.map +1 -1
- package/dist/render/sky.js +16 -14
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +296 -0
- package/dist/scene/basesprite.js.map +1 -0
- package/dist/scene/batchgroup.js +4 -2
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +9 -10
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/graph_node.js.map +1 -1
- package/dist/scene/light.js +22 -4
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +96 -26
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/octree.js.map +1 -1
- package/dist/scene/particlesys.js +25 -22
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/raycast_visitor.js +0 -16
- package/dist/scene/raycast_visitor.js.map +1 -1
- package/dist/scene/scene.js +7 -4
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +20 -35
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/sprite.js +18 -0
- package/dist/scene/sprite.js.map +1 -0
- package/dist/scene/sprite3d.js +18 -0
- package/dist/scene/sprite3d.js.map +1 -0
- package/dist/scene/terrain-cm/grass.js +5 -4
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +3 -1
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +65 -48
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/water.js +35 -30
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/atmosphere.js +17 -29
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/fog.js.map +1 -1
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/pbr.js.map +1 -1
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssr.js.map +1 -1
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shaders/water.js.map +1 -1
- package/dist/shadow/esm.js +1 -1
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/shader.js +3 -1
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadowmapper.js +6 -18
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/ssm.js.map +1 -1
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/box.js +9 -3
- package/dist/shapes/box.js.map +1 -1
- package/dist/shapes/cylinder.js +2 -2
- package/dist/shapes/cylinder.js.map +1 -1
- package/dist/shapes/plane.js +2 -2
- package/dist/shapes/plane.js.map +1 -1
- package/dist/shapes/shape.js +2 -1
- package/dist/shapes/shape.js.map +1 -1
- package/dist/shapes/sphere.js +2 -2
- package/dist/shapes/sphere.js.map +1 -1
- package/dist/shapes/tetrahedron.js +5 -6
- package/dist/shapes/tetrahedron.js.map +1 -1
- package/dist/shapes/torus.js +2 -2
- package/dist/shapes/torus.js.map +1 -1
- package/dist/utility/aabbtree.js +1 -1
- package/dist/utility/aabbtree.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +578 -104
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/common/math.js +471 -9
- package/dist/utility/blueprint/common/math.js.map +1 -1
- package/dist/utility/blueprint/common.js +1 -1
- package/dist/utility/blueprint/common.js.map +1 -1
- package/dist/utility/blueprint/material/func.js +9 -5
- package/dist/utility/blueprint/material/func.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/blueprint/material/ir.js +288 -80
- package/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/utility/blueprint/material/pbr.js +92 -4
- package/dist/utility/blueprint/material/pbr.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +62 -45
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/blueprint/node.js +28 -1
- package/dist/utility/blueprint/node.js.map +1 -1
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/debug.js.map +1 -1
- package/dist/utility/draco/decoder.js.map +1 -1
- package/dist/utility/misc.js +1 -1
- package/dist/utility/misc.js.map +1 -1
- package/dist/utility/panorama.js.map +1 -1
- package/dist/utility/pmrem.js.map +1 -1
- package/dist/utility/rendermipmap.js.map +1 -1
- package/dist/utility/serialization/json.js +19 -15
- package/dist/utility/serialization/json.js.map +1 -1
- package/dist/utility/serialization/manager.js +89 -22
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +44 -41
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -3
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +97 -9
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +102 -28
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +14 -12
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +216 -26
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +71 -100
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/misc.js +3 -2
- package/dist/utility/serialization/scene/misc.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +42 -9
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +7 -5
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +18 -15
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +3 -2
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +164 -0
- package/dist/utility/serialization/scene/sprite.js.map +1 -0
- package/dist/utility/serialization/scene/terrain.js +8 -6
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +11 -9
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js +6 -0
- package/dist/utility/serialization/types.js.map +1 -0
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/utility/textures/ggxlut.js.map +1 -1
- package/dist/utility/textures/gradientnoise.js.map +1 -1
- package/dist/utility/textures/randomnoise.js.map +1 -1
- package/dist/values.js +14 -14
- package/dist/values.js.map +1 -1
- package/package.json +80 -80
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pmrem.js","sources":["../../src/utility/pmrem.ts"],"sourcesContent":["import { Vector3 } from '@zephyr3d/base';\r\nimport type {\r\n BindGroup,\r\n FrameBuffer,\r\n GPUProgram,\r\n RenderStateSet,\r\n TextureCube,\r\n TextureSampler,\r\n VertexLayout\r\n} from '@zephyr3d/device';\r\nimport { getDevice } from '../app/api';\r\nimport { fetchSampler } from './misc';\r\n\r\n// reference: https://placeholderart.wordpress.com/2015/07/28/implementation-notes-runtime-environment-map-filtering-for-image-based-lighting/\r\n\r\ntype DistributionType = 'lambertian' | 'ggx';\r\n\r\nlet vertexLayout: VertexLayout = null;\r\nlet renderStates: RenderStateSet = null;\r\nconst programs: Record<\r\n string,\r\n {\r\n program: GPUProgram;\r\n bindgroup: BindGroup;\r\n }\r\n> = {};\r\n\r\nconst faceDirections = [\r\n [new Vector3(0, 0, -1), new Vector3(0, -1, 0), new Vector3(1, 0, 0)],\r\n [new Vector3(0, 0, 1), new Vector3(0, -1, 0), new Vector3(-1, 0, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 1, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, 0, -1), new Vector3(0, -1, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, 1)],\r\n [new Vector3(-1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, -1)]\r\n];\r\n\r\nfunction init() {\r\n const device = getDevice();\r\n const vertices = new Float32Array([1, 1, -1, 1, -1, -1, 1, -1]);\r\n const indices = new Uint16Array([0, 1, 2, 0, 2, 3]);\r\n vertexLayout = device.createVertexLayout({\r\n vertexBuffers: [\r\n {\r\n buffer: device.createVertexBuffer('position_f32x2', vertices)\r\n }\r\n ],\r\n indexBuffer: device.createIndexBuffer(indices)\r\n });\r\n renderStates = device.createRenderStateSet();\r\n renderStates.useRasterizerState().setCullMode('none');\r\n renderStates.useDepthState().enableTest(false).enableWrite(false);\r\n}\r\n\r\nfunction getProgramInfo(type: DistributionType, numSamples: number) {\r\n const device = getDevice();\r\n const hash = `${type}:${numSamples}`;\r\n let ret = programs[hash];\r\n if (!ret) {\r\n const program = createPMREMProgram(type, numSamples);\r\n const bindgroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n programs[hash] = ret = { program, bindgroup };\r\n }\r\n return ret;\r\n}\r\n\r\nfunction createPMREMProgram(type: DistributionType, numSamples: number): GPUProgram {\r\n const device = getDevice();\r\n const pb = device;\r\n return pb.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.up = pb.vec3().uniform(0);\r\n this.right = pb.vec3().uniform(0);\r\n this.front = pb.vec3().uniform(0);\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 0, 1);\r\n this.$outputs.direction = pb.mul(\r\n pb.mat3(this.up, this.right, this.front),\r\n pb.vec3(this.$inputs.pos, 1)\r\n );\r\n if (device.type === 'webgpu') {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n if (type === 'ggx') {\r\n this.alphaG = pb.float().uniform(0);\r\n }\r\n this.vFilteringInfo = pb.vec3().uniform(0);\r\n this.hdrScale = pb.float().uniform(0);\r\n this.inputTexture = pb.texCube().uniform(0);\r\n this.NUM_SAMPLES_FLOAT = pb.float(numSamples);\r\n this.NUM_SAMPLES_FLOAT_INVERSED = pb.float(1 / numSamples);\r\n this.K = pb.float(4);\r\n this.$outputs.outcolor = pb.vec4();\r\n if (device.type === 'webgl') {\r\n pb.func('radicalInverse_VdC', [pb.int('bits')], function () {\r\n this.$l.rand = pb.float(0);\r\n this.$l.denom = pb.float(1);\r\n this.$l.invBase = pb.float(0.5);\r\n this.$l.n = this.bits;\r\n this.$for(pb.int('i'), 0, 32, function () {\r\n this.denom = pb.mul(this.denom, 2);\r\n this.rand = pb.add(this.rand, pb.div(pb.mod(pb.float(this.n), 2), this.denom));\r\n this.n = pb.div(this.n, 2);\r\n this.$if(pb.equal(this.n, 0), function () {\r\n this.$break();\r\n });\r\n });\r\n this.$return(this.rand);\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(this.i)));\r\n });\r\n } else {\r\n pb.func('radicalInverse_VdC', [pb.uint('bits')], function () {\r\n this.$l.n = this.bits;\r\n this.n = pb.compOr(pb.sal(this.n, 16), pb.sar(this.n, 16));\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x55555555), 1),\r\n pb.sar(pb.compAnd(this.n, 0xaaaaaaaa), 1)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x33333333), 2),\r\n pb.sar(pb.compAnd(this.n, 0xcccccccc), 2)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x0f0f0f0f), 4),\r\n pb.sar(pb.compAnd(this.n, 0xf0f0f0f0), 4)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x00ff00ff), 8),\r\n pb.sar(pb.compAnd(this.n, 0xff00ff00), 8)\r\n );\r\n this.$return(pb.mul(pb.float(this.n), 2.3283064365386963e-10));\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(\r\n pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(pb.uint(this.i)))\r\n );\r\n });\r\n }\r\n pb.func('log4', [pb.float('x')], function () {\r\n this.$return(pb.mul(pb.log2(this.x), 0.5));\r\n });\r\n if (type === 'lambertian') {\r\n pb.func('hemisphereCosSample', [pb.vec2('u')], function () {\r\n this.$l.phi = pb.mul(this.u.x, 2 * Math.PI);\r\n this.$l.cosTheta2 = pb.sub(1, this.u.y);\r\n this.$l.cosTheta = pb.sqrt(this.cosTheta2);\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, this.cosTheta2));\r\n this.$return(\r\n pb.vec3(\r\n pb.mul(this.sinTheta, pb.cos(this.phi)),\r\n pb.mul(this.sinTheta, pb.sin(this.phi)),\r\n this.cosTheta\r\n )\r\n );\r\n });\r\n pb.func('irradiance', [pb.vec3('direction'), pb.vec3('vFilteringInfo')], function () {\r\n this.$l.n = pb.normalize(this.direction);\r\n this.$l.result = pb.vec3(0);\r\n this.$l.tangent = pb.vec3();\r\n this.$if(pb.lessThan(pb.abs(this.n.z), 0.999), function () {\r\n this.tangent = pb.vec3(0, 0, 1);\r\n }).$else(function () {\r\n this.tangent = pb.vec3(1, 0, 0);\r\n });\r\n this.tangent = pb.normalize(pb.cross(this.tangent, this.n));\r\n this.$l.bitangent = pb.cross(this.n, this.tangent);\r\n this.$l.tbn = pb.mat3(this.tangent, this.bitangent, this.n);\r\n this.$l.maxLevel = this.vFilteringInfo.y;\r\n this.$l.dim0 = this.vFilteringInfo.x;\r\n this.$l.colorScale = this.vFilteringInfo.z;\r\n this.$l.omegaP = pb.div(4 * Math.PI, pb.mul(this.dim0, this.dim0, 6));\r\n this.$for(pb.int('i'), 0, numSamples, function () {\r\n this.$l.Xi = this.hammersley2d(this.i, numSamples);\r\n this.$l.Ls = pb.normalize(this.hemisphereCosSample(this.Xi));\r\n this.$l.Ns = pb.vec3(0, 0, 1);\r\n this.$l.NoL = pb.dot(this.Ns, this.Ls);\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.pdf_inversed = pb.div(Math.PI, this.NoL);\r\n this.$l.omegaS = pb.mul(this.pdf_inversed, this.NUM_SAMPLES_FLOAT_INVERSED);\r\n this.$l.l = pb.add(pb.sub(this.log4(this.omegaS), this.log4(this.omegaP)), this.log4(this.K));\r\n this.$l.mipLevel = pb.clamp(this.l, 0, this.maxLevel);\r\n this.$l.c = pb.textureSampleLevel(\r\n this.inputTexture,\r\n pb.mul(this.tbn, this.Ls),\r\n this.mipLevel\r\n ).rgb;\r\n this.result = pb.add(this.result, this.c);\r\n });\r\n });\r\n this.result = pb.mul(this.result, this.NUM_SAMPLES_FLOAT_INVERSED, this.colorScale);\r\n this.$return(this.result);\r\n });\r\n }\r\n if (type === 'ggx') {\r\n pb.func('hemisphereImportanceSampleDggx', [pb.vec2('u'), pb.float('a')], function () {\r\n this.$l.phi = pb.mul(this.u.x, 2 * Math.PI);\r\n this.$l.cosTheta2 = pb.div(\r\n pb.sub(1, this.u.y),\r\n pb.add(pb.mul(pb.add(this.a, 1), pb.sub(this.a, 1), this.u.y), 1)\r\n );\r\n this.$l.cosTheta = pb.sqrt(this.cosTheta2);\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, this.cosTheta2));\r\n this.$return(\r\n pb.vec3(\r\n pb.mul(pb.cos(this.phi), this.sinTheta),\r\n pb.mul(pb.sin(this.phi), this.sinTheta),\r\n this.cosTheta\r\n )\r\n );\r\n });\r\n pb.func(\r\n 'normalDistributionFunction_TrowbridgeReitzGGX',\r\n [pb.float('NoH'), pb.float('alphaG')],\r\n function () {\r\n this.$l.a2 = pb.mul(this.alphaG, this.alphaG);\r\n this.$l.d = pb.add(pb.mul(this.NoH, this.NoH, pb.sub(this.a2, 1)), 1);\r\n this.$return(pb.div(this.a2, pb.mul(this.d, this.d, Math.PI)));\r\n }\r\n );\r\n pb.func(\r\n 'radiance',\r\n [pb.float('alphaG'), pb.vec3('direction'), pb.vec3('vFilteringInfo')],\r\n function () {\r\n this.$l.n = pb.normalize(this.direction);\r\n this.$if(pb.equal(this.alphaG, 0), function () {\r\n this.$l.c = pb.textureSampleLevel(this.inputTexture, this.n, 0).rgb;\r\n this.$return(this.c);\r\n }).$else(function () {\r\n this.$l.result = pb.vec3(0);\r\n this.$l.tangent = pb.vec3();\r\n this.$if(pb.lessThan(pb.abs(this.n.z), 0.999), function () {\r\n this.tangent = pb.vec3(0, 0, 1);\r\n }).$else(function () {\r\n this.tangent = pb.vec3(1, 0, 0);\r\n });\r\n this.tangent = pb.normalize(pb.cross(this.tangent, this.n));\r\n this.$l.bitangent = pb.cross(this.n, this.tangent);\r\n this.$l.tbn = pb.mat3(this.tangent, this.bitangent, this.n);\r\n this.$l.maxLevel = this.vFilteringInfo.y;\r\n this.$l.dim0 = this.vFilteringInfo.x;\r\n this.$l.omegaP = pb.div(4 * Math.PI, pb.mul(this.dim0, this.dim0, 6));\r\n this.$l.weight = pb.float(0);\r\n this.$for(pb.int('i'), 0, numSamples, function () {\r\n this.$l.Xi = this.hammersley2d(this.i, numSamples);\r\n this.$l.H = this.hemisphereImportanceSampleDggx(this.Xi, this.alphaG);\r\n this.$l.NoV = pb.float(1);\r\n this.$l.NoH = this.H.z;\r\n this.$l.NoH2 = pb.mul(this.H.z, this.H.z);\r\n this.$l.NoL = pb.sub(pb.mul(this.NoH2, 2), 1);\r\n this.$l.L = pb.normalize(\r\n pb.vec3(pb.mul(this.NoH, this.H.x, 2), pb.mul(this.NoH, this.H.y, 2), this.NoL)\r\n );\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.pdf_inversed = pb.div(\r\n 4,\r\n this.normalDistributionFunction_TrowbridgeReitzGGX(this.NoH, this.alphaG)\r\n );\r\n this.$l.omegaS = pb.mul(this.pdf_inversed, this.NUM_SAMPLES_FLOAT_INVERSED);\r\n this.$l.l = pb.add(\r\n pb.sub(this.log4(this.omegaS), this.log4(this.omegaP)),\r\n this.log4(this.K)\r\n );\r\n this.$l.mipLevel = pb.clamp(this.l, 0, this.maxLevel);\r\n this.weight = pb.add(this.weight, this.NoL);\r\n this.$l.c = pb.textureSampleLevel(\r\n this.inputTexture,\r\n pb.mul(this.tbn, this.L),\r\n this.mipLevel\r\n ).rgb;\r\n this.result = pb.add(this.result, pb.mul(this.c, this.NoL));\r\n });\r\n });\r\n this.result = pb.div(this.result, this.weight);\r\n this.$return(this.result);\r\n });\r\n }\r\n );\r\n }\r\n pb.main(function () {\r\n if (type === 'ggx') {\r\n this.$l.color = this.radiance(this.alphaG, this.$inputs.direction, this.vFilteringInfo);\r\n }\r\n if (type === 'lambertian') {\r\n this.$l.color = this.irradiance(this.$inputs.direction, this.vFilteringInfo);\r\n }\r\n this.$outputs.outcolor = pb.vec4(pb.mul(this.color, this.hdrScale), 1);\r\n });\r\n }\r\n });\r\n}\r\nfunction doPrefilterCubemap(\r\n type: DistributionType,\r\n roughness: number,\r\n miplevel: number,\r\n srcTexture: TextureCube,\r\n sampler: TextureSampler,\r\n dstFramebuffer: FrameBuffer,\r\n filteringInfo: Vector3,\r\n numSamples: number\r\n): void {\r\n const device = getDevice();\r\n const framebuffer = dstFramebuffer;\r\n framebuffer.setColorAttachmentMipLevel(0, miplevel);\r\n framebuffer.setColorAttachmentGenerateMipmaps(0, false);\r\n const { program, bindgroup } = getProgramInfo(type, numSamples);\r\n bindgroup.setValue('vFilteringInfo', filteringInfo);\r\n bindgroup.setValue('hdrScale', 1);\r\n bindgroup.setTexture('inputTexture', srcTexture);\r\n if (type === 'ggx') {\r\n bindgroup.setValue('alphaG', roughness);\r\n }\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindgroup);\r\n device.setFramebuffer(framebuffer);\r\n for (let i = 0; i < 6; i++) {\r\n framebuffer.setColorAttachmentCubeFace(0, i);\r\n device.setVertexLayout(vertexLayout);\r\n device.setRenderStates(renderStates);\r\n bindgroup.setValue('up', faceDirections[i][0]);\r\n bindgroup.setValue('right', faceDirections[i][1]);\r\n bindgroup.setValue('front', faceDirections[i][2]);\r\n device.draw('triangle-list', 0, 6);\r\n }\r\n}\r\n\r\n/**\r\n * Prefilters an environment cubemap\r\n *\r\n * @param tex - The environment cubemap\r\n * @param type - The prefilter type\r\n * @param destTex - The output cubemap\r\n *\r\n * @public\r\n */\r\nexport function prefilterCubemap(\r\n tex: TextureCube,\r\n type: DistributionType,\r\n destTexture: TextureCube | FrameBuffer,\r\n numSamples?: number,\r\n radianceSource?: boolean\r\n): void {\r\n if (!tex || !tex.isTextureCube()) {\r\n console.error('prefilterCubemap(): source texture must be cube texture');\r\n return;\r\n }\r\n const device = getDevice();\r\n if (!vertexLayout) {\r\n init();\r\n }\r\n device.pushDeviceStates();\r\n radianceSource = radianceSource ?? true;\r\n const rs = device.getRenderStates();\r\n const srcTex = tex;\r\n const width = tex.width;\r\n const mipmapsCount = tex.mipLevelCount;\r\n const filteringInfo = new Vector3(width, mipmapsCount, radianceSource ? 1 : Math.PI);\r\n const fb = destTexture.isFramebuffer() ? destTexture : device.createFrameBuffer([destTexture], null);\r\n const attachMiplevel = fb.getColorAttachmentMipLevel(0);\r\n const generateMipmap = fb.getColorAttachmentGenerateMipmaps(0);\r\n const destTex = fb.getColorAttachments()[0];\r\n const mips = type === 'ggx' ? destTex.mipLevelCount : 1;\r\n for (let i = 0; i < mips; i++) {\r\n const alpha = i === 0 ? 0 : Math.pow(2, i) / width;\r\n doPrefilterCubemap(\r\n type,\r\n alpha,\r\n i,\r\n srcTex,\r\n fetchSampler(type === 'ggx' ? 'clamp_nearest_nomip' : 'clamp_linear'),\r\n fb,\r\n filteringInfo,\r\n numSamples ?? 64\r\n );\r\n }\r\n device.popDeviceStates();\r\n device.setRenderStates(rs);\r\n fb.setColorAttachmentMipLevel(0, attachMiplevel);\r\n fb.setColorAttachmentGenerateMipmaps(0, generateMipmap);\r\n if (!destTexture.isFramebuffer()) {\r\n fb.dispose();\r\n }\r\n}\r\n"],"names":["vertexLayout","renderStates","programs","faceDirections","Vector3","init","device","getDevice","vertices","Float32Array","indices","Uint16Array","createVertexLayout","vertexBuffers","buffer","createVertexBuffer","indexBuffer","createIndexBuffer","createRenderStateSet","useRasterizerState","setCullMode","useDepthState","enableTest","enableWrite","getProgramInfo","type","numSamples","hash","ret","program","createPMREMProgram","bindgroup","createBindGroup","bindGroupLayouts","pb","buildRenderProgram","vertex","$inputs","pos","vec2","attrib","up","vec3","uniform","right","front","main","$builtins","position","vec4","$outputs","direction","mul","mat3","y","neg","fragment","alphaG","float","vFilteringInfo","hdrScale","inputTexture","texCube","NUM_SAMPLES_FLOAT","NUM_SAMPLES_FLOAT_INVERSED","K","outcolor","func","int","$l","rand","denom","invBase","n","bits","$for","add","div","mod","$if","equal","$break","$return","i","N","radicalInverse_VdC","uint","compOr","sal","sar","compAnd","log2","x","phi","u","Math","PI","cosTheta2","sub","cosTheta","sqrt","sinTheta","cos","sin","normalize","result","tangent","lessThan","abs","z","$else","cross","bitangent","tbn","maxLevel","dim0","colorScale","omegaP","Xi","hammersley2d","Ls","hemisphereCosSample","Ns","NoL","dot","greaterThan","pdf_inversed","omegaS","l","log4","mipLevel","clamp","c","textureSampleLevel","rgb","a","a2","d","NoH","weight","H","hemisphereImportanceSampleDggx","NoV","NoH2","L","normalDistributionFunction_TrowbridgeReitzGGX","color","radiance","irradiance","doPrefilterCubemap","roughness","miplevel","srcTexture","sampler","dstFramebuffer","filteringInfo","framebuffer","setColorAttachmentMipLevel","setColorAttachmentGenerateMipmaps","setValue","setTexture","setProgram","setBindGroup","setFramebuffer","setColorAttachmentCubeFace","setVertexLayout","setRenderStates","draw","prefilterCubemap","tex","destTexture","radianceSource","isTextureCube","console","error","pushDeviceStates","rs","getRenderStates","srcTex","width","mipmapsCount","mipLevelCount","fb","isFramebuffer","createFrameBuffer","attachMiplevel","getColorAttachmentMipLevel","generateMipmap","getColorAttachmentGenerateMipmaps","destTex","getColorAttachments","mips","alpha","pow","fetchSampler","popDeviceStates","dispose"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pmrem.js","sources":["../../src/utility/pmrem.ts"],"sourcesContent":["import type { Nullable } from '@zephyr3d/base';\r\nimport { Vector3 } from '@zephyr3d/base';\r\nimport type {\r\n BindGroup,\r\n FrameBuffer,\r\n GPUProgram,\r\n RenderStateSet,\r\n TextureCube,\r\n TextureSampler,\r\n VertexLayout\r\n} from '@zephyr3d/device';\r\nimport { getDevice } from '../app/api';\r\nimport { fetchSampler } from './misc';\r\n\r\n// reference: https://placeholderart.wordpress.com/2015/07/28/implementation-notes-runtime-environment-map-filtering-for-image-based-lighting/\r\n\r\ntype DistributionType = 'lambertian' | 'ggx';\r\n\r\nlet vertexLayout: Nullable<VertexLayout> = null;\r\nlet renderStates: Nullable<RenderStateSet> = null;\r\nconst programs: Record<\r\n string,\r\n {\r\n program: GPUProgram;\r\n bindgroup: BindGroup;\r\n }\r\n> = {};\r\n\r\nconst faceDirections = [\r\n [new Vector3(0, 0, -1), new Vector3(0, -1, 0), new Vector3(1, 0, 0)],\r\n [new Vector3(0, 0, 1), new Vector3(0, -1, 0), new Vector3(-1, 0, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, 0, 1), new Vector3(0, 1, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, 0, -1), new Vector3(0, -1, 0)],\r\n [new Vector3(1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, 1)],\r\n [new Vector3(-1, 0, 0), new Vector3(0, -1, 0), new Vector3(0, 0, -1)]\r\n];\r\n\r\nfunction init() {\r\n const device = getDevice();\r\n const vertices = new Float32Array([1, 1, -1, 1, -1, -1, 1, -1]);\r\n const indices = new Uint16Array([0, 1, 2, 0, 2, 3]);\r\n vertexLayout = device.createVertexLayout({\r\n vertexBuffers: [\r\n {\r\n buffer: device.createVertexBuffer('position_f32x2', vertices)!\r\n }\r\n ],\r\n indexBuffer: device.createIndexBuffer(indices)\r\n });\r\n renderStates = device.createRenderStateSet();\r\n renderStates.useRasterizerState().setCullMode('none');\r\n renderStates.useDepthState().enableTest(false).enableWrite(false);\r\n}\r\n\r\nfunction getProgramInfo(type: DistributionType, numSamples: number) {\r\n const device = getDevice();\r\n const hash = `${type}:${numSamples}`;\r\n let ret = programs[hash];\r\n if (!ret) {\r\n const program = createPMREMProgram(type, numSamples);\r\n const bindgroup = device.createBindGroup(program.bindGroupLayouts[0]);\r\n programs[hash] = ret = { program, bindgroup };\r\n }\r\n return ret;\r\n}\r\n\r\nfunction createPMREMProgram(type: DistributionType, numSamples: number) {\r\n const device = getDevice();\r\n const pb = device;\r\n return pb.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.up = pb.vec3().uniform(0);\r\n this.right = pb.vec3().uniform(0);\r\n this.front = pb.vec3().uniform(0);\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 0, 1);\r\n this.$outputs.direction = pb.mul(\r\n pb.mat3(this.up, this.right, this.front),\r\n pb.vec3(this.$inputs.pos, 1)\r\n );\r\n if (device.type === 'webgpu') {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n if (type === 'ggx') {\r\n this.alphaG = pb.float().uniform(0);\r\n }\r\n this.vFilteringInfo = pb.vec3().uniform(0);\r\n this.hdrScale = pb.float().uniform(0);\r\n this.inputTexture = pb.texCube().uniform(0);\r\n this.NUM_SAMPLES_FLOAT = pb.float(numSamples);\r\n this.NUM_SAMPLES_FLOAT_INVERSED = pb.float(1 / numSamples);\r\n this.K = pb.float(4);\r\n this.$outputs.outcolor = pb.vec4();\r\n if (device.type === 'webgl') {\r\n pb.func('radicalInverse_VdC', [pb.int('bits')], function () {\r\n this.$l.rand = pb.float(0);\r\n this.$l.denom = pb.float(1);\r\n this.$l.invBase = pb.float(0.5);\r\n this.$l.n = this.bits;\r\n this.$for(pb.int('i'), 0, 32, function () {\r\n this.denom = pb.mul(this.denom, 2);\r\n this.rand = pb.add(this.rand, pb.div(pb.mod(pb.float(this.n), 2), this.denom));\r\n this.n = pb.div(this.n, 2);\r\n this.$if(pb.equal(this.n, 0), function () {\r\n this.$break();\r\n });\r\n });\r\n this.$return(this.rand);\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(this.i)));\r\n });\r\n } else {\r\n pb.func('radicalInverse_VdC', [pb.uint('bits')], function () {\r\n this.$l.n = this.bits;\r\n this.n = pb.compOr(pb.sal(this.n, 16), pb.sar(this.n, 16));\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x55555555), 1),\r\n pb.sar(pb.compAnd(this.n, 0xaaaaaaaa), 1)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x33333333), 2),\r\n pb.sar(pb.compAnd(this.n, 0xcccccccc), 2)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x0f0f0f0f), 4),\r\n pb.sar(pb.compAnd(this.n, 0xf0f0f0f0), 4)\r\n );\r\n this.n = pb.compOr(\r\n pb.sal(pb.compAnd(this.n, 0x00ff00ff), 8),\r\n pb.sar(pb.compAnd(this.n, 0xff00ff00), 8)\r\n );\r\n this.$return(pb.mul(pb.float(this.n), 2.3283064365386963e-10));\r\n });\r\n pb.func('hammersley2d', [pb.int('i'), pb.int('N')], function () {\r\n this.$return(\r\n pb.vec2(pb.div(pb.float(this.i), pb.float(this.N)), this.radicalInverse_VdC(pb.uint(this.i)))\r\n );\r\n });\r\n }\r\n pb.func('log4', [pb.float('x')], function () {\r\n this.$return(pb.mul(pb.log2(this.x), 0.5));\r\n });\r\n if (type === 'lambertian') {\r\n pb.func('hemisphereCosSample', [pb.vec2('u')], function () {\r\n this.$l.phi = pb.mul(this.u.x, 2 * Math.PI);\r\n this.$l.cosTheta2 = pb.sub(1, this.u.y);\r\n this.$l.cosTheta = pb.sqrt(this.cosTheta2);\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, this.cosTheta2));\r\n this.$return(\r\n pb.vec3(\r\n pb.mul(this.sinTheta, pb.cos(this.phi)),\r\n pb.mul(this.sinTheta, pb.sin(this.phi)),\r\n this.cosTheta\r\n )\r\n );\r\n });\r\n pb.func('irradiance', [pb.vec3('direction'), pb.vec3('vFilteringInfo')], function () {\r\n this.$l.n = pb.normalize(this.direction);\r\n this.$l.result = pb.vec3(0);\r\n this.$l.tangent = pb.vec3();\r\n this.$if(pb.lessThan(pb.abs(this.n.z), 0.999), function () {\r\n this.tangent = pb.vec3(0, 0, 1);\r\n }).$else(function () {\r\n this.tangent = pb.vec3(1, 0, 0);\r\n });\r\n this.tangent = pb.normalize(pb.cross(this.tangent, this.n));\r\n this.$l.bitangent = pb.cross(this.n, this.tangent);\r\n this.$l.tbn = pb.mat3(this.tangent, this.bitangent, this.n);\r\n this.$l.maxLevel = this.vFilteringInfo.y;\r\n this.$l.dim0 = this.vFilteringInfo.x;\r\n this.$l.colorScale = this.vFilteringInfo.z;\r\n this.$l.omegaP = pb.div(4 * Math.PI, pb.mul(this.dim0, this.dim0, 6));\r\n this.$for(pb.int('i'), 0, numSamples, function () {\r\n this.$l.Xi = this.hammersley2d(this.i, numSamples);\r\n this.$l.Ls = pb.normalize(this.hemisphereCosSample(this.Xi));\r\n this.$l.Ns = pb.vec3(0, 0, 1);\r\n this.$l.NoL = pb.dot(this.Ns, this.Ls);\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.pdf_inversed = pb.div(Math.PI, this.NoL);\r\n this.$l.omegaS = pb.mul(this.pdf_inversed, this.NUM_SAMPLES_FLOAT_INVERSED);\r\n this.$l.l = pb.add(pb.sub(this.log4(this.omegaS), this.log4(this.omegaP)), this.log4(this.K));\r\n this.$l.mipLevel = pb.clamp(this.l, 0, this.maxLevel);\r\n this.$l.c = pb.textureSampleLevel(\r\n this.inputTexture,\r\n pb.mul(this.tbn, this.Ls),\r\n this.mipLevel\r\n ).rgb;\r\n this.result = pb.add(this.result, this.c);\r\n });\r\n });\r\n this.result = pb.mul(this.result, this.NUM_SAMPLES_FLOAT_INVERSED, this.colorScale);\r\n this.$return(this.result);\r\n });\r\n }\r\n if (type === 'ggx') {\r\n pb.func('hemisphereImportanceSampleDggx', [pb.vec2('u'), pb.float('a')], function () {\r\n this.$l.phi = pb.mul(this.u.x, 2 * Math.PI);\r\n this.$l.cosTheta2 = pb.div(\r\n pb.sub(1, this.u.y),\r\n pb.add(pb.mul(pb.add(this.a, 1), pb.sub(this.a, 1), this.u.y), 1)\r\n );\r\n this.$l.cosTheta = pb.sqrt(this.cosTheta2);\r\n this.$l.sinTheta = pb.sqrt(pb.sub(1, this.cosTheta2));\r\n this.$return(\r\n pb.vec3(\r\n pb.mul(pb.cos(this.phi), this.sinTheta),\r\n pb.mul(pb.sin(this.phi), this.sinTheta),\r\n this.cosTheta\r\n )\r\n );\r\n });\r\n pb.func(\r\n 'normalDistributionFunction_TrowbridgeReitzGGX',\r\n [pb.float('NoH'), pb.float('alphaG')],\r\n function () {\r\n this.$l.a2 = pb.mul(this.alphaG, this.alphaG);\r\n this.$l.d = pb.add(pb.mul(this.NoH, this.NoH, pb.sub(this.a2, 1)), 1);\r\n this.$return(pb.div(this.a2, pb.mul(this.d, this.d, Math.PI)));\r\n }\r\n );\r\n pb.func(\r\n 'radiance',\r\n [pb.float('alphaG'), pb.vec3('direction'), pb.vec3('vFilteringInfo')],\r\n function () {\r\n this.$l.n = pb.normalize(this.direction);\r\n this.$if(pb.equal(this.alphaG, 0), function () {\r\n this.$l.c = pb.textureSampleLevel(this.inputTexture, this.n, 0).rgb;\r\n this.$return(this.c);\r\n }).$else(function () {\r\n this.$l.result = pb.vec3(0);\r\n this.$l.tangent = pb.vec3();\r\n this.$if(pb.lessThan(pb.abs(this.n.z), 0.999), function () {\r\n this.tangent = pb.vec3(0, 0, 1);\r\n }).$else(function () {\r\n this.tangent = pb.vec3(1, 0, 0);\r\n });\r\n this.tangent = pb.normalize(pb.cross(this.tangent, this.n));\r\n this.$l.bitangent = pb.cross(this.n, this.tangent);\r\n this.$l.tbn = pb.mat3(this.tangent, this.bitangent, this.n);\r\n this.$l.maxLevel = this.vFilteringInfo.y;\r\n this.$l.dim0 = this.vFilteringInfo.x;\r\n this.$l.omegaP = pb.div(4 * Math.PI, pb.mul(this.dim0, this.dim0, 6));\r\n this.$l.weight = pb.float(0);\r\n this.$for(pb.int('i'), 0, numSamples, function () {\r\n this.$l.Xi = this.hammersley2d(this.i, numSamples);\r\n this.$l.H = this.hemisphereImportanceSampleDggx(this.Xi, this.alphaG);\r\n this.$l.NoV = pb.float(1);\r\n this.$l.NoH = this.H.z;\r\n this.$l.NoH2 = pb.mul(this.H.z, this.H.z);\r\n this.$l.NoL = pb.sub(pb.mul(this.NoH2, 2), 1);\r\n this.$l.L = pb.normalize(\r\n pb.vec3(pb.mul(this.NoH, this.H.x, 2), pb.mul(this.NoH, this.H.y, 2), this.NoL)\r\n );\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.pdf_inversed = pb.div(\r\n 4,\r\n this.normalDistributionFunction_TrowbridgeReitzGGX(this.NoH, this.alphaG)\r\n );\r\n this.$l.omegaS = pb.mul(this.pdf_inversed, this.NUM_SAMPLES_FLOAT_INVERSED);\r\n this.$l.l = pb.add(\r\n pb.sub(this.log4(this.omegaS), this.log4(this.omegaP)),\r\n this.log4(this.K)\r\n );\r\n this.$l.mipLevel = pb.clamp(this.l, 0, this.maxLevel);\r\n this.weight = pb.add(this.weight, this.NoL);\r\n this.$l.c = pb.textureSampleLevel(\r\n this.inputTexture,\r\n pb.mul(this.tbn, this.L),\r\n this.mipLevel\r\n ).rgb;\r\n this.result = pb.add(this.result, pb.mul(this.c, this.NoL));\r\n });\r\n });\r\n this.result = pb.div(this.result, this.weight);\r\n this.$return(this.result);\r\n });\r\n }\r\n );\r\n }\r\n pb.main(function () {\r\n if (type === 'ggx') {\r\n this.$l.color = this.radiance(this.alphaG, this.$inputs.direction, this.vFilteringInfo);\r\n }\r\n if (type === 'lambertian') {\r\n this.$l.color = this.irradiance(this.$inputs.direction, this.vFilteringInfo);\r\n }\r\n this.$outputs.outcolor = pb.vec4(pb.mul(this.color, this.hdrScale), 1);\r\n });\r\n }\r\n })!;\r\n}\r\nfunction doPrefilterCubemap(\r\n type: DistributionType,\r\n roughness: number,\r\n miplevel: number,\r\n srcTexture: TextureCube,\r\n sampler: TextureSampler,\r\n dstFramebuffer: FrameBuffer,\r\n filteringInfo: Vector3,\r\n numSamples: number\r\n) {\r\n const device = getDevice();\r\n const framebuffer = dstFramebuffer;\r\n framebuffer.setColorAttachmentMipLevel(0, miplevel);\r\n framebuffer.setColorAttachmentGenerateMipmaps(0, false);\r\n const { program, bindgroup } = getProgramInfo(type, numSamples);\r\n bindgroup.setValue('vFilteringInfo', filteringInfo);\r\n bindgroup.setValue('hdrScale', 1);\r\n bindgroup.setTexture('inputTexture', srcTexture);\r\n if (type === 'ggx') {\r\n bindgroup.setValue('alphaG', roughness);\r\n }\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindgroup);\r\n device.setFramebuffer(framebuffer);\r\n for (let i = 0; i < 6; i++) {\r\n framebuffer.setColorAttachmentCubeFace(0, i);\r\n device.setVertexLayout(vertexLayout);\r\n device.setRenderStates(renderStates);\r\n bindgroup.setValue('up', faceDirections[i][0]);\r\n bindgroup.setValue('right', faceDirections[i][1]);\r\n bindgroup.setValue('front', faceDirections[i][2]);\r\n device.draw('triangle-list', 0, 6);\r\n }\r\n}\r\n\r\n/**\r\n * Prefilters an environment cubemap\r\n *\r\n * @param tex - The environment cubemap\r\n * @param type - The prefilter type\r\n * @param destTex - The output cubemap\r\n *\r\n * @public\r\n */\r\nexport function prefilterCubemap(\r\n tex: TextureCube,\r\n type: DistributionType,\r\n destTexture: TextureCube | FrameBuffer,\r\n numSamples?: number,\r\n radianceSource?: boolean\r\n) {\r\n if (!tex || !tex.isTextureCube()) {\r\n console.error('prefilterCubemap(): source texture must be cube texture');\r\n return;\r\n }\r\n const device = getDevice();\r\n if (!vertexLayout) {\r\n init();\r\n }\r\n device.pushDeviceStates();\r\n radianceSource = radianceSource ?? true;\r\n const rs = device.getRenderStates();\r\n const srcTex = tex;\r\n const width = tex.width;\r\n const mipmapsCount = tex.mipLevelCount;\r\n const filteringInfo = new Vector3(width, mipmapsCount, radianceSource ? 1 : Math.PI);\r\n const fb = destTexture.isFramebuffer() ? destTexture : device.createFrameBuffer([destTexture], null);\r\n const attachMiplevel = fb.getColorAttachmentMipLevel(0);\r\n const generateMipmap = fb.getColorAttachmentGenerateMipmaps(0);\r\n const destTex = fb.getColorAttachments()[0];\r\n const mips = type === 'ggx' ? destTex.mipLevelCount : 1;\r\n for (let i = 0; i < mips; i++) {\r\n const alpha = i === 0 ? 0 : Math.pow(2, i) / width;\r\n doPrefilterCubemap(\r\n type,\r\n alpha,\r\n i,\r\n srcTex,\r\n fetchSampler(type === 'ggx' ? 'clamp_nearest_nomip' : 'clamp_linear')!,\r\n fb,\r\n filteringInfo,\r\n numSamples ?? 64\r\n );\r\n }\r\n device.popDeviceStates();\r\n device.setRenderStates(rs);\r\n fb.setColorAttachmentMipLevel(0, attachMiplevel);\r\n fb.setColorAttachmentGenerateMipmaps(0, generateMipmap);\r\n if (!destTexture.isFramebuffer()) {\r\n fb.dispose();\r\n }\r\n}\r\n"],"names":["vertexLayout","renderStates","programs","faceDirections","Vector3","init","device","getDevice","vertices","Float32Array","indices","Uint16Array","createVertexLayout","vertexBuffers","buffer","createVertexBuffer","indexBuffer","createIndexBuffer","createRenderStateSet","useRasterizerState","setCullMode","useDepthState","enableTest","enableWrite","getProgramInfo","type","numSamples","hash","ret","program","createPMREMProgram","bindgroup","createBindGroup","bindGroupLayouts","pb","buildRenderProgram","vertex","$inputs","pos","vec2","attrib","up","vec3","uniform","right","front","main","$builtins","position","vec4","$outputs","direction","mul","mat3","y","neg","fragment","alphaG","float","vFilteringInfo","hdrScale","inputTexture","texCube","NUM_SAMPLES_FLOAT","NUM_SAMPLES_FLOAT_INVERSED","K","outcolor","func","int","$l","rand","denom","invBase","n","bits","$for","add","div","mod","$if","equal","$break","$return","i","N","radicalInverse_VdC","uint","compOr","sal","sar","compAnd","log2","x","phi","u","Math","PI","cosTheta2","sub","cosTheta","sqrt","sinTheta","cos","sin","normalize","result","tangent","lessThan","abs","z","$else","cross","bitangent","tbn","maxLevel","dim0","colorScale","omegaP","Xi","hammersley2d","Ls","hemisphereCosSample","Ns","NoL","dot","greaterThan","pdf_inversed","omegaS","l","log4","mipLevel","clamp","c","textureSampleLevel","rgb","a","a2","d","NoH","weight","H","hemisphereImportanceSampleDggx","NoV","NoH2","L","normalDistributionFunction_TrowbridgeReitzGGX","color","radiance","irradiance","doPrefilterCubemap","roughness","miplevel","srcTexture","sampler","dstFramebuffer","filteringInfo","framebuffer","setColorAttachmentMipLevel","setColorAttachmentGenerateMipmaps","setValue","setTexture","setProgram","setBindGroup","setFramebuffer","setColorAttachmentCubeFace","setVertexLayout","setRenderStates","draw","prefilterCubemap","tex","destTexture","radianceSource","isTextureCube","console","error","pushDeviceStates","rs","getRenderStates","srcTex","width","mipmapsCount","mipLevelCount","fb","isFramebuffer","createFrameBuffer","attachMiplevel","getColorAttachmentMipLevel","generateMipmap","getColorAttachmentGenerateMipmaps","destTex","getColorAttachments","mips","alpha","pow","fetchSampler","popDeviceStates","dispose"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendermipmap.js","sources":["../../src/utility/rendermipmap.ts"],"sourcesContent":["import type {\r\n AbstractDevice,\r\n BindGroup,\r\n GPUProgram,\r\n PBGlobalScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n Texture2D\r\n} from '@zephyr3d/device';\r\nimport { fetchSampler } from './misc';\r\nimport { drawFullscreenQuad } from '../render/fullscreenquad';\r\nimport { DRef } from '@zephyr3d/base';\r\nimport { getDevice } from '../app/api';\r\n\r\nexport abstract class RenderMipmap {\r\n private readonly _program: DRef<GPUProgram>;\r\n private readonly _bindGroup: DRef<BindGroup>;\r\n private _srcSize: Float32Array<ArrayBuffer>;\r\n private _dstSize: Float32Array<ArrayBuffer>;\r\n abstract renderPixel(\r\n scope: PBInsideFunctionScope,\r\n leftTop: PBShaderExp,\r\n rightTop: PBShaderExp,\r\n leftBottom: PBShaderExp,\r\n rightBottom: PBShaderExp,\r\n uv: PBShaderExp\r\n ): PBShaderExp;\r\n setupUniforms(_scope: PBGlobalScope): void {}\r\n applyUniformValues(_bindGroup: BindGroup): void {}\r\n constructor() {\r\n this._program = new DRef();\r\n this._bindGroup = new DRef();\r\n this._srcSize = new Float32Array(2);\r\n this._dstSize = new Float32Array(2);\r\n }\r\n render(srcTex: Texture2D) {\r\n const device = getDevice();\r\n this.prepare(device);\r\n device.pushDeviceStates();\r\n if (device.type === 'webgpu') {\r\n for (let i = 0; i < srcTex.mipLevelCount - 1; i++) {\r\n this.renderLevel(device, i, srcTex, srcTex);\r\n }\r\n } else {\r\n const tmpTexture = device.createTexture2D(srcTex.format, srcTex.width, srcTex.height);\r\n const tmpFramebuffer = device.createFrameBuffer([tmpTexture], null);\r\n const dstTex = tmpFramebuffer.getColorAttachments()[0] as Texture2D;\r\n for (let i = 0; i < srcTex.mipLevelCount - 1; i++) {\r\n this.renderLevel(device, i, srcTex, dstTex);\r\n }\r\n tmpFramebuffer.dispose();\r\n tmpTexture.dispose();\r\n }\r\n device.popDeviceStates();\r\n }\r\n private renderLevel(\r\n device: AbstractDevice,\r\n miplevel: number,\r\n srcTexture: Texture2D,\r\n dstTexture: Texture2D\r\n ): void {\r\n const sampler = fetchSampler('clamp_nearest');\r\n const framebuffer = device.createFrameBuffer([dstTexture], null);\r\n framebuffer.setColorAttachmentMipLevel(0, miplevel + 1);\r\n const bindGroup = this._bindGroup.get();\r\n framebuffer.setColorAttachmentGenerateMipmaps(0, false);\r\n this._srcSize[0] = Math.max(srcTexture.width >> miplevel, 1);\r\n this._srcSize[1] = Math.max(srcTexture.height >> miplevel, 1);\r\n this._dstSize[0] = Math.max(this._srcSize[0] >> 1, 1);\r\n this._dstSize[1] = Math.max(this._srcSize[1] >> 1, 1);\r\n bindGroup.setValue('srcSize', this._srcSize);\r\n bindGroup.setValue('dstSize', this._dstSize);\r\n if (device.type === 'webgpu') {\r\n bindGroup.setTextureView('srcTex', srcTexture, miplevel, 0, 1, sampler);\r\n } else {\r\n bindGroup.setTexture('srcTex', srcTexture, sampler);\r\n bindGroup.setValue('srcMipLevel', miplevel);\r\n }\r\n this.applyUniformValues(bindGroup);\r\n device.setProgram(this._program.get());\r\n device.setBindGroup(0, this._bindGroup.get());\r\n device.setFramebuffer(framebuffer);\r\n drawFullscreenQuad();\r\n if (srcTexture !== dstTexture) {\r\n device.copyFramebufferToTexture2D(framebuffer, 0, srcTexture, miplevel + 1);\r\n }\r\n framebuffer.dispose();\r\n }\r\n private prepare(device: AbstractDevice) {\r\n if (!this._program.get()) {\r\n const that = this;\r\n const program = device.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n that.setupUniforms(this);\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n if (device.type === 'webgpu') {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.color = pb.vec4();\r\n this.srcTex = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.srcSize = pb.vec2().uniform(0);\r\n this.dstSize = pb.vec2().uniform(0);\r\n that.setupUniforms(this);\r\n if (device.type !== 'webgpu') {\r\n this.srcMipLevel = pb.float().uniform(0);\r\n }\r\n pb.main(function () {\r\n const miplevel = device.type === 'webgpu' ? 0 : this.srcMipLevel;\r\n this.$l.invSize = pb.div(pb.vec2(1), this.srcSize);\r\n this.$l.uv = pb.div(this.$builtins.fragCoord.xy, this.dstSize);\r\n this.$l.d0 = pb.textureSampleLevel(\r\n this.srcTex,\r\n pb.add(this.uv, pb.mul(pb.vec2(-0.5, -0.5), this.invSize)),\r\n miplevel\r\n );\r\n this.$l.d1 = pb.textureSampleLevel(\r\n this.srcTex,\r\n pb.add(this.uv, pb.mul(pb.vec2(0.5, -0.5), this.invSize)),\r\n miplevel\r\n );\r\n this.$l.d2 = pb.textureSampleLevel(\r\n this.srcTex,\r\n pb.add(this.uv, pb.mul(pb.vec2(-0.5, 0.5), this.invSize)),\r\n miplevel\r\n );\r\n this.$l.d3 = pb.textureSampleLevel(\r\n this.srcTex,\r\n pb.add(this.uv, pb.mul(pb.vec2(0.5, 0.5), this.invSize)),\r\n miplevel\r\n );\r\n this.$outputs.color = that.renderPixel(this, this.d0, this.d1, this.d2, this.d3, this.uv);\r\n });\r\n }\r\n });\r\n program.name = '@RenderMipmap';\r\n this._program.set(program);\r\n this._bindGroup.set(device.createBindGroup(program.bindGroupLayouts[0]));\r\n }\r\n }\r\n}\r\n"],"names":["RenderMipmap","_program","_bindGroup","_srcSize","_dstSize","setupUniforms","_scope","applyUniformValues","DRef","Float32Array","render","srcTex","device","getDevice","prepare","pushDeviceStates","type","i","mipLevelCount","renderLevel","tmpTexture","createTexture2D","format","width","height","tmpFramebuffer","createFrameBuffer","dstTex","getColorAttachments","dispose","popDeviceStates","miplevel","srcTexture","dstTexture","sampler","fetchSampler","framebuffer","setColorAttachmentMipLevel","bindGroup","get","setColorAttachmentGenerateMipmaps","Math","max","setValue","setTextureView","setTexture","setProgram","setBindGroup","setFramebuffer","drawFullscreenQuad","copyFramebufferToTexture2D","that","program","buildRenderProgram","vertex","pb","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","position","vec4","add","mul","xy","y","neg","fragment","color","tex2D","sampleType","uniform","srcSize","dstSize","srcMipLevel","float","$l","invSize","div","fragCoord","d0","textureSampleLevel","d1","d2","d3","renderPixel","name","set","createBindGroup","bindGroupLayouts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rendermipmap.js","sources":["../../src/utility/rendermipmap.ts"],"sourcesContent":["import type {\r\n AbstractDevice,\r\n BindGroup,\r\n GPUProgram,\r\n PBGlobalScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n Texture2D\r\n} from '@zephyr3d/device';\r\nimport { fetchSampler } from './misc';\r\nimport { drawFullscreenQuad } from '../render/fullscreenquad';\r\nimport { DRef } from '@zephyr3d/base';\r\nimport { getDevice } from '../app/api';\r\n\r\nexport abstract class RenderMipmap {\r\n private readonly _program: DRef<GPUProgram>;\r\n private readonly _bindGroup: DRef<BindGroup>;\r\n private _srcSize: Float32Array<ArrayBuffer>;\r\n private _dstSize: Float32Array<ArrayBuffer>;\r\n abstract renderPixel(\r\n scope: PBInsideFunctionScope,\r\n leftTop: PBShaderExp,\r\n rightTop: PBShaderExp,\r\n leftBottom: PBShaderExp,\r\n rightBottom: PBShaderExp,\r\n uv: PBShaderExp\r\n ): PBShaderExp;\r\n setupUniforms(_scope: PBGlobalScope) {}\r\n applyUniformValues(_bindGroup: BindGroup) {}\r\n constructor() {\r\n this._program = new DRef();\r\n this._bindGroup = new DRef();\r\n this._srcSize = new Float32Array(2);\r\n this._dstSize = new Float32Array(2);\r\n }\r\n render(srcTex: Texture2D) {\r\n const device = getDevice();\r\n this.prepare(device);\r\n device.pushDeviceStates();\r\n if (device.type === 'webgpu') {\r\n for (let i = 0; i < srcTex.mipLevelCount - 1; i++) {\r\n this.renderLevel(device, i, srcTex, srcTex);\r\n }\r\n } else {\r\n const tmpTexture = device.createTexture2D(srcTex.format, srcTex.width, srcTex.height)!;\r\n const tmpFramebuffer = device.createFrameBuffer([tmpTexture], null);\r\n const dstTex = tmpFramebuffer.getColorAttachments()[0] as Texture2D;\r\n for (let i = 0; i < srcTex.mipLevelCount - 1; i++) {\r\n this.renderLevel(device, i, srcTex, dstTex);\r\n }\r\n tmpFramebuffer.dispose();\r\n tmpTexture.dispose();\r\n }\r\n device.popDeviceStates();\r\n }\r\n private renderLevel(\r\n device: AbstractDevice,\r\n miplevel: number,\r\n srcTexture: Texture2D,\r\n dstTexture: Texture2D\r\n ) {\r\n const sampler = fetchSampler('clamp_nearest');\r\n const framebuffer = device.createFrameBuffer([dstTexture], null);\r\n framebuffer.setColorAttachmentMipLevel(0, miplevel + 1);\r\n const bindGroup = this._bindGroup.get()!;\r\n framebuffer.setColorAttachmentGenerateMipmaps(0, false);\r\n this._srcSize[0] = Math.max(srcTexture.width >> miplevel, 1);\r\n this._srcSize[1] = Math.max(srcTexture.height >> miplevel, 1);\r\n this._dstSize[0] = Math.max(this._srcSize[0] >> 1, 1);\r\n this._dstSize[1] = Math.max(this._srcSize[1] >> 1, 1);\r\n bindGroup.setValue('srcSize', this._srcSize);\r\n bindGroup.setValue('dstSize', this._dstSize);\r\n if (device.type === 'webgpu') {\r\n bindGroup.setTextureView('srcTex', srcTexture, miplevel, 0, 1, sampler);\r\n } else {\r\n bindGroup.setTexture('srcTex', srcTexture, sampler);\r\n bindGroup.setValue('srcMipLevel', miplevel);\r\n }\r\n this.applyUniformValues(bindGroup);\r\n device.setProgram(this._program.get());\r\n device.setBindGroup(0, this._bindGroup.get()!);\r\n device.setFramebuffer(framebuffer);\r\n drawFullscreenQuad();\r\n if (srcTexture !== dstTexture) {\r\n device.copyFramebufferToTexture2D(framebuffer, 0, srcTexture, miplevel + 1);\r\n }\r\n framebuffer.dispose();\r\n }\r\n private prepare(device: AbstractDevice) {\r\n if (!this._program.get()) {\r\n const that = this;\r\n const program = device.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n that.setupUniforms(this);\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n if (device.type === 'webgpu') {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.color = pb.vec4();\r\n this.srcTex = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.srcSize = pb.vec2().uniform(0);\r\n this.dstSize = pb.vec2().uniform(0);\r\n that.setupUniforms(this);\r\n if (device.type !== 'webgpu') {\r\n this.srcMipLevel = pb.float().uniform(0);\r\n }\r\n pb.main(function () {\r\n const miplevel = device.type === 'webgpu' ? 0 : this.srcMipLevel;\r\n this.$l.invSize = pb.div(pb.vec2(1), this.srcSize);\r\n this.$l.uv = pb.div(this.$builtins.fragCoord.xy, this.dstSize);\r\n this.$l.d0 = pb.textureSampleLevel(\r\n this.srcTex,\r\n pb.add(this.uv, pb.mul(pb.vec2(-0.5, -0.5), this.invSize)),\r\n miplevel\r\n );\r\n this.$l.d1 = pb.textureSampleLevel(\r\n this.srcTex,\r\n pb.add(this.uv, pb.mul(pb.vec2(0.5, -0.5), this.invSize)),\r\n miplevel\r\n );\r\n this.$l.d2 = pb.textureSampleLevel(\r\n this.srcTex,\r\n pb.add(this.uv, pb.mul(pb.vec2(-0.5, 0.5), this.invSize)),\r\n miplevel\r\n );\r\n this.$l.d3 = pb.textureSampleLevel(\r\n this.srcTex,\r\n pb.add(this.uv, pb.mul(pb.vec2(0.5, 0.5), this.invSize)),\r\n miplevel\r\n );\r\n this.$outputs.color = that.renderPixel(this, this.d0, this.d1, this.d2, this.d3, this.uv);\r\n });\r\n }\r\n })!;\r\n program.name = '@RenderMipmap';\r\n this._program.set(program);\r\n this._bindGroup.set(device.createBindGroup(program.bindGroupLayouts[0]));\r\n }\r\n }\r\n}\r\n"],"names":["RenderMipmap","_program","_bindGroup","_srcSize","_dstSize","setupUniforms","_scope","applyUniformValues","DRef","Float32Array","render","srcTex","device","getDevice","prepare","pushDeviceStates","type","i","mipLevelCount","renderLevel","tmpTexture","createTexture2D","format","width","height","tmpFramebuffer","createFrameBuffer","dstTex","getColorAttachments","dispose","popDeviceStates","miplevel","srcTexture","dstTexture","sampler","fetchSampler","framebuffer","setColorAttachmentMipLevel","bindGroup","get","setColorAttachmentGenerateMipmaps","Math","max","setValue","setTextureView","setTexture","setProgram","setBindGroup","setFramebuffer","drawFullscreenQuad","copyFramebufferToTexture2D","that","program","buildRenderProgram","vertex","pb","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","position","vec4","add","mul","xy","y","neg","fragment","color","tex2D","sampleType","uniform","srcSize","dstSize","srcMipLevel","float","$l","invSize","div","fragCoord","d0","textureSampleLevel","d1","d2","d3","renderPixel","name","set","createBindGroup","bindGroupLayouts"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { defineProps } from './types.js';
|
|
2
|
+
|
|
1
3
|
class JSONProp {
|
|
2
4
|
parent;
|
|
3
5
|
name;
|
|
@@ -75,12 +77,14 @@ class JSONData extends JSONProp {
|
|
|
75
77
|
}
|
|
76
78
|
updateProps() {
|
|
77
79
|
for (const key of Object.keys(this.data)){
|
|
78
|
-
|
|
80
|
+
if (!this.value.find((p)=>p?.name === key)) {
|
|
81
|
+
delete this.data[key];
|
|
82
|
+
}
|
|
79
83
|
}
|
|
80
84
|
for (const prop of this.value){
|
|
81
85
|
if (prop instanceof JSONData) {
|
|
82
86
|
this.data[prop.name] = prop.data;
|
|
83
|
-
} else {
|
|
87
|
+
} else if (prop) {
|
|
84
88
|
this.data[prop.name] = prop.value;
|
|
85
89
|
}
|
|
86
90
|
}
|
|
@@ -148,7 +152,7 @@ function getJSONPropClass() {
|
|
|
148
152
|
};
|
|
149
153
|
},
|
|
150
154
|
getProps () {
|
|
151
|
-
return [
|
|
155
|
+
return defineProps([
|
|
152
156
|
{
|
|
153
157
|
name: 'name',
|
|
154
158
|
type: 'string',
|
|
@@ -167,7 +171,7 @@ function getJSONPropClass() {
|
|
|
167
171
|
}
|
|
168
172
|
}
|
|
169
173
|
}
|
|
170
|
-
];
|
|
174
|
+
]);
|
|
171
175
|
}
|
|
172
176
|
};
|
|
173
177
|
}
|
|
@@ -183,7 +187,7 @@ function getJSONStringClass() {
|
|
|
183
187
|
};
|
|
184
188
|
},
|
|
185
189
|
getProps () {
|
|
186
|
-
return [
|
|
190
|
+
return defineProps([
|
|
187
191
|
{
|
|
188
192
|
name: 'value',
|
|
189
193
|
type: 'string',
|
|
@@ -200,7 +204,7 @@ function getJSONStringClass() {
|
|
|
200
204
|
}
|
|
201
205
|
}
|
|
202
206
|
}
|
|
203
|
-
];
|
|
207
|
+
]);
|
|
204
208
|
}
|
|
205
209
|
};
|
|
206
210
|
}
|
|
@@ -216,7 +220,7 @@ function getJSONNumberClass() {
|
|
|
216
220
|
};
|
|
217
221
|
},
|
|
218
222
|
getProps () {
|
|
219
|
-
return [
|
|
223
|
+
return defineProps([
|
|
220
224
|
{
|
|
221
225
|
name: 'value',
|
|
222
226
|
type: 'float',
|
|
@@ -233,7 +237,7 @@ function getJSONNumberClass() {
|
|
|
233
237
|
}
|
|
234
238
|
}
|
|
235
239
|
}
|
|
236
|
-
];
|
|
240
|
+
]);
|
|
237
241
|
}
|
|
238
242
|
};
|
|
239
243
|
}
|
|
@@ -249,7 +253,7 @@ function getJSONBoolClass() {
|
|
|
249
253
|
};
|
|
250
254
|
},
|
|
251
255
|
getProps () {
|
|
252
|
-
return [
|
|
256
|
+
return defineProps([
|
|
253
257
|
{
|
|
254
258
|
name: 'value',
|
|
255
259
|
type: 'bool',
|
|
@@ -266,7 +270,7 @@ function getJSONBoolClass() {
|
|
|
266
270
|
}
|
|
267
271
|
}
|
|
268
272
|
}
|
|
269
|
-
];
|
|
273
|
+
]);
|
|
270
274
|
}
|
|
271
275
|
};
|
|
272
276
|
}
|
|
@@ -282,7 +286,7 @@ function getJSONObjectClass() {
|
|
|
282
286
|
};
|
|
283
287
|
},
|
|
284
288
|
getProps () {
|
|
285
|
-
return [
|
|
289
|
+
return defineProps([
|
|
286
290
|
{
|
|
287
291
|
name: 'JSONData',
|
|
288
292
|
type: 'object_array',
|
|
@@ -308,7 +312,7 @@ function getJSONObjectClass() {
|
|
|
308
312
|
set (value, index) {
|
|
309
313
|
if (value === null) {
|
|
310
314
|
this.isnull = true;
|
|
311
|
-
} else if (index >= 0) {
|
|
315
|
+
} else if (typeof index === 'number' && index >= 0) {
|
|
312
316
|
this.value[index] = value.object[0];
|
|
313
317
|
this.updateProps();
|
|
314
318
|
} else {
|
|
@@ -329,7 +333,7 @@ function getJSONObjectClass() {
|
|
|
329
333
|
this.updateProps();
|
|
330
334
|
}
|
|
331
335
|
}
|
|
332
|
-
];
|
|
336
|
+
]);
|
|
333
337
|
}
|
|
334
338
|
};
|
|
335
339
|
}
|
|
@@ -345,7 +349,7 @@ function getJSONArrayClass() {
|
|
|
345
349
|
};
|
|
346
350
|
},
|
|
347
351
|
getProps () {
|
|
348
|
-
return [
|
|
352
|
+
return defineProps([
|
|
349
353
|
{
|
|
350
354
|
name: 'JSONArray',
|
|
351
355
|
type: 'object_array',
|
|
@@ -393,7 +397,7 @@ function getJSONArrayClass() {
|
|
|
393
397
|
this.updateProps();
|
|
394
398
|
}
|
|
395
399
|
}
|
|
396
|
-
];
|
|
400
|
+
]);
|
|
397
401
|
}
|
|
398
402
|
};
|
|
399
403
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sources":["../../../src/utility/serialization/json.ts"],"sourcesContent":["import type { SerializableClass } from './types';\r\n\r\nexport class JSONProp {\r\n parent: JSONData;\r\n name: string;\r\n constructor(data: JSONData) {\r\n this.parent = data;\r\n if (this.parent && !(this.parent instanceof JSONArray)) {\r\n for (let i = 1; ; i++) {\r\n const name = `field${i}`;\r\n if (!this.parent.value.find((p) => p?.name === name)) {\r\n this.name = name;\r\n break;\r\n }\r\n }\r\n } else {\r\n this.name = '';\r\n }\r\n }\r\n}\r\n\r\nexport class JSONString extends JSONProp {\r\n value: string;\r\n constructor(data: JSONData, value = '') {\r\n super(data);\r\n this.value = value;\r\n }\r\n}\r\n\r\nexport class JSONNumber extends JSONProp {\r\n value: number;\r\n constructor(data: JSONData, value = 0) {\r\n super(data);\r\n this.value = value;\r\n }\r\n}\r\n\r\nexport class JSONBool extends JSONProp {\r\n value: boolean;\r\n constructor(data: JSONData, value = false) {\r\n super(data);\r\n this.value = value;\r\n }\r\n}\r\n\r\nexport class JSONData extends JSONProp {\r\n value: (JSONNumber | JSONString | JSONBool | JSONData)[];\r\n data: object;\r\n isnull: boolean;\r\n isundefined: boolean;\r\n constructor(parent: JSONData, data: object = {}) {\r\n super(parent);\r\n this.updateObject(data);\r\n }\r\n updateObject(data: object) {\r\n this.value = [];\r\n this.data = data;\r\n this.isnull = this.data === null;\r\n if (this.data) {\r\n this.parseObject();\r\n }\r\n }\r\n parseObject() {\r\n for (const key of Object.keys(this.data)) {\r\n const val = this.data[key];\r\n let prop: JSONString | JSONNumber | JSONBool | JSONData;\r\n if (typeof val === 'string') {\r\n prop = new JSONString(this, val);\r\n } else if (typeof val === 'number') {\r\n prop = new JSONNumber(this, val);\r\n } else if (typeof val === 'boolean') {\r\n prop = new JSONBool(this, val);\r\n } else if (typeof val === 'object') {\r\n prop = Array.isArray(val) ? new JSONArray(this, val) : new JSONData(this, val);\r\n } else {\r\n continue;\r\n }\r\n prop.name = key;\r\n this.value.push(prop);\r\n }\r\n }\r\n updateProps(): object {\r\n for (const key of Object.keys(this.data)) {\r\n delete this.data[key];\r\n }\r\n for (const prop of this.value) {\r\n if (prop instanceof JSONData) {\r\n this.data[prop.name] = prop.data;\r\n } else {\r\n this.data[prop.name] = prop.value;\r\n }\r\n }\r\n return this.data;\r\n }\r\n}\r\n\r\nexport class JSONArray extends JSONData {\r\n constructor(parent: JSONData, data: unknown[] = []) {\r\n super(parent);\r\n this.updateObject(data);\r\n }\r\n updateObject(data: object) {\r\n this.value = [];\r\n this.data = data;\r\n this.isnull = this.data === null;\r\n if (this.data) {\r\n this.parseObject();\r\n }\r\n }\r\n parseObject() {\r\n const data = this.data as unknown[];\r\n if (data?.length > 0) {\r\n for (let i = 0; i < data.length; i++) {\r\n const val = data[i];\r\n let prop: JSONString | JSONNumber | JSONBool | JSONData;\r\n if (typeof val === 'string') {\r\n prop = new JSONString(this, val);\r\n } else if (typeof val === 'number') {\r\n prop = new JSONNumber(this, val);\r\n } else if (typeof val === 'boolean') {\r\n prop = new JSONBool(this, val);\r\n } else if (typeof val === 'object') {\r\n prop = !val ? null : Array.isArray(val) ? new JSONArray(this, val) : new JSONData(this, val);\r\n } else {\r\n continue;\r\n }\r\n this.value.push(prop);\r\n }\r\n }\r\n }\r\n updateProps(): object {\r\n const data = this.data as unknown[];\r\n data.splice(0, data.length);\r\n for (let i = 0; i < this.value.length; i++) {\r\n const prop = this.value[i];\r\n if (prop instanceof JSONArray) {\r\n this.data[i] = prop.data;\r\n } else if (prop instanceof JSONData) {\r\n this.data[i] = prop.data;\r\n } else {\r\n this.data[i] = prop?.value ?? null;\r\n }\r\n }\r\n return this.data;\r\n }\r\n}\r\n\r\nexport function getJSONPropClass(): SerializableClass {\r\n return {\r\n ctor: JSONProp,\r\n name: 'JSONProp',\r\n noTitle: true,\r\n createFunc(ctx: JSONData) {\r\n return { obj: new JSONProp(ctx) };\r\n },\r\n getProps() {\r\n return [\r\n {\r\n name: 'name',\r\n type: 'string',\r\n default: '',\r\n isHidden(this: JSONProp) {\r\n return !this.parent || this.parent instanceof JSONArray;\r\n },\r\n get(this: JSONProp, value) {\r\n value.str[0] = this.name;\r\n },\r\n set(this: JSONProp, value) {\r\n const data = this.parent;\r\n if (data && value.str[0] && !data.value.find((p) => p !== this && p.name === value.str[0])) {\r\n this.name = value.str[0];\r\n this.parent.updateProps();\r\n }\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONStringClass(): SerializableClass {\r\n return {\r\n ctor: JSONString,\r\n parent: JSONProp,\r\n name: 'JSONString',\r\n noTitle: true,\r\n createFunc(ctx: JSONData) {\r\n return { obj: new JSONString(ctx) };\r\n },\r\n getProps() {\r\n return [\r\n {\r\n name: 'value',\r\n type: 'string',\r\n isHidden() {\r\n return this.name.startsWith('.');\r\n },\r\n get(this: JSONString, value) {\r\n value.str[0] = this.value;\r\n },\r\n set(this: JSONString, value) {\r\n if (this.value !== value.str[0]) {\r\n this.value = value.str[0];\r\n this.parent.updateProps();\r\n }\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONNumberClass(): SerializableClass {\r\n return {\r\n ctor: JSONNumber,\r\n parent: JSONProp,\r\n name: 'JSONNumber',\r\n noTitle: true,\r\n createFunc(ctx: JSONData) {\r\n return { obj: new JSONString(ctx) };\r\n },\r\n getProps() {\r\n return [\r\n {\r\n name: 'value',\r\n type: 'float',\r\n isHidden() {\r\n return this.name.startsWith('.');\r\n },\r\n get(this: JSONNumber, value) {\r\n value.num[0] = this.value;\r\n },\r\n set(this: JSONNumber, value) {\r\n if (this.value !== value.num[0]) {\r\n this.value = value.num[0];\r\n this.parent.updateProps();\r\n }\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONBoolClass(): SerializableClass {\r\n return {\r\n ctor: JSONBool,\r\n parent: JSONProp,\r\n name: 'JSONBool',\r\n noTitle: true,\r\n createFunc(ctx: JSONData) {\r\n return { obj: new JSONBool(ctx) };\r\n },\r\n getProps() {\r\n return [\r\n {\r\n name: 'value',\r\n type: 'bool',\r\n isHidden() {\r\n return this.name.startsWith('.');\r\n },\r\n get(this: JSONBool, value) {\r\n value.bool[0] = this.value;\r\n },\r\n set(this: JSONBool, value) {\r\n if (this.value !== value.bool[0]) {\r\n this.value = value.bool[0];\r\n this.parent.updateProps();\r\n }\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONObjectClass(): SerializableClass {\r\n return {\r\n ctor: JSONData,\r\n parent: JSONProp,\r\n name: 'JSONData',\r\n noTitle: true,\r\n createFunc(ctx) {\r\n return { obj: new JSONData(ctx instanceof JSONData ? ctx : null) };\r\n },\r\n getProps() {\r\n return [\r\n {\r\n name: 'JSONData',\r\n type: 'object_array',\r\n options: { objectTypes: [JSONString, JSONNumber, JSONBool, JSONData, JSONArray] },\r\n default: [],\r\n isNullable() {\r\n return false;\r\n },\r\n isHidden() {\r\n return this.name.startsWith('.');\r\n },\r\n get(this: JSONData, value) {\r\n value.object = this.value.slice();\r\n },\r\n set(this: JSONData, value, index) {\r\n if (value === null) {\r\n this.isnull = true;\r\n } else if (index >= 0) {\r\n this.value[index] = value.object[0] as JSONString | JSONNumber | JSONBool | JSONData;\r\n this.updateProps();\r\n } else {\r\n this.value = value.object.slice() as (JSONString | JSONNumber | JSONBool | JSONData)[];\r\n this.updateProps();\r\n }\r\n },\r\n create(this: JSONData, ctor) {\r\n const c = ctor as typeof JSONString | typeof JSONNumber | typeof JSONBool | typeof JSONData;\r\n return c ? new c(this) : null;\r\n },\r\n add(this: JSONData, value, index) {\r\n this.value.splice(index, 0, value.object[0] as JSONString | JSONNumber | JSONBool | JSONData);\r\n this.updateProps();\r\n },\r\n delete(this: JSONData, index) {\r\n this.value.splice(index, 1);\r\n this.updateProps();\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONArrayClass(): SerializableClass {\r\n return {\r\n ctor: JSONArray,\r\n parent: JSONProp,\r\n name: 'JSONArray',\r\n noTitle: true,\r\n createFunc(ctx) {\r\n return { obj: new JSONArray(ctx instanceof JSONData || ctx instanceof JSONArray ? ctx : null) };\r\n },\r\n getProps() {\r\n return [\r\n {\r\n name: 'JSONArray',\r\n type: 'object_array',\r\n options: { objectTypes: [JSONString, JSONNumber, JSONBool, JSONData, JSONArray] },\r\n default: [],\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: JSONArray, value) {\r\n value.object = this.value.slice();\r\n },\r\n set(this: JSONArray, value, index) {\r\n if (value === null) {\r\n this.isnull = true;\r\n } else if (index >= 0) {\r\n this.value[index] = value.object[0] as\r\n | JSONString\r\n | JSONNumber\r\n | JSONBool\r\n | JSONData\r\n | JSONArray;\r\n this.updateProps();\r\n } else {\r\n this.value = value.object.slice() as (\r\n | JSONString\r\n | JSONNumber\r\n | JSONBool\r\n | JSONData\r\n | JSONArray\r\n )[];\r\n this.updateProps();\r\n }\r\n },\r\n create(this: JSONArray, ctor, index) {\r\n const c = ctor as\r\n | typeof JSONString\r\n | typeof JSONNumber\r\n | typeof JSONBool\r\n | typeof JSONData\r\n | typeof JSONArray;\r\n const prop = c ? new c(this) : null;\r\n if (prop) {\r\n prop.name = String(index);\r\n }\r\n return prop;\r\n },\r\n add(this: JSONArray, value, index) {\r\n this.value.splice(\r\n index,\r\n 0,\r\n value.object[0] as JSONString | JSONNumber | JSONBool | JSONData | JSONArray\r\n );\r\n this.updateProps();\r\n },\r\n delete(this: JSONArray, index) {\r\n this.value.splice(index, 1);\r\n this.updateProps();\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n}\r\n"],"names":["JSONProp","parent","name","data","JSONArray","i","value","find","p","JSONString","JSONNumber","JSONBool","JSONData","isnull","isundefined","updateObject","parseObject","key","Object","keys","val","prop","Array","isArray","push","updateProps","length","splice","getJSONPropClass","ctor","noTitle","createFunc","ctx","obj","getProps","type","default","isHidden","get","str","set","getJSONStringClass","startsWith","getJSONNumberClass","num","getJSONBoolClass","bool","getJSONObjectClass","options","objectTypes","isNullable","object","slice","index","create","c","add","delete","getJSONArrayClass","String"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json.js","sources":["../../../src/utility/serialization/json.ts"],"sourcesContent":["import type { Nullable } from '@zephyr3d/base';\r\nimport { defineProps, type SerializableClass } from './types';\r\n\r\nexport class JSONProp {\r\n parent: Nullable<JSONData>;\r\n name: string;\r\n constructor(data: Nullable<JSONData>) {\r\n this.parent = data;\r\n if (this.parent && !(this.parent instanceof JSONArray)) {\r\n for (let i = 1; ; i++) {\r\n const name = `field${i}`;\r\n if (!this.parent.value.find((p) => p?.name === name)) {\r\n this.name = name;\r\n break;\r\n }\r\n }\r\n } else {\r\n this.name = '';\r\n }\r\n }\r\n}\r\n\r\nexport class JSONString extends JSONProp {\r\n value: string;\r\n constructor(data: JSONData, value = '') {\r\n super(data);\r\n this.value = value;\r\n }\r\n}\r\n\r\nexport class JSONNumber extends JSONProp {\r\n value: number;\r\n constructor(data: JSONData, value = 0) {\r\n super(data);\r\n this.value = value;\r\n }\r\n}\r\n\r\nexport class JSONBool extends JSONProp {\r\n value: boolean;\r\n constructor(data: JSONData, value = false) {\r\n super(data);\r\n this.value = value;\r\n }\r\n}\r\n\r\nexport class JSONData extends JSONProp {\r\n value!: Nullable<JSONNumber | JSONString | JSONBool | JSONData>[];\r\n data!: any;\r\n isnull!: boolean;\r\n isundefined!: boolean;\r\n constructor(parent: Nullable<JSONData>, data: any = {}) {\r\n super(parent);\r\n this.updateObject(data);\r\n }\r\n updateObject(data: any) {\r\n this.value = [];\r\n this.data = data;\r\n this.isnull = this.data === null;\r\n if (this.data) {\r\n this.parseObject();\r\n }\r\n }\r\n parseObject() {\r\n for (const key of Object.keys(this.data)) {\r\n const val = this.data[key];\r\n let prop: JSONString | JSONNumber | JSONBool | JSONData;\r\n if (typeof val === 'string') {\r\n prop = new JSONString(this, val);\r\n } else if (typeof val === 'number') {\r\n prop = new JSONNumber(this, val);\r\n } else if (typeof val === 'boolean') {\r\n prop = new JSONBool(this, val);\r\n } else if (typeof val === 'object') {\r\n prop = Array.isArray(val) ? new JSONArray(this, val) : new JSONData(this, val);\r\n } else {\r\n continue;\r\n }\r\n prop.name = key;\r\n this.value.push(prop);\r\n }\r\n }\r\n updateProps(): any {\r\n for (const key of Object.keys(this.data)) {\r\n if (!this.value.find((p) => p?.name === key)) {\r\n delete this.data[key];\r\n }\r\n }\r\n for (const prop of this.value) {\r\n if (prop instanceof JSONData) {\r\n this.data[prop.name] = prop.data;\r\n } else if (prop) {\r\n this.data[prop.name] = prop.value;\r\n }\r\n }\r\n return this.data;\r\n }\r\n}\r\n\r\nexport class JSONArray extends JSONData {\r\n constructor(parent: Nullable<JSONData>, data: unknown[] = []) {\r\n super(parent);\r\n this.updateObject(data);\r\n }\r\n updateObject(data: object) {\r\n this.value = [];\r\n this.data = data;\r\n this.isnull = this.data === null;\r\n if (this.data) {\r\n this.parseObject();\r\n }\r\n }\r\n parseObject() {\r\n const data = this.data as unknown[];\r\n if (data?.length > 0) {\r\n for (let i = 0; i < data.length; i++) {\r\n const val = data[i];\r\n let prop: Nullable<JSONString | JSONNumber | JSONBool | JSONData>;\r\n if (typeof val === 'string') {\r\n prop = new JSONString(this, val);\r\n } else if (typeof val === 'number') {\r\n prop = new JSONNumber(this, val);\r\n } else if (typeof val === 'boolean') {\r\n prop = new JSONBool(this, val);\r\n } else if (typeof val === 'object') {\r\n prop = !val ? null : Array.isArray(val) ? new JSONArray(this, val) : new JSONData(this, val);\r\n } else {\r\n continue;\r\n }\r\n this.value.push(prop);\r\n }\r\n }\r\n }\r\n updateProps(): object {\r\n const data = this.data as unknown[];\r\n data.splice(0, data.length);\r\n for (let i = 0; i < this.value.length; i++) {\r\n const prop = this.value[i];\r\n if (prop instanceof JSONArray) {\r\n this.data[i] = prop.data;\r\n } else if (prop instanceof JSONData) {\r\n this.data[i] = prop.data;\r\n } else {\r\n this.data[i] = prop?.value ?? null;\r\n }\r\n }\r\n return this.data;\r\n }\r\n}\r\n\r\nexport function getJSONPropClass(): SerializableClass {\r\n return {\r\n ctor: JSONProp,\r\n name: 'JSONProp',\r\n noTitle: true,\r\n createFunc(ctx: JSONData) {\r\n return { obj: new JSONProp(ctx) };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'name',\r\n type: 'string',\r\n default: '',\r\n isHidden(this: JSONProp) {\r\n return !this.parent || this.parent instanceof JSONArray;\r\n },\r\n get(this: JSONProp, value) {\r\n value.str![0] = this.name;\r\n },\r\n set(this: JSONProp, value) {\r\n const data = this.parent;\r\n if (data && value.str![0] && !data.value.find((p) => p !== this && p!.name === value.str![0])) {\r\n this.name = value.str![0];\r\n this.parent!.updateProps();\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONStringClass(): SerializableClass {\r\n return {\r\n ctor: JSONString,\r\n parent: JSONProp,\r\n name: 'JSONString',\r\n noTitle: true,\r\n createFunc(ctx: JSONData) {\r\n return { obj: new JSONString(ctx) };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'value',\r\n type: 'string',\r\n isHidden() {\r\n return this.name.startsWith('.');\r\n },\r\n get(this: JSONString, value) {\r\n value.str![0] = this.value;\r\n },\r\n set(this: JSONString, value) {\r\n if (this.value !== value.str![0]) {\r\n this.value = value.str![0];\r\n this.parent!.updateProps();\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONNumberClass(): SerializableClass {\r\n return {\r\n ctor: JSONNumber,\r\n parent: JSONProp,\r\n name: 'JSONNumber',\r\n noTitle: true,\r\n createFunc(ctx: JSONData) {\r\n return { obj: new JSONString(ctx) };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'value',\r\n type: 'float',\r\n isHidden() {\r\n return this.name.startsWith('.');\r\n },\r\n get(this: JSONNumber, value) {\r\n value.num![0] = this.value;\r\n },\r\n set(this: JSONNumber, value) {\r\n if (this.value !== value.num![0]) {\r\n this.value = value.num![0];\r\n this.parent!.updateProps();\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONBoolClass(): SerializableClass {\r\n return {\r\n ctor: JSONBool,\r\n parent: JSONProp,\r\n name: 'JSONBool',\r\n noTitle: true,\r\n createFunc(ctx: JSONData) {\r\n return { obj: new JSONBool(ctx) };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'value',\r\n type: 'bool',\r\n isHidden() {\r\n return this.name.startsWith('.');\r\n },\r\n get(this: JSONBool, value) {\r\n value.bool![0] = this.value;\r\n },\r\n set(this: JSONBool, value) {\r\n if (this.value !== value.bool![0]) {\r\n this.value = value.bool![0];\r\n this.parent!.updateProps();\r\n }\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONObjectClass(): SerializableClass {\r\n return {\r\n ctor: JSONData,\r\n parent: JSONProp,\r\n name: 'JSONData',\r\n noTitle: true,\r\n createFunc(ctx) {\r\n return { obj: new JSONData(ctx instanceof JSONData ? ctx : null) };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'JSONData',\r\n type: 'object_array',\r\n options: { objectTypes: [JSONString, JSONNumber, JSONBool, JSONData, JSONArray] },\r\n default: [],\r\n isNullable() {\r\n return false;\r\n },\r\n isHidden() {\r\n return this.name.startsWith('.');\r\n },\r\n get(this: JSONData, value) {\r\n value.object = this.value.slice();\r\n },\r\n set(this: JSONData, value, index) {\r\n if (value === null) {\r\n this.isnull = true;\r\n } else if (typeof index === 'number' && index >= 0) {\r\n this.value[index] = value.object![0] as JSONString | JSONNumber | JSONBool | JSONData;\r\n this.updateProps();\r\n } else {\r\n this.value = value.object!.slice() as (JSONString | JSONNumber | JSONBool | JSONData)[];\r\n this.updateProps();\r\n }\r\n },\r\n create(this: JSONData, ctor) {\r\n const c = ctor as typeof JSONString | typeof JSONNumber | typeof JSONBool | typeof JSONData;\r\n return c ? new c(this) : null;\r\n },\r\n add(this: JSONData, value, index) {\r\n this.value.splice(index!, 0, value.object![0] as JSONString | JSONNumber | JSONBool | JSONData);\r\n this.updateProps();\r\n },\r\n delete(this: JSONData, index) {\r\n this.value.splice(index, 1);\r\n this.updateProps();\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n\r\nexport function getJSONArrayClass(): SerializableClass {\r\n return {\r\n ctor: JSONArray,\r\n parent: JSONProp,\r\n name: 'JSONArray',\r\n noTitle: true,\r\n createFunc(ctx) {\r\n return { obj: new JSONArray(ctx instanceof JSONData || ctx instanceof JSONArray ? ctx : null) };\r\n },\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'JSONArray',\r\n type: 'object_array',\r\n options: { objectTypes: [JSONString, JSONNumber, JSONBool, JSONData, JSONArray] },\r\n default: [],\r\n isNullable() {\r\n return true;\r\n },\r\n get(this: JSONArray, value) {\r\n value.object = this.value.slice();\r\n },\r\n set(this: JSONArray, value, index) {\r\n if (value === null) {\r\n this.isnull = true;\r\n } else if (index! >= 0) {\r\n this.value[index!] = value.object![0] as\r\n | JSONString\r\n | JSONNumber\r\n | JSONBool\r\n | JSONData\r\n | JSONArray;\r\n this.updateProps();\r\n } else {\r\n this.value = value.object!.slice() as (\r\n | JSONString\r\n | JSONNumber\r\n | JSONBool\r\n | JSONData\r\n | JSONArray\r\n )[];\r\n this.updateProps();\r\n }\r\n },\r\n create(this: JSONArray, ctor, index) {\r\n const c = ctor as\r\n | typeof JSONString\r\n | typeof JSONNumber\r\n | typeof JSONBool\r\n | typeof JSONData\r\n | typeof JSONArray;\r\n const prop = c ? new c(this) : null;\r\n if (prop) {\r\n prop.name = String(index);\r\n }\r\n return prop;\r\n },\r\n add(this: JSONArray, value, index) {\r\n this.value.splice(\r\n index!,\r\n 0,\r\n value.object![0] as JSONString | JSONNumber | JSONBool | JSONData | JSONArray\r\n );\r\n this.updateProps();\r\n },\r\n delete(this: JSONArray, index) {\r\n this.value.splice(index, 1);\r\n this.updateProps();\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n}\r\n"],"names":["JSONProp","parent","name","data","JSONArray","i","value","find","p","JSONString","JSONNumber","JSONBool","JSONData","isnull","isundefined","updateObject","parseObject","key","Object","keys","val","prop","Array","isArray","push","updateProps","length","splice","getJSONPropClass","ctor","noTitle","createFunc","ctx","obj","getProps","defineProps","type","default","isHidden","get","str","set","getJSONStringClass","startsWith","getJSONNumberClass","num","getJSONBoolClass","bool","getJSONObjectClass","options","objectTypes","isNullable","object","slice","index","create","c","add","delete","getJSONArrayClass","String"],"mappings":"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"}
|