@zephyr3d/scene 0.7.1 → 0.8.1
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 +0 -18
- package/dist/animation/animation.js.map +1 -1
- package/dist/animation/animationset.js +200 -3
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/ik/ccd_solver.js +371 -0
- package/dist/animation/ik/ccd_solver.js.map +1 -0
- package/dist/animation/ik/fabrik_solver.js +398 -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_constraint.js +25 -0
- package/dist/animation/ik/ik_constraint.js.map +1 -0
- package/dist/animation/ik/ik_pole_constraint.js +128 -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 +191 -0
- package/dist/animation/ik/ik_utils.js.map +1 -0
- package/dist/animation/ik/two_bone_ik_solver.js +331 -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/skeleton.js +55 -51
- 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_bone.js +240 -0
- package/dist/animation/spring/spring_bone.js.map +1 -0
- package/dist/animation/spring/spring_bone_collider.js +198 -0
- package/dist/animation/spring/spring_bone_collider.js.map +1 -0
- package/dist/animation/spring/spring_bone_constraint.js +170 -0
- package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
- package/dist/animation/spring/spring_bone_system.js +328 -0
- package/dist/animation/spring/spring_bone_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/app/screen.js +1 -1
- package/dist/app/screen.js.map +1 -1
- package/dist/asset/model.js +10 -6
- package/dist/asset/model.js.map +1 -1
- package/dist/camera/perspectivecamera.js +3 -3
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +1400 -4
- package/dist/index.js +16 -0
- package/dist/index.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/pbr/common.js +20 -17
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/shader/helper.js +5 -3
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/render/gpu_picking.js +100 -0
- package/dist/render/gpu_picking.js.map +1 -0
- package/dist/render/rendergraph/device_pool_allocator.js +41 -0
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
- package/dist/render/rendergraph/executor.js +146 -0
- package/dist/render/rendergraph/executor.js.map +1 -0
- package/dist/render/rendergraph/forward_plus_builder.js +414 -0
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
- package/dist/render/rendergraph/rendergraph.js +306 -0
- package/dist/render/rendergraph/rendergraph.js.map +1 -0
- package/dist/render/rendergraph/types.js +57 -0
- package/dist/render/rendergraph/types.js.map +1 -0
- package/dist/render/sky_motion_vector.js +85 -0
- package/dist/render/sky_motion_vector.js.map +1 -0
- package/dist/scene/mesh.js +15 -23
- package/dist/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +24 -23
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +62 -0
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +1 -1
- package/package.json +3 -3
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
- package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
- package/dist/src/animation/animation.js +0 -127
- package/dist/src/animation/animation.js.map +0 -1
- package/dist/src/animation/animationset.js +0 -255
- package/dist/src/animation/animationset.js.map +0 -1
- package/dist/src/animation/animationtrack.js +0 -34
- package/dist/src/animation/animationtrack.js.map +0 -1
- package/dist/src/animation/eulerrotationtrack.js +0 -52
- package/dist/src/animation/eulerrotationtrack.js.map +0 -1
- package/dist/src/animation/morphtarget.js +0 -93
- package/dist/src/animation/morphtarget.js.map +0 -1
- package/dist/src/animation/morphtrack.js +0 -70
- package/dist/src/animation/morphtrack.js.map +0 -1
- package/dist/src/animation/proptrack.js +0 -161
- package/dist/src/animation/proptrack.js.map +0 -1
- package/dist/src/animation/rotationtrack.js +0 -51
- package/dist/src/animation/rotationtrack.js.map +0 -1
- package/dist/src/animation/scaletrack.js +0 -50
- package/dist/src/animation/scaletrack.js.map +0 -1
- package/dist/src/animation/skeleton.js +0 -204
- package/dist/src/animation/skeleton.js.map +0 -1
- package/dist/src/animation/translationtrack.js +0 -50
- package/dist/src/animation/translationtrack.js.map +0 -1
- package/dist/src/app/app.js +0 -129
- package/dist/src/app/app.js.map +0 -1
- package/dist/src/app/inputmgr.js +0 -267
- package/dist/src/app/inputmgr.js.map +0 -1
- package/dist/src/asset/assetmanager.js +0 -404
- package/dist/src/asset/assetmanager.js.map +0 -1
- package/dist/src/asset/builtin.js +0 -337
- package/dist/src/asset/builtin.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds.js +0 -470
- package/dist/src/asset/loaders/dds/dds.js.map +0 -1
- package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
- package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
- package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
- package/dist/src/asset/loaders/gltf/helpers.js +0 -327
- package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
- package/dist/src/asset/loaders/hdr/hdr.js +0 -180
- package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
- package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
- package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
- package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
- package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
- package/dist/src/asset/loaders/loader.js +0 -45
- package/dist/src/asset/loaders/loader.js.map +0 -1
- package/dist/src/asset/model.js +0 -414
- package/dist/src/asset/model.js.map +0 -1
- package/dist/src/blitter/bilateralblur.js +0 -221
- package/dist/src/blitter/bilateralblur.js.map +0 -1
- package/dist/src/blitter/blitter.js +0 -390
- package/dist/src/blitter/blitter.js.map +0 -1
- package/dist/src/blitter/box.js +0 -118
- package/dist/src/blitter/box.js.map +0 -1
- package/dist/src/blitter/copy.js +0 -22
- package/dist/src/blitter/copy.js.map +0 -1
- package/dist/src/blitter/gaussianblur.js +0 -228
- package/dist/src/blitter/gaussianblur.js.map +0 -1
- package/dist/src/camera/base.js +0 -92
- package/dist/src/camera/base.js.map +0 -1
- package/dist/src/camera/camera.js +0 -1005
- package/dist/src/camera/camera.js.map +0 -1
- package/dist/src/camera/fps.js +0 -238
- package/dist/src/camera/fps.js.map +0 -1
- package/dist/src/camera/orbit.js +0 -245
- package/dist/src/camera/orbit.js.map +0 -1
- package/dist/src/camera/orthocamera.js +0 -167
- package/dist/src/camera/orthocamera.js.map +0 -1
- package/dist/src/camera/perspectivecamera.js +0 -141
- package/dist/src/camera/perspectivecamera.js.map +0 -1
- package/dist/src/index.js +0 -120
- package/dist/src/index.js.map +0 -1
- package/dist/src/material/blinn.js +0 -81
- package/dist/src/material/blinn.js.map +0 -1
- package/dist/src/material/grassmaterial.js +0 -113
- package/dist/src/material/grassmaterial.js.map +0 -1
- package/dist/src/material/lambert.js +0 -92
- package/dist/src/material/lambert.js.map +0 -1
- package/dist/src/material/material.js +0 -301
- package/dist/src/material/material.js.map +0 -1
- package/dist/src/material/meshmaterial.js +0 -704
- package/dist/src/material/meshmaterial.js.map +0 -1
- package/dist/src/material/mixins/albedocolor.js +0 -76
- package/dist/src/material/mixins/albedocolor.js.map +0 -1
- package/dist/src/material/mixins/foliage.js +0 -47
- package/dist/src/material/mixins/foliage.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
- package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
- package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
- package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
- package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
- package/dist/src/material/mixins/lit.js +0 -476
- package/dist/src/material/mixins/lit.js.map +0 -1
- package/dist/src/material/mixins/pbr/common.js +0 -918
- package/dist/src/material/mixins/pbr/common.js.map +0 -1
- package/dist/src/material/mixins/texture.js +0 -172
- package/dist/src/material/mixins/texture.js.map +0 -1
- package/dist/src/material/mixins/vertexcolor.js +0 -56
- package/dist/src/material/mixins/vertexcolor.js.map +0 -1
- package/dist/src/material/particle.js +0 -178
- package/dist/src/material/particle.js.map +0 -1
- package/dist/src/material/pbrmr.js +0 -97
- package/dist/src/material/pbrmr.js.map +0 -1
- package/dist/src/material/pbrsg.js +0 -97
- package/dist/src/material/pbrsg.js.map +0 -1
- package/dist/src/material/shader/helper.js +0 -1209
- package/dist/src/material/shader/helper.js.map +0 -1
- package/dist/src/material/terrain-cm.js +0 -606
- package/dist/src/material/terrain-cm.js.map +0 -1
- package/dist/src/material/terrainmaterial.js +0 -375
- package/dist/src/material/terrainmaterial.js.map +0 -1
- package/dist/src/material/unlit.js +0 -41
- package/dist/src/material/unlit.js.map +0 -1
- package/dist/src/material/water.js +0 -417
- package/dist/src/material/water.js.map +0 -1
- package/dist/src/posteffect/bloom.js +0 -361
- package/dist/src/posteffect/bloom.js.map +0 -1
- package/dist/src/posteffect/compositor.js +0 -226
- package/dist/src/posteffect/compositor.js.map +0 -1
- package/dist/src/posteffect/fxaa.js +0 -273
- package/dist/src/posteffect/fxaa.js.map +0 -1
- package/dist/src/posteffect/grayscale.js +0 -69
- package/dist/src/posteffect/grayscale.js.map +0 -1
- package/dist/src/posteffect/motionblur.js +0 -96
- package/dist/src/posteffect/motionblur.js.map +0 -1
- package/dist/src/posteffect/posteffect.js +0 -126
- package/dist/src/posteffect/posteffect.js.map +0 -1
- package/dist/src/posteffect/sao.js +0 -324
- package/dist/src/posteffect/sao.js.map +0 -1
- package/dist/src/posteffect/ssr.js +0 -489
- package/dist/src/posteffect/ssr.js.map +0 -1
- package/dist/src/posteffect/taa.js +0 -172
- package/dist/src/posteffect/taa.js.map +0 -1
- package/dist/src/posteffect/tonemap.js +0 -94
- package/dist/src/posteffect/tonemap.js.map +0 -1
- package/dist/src/render/abuffer_oit.js +0 -361
- package/dist/src/render/abuffer_oit.js.map +0 -1
- package/dist/src/render/clipmap.js +0 -851
- package/dist/src/render/clipmap.js.map +0 -1
- package/dist/src/render/cluster_light.js +0 -333
- package/dist/src/render/cluster_light.js.map +0 -1
- package/dist/src/render/cull_visitor.js +0 -187
- package/dist/src/render/cull_visitor.js.map +0 -1
- package/dist/src/render/depthpass.js +0 -68
- package/dist/src/render/depthpass.js.map +0 -1
- package/dist/src/render/drawable_mixin.js +0 -227
- package/dist/src/render/drawable_mixin.js.map +0 -1
- package/dist/src/render/envlight.js +0 -463
- package/dist/src/render/envlight.js.map +0 -1
- package/dist/src/render/fbm_wavegenerator.js +0 -251
- package/dist/src/render/fbm_wavegenerator.js.map +0 -1
- package/dist/src/render/fft_wavegenerator.js +0 -1006
- package/dist/src/render/fft_wavegenerator.js.map +0 -1
- package/dist/src/render/fullscreenquad.js +0 -38
- package/dist/src/render/fullscreenquad.js.map +0 -1
- package/dist/src/render/gerstner_wavegenerator.js +0 -314
- package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
- package/dist/src/render/globalbindgroup_allocator.js +0 -60
- package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
- package/dist/src/render/hzb.js +0 -273
- package/dist/src/render/hzb.js.map +0 -1
- package/dist/src/render/lightpass.js +0 -172
- package/dist/src/render/lightpass.js.map +0 -1
- package/dist/src/render/objectcolorpass.js +0 -51
- package/dist/src/render/objectcolorpass.js.map +0 -1
- package/dist/src/render/primitive.js +0 -364
- package/dist/src/render/primitive.js.map +0 -1
- package/dist/src/render/render_queue.js +0 -467
- package/dist/src/render/render_queue.js.map +0 -1
- package/dist/src/render/renderbundle_wrapper.js +0 -152
- package/dist/src/render/renderbundle_wrapper.js.map +0 -1
- package/dist/src/render/renderer.js +0 -455
- package/dist/src/render/renderer.js.map +0 -1
- package/dist/src/render/renderpass.js +0 -200
- package/dist/src/render/renderpass.js.map +0 -1
- package/dist/src/render/shadowmap_pass.js +0 -56
- package/dist/src/render/shadowmap_pass.js.map +0 -1
- package/dist/src/render/sky.js +0 -1103
- package/dist/src/render/sky.js.map +0 -1
- package/dist/src/render/weightedblended_oit.js +0 -168
- package/dist/src/render/weightedblended_oit.js.map +0 -1
- package/dist/src/scene/batchgroup.js +0 -162
- package/dist/src/scene/batchgroup.js.map +0 -1
- package/dist/src/scene/environment.js +0 -209
- package/dist/src/scene/environment.js.map +0 -1
- package/dist/src/scene/graph_node.js +0 -72
- package/dist/src/scene/graph_node.js.map +0 -1
- package/dist/src/scene/light.js +0 -416
- package/dist/src/scene/light.js.map +0 -1
- package/dist/src/scene/mesh.js +0 -341
- package/dist/src/scene/mesh.js.map +0 -1
- package/dist/src/scene/octree.js +0 -649
- package/dist/src/scene/octree.js.map +0 -1
- package/dist/src/scene/particlesys.js +0 -738
- package/dist/src/scene/particlesys.js.map +0 -1
- package/dist/src/scene/raycast_visitor.js +0 -103
- package/dist/src/scene/raycast_visitor.js.map +0 -1
- package/dist/src/scene/scene.js +0 -284
- package/dist/src/scene/scene.js.map +0 -1
- package/dist/src/scene/scene_node.js +0 -732
- package/dist/src/scene/scene_node.js.map +0 -1
- package/dist/src/scene/terrain/grass.js +0 -278
- package/dist/src/scene/terrain/grass.js.map +0 -1
- package/dist/src/scene/terrain/heightfield.js +0 -475
- package/dist/src/scene/terrain/heightfield.js.map +0 -1
- package/dist/src/scene/terrain/patch.js +0 -530
- package/dist/src/scene/terrain/patch.js.map +0 -1
- package/dist/src/scene/terrain/quadtree.js +0 -461
- package/dist/src/scene/terrain/quadtree.js.map +0 -1
- package/dist/src/scene/terrain/terrain.js +0 -246
- package/dist/src/scene/terrain/terrain.js.map +0 -1
- package/dist/src/scene/terrain-cm/grass.js +0 -594
- package/dist/src/scene/terrain-cm/grass.js.map +0 -1
- package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
- package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
- package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
- package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
- package/dist/src/scene/water.js +0 -374
- package/dist/src/scene/water.js.map +0 -1
- package/dist/src/shaders/atmosphere.js +0 -957
- package/dist/src/shaders/atmosphere.js.map +0 -1
- package/dist/src/shaders/fog.js +0 -112
- package/dist/src/shaders/fog.js.map +0 -1
- package/dist/src/shaders/misc.js +0 -266
- package/dist/src/shaders/misc.js.map +0 -1
- package/dist/src/shaders/noise.js +0 -222
- package/dist/src/shaders/noise.js.map +0 -1
- package/dist/src/shaders/pbr.js +0 -51
- package/dist/src/shaders/pbr.js.map +0 -1
- package/dist/src/shaders/shadow.js +0 -636
- package/dist/src/shaders/shadow.js.map +0 -1
- package/dist/src/shaders/ssr.js +0 -490
- package/dist/src/shaders/ssr.js.map +0 -1
- package/dist/src/shaders/temporal.js +0 -215
- package/dist/src/shaders/temporal.js.map +0 -1
- package/dist/src/shaders/water.js +0 -756
- package/dist/src/shaders/water.js.map +0 -1
- package/dist/src/shadow/esm.js +0 -237
- package/dist/src/shadow/esm.js.map +0 -1
- package/dist/src/shadow/pcf_opt.js +0 -181
- package/dist/src/shadow/pcf_opt.js.map +0 -1
- package/dist/src/shadow/pcf_pd.js +0 -189
- package/dist/src/shadow/pcf_pd.js.map +0 -1
- package/dist/src/shadow/shader.js +0 -37
- package/dist/src/shadow/shader.js.map +0 -1
- package/dist/src/shadow/shadow_impl.js +0 -15
- package/dist/src/shadow/shadow_impl.js.map +0 -1
- package/dist/src/shadow/shadowmapper.js +0 -790
- package/dist/src/shadow/shadowmapper.js.map +0 -1
- package/dist/src/shadow/ssm.js +0 -159
- package/dist/src/shadow/ssm.js.map +0 -1
- package/dist/src/shadow/vsm.js +0 -297
- package/dist/src/shadow/vsm.js.map +0 -1
- package/dist/src/shapes/box.js +0 -386
- package/dist/src/shapes/box.js.map +0 -1
- package/dist/src/shapes/cylinder.js +0 -125
- package/dist/src/shapes/cylinder.js.map +0 -1
- package/dist/src/shapes/plane.js +0 -88
- package/dist/src/shapes/plane.js.map +0 -1
- package/dist/src/shapes/shape.js +0 -87
- package/dist/src/shapes/shape.js.map +0 -1
- package/dist/src/shapes/sphere.js +0 -114
- package/dist/src/shapes/sphere.js.map +0 -1
- package/dist/src/shapes/tetrahedron.js +0 -188
- package/dist/src/shapes/tetrahedron.js.map +0 -1
- package/dist/src/shapes/torus.js +0 -111
- package/dist/src/shapes/torus.js.map +0 -1
- package/dist/src/utility/aabbtree.js +0 -400
- package/dist/src/utility/aabbtree.js.map +0 -1
- package/dist/src/utility/bounding_volume.js +0 -29
- package/dist/src/utility/bounding_volume.js.map +0 -1
- package/dist/src/utility/debug.js +0 -28
- package/dist/src/utility/debug.js.map +0 -1
- package/dist/src/utility/draco/decoder.js +0 -116
- package/dist/src/utility/draco/decoder.js.map +0 -1
- package/dist/src/utility/misc.js +0 -105
- package/dist/src/utility/misc.js.map +0 -1
- package/dist/src/utility/panorama.js +0 -163
- package/dist/src/utility/panorama.js.map +0 -1
- package/dist/src/utility/pmrem.js +0 -354
- package/dist/src/utility/pmrem.js.map +0 -1
- package/dist/src/utility/rendermipmap.js +0 -115
- package/dist/src/utility/rendermipmap.js.map +0 -1
- package/dist/src/utility/serialization/json.js +0 -402
- package/dist/src/utility/serialization/json.js.map +0 -1
- package/dist/src/utility/serialization/manager.js +0 -623
- package/dist/src/utility/serialization/manager.js.map +0 -1
- package/dist/src/utility/serialization/scene/animation.js +0 -248
- package/dist/src/utility/serialization/scene/animation.js.map +0 -1
- package/dist/src/utility/serialization/scene/batch.js +0 -59
- package/dist/src/utility/serialization/scene/batch.js.map +0 -1
- package/dist/src/utility/serialization/scene/camera.js +0 -790
- package/dist/src/utility/serialization/scene/camera.js.map +0 -1
- package/dist/src/utility/serialization/scene/common.js +0 -222
- package/dist/src/utility/serialization/scene/common.js.map +0 -1
- package/dist/src/utility/serialization/scene/light.js +0 -575
- package/dist/src/utility/serialization/scene/light.js.map +0 -1
- package/dist/src/utility/serialization/scene/material.js +0 -1111
- package/dist/src/utility/serialization/scene/material.js.map +0 -1
- package/dist/src/utility/serialization/scene/mesh.js +0 -148
- package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
- package/dist/src/utility/serialization/scene/misc.js +0 -39
- package/dist/src/utility/serialization/scene/misc.js.map +0 -1
- package/dist/src/utility/serialization/scene/node.js +0 -451
- package/dist/src/utility/serialization/scene/node.js.map +0 -1
- package/dist/src/utility/serialization/scene/particle.js +0 -425
- package/dist/src/utility/serialization/scene/particle.js.map +0 -1
- package/dist/src/utility/serialization/scene/primitive.js +0 -692
- package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
- package/dist/src/utility/serialization/scene/scene.js +0 -704
- package/dist/src/utility/serialization/scene/scene.js.map +0 -1
- package/dist/src/utility/serialization/scene/terrain.js +0 -488
- package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
- package/dist/src/utility/serialization/scene/water.js +0 -465
- package/dist/src/utility/serialization/scene/water.js.map +0 -1
- package/dist/src/utility/shprojector.js +0 -297
- package/dist/src/utility/shprojector.js.map +0 -1
- package/dist/src/utility/textures/ggxlut.js +0 -213
- package/dist/src/utility/textures/ggxlut.js.map +0 -1
- package/dist/src/utility/textures/gradientnoise.js +0 -62
- package/dist/src/utility/textures/gradientnoise.js.map +0 -1
- package/dist/src/utility/textures/randomnoise.js +0 -41
- package/dist/src/utility/textures/randomnoise.js.map +0 -1
- package/dist/src/values.js +0 -162
- package/dist/src/values.js.map +0 -1
- package/dist/utility/blueprint/material/common.js +0 -7
- package/dist/utility/blueprint/material/common.js.map +0 -1
- package/dist/utility/serialization/blueprint/constants.js +0 -255
- package/dist/utility/serialization/blueprint/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/constants.js +0 -203
- package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
- package/dist/utility/serialization/blueprint/material/texture.js +0 -165
- package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -100,6 +100,22 @@ export { NodeScaleTrack } from './animation/scaletrack.js';
|
|
|
100
100
|
export { PropertyTrack } from './animation/proptrack.js';
|
|
101
101
|
export { MorphTargetTrack } from './animation/morphtrack.js';
|
|
102
102
|
export { Skeleton } from './animation/skeleton.js';
|
|
103
|
+
export { SkeletonModifier } from './animation/skeleton_modifier.js';
|
|
104
|
+
export { IKModifier } from './animation/ik_modifier.js';
|
|
105
|
+
export { SpringModifier } from './animation/spring_modifier.js';
|
|
106
|
+
export { IKChain } from './animation/ik/ik_chain.js';
|
|
107
|
+
export { IKSolver } from './animation/ik/ik_solver.js';
|
|
108
|
+
export { FABRIKSolver } from './animation/ik/fabrik_solver.js';
|
|
109
|
+
export { TwoBoneIKSolver } from './animation/ik/two_bone_ik_solver.js';
|
|
110
|
+
export { CCDSolver } from './animation/ik/ccd_solver.js';
|
|
111
|
+
export { IKConstraint } from './animation/ik/ik_constraint.js';
|
|
112
|
+
export { IKAngleConstraint } from './animation/ik/ik_angle_constraint.js';
|
|
113
|
+
export { createSpringParticle } from './animation/spring/spring_particle.js';
|
|
114
|
+
export { createSpringConstraint } from './animation/spring/spring_constraint.js';
|
|
115
|
+
export { SpringChain } from './animation/spring/spring_chain.js';
|
|
116
|
+
export { SpringSystem } from './animation/spring/spring_system.js';
|
|
117
|
+
export { MultiChainSpringSystem } from './animation/spring/multi_chain_spring_system.js';
|
|
118
|
+
export { createCapsuleCollider, createPlaneCollider, createSphereCollider, resolveCapsuleCollision, resolvePlaneCollision, resolveSphereCollision, updateColliderFromNode } from './animation/spring/spring_collider.js';
|
|
103
119
|
export { Camera } from './camera/camera.js';
|
|
104
120
|
export { OrthoCamera } from './camera/orthocamera.js';
|
|
105
121
|
export { PerspectiveCamera } from './camera/perspectivecamera.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,6 +2,7 @@ import { applyMaterialMixins } from '../../meshmaterial.js';
|
|
|
2
2
|
import { mixinLight } from '../lit.js';
|
|
3
3
|
import { ShaderHelper } from '../../shader/helper.js';
|
|
4
4
|
import { MaterialVaryingFlags } from '../../../values.js';
|
|
5
|
+
import { Vector4 } from '@zephyr3d/base';
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Blinn-phong lighting model mixin
|
|
@@ -14,16 +15,27 @@ import { MaterialVaryingFlags } from '../../../values.js';
|
|
|
14
15
|
}
|
|
15
16
|
const S = applyMaterialMixins(BaseCls, mixinLight);
|
|
16
17
|
const SHININESS_UNIFORM = S.defineInstanceUniform('shininess', 'float', 'Shininess');
|
|
17
|
-
|
|
18
|
+
let FEATURE_WRAP_LIGHTING = 0;
|
|
19
|
+
const cls = class extends S {
|
|
18
20
|
static blinnPhongMixed = true;
|
|
19
21
|
_shininess;
|
|
22
|
+
_wrap;
|
|
23
|
+
_scatterWidth;
|
|
24
|
+
_scatterColor;
|
|
20
25
|
constructor(){
|
|
21
26
|
super();
|
|
22
27
|
this._shininess = 32;
|
|
28
|
+
this._wrap = 0;
|
|
29
|
+
this._scatterWidth = 0.3;
|
|
30
|
+
this._scatterColor = Vector4.zero();
|
|
31
|
+
this.useFeature(FEATURE_WRAP_LIGHTING, false);
|
|
23
32
|
}
|
|
24
33
|
copyFrom(other) {
|
|
25
34
|
super.copyFrom(other);
|
|
26
35
|
this.shininess = other.shininess;
|
|
36
|
+
this.scatterWrap = other.scatterWrap;
|
|
37
|
+
this.scatterColor = other.scatterColor;
|
|
38
|
+
this.scatterWidth = other.scatterWidth;
|
|
27
39
|
}
|
|
28
40
|
/** Shininess */ get shininess() {
|
|
29
41
|
return this._shininess;
|
|
@@ -34,6 +46,34 @@ import { MaterialVaryingFlags } from '../../../values.js';
|
|
|
34
46
|
this.uniformChanged();
|
|
35
47
|
}
|
|
36
48
|
}
|
|
49
|
+
/** Wrap */ get scatterWrap() {
|
|
50
|
+
return this._wrap;
|
|
51
|
+
}
|
|
52
|
+
set scatterWrap(wrap) {
|
|
53
|
+
if (this._wrap !== wrap) {
|
|
54
|
+
this._wrap = wrap;
|
|
55
|
+
this.uniformChanged();
|
|
56
|
+
this.useFeature(FEATURE_WRAP_LIGHTING, this._wrap !== 0);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/** Scatter color */ get scatterColor() {
|
|
60
|
+
return this._scatterColor;
|
|
61
|
+
}
|
|
62
|
+
set scatterColor(color) {
|
|
63
|
+
if (!color.equalsTo(this._scatterColor)) {
|
|
64
|
+
this._scatterColor.set(color);
|
|
65
|
+
this.uniformChanged();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** Scatter width */ get scatterWidth() {
|
|
69
|
+
return this._scatterWidth;
|
|
70
|
+
}
|
|
71
|
+
set scatterWidth(val) {
|
|
72
|
+
if (val !== this._scatterWidth) {
|
|
73
|
+
this._scatterWidth = val;
|
|
74
|
+
this.uniformChanged();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
37
77
|
vertexShader(scope) {
|
|
38
78
|
super.vertexShader(scope);
|
|
39
79
|
if (this.needFragmentColor() && this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING) {
|
|
@@ -45,12 +85,22 @@ import { MaterialVaryingFlags } from '../../../values.js';
|
|
|
45
85
|
const pb = scope.$builder;
|
|
46
86
|
if (this.needFragmentColor() && !(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING)) {
|
|
47
87
|
scope.zShininess = pb.float().uniform(2);
|
|
88
|
+
if (this.featureUsed(FEATURE_WRAP_LIGHTING)) {
|
|
89
|
+
scope.zScatterWrap = pb.float().uniform(2);
|
|
90
|
+
scope.zScatterWidth = pb.float().uniform(2);
|
|
91
|
+
scope.zScatterColor = pb.vec4().uniform(2);
|
|
92
|
+
}
|
|
48
93
|
}
|
|
49
94
|
}
|
|
50
95
|
applyUniformValues(bindGroup, ctx, pass) {
|
|
51
96
|
super.applyUniformValues(bindGroup, ctx, pass);
|
|
52
97
|
if (this.needFragmentColor(ctx) && !(ctx.materialFlags & MaterialVaryingFlags.INSTANCING)) {
|
|
53
98
|
bindGroup.setValue('zShininess', this._shininess);
|
|
99
|
+
if (this.featureUsed(FEATURE_WRAP_LIGHTING)) {
|
|
100
|
+
bindGroup.setValue('zScatterWrap', this._wrap);
|
|
101
|
+
bindGroup.setValue('zScatterWidth', this._scatterWidth);
|
|
102
|
+
bindGroup.setValue('zScatterColor', this._scatterColor);
|
|
103
|
+
}
|
|
54
104
|
}
|
|
55
105
|
}
|
|
56
106
|
blinnPhongLight(scope, worldPos, normal, viewVec, albedo, outRoughness) {
|
|
@@ -79,12 +129,22 @@ import { MaterialVaryingFlags } from '../../../values.js';
|
|
|
79
129
|
that.forEachLight(this, function(type, posRange, dirCutoff, colorIntensity, shadow) {
|
|
80
130
|
this.$l.lightAtten = that.calculateLightAttenuation(this, type, this.worldPos, posRange, dirCutoff);
|
|
81
131
|
this.$l.lightDir = that.calculateLightDirection(this, type, this.worldPos, posRange, dirCutoff);
|
|
82
|
-
this.$l.NoL = pb.
|
|
132
|
+
this.$l.NoL = pb.dot(this.normal, this.lightDir);
|
|
83
133
|
this.$l.halfVec = pb.normalize(pb.add(this.viewVec, this.lightDir));
|
|
84
134
|
this.$l.NoH = pb.clamp(pb.dot(this.normal, this.halfVec), 0, 1);
|
|
85
135
|
this.$l.lightColor = pb.mul(colorIntensity.rgb, colorIntensity.a, this.lightAtten);
|
|
86
|
-
|
|
87
|
-
|
|
136
|
+
if (that.featureUsed(FEATURE_WRAP_LIGHTING)) {
|
|
137
|
+
this.$l.NoLwrap = pb.div(pb.add(this.NoL, this.zScatterWrap), pb.add(1, this.zScatterWrap));
|
|
138
|
+
this.$l.diff = pb.max(this.NoLwrap, 0);
|
|
139
|
+
this.$l.scatter = pb.mul(pb.smoothStep(0, this.zScatterWidth, this.NoLwrap), pb.smoothStep(pb.mul(this.zScatterWidth, 2), this.zScatterWidth, this.NoLwrap));
|
|
140
|
+
this.$l.spec = this.$choice(pb.lessThanEqual(this.NoLwrap, 0), pb.float(0), pb.pow(this.NoH, shininess));
|
|
141
|
+
this.$l.diffuse = pb.mul(this.lightColor, 1 / Math.PI, pb.add(pb.vec3(this.diff), pb.mul(this.zScatterColor.rgb, this.scatter)));
|
|
142
|
+
this.$l.specular = pb.mul(this.lightColor, this.spec);
|
|
143
|
+
} else {
|
|
144
|
+
this.NoL = pb.clamp(this.NoL, 0, 1);
|
|
145
|
+
this.$l.diffuse = pb.mul(this.lightColor, 1 / Math.PI, this.NoL);
|
|
146
|
+
this.$l.specular = pb.mul(this.lightColor, pb.pow(this.NoH, shininess));
|
|
147
|
+
}
|
|
88
148
|
if (shadow) {
|
|
89
149
|
this.$if(pb.greaterThan(this.NoL, 0), function() {
|
|
90
150
|
this.$l.shadow = pb.vec3(that.calculateShadow(this, this.worldPos, this.NoL));
|
|
@@ -106,6 +166,8 @@ import { MaterialVaryingFlags } from '../../../values.js';
|
|
|
106
166
|
return outRoughness ? pb.getGlobalScope()[funcName](worldPos, normal, viewVec, albedo, outRoughness) : pb.getGlobalScope()[funcName](worldPos, normal, viewVec, albedo);
|
|
107
167
|
}
|
|
108
168
|
};
|
|
169
|
+
FEATURE_WRAP_LIGHTING = cls.defineFeature();
|
|
170
|
+
return cls;
|
|
109
171
|
}
|
|
110
172
|
|
|
111
173
|
export { mixinBlinnPhong };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blinnphong.js","sources":["../../../../src/material/mixins/lightmodel/blinnphong.ts"],"sourcesContent":["import type { BindGroup, PBFunctionScope, PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\nimport type { MeshMaterial } from '../../meshmaterial';\r\nimport { applyMaterialMixins } from '../../meshmaterial';\r\nimport type { IMixinLight } from '../lit';\r\nimport { mixinLight } from '../lit';\r\nimport type { DrawContext } from '../../../render';\r\nimport { ShaderHelper } from '../../shader/helper';\r\nimport { MaterialVaryingFlags } from '../../../values';\r\n\r\n/**\r\n * Interface for blinn-phong lighting model mixin\r\n * @public\r\n */\r\nexport type IMixinBlinnPhong = {\r\n shininess: number;\r\n blinnPhongLight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n albedo: PBShaderExp,\r\n outRoughness?: PBShaderExp\r\n ): PBShaderExp;\r\n} & IMixinLight;\r\n\r\n/**\r\n * Blinn-phong lighting model mixin\r\n * @param BaseCls - Class to mix in\r\n * @returns Mixed class\r\n * @public\r\n */\r\nexport function mixinBlinnPhong<T extends typeof MeshMaterial>(BaseCls: T) {\r\n if ((BaseCls as any).blinnPhongMixed) {\r\n return BaseCls as T & { new (...args: any[]): IMixinBlinnPhong };\r\n }\r\n const S = applyMaterialMixins(BaseCls, mixinLight);\r\n const SHININESS_UNIFORM = S.defineInstanceUniform('shininess', 'float', 'Shininess');\r\n return class extends S {\r\n protected static blinnPhongMixed = true;\r\n private _shininess: number;\r\n constructor() {\r\n super();\r\n this._shininess = 32;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.shininess = other.shininess;\r\n }\r\n /** Shininess */\r\n get shininess() {\r\n return this._shininess;\r\n }\r\n set shininess(val) {\r\n if (val !== this._shininess) {\r\n this._shininess = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n if (this.needFragmentColor() && this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING) {\r\n scope.$outputs.zShininess = this.getInstancedUniform(scope, SHININESS_UNIFORM);\r\n }\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n super.fragmentShader(scope);\r\n const pb = scope.$builder;\r\n if (this.needFragmentColor() && !(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING)) {\r\n scope.zShininess = pb.float().uniform(2);\r\n }\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n if (this.needFragmentColor(ctx) && !(ctx.materialFlags & MaterialVaryingFlags.INSTANCING)) {\r\n bindGroup.setValue('zShininess', this._shininess);\r\n }\r\n }\r\n blinnPhongLight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n albedo: PBShaderExp,\r\n outRoughness?: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_blinnPhongLight';\r\n const that = this;\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('worldPos'),\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n pb.vec4('albedo'),\r\n ...(outRoughness ? [pb.vec4('outRoughness').out()] : [])\r\n ],\r\n function () {\r\n if (!that.needFragmentColor()) {\r\n this.$return(this.albedo.rgb);\r\n } else {\r\n const shininess =\r\n that.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING\r\n ? this.$inputs.zShininess\r\n : this.zShininess;\r\n if (that.needCalculateEnvLight() && !outRoughness) {\r\n this.$l.diffuseColor = that.getEnvLightIrradiance(this, this.normal);\r\n } else {\r\n this.$l.diffuseColor = pb.vec3(0);\r\n }\r\n this.$l.specularColor = pb.vec3(0);\r\n that.forEachLight(this, function (type, posRange, dirCutoff, colorIntensity, shadow) {\r\n this.$l.lightAtten = that.calculateLightAttenuation(\r\n this,\r\n type,\r\n this.worldPos,\r\n posRange,\r\n dirCutoff\r\n );\r\n this.$l.lightDir = that.calculateLightDirection(this, type, this.worldPos, posRange, dirCutoff);\r\n this.$l.NoL = pb.clamp(pb.dot(this.normal, this.lightDir), 0, 1);\r\n this.$l.halfVec = pb.normalize(pb.add(this.viewVec, this.lightDir));\r\n this.$l.NoH = pb.clamp(pb.dot(this.normal, this.halfVec), 0, 1);\r\n this.$l.lightColor = pb.mul(colorIntensity.rgb, colorIntensity.a, this.lightAtten);\r\n this.$l.diffuse = pb.mul(this.lightColor, 1 / Math.PI, this.NoL);\r\n this.$l.specular = pb.mul(this.lightColor, pb.pow(this.NoH, shininess));\r\n if (shadow) {\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.shadow = pb.vec3(that.calculateShadow(this, this.worldPos, this.NoL));\r\n this.diffuse = pb.mul(this.diffuse, this.shadow);\r\n this.specular = pb.mul(this.specular, this.shadow);\r\n });\r\n }\r\n this.diffuseColor = pb.add(this.diffuseColor, this.diffuse);\r\n this.specularColor = pb.add(this.specularColor, this.specular);\r\n });\r\n this.$l.litColor = pb.add(pb.mul(this.albedo.rgb, this.diffuseColor), this.specularColor);\r\n if (outRoughness) {\r\n this.$l.roughness = pb.sqrt(pb.div(2, pb.add(shininess, 2)));\r\n this.outRoughness = pb.vec4(\r\n pb.mul(this.albedo.rgb, pb.sub(1, this.roughness)),\r\n pb.mul(this.roughness, ShaderHelper.getCameraRoughnessFactor(this))\r\n );\r\n }\r\n this.$return(this.litColor);\r\n }\r\n }\r\n );\r\n return (\r\n outRoughness\r\n ? pb.getGlobalScope()[funcName](worldPos, normal, viewVec, albedo, outRoughness)\r\n : pb.getGlobalScope()[funcName](worldPos, normal, viewVec, albedo)\r\n ) as PBShaderExp;\r\n }\r\n } as unknown as T & { new (...args: any[]): IMixinBlinnPhong };\r\n}\r\n"],"names":["mixinBlinnPhong","BaseCls","blinnPhongMixed","S","applyMaterialMixins","mixinLight","SHININESS_UNIFORM","defineInstanceUniform","_shininess","copyFrom","other","shininess","val","uniformChanged","vertexShader","scope","needFragmentColor","drawContext","materialFlags","MaterialVaryingFlags","INSTANCING","$outputs","zShininess","getInstancedUniform","fragmentShader","pb","$builder","float","uniform","applyUniformValues","bindGroup","ctx","pass","setValue","blinnPhongLight","worldPos","normal","viewVec","albedo","outRoughness","funcName","that","func","vec3","vec4","out","$return","rgb","$inputs","needCalculateEnvLight","$l","diffuseColor","getEnvLightIrradiance","specularColor","forEachLight","type","posRange","dirCutoff","colorIntensity","shadow","lightAtten","calculateLightAttenuation","lightDir","calculateLightDirection","NoL","clamp","dot","halfVec","normalize","add","NoH","lightColor","mul","a","diffuse","Math","PI","specular","pow","$if","greaterThan","calculateShadow","litColor","roughness","sqrt","div","sub","ShaderHelper","getCameraRoughnessFactor","getGlobalScope"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"blinnphong.js","sources":["../../../../src/material/mixins/lightmodel/blinnphong.ts"],"sourcesContent":["import type { BindGroup, PBFunctionScope, PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\nimport type { MeshMaterial } from '../../meshmaterial';\r\nimport { applyMaterialMixins } from '../../meshmaterial';\r\nimport type { IMixinLight } from '../lit';\r\nimport { mixinLight } from '../lit';\r\nimport type { DrawContext } from '../../../render';\r\nimport { ShaderHelper } from '../../shader/helper';\r\nimport { MaterialVaryingFlags } from '../../../values';\r\nimport type { Immutable } from '@zephyr3d/base';\r\nimport { Vector4 } from '@zephyr3d/base';\r\n\r\n/**\r\n * Interface for blinn-phong lighting model mixin\r\n * @public\r\n */\r\nexport type IMixinBlinnPhong = {\r\n shininess: number;\r\n scatterWrap: number;\r\n scatterWidth: number;\r\n scatterColor: Vector4;\r\n blinnPhongLight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n albedo: PBShaderExp,\r\n outRoughness?: PBShaderExp\r\n ): PBShaderExp;\r\n} & IMixinLight;\r\n\r\n/**\r\n * Blinn-phong lighting model mixin\r\n * @param BaseCls - Class to mix in\r\n * @returns Mixed class\r\n * @public\r\n */\r\nexport function mixinBlinnPhong<T extends typeof MeshMaterial>(BaseCls: T) {\r\n if ((BaseCls as any).blinnPhongMixed) {\r\n return BaseCls as T & { new (...args: any[]): IMixinBlinnPhong };\r\n }\r\n const S = applyMaterialMixins(BaseCls, mixinLight);\r\n const SHININESS_UNIFORM = S.defineInstanceUniform('shininess', 'float', 'Shininess');\r\n let FEATURE_WRAP_LIGHTING = 0;\r\n const cls = class extends S implements IMixinBlinnPhong {\r\n protected static blinnPhongMixed = true;\r\n private _shininess: number;\r\n private _wrap: number;\r\n private _scatterWidth: number;\r\n private _scatterColor: Vector4;\r\n constructor() {\r\n super();\r\n this._shininess = 32;\r\n this._wrap = 0;\r\n this._scatterWidth = 0.3;\r\n this._scatterColor = Vector4.zero();\r\n this.useFeature(FEATURE_WRAP_LIGHTING, false);\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.shininess = other.shininess;\r\n this.scatterWrap = other.scatterWrap;\r\n this.scatterColor = other.scatterColor;\r\n this.scatterWidth = other.scatterWidth;\r\n }\r\n /** Shininess */\r\n get shininess() {\r\n return this._shininess;\r\n }\r\n set shininess(val) {\r\n if (val !== this._shininess) {\r\n this._shininess = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n /** Wrap */\r\n get scatterWrap() {\r\n return this._wrap;\r\n }\r\n set scatterWrap(wrap) {\r\n if (this._wrap !== wrap) {\r\n this._wrap = wrap;\r\n this.uniformChanged();\r\n this.useFeature(FEATURE_WRAP_LIGHTING, this._wrap !== 0);\r\n }\r\n }\r\n /** Scatter color */\r\n get scatterColor(): Immutable<Vector4> {\r\n return this._scatterColor;\r\n }\r\n set scatterColor(color: Immutable<Vector4>) {\r\n if (!color.equalsTo(this._scatterColor)) {\r\n this._scatterColor.set(color);\r\n this.uniformChanged();\r\n }\r\n }\r\n /** Scatter width */\r\n get scatterWidth() {\r\n return this._scatterWidth;\r\n }\r\n set scatterWidth(val) {\r\n if (val !== this._scatterWidth) {\r\n this._scatterWidth = val;\r\n this.uniformChanged();\r\n }\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n if (this.needFragmentColor() && this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING) {\r\n scope.$outputs.zShininess = this.getInstancedUniform(scope, SHININESS_UNIFORM);\r\n }\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n super.fragmentShader(scope);\r\n const pb = scope.$builder;\r\n if (this.needFragmentColor() && !(this.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING)) {\r\n scope.zShininess = pb.float().uniform(2);\r\n if (this.featureUsed(FEATURE_WRAP_LIGHTING)) {\r\n scope.zScatterWrap = pb.float().uniform(2);\r\n scope.zScatterWidth = pb.float().uniform(2);\r\n scope.zScatterColor = pb.vec4().uniform(2);\r\n }\r\n }\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n if (this.needFragmentColor(ctx) && !(ctx.materialFlags & MaterialVaryingFlags.INSTANCING)) {\r\n bindGroup.setValue('zShininess', this._shininess);\r\n if (this.featureUsed(FEATURE_WRAP_LIGHTING)) {\r\n bindGroup.setValue('zScatterWrap', this._wrap);\r\n bindGroup.setValue('zScatterWidth', this._scatterWidth);\r\n bindGroup.setValue('zScatterColor', this._scatterColor);\r\n }\r\n }\r\n }\r\n blinnPhongLight(\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp,\r\n normal: PBShaderExp,\r\n viewVec: PBShaderExp,\r\n albedo: PBShaderExp,\r\n outRoughness?: PBShaderExp\r\n ) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_blinnPhongLight';\r\n const that = this;\r\n pb.func(\r\n funcName,\r\n [\r\n pb.vec3('worldPos'),\r\n pb.vec3('normal'),\r\n pb.vec3('viewVec'),\r\n pb.vec4('albedo'),\r\n ...(outRoughness ? [pb.vec4('outRoughness').out()] : [])\r\n ],\r\n function () {\r\n if (!that.needFragmentColor()) {\r\n this.$return(this.albedo.rgb);\r\n } else {\r\n const shininess =\r\n that.drawContext.materialFlags & MaterialVaryingFlags.INSTANCING\r\n ? this.$inputs.zShininess\r\n : this.zShininess;\r\n if (that.needCalculateEnvLight() && !outRoughness) {\r\n this.$l.diffuseColor = that.getEnvLightIrradiance(this, this.normal);\r\n } else {\r\n this.$l.diffuseColor = pb.vec3(0);\r\n }\r\n this.$l.specularColor = pb.vec3(0);\r\n that.forEachLight(this, function (type, posRange, dirCutoff, colorIntensity, shadow) {\r\n this.$l.lightAtten = that.calculateLightAttenuation(\r\n this,\r\n type,\r\n this.worldPos,\r\n posRange,\r\n dirCutoff\r\n );\r\n this.$l.lightDir = that.calculateLightDirection(this, type, this.worldPos, posRange, dirCutoff);\r\n this.$l.NoL = pb.dot(this.normal, this.lightDir);\r\n this.$l.halfVec = pb.normalize(pb.add(this.viewVec, this.lightDir));\r\n this.$l.NoH = pb.clamp(pb.dot(this.normal, this.halfVec), 0, 1);\r\n this.$l.lightColor = pb.mul(colorIntensity.rgb, colorIntensity.a, this.lightAtten);\r\n if (that.featureUsed(FEATURE_WRAP_LIGHTING)) {\r\n this.$l.NoLwrap = pb.div(pb.add(this.NoL, this.zScatterWrap), pb.add(1, this.zScatterWrap));\r\n this.$l.diff = pb.max(this.NoLwrap, 0);\r\n this.$l.scatter = pb.mul(\r\n pb.smoothStep(0, this.zScatterWidth, this.NoLwrap),\r\n pb.smoothStep(pb.mul(this.zScatterWidth, 2), this.zScatterWidth, this.NoLwrap)\r\n );\r\n this.$l.spec = this.$choice(\r\n pb.lessThanEqual(this.NoLwrap, 0),\r\n pb.float(0),\r\n pb.pow(this.NoH, shininess)\r\n );\r\n this.$l.diffuse = pb.mul(\r\n this.lightColor,\r\n 1 / Math.PI,\r\n pb.add(pb.vec3(this.diff), pb.mul(this.zScatterColor.rgb, this.scatter))\r\n );\r\n this.$l.specular = pb.mul(this.lightColor, this.spec);\r\n } else {\r\n this.NoL = pb.clamp(this.NoL, 0, 1);\r\n this.$l.diffuse = pb.mul(this.lightColor, 1 / Math.PI, this.NoL);\r\n this.$l.specular = pb.mul(this.lightColor, pb.pow(this.NoH, shininess));\r\n }\r\n if (shadow) {\r\n this.$if(pb.greaterThan(this.NoL, 0), function () {\r\n this.$l.shadow = pb.vec3(that.calculateShadow(this, this.worldPos, this.NoL));\r\n this.diffuse = pb.mul(this.diffuse, this.shadow);\r\n this.specular = pb.mul(this.specular, this.shadow);\r\n });\r\n }\r\n this.diffuseColor = pb.add(this.diffuseColor, this.diffuse);\r\n this.specularColor = pb.add(this.specularColor, this.specular);\r\n });\r\n this.$l.litColor = pb.add(pb.mul(this.albedo.rgb, this.diffuseColor), this.specularColor);\r\n if (outRoughness) {\r\n this.$l.roughness = pb.sqrt(pb.div(2, pb.add(shininess, 2)));\r\n this.outRoughness = pb.vec4(\r\n pb.mul(this.albedo.rgb, pb.sub(1, this.roughness)),\r\n pb.mul(this.roughness, ShaderHelper.getCameraRoughnessFactor(this))\r\n );\r\n }\r\n this.$return(this.litColor);\r\n }\r\n }\r\n );\r\n return (\r\n outRoughness\r\n ? pb.getGlobalScope()[funcName](worldPos, normal, viewVec, albedo, outRoughness)\r\n : pb.getGlobalScope()[funcName](worldPos, normal, viewVec, albedo)\r\n ) as PBShaderExp;\r\n }\r\n } as unknown as T & { new (...args: any[]): IMixinBlinnPhong };\r\n FEATURE_WRAP_LIGHTING = cls.defineFeature();\r\n return cls;\r\n}\r\n"],"names":["mixinBlinnPhong","BaseCls","blinnPhongMixed","S","applyMaterialMixins","mixinLight","SHININESS_UNIFORM","defineInstanceUniform","FEATURE_WRAP_LIGHTING","cls","_shininess","_wrap","_scatterWidth","_scatterColor","Vector4","zero","useFeature","copyFrom","other","shininess","scatterWrap","scatterColor","scatterWidth","val","uniformChanged","wrap","color","equalsTo","set","vertexShader","scope","needFragmentColor","drawContext","materialFlags","MaterialVaryingFlags","INSTANCING","$outputs","zShininess","getInstancedUniform","fragmentShader","pb","$builder","float","uniform","featureUsed","zScatterWrap","zScatterWidth","zScatterColor","vec4","applyUniformValues","bindGroup","ctx","pass","setValue","blinnPhongLight","worldPos","normal","viewVec","albedo","outRoughness","funcName","that","func","vec3","out","$return","rgb","$inputs","needCalculateEnvLight","$l","diffuseColor","getEnvLightIrradiance","specularColor","forEachLight","type","posRange","dirCutoff","colorIntensity","shadow","lightAtten","calculateLightAttenuation","lightDir","calculateLightDirection","NoL","dot","halfVec","normalize","add","NoH","clamp","lightColor","mul","a","NoLwrap","div","diff","max","scatter","smoothStep","spec","$choice","lessThanEqual","pow","diffuse","Math","PI","specular","$if","greaterThan","calculateShadow","litColor","roughness","sqrt","sub","ShaderHelper","getCameraRoughnessFactor","getGlobalScope","defineFeature"],"mappings":"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"}
|
|
@@ -589,7 +589,7 @@ import { mixinPBRBRDF } from './brdf.js';
|
|
|
589
589
|
this.$l.NoV = pb.clamp(pb.dot(this.normal, this.viewVec), 0, 1);
|
|
590
590
|
this.$if(pb.greaterThan(this.NoL, 0), function() {
|
|
591
591
|
this.$l.VoH = pb.clamp(pb.dot(this.viewVec, this.H), 0, 1);
|
|
592
|
-
this.$l.schlickFresnel = that.fresnelSchlick(this, this.VoH, this.data.f0.rgb, this.data.f90);
|
|
592
|
+
this.$l.schlickFresnel = that.fresnelSchlick(this, this.VoH, pb.mul(this.data.f0.rgb, pb.mix(this.data.specularWeight, 1, this.data.metallic)), this.data.f90);
|
|
593
593
|
if (that.iridescence) {
|
|
594
594
|
this.$l.F = pb.mix(this.schlickFresnel, this.data.iridescenceFresnel, this.data.iridescenceFactor.x);
|
|
595
595
|
} else {
|
|
@@ -598,7 +598,7 @@ import { mixinPBRBRDF } from './brdf.js';
|
|
|
598
598
|
this.$l.alphaRoughness = pb.mul(this.data.roughness, this.data.roughness);
|
|
599
599
|
this.$l.D = that.distributionGGX(this, this.NoH, this.alphaRoughness);
|
|
600
600
|
this.$l.V = that.visGGX(this, this.NoV, this.NoL, this.alphaRoughness);
|
|
601
|
-
this.$l.specular = pb.mul(this.lightColor, this.D, this.V, this.F
|
|
601
|
+
this.$l.specular = pb.mul(this.lightColor, this.D, this.V, this.F);
|
|
602
602
|
if (that.sheen) {
|
|
603
603
|
this.specular = pb.mul(this.specular, this.data.sheenAlbedoScaling);
|
|
604
604
|
}
|
|
@@ -607,7 +607,7 @@ import { mixinPBRBRDF } from './brdf.js';
|
|
|
607
607
|
this.$l.iridescenceFresnelMax = pb.vec3(pb.max(pb.max(this.data.iridescenceFresnel.r, this.data.iridescenceFresnel.g), this.data.iridescenceFresnel.b));
|
|
608
608
|
this.F = pb.mix(this.schlickFresnel, this.iridescenceFresnelMax, this.data.iridescenceFactor.x);
|
|
609
609
|
}
|
|
610
|
-
this.$l.diffuseBRDF = pb.mul(pb.sub(pb.vec3(1),
|
|
610
|
+
this.$l.diffuseBRDF = pb.mul(pb.sub(pb.vec3(1), this.F), pb.div(this.data.diffuse.rgb, Math.PI));
|
|
611
611
|
this.$l.diffuse = pb.mul(this.lightColor, pb.max(this.diffuseBRDF, pb.vec3(0)));
|
|
612
612
|
if (that.transmission && that.drawContext.renderPass.type === RENDER_PASS_TYPE_LIGHT) {
|
|
613
613
|
this.$l.transmissionRay = that.getVolumeTransmissionRay(this, this.normal, this.viewVec, this.data.thicknessFactor, this.data.f0.a);
|
|
@@ -629,11 +629,11 @@ import { mixinPBRBRDF } from './brdf.js';
|
|
|
629
629
|
this.alphaRoughness = pb.mul(this.data.ccFactor.y, this.data.ccFactor.y);
|
|
630
630
|
this.NoH = pb.clamp(pb.dot(this.data.ccNormal, this.H), 0, 1);
|
|
631
631
|
this.NoL = pb.clamp(pb.dot(this.data.ccNormal, this.L), 0, 1);
|
|
632
|
-
this.ccF0 = pb.vec3(
|
|
632
|
+
this.ccF0 = pb.vec3(0.04);
|
|
633
633
|
this.F = that.fresnelSchlick(this, this.VoH, this.ccF0, pb.vec3(1));
|
|
634
634
|
this.D = that.distributionGGX(this, this.NoH, this.alphaRoughness);
|
|
635
635
|
this.V = that.visGGX(this, this.data.ccNoV, this.NoL, this.alphaRoughness);
|
|
636
|
-
this.outColor = pb.add(this.outColor, pb.mul(this.D, this.V, this.F, this.data.ccFactor.x));
|
|
636
|
+
this.outColor = pb.add(pb.mul(this.outColor, pb.sub(1, pb.mul(this.F, this.data.ccFactor.x))), pb.mul(this.D, this.V, this.F, this.data.ccFactor.x));
|
|
637
637
|
}
|
|
638
638
|
});
|
|
639
639
|
});
|
|
@@ -783,6 +783,7 @@ import { mixinPBRBRDF } from './brdf.js';
|
|
|
783
783
|
return;
|
|
784
784
|
}
|
|
785
785
|
const envLightStrength = ShaderHelper.getEnvLightStrength(this);
|
|
786
|
+
this.$l.specWeight = pb.mix(this.data.specularWeight, 1.0, this.data.metallic);
|
|
786
787
|
if (that.occlusionTexture) {
|
|
787
788
|
const occlusionSample = that.sampleOcclusionTexture(this).r;
|
|
788
789
|
this.$l.occlusion = pb.mul(pb.add(pb.mul(this.zOcclusionStrength, pb.sub(occlusionSample, 1)), 1), envLightStrength);
|
|
@@ -792,15 +793,16 @@ import { mixinPBRBRDF } from './brdf.js';
|
|
|
792
793
|
this.$l.NoV = pb.clamp(pb.dot(this.normal, this.viewVec), 0.0001, 1);
|
|
793
794
|
this.$l.ggxLutSample = pb.clamp(pb.textureSampleLevel(this.zGGXLut, pb.clamp(pb.vec2(this.NoV, this.data.roughness), pb.vec2(0), pb.vec2(1)), 0), pb.vec4(0), pb.vec4(1));
|
|
794
795
|
this.$l.f_ab = this.ggxLutSample.rg;
|
|
795
|
-
this.$l.
|
|
796
|
+
this.$l.F0 = pb.mul(this.data.f0.rgb, this.specWeight);
|
|
797
|
+
this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.data.roughness)), this.F0), this.F0);
|
|
796
798
|
if (that.iridescence) {
|
|
797
|
-
this.$l.k_S = pb.mix(pb.add(this.
|
|
799
|
+
this.$l.k_S = pb.mix(pb.add(this.F0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5))), this.data.iridescenceFresnel, this.data.iridescenceFactor.x);
|
|
798
800
|
} else {
|
|
799
|
-
this.$l.k_S = pb.add(this.
|
|
801
|
+
this.$l.k_S = pb.add(this.F0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));
|
|
800
802
|
}
|
|
801
803
|
if (outRoughness || ctx.env.light.envLight.hasRadiance()) {
|
|
802
804
|
this.$l.FssEss = pb.add(pb.mul(this.k_S, this.f_ab.x), pb.vec3(this.f_ab.y));
|
|
803
|
-
this.$l.specularFactor = pb.mul(this.FssEss, this.
|
|
805
|
+
this.$l.specularFactor = pb.mul(this.FssEss, this.occlusion);
|
|
804
806
|
if (that.sheen) {
|
|
805
807
|
this.specularFactor = pb.mul(this.specularFactor, this.data.sheenAlbedoScaling);
|
|
806
808
|
}
|
|
@@ -815,15 +817,15 @@ import { mixinPBRBRDF } from './brdf.js';
|
|
|
815
817
|
this.$l.irradiance = ctx.env.light.envLight.getIrradiance(this, this.normal);
|
|
816
818
|
if (that.iridescence) {
|
|
817
819
|
this.$l.iridescenceF0Max = pb.vec3(pb.max(pb.max(this.data.iridescenceF0.r, this.data.iridescenceF0.g), this.data.iridescenceF0.b));
|
|
818
|
-
this.$l.mixedF0 = pb.mix(this.
|
|
820
|
+
this.$l.mixedF0 = pb.mix(this.F0, this.iridescenceF0Max, this.data.iridescenceFactor.x);
|
|
819
821
|
this.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.data.roughness)), this.mixedF0), this.mixedF0);
|
|
820
822
|
this.k_S = pb.add(this.mixedF0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));
|
|
821
823
|
} else {
|
|
822
|
-
this.$l.mixedF0 = this.
|
|
824
|
+
this.$l.mixedF0 = this.F0;
|
|
823
825
|
}
|
|
824
|
-
this.$l.FssEss = pb.add(pb.mul(this.k_S, this.f_ab.x
|
|
826
|
+
this.$l.FssEss = pb.add(pb.mul(this.k_S, this.f_ab.x), pb.vec3(this.f_ab.y));
|
|
825
827
|
this.$l.Ems = pb.sub(1, pb.add(this.f_ab.x, this.f_ab.y));
|
|
826
|
-
this.$l.F_avg = pb.
|
|
828
|
+
this.$l.F_avg = pb.add(this.mixedF0, pb.div(pb.sub(pb.vec3(1), this.mixedF0), 21));
|
|
827
829
|
this.$l.FmsEms = pb.div(pb.mul(this.FssEss, this.F_avg, this.Ems), pb.sub(pb.vec3(1), pb.mul(this.F_avg, this.Ems)));
|
|
828
830
|
this.$l.k_D = pb.mul(this.data.diffuse.rgb, pb.add(pb.sub(pb.vec3(1), this.FssEss), this.FmsEms));
|
|
829
831
|
this.$l.iblDiffuse = pb.mul(pb.add(this.FmsEms, this.k_D), pb.div(this.irradiance, Math.PI), this.occlusion);
|
|
@@ -845,12 +847,13 @@ import { mixinPBRBRDF } from './brdf.js';
|
|
|
845
847
|
this.$l.NoV = pb.clamp(pb.dot(this.data.ccNormal, this.viewVec), 0.0001, 1);
|
|
846
848
|
this.$l.ggxLutSample = pb.clamp(pb.textureSampleLevel(this.zGGXLut, pb.clamp(pb.vec2(this.NoV, this.data.ccFactor.y), pb.vec2(0), pb.vec2(1)), 0), pb.vec4(0), pb.vec4(1));
|
|
847
849
|
this.$l.f_ab = this.ggxLutSample.rg;
|
|
848
|
-
this.$l.
|
|
849
|
-
this.$l.
|
|
850
|
+
this.$l.ccF0 = pb.vec3(0.04);
|
|
851
|
+
this.$l.Fr = pb.sub(pb.max(pb.vec3(pb.sub(1, this.data.ccFactor.y)), this.ccF0), this.ccF0);
|
|
852
|
+
this.$l.k_S = pb.add(this.ccF0, pb.mul(this.Fr, pb.pow(pb.sub(1, this.NoV), 5)));
|
|
850
853
|
this.$l.radiance = ctx.env.light.envLight.getRadiance(this, pb.reflect(pb.neg(this.viewVec), this.data.ccNormal), this.data.ccFactor.y);
|
|
851
854
|
this.$l.FssEss = pb.add(pb.mul(this.k_S, this.f_ab.x), pb.vec3(this.f_ab.y));
|
|
852
|
-
this.$l.ccSpecular = pb.mul(this.radiance, this.FssEss, this.
|
|
853
|
-
this.outColor = pb.add(this.outColor, pb.mul(this.ccSpecular, this.data.ccFactor.x));
|
|
855
|
+
this.$l.ccSpecular = pb.mul(this.radiance, this.FssEss, this.occlusion);
|
|
856
|
+
this.outColor = pb.add(pb.mul(this.outColor, pb.sub(pb.vec3(1), pb.mul(this.FssEss, this.data.ccFactor.x))), pb.mul(this.ccSpecular, this.data.ccFactor.x));
|
|
854
857
|
}
|
|
855
858
|
});
|
|
856
859
|
if (outRoughness) {
|