@zephyr3d/scene 0.9.26 → 0.10.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.
Files changed (506) hide show
  1. package/README.md +60 -27
  2. package/dist/animation/animation_bank.js +634 -0
  3. package/dist/animation/animation_bank.js.map +1 -0
  4. package/dist/animation/animation_bank_gpu.js +256 -0
  5. package/dist/animation/animation_bank_gpu.js.map +1 -0
  6. package/dist/animation/animationset.js +146 -30
  7. package/dist/animation/animationset.js.map +1 -1
  8. package/dist/animation/cloth/gpu_cloth_component.js +406 -0
  9. package/dist/animation/cloth/gpu_cloth_component.js.map +1 -0
  10. package/dist/animation/cloth/gpu_cloth_system.js +332 -202
  11. package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
  12. package/dist/animation/gpu_animation_driver.js +289 -0
  13. package/dist/animation/gpu_animation_driver.js.map +1 -0
  14. package/dist/animation/joint_dynamics/collision.js +112 -1
  15. package/dist/animation/joint_dynamics/collision.js.map +1 -1
  16. package/dist/animation/joint_dynamics/controller.js +6 -0
  17. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  18. package/dist/animation/joint_dynamics/joint_dynamics_system.js +11 -0
  19. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  20. package/dist/animation/joint_dynamics/solver.js +50 -12
  21. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  22. package/dist/animation/joint_dynamics/types.js.map +1 -1
  23. package/dist/animation/skeleton.js +300 -56
  24. package/dist/animation/skeleton.js.map +1 -1
  25. package/dist/animation/skin_palette_atlas.js +252 -0
  26. package/dist/animation/skin_palette_atlas.js.map +1 -0
  27. package/dist/animation/spring/multi_chain_spring_system.js +298 -38
  28. package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
  29. package/dist/animation/spring/spring_chain.js +2 -0
  30. package/dist/animation/spring/spring_chain.js.map +1 -1
  31. package/dist/animation/spring/spring_collider.js +159 -21
  32. package/dist/animation/spring/spring_collider.js.map +1 -1
  33. package/dist/animation/spring/spring_particle.js +1 -0
  34. package/dist/animation/spring/spring_particle.js.map +1 -1
  35. package/dist/animation/spring/spring_solver.js +173 -0
  36. package/dist/animation/spring/spring_solver.js.map +1 -0
  37. package/dist/animation/spring/spring_system.js +249 -24
  38. package/dist/animation/spring/spring_system.js.map +1 -1
  39. package/dist/animation/spring_modifier.js +32 -1
  40. package/dist/animation/spring_modifier.js.map +1 -1
  41. package/dist/app/app.js +26 -0
  42. package/dist/app/app.js.map +1 -1
  43. package/dist/app/engine.js +86 -15
  44. package/dist/app/engine.js.map +1 -1
  45. package/dist/app/gamepad.js +191 -0
  46. package/dist/app/gamepad.js.map +1 -0
  47. package/dist/app/inputactions.js +271 -0
  48. package/dist/app/inputactions.js.map +1 -0
  49. package/dist/app/inputmgr.js +331 -22
  50. package/dist/app/inputmgr.js.map +1 -1
  51. package/dist/app/loading.js +138 -0
  52. package/dist/app/loading.js.map +1 -0
  53. package/dist/app/pipelinecache.js +209 -0
  54. package/dist/app/pipelinecache.js.map +1 -0
  55. package/dist/app/runtimescript.js +25 -0
  56. package/dist/app/runtimescript.js.map +1 -1
  57. package/dist/app/scriptingsystem.js +54 -0
  58. package/dist/app/scriptingsystem.js.map +1 -1
  59. package/dist/app/scriptregistry.js +7 -2
  60. package/dist/app/scriptregistry.js.map +1 -1
  61. package/dist/asset/asset_manifest.js +59 -0
  62. package/dist/asset/asset_manifest.js.map +1 -0
  63. package/dist/asset/asset_preload.js +258 -0
  64. package/dist/asset/asset_preload.js.map +1 -0
  65. package/dist/asset/assetmanager.js +117 -65
  66. package/dist/asset/assetmanager.js.map +1 -1
  67. package/dist/asset/loaders/ktx2/basis/LICENSE +201 -0
  68. package/dist/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
  69. package/dist/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
  70. package/dist/asset/loaders/ktx2/basis_location.js +17 -0
  71. package/dist/asset/loaders/ktx2/basis_location.js.map +1 -0
  72. package/dist/asset/loaders/ktx2/ktx2_loader.js +88 -0
  73. package/dist/asset/loaders/ktx2/ktx2_loader.js.map +1 -0
  74. package/dist/asset/loaders/ktx2/ktx2_targets.js +118 -0
  75. package/dist/asset/loaders/ktx2/ktx2_targets.js.map +1 -0
  76. package/dist/asset/loaders/ktx2/transcoder_pool.js +259 -0
  77. package/dist/asset/loaders/ktx2/transcoder_pool.js.map +1 -0
  78. package/dist/asset/mesh_lod_builder.js +104 -0
  79. package/dist/asset/mesh_lod_builder.js.map +1 -0
  80. package/dist/asset/mesh_settings.js +111 -0
  81. package/dist/asset/mesh_settings.js.map +1 -0
  82. package/dist/asset/meshopt_decoder.js +18 -0
  83. package/dist/asset/meshopt_decoder.js.map +1 -0
  84. package/dist/asset/meshopt_simplifier.js +26 -0
  85. package/dist/asset/meshopt_simplifier.js.map +1 -0
  86. package/dist/asset/model.js +177 -3
  87. package/dist/asset/model.js.map +1 -1
  88. package/dist/asset/texture_settings.js +231 -0
  89. package/dist/asset/texture_settings.js.map +1 -0
  90. package/dist/asset/zmsh_binary.js +131 -0
  91. package/dist/asset/zmsh_binary.js.map +1 -0
  92. package/dist/asset/zsdf_binary.js +111 -0
  93. package/dist/asset/zsdf_binary.js.map +1 -0
  94. package/dist/blitter/bilateralblur.js +1 -2
  95. package/dist/blitter/bilateralblur.js.map +1 -1
  96. package/dist/blitter/gaussianblur.js +1 -6
  97. package/dist/blitter/gaussianblur.js.map +1 -1
  98. package/dist/camera/base.js +31 -10
  99. package/dist/camera/base.js.map +1 -1
  100. package/dist/camera/camera.js +178 -200
  101. package/dist/camera/camera.js.map +1 -1
  102. package/dist/camera/follow.js +342 -0
  103. package/dist/camera/follow.js.map +1 -0
  104. package/dist/camera/fps.js +9 -7
  105. package/dist/camera/fps.js.map +1 -1
  106. package/dist/camera/orbit.js +46 -19
  107. package/dist/camera/orbit.js.map +1 -1
  108. package/dist/index.d.ts +30475 -19865
  109. package/dist/index.js +67 -12
  110. package/dist/index.js.map +1 -1
  111. package/dist/material/blinn.js +3 -0
  112. package/dist/material/blinn.js.map +1 -1
  113. package/dist/material/eye.js +1 -1
  114. package/dist/material/eye.js.map +1 -1
  115. package/dist/material/hair.js +2 -3
  116. package/dist/material/hair.js.map +1 -1
  117. package/dist/material/hairstrand.js +235 -235
  118. package/dist/material/hairstrand.js.map +1 -1
  119. package/dist/material/lambert.js +4 -1
  120. package/dist/material/lambert.js.map +1 -1
  121. package/dist/material/material.js +362 -300
  122. package/dist/material/material.js.map +1 -1
  123. package/dist/material/meshmaterial.js +118 -45
  124. package/dist/material/meshmaterial.js.map +1 -1
  125. package/dist/material/mixins/lightmodel/blinnphong.js +1 -1
  126. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  127. package/dist/material/mixins/lightmodel/lambert.js +1 -1
  128. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  129. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +34 -61
  130. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  131. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +16 -2
  132. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  133. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +2 -1
  134. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  135. package/dist/material/mixins/lit.js +223 -83
  136. package/dist/material/mixins/lit.js.map +1 -1
  137. package/dist/material/mixins/pbr/common.js +31 -206
  138. package/dist/material/mixins/pbr/common.js.map +1 -1
  139. package/dist/material/mtoon.js +1 -1
  140. package/dist/material/mtoon.js.map +1 -1
  141. package/dist/material/pbrmr.js +3 -0
  142. package/dist/material/pbrmr.js.map +1 -1
  143. package/dist/material/pbrsg.js +3 -0
  144. package/dist/material/pbrsg.js.map +1 -1
  145. package/dist/material/sdf_debug.js +78 -0
  146. package/dist/material/sdf_debug.js.map +1 -0
  147. package/dist/material/shader/helper.js +733 -190
  148. package/dist/material/shader/helper.js.map +1 -1
  149. package/dist/material/shader/terrain_blend.js +204 -43
  150. package/dist/material/shader/terrain_blend.js.map +1 -1
  151. package/dist/material/skin.js +331 -297
  152. package/dist/material/skin.js.map +1 -1
  153. package/dist/material/skinprofile.js +1058 -0
  154. package/dist/material/skinprofile.js.map +1 -0
  155. package/dist/material/sss.js +353 -0
  156. package/dist/material/sss.js.map +1 -0
  157. package/dist/material/sss_kernel.js +265 -0
  158. package/dist/material/sss_kernel.js.map +1 -0
  159. package/dist/material/sssprofile.js +879 -0
  160. package/dist/material/sssprofile.js.map +1 -0
  161. package/dist/material/subsurfaceprofile.js +4 -8
  162. package/dist/material/subsurfaceprofile.js.map +1 -1
  163. package/dist/material/terrain-cm.js +464 -188
  164. package/dist/material/terrain-cm.js.map +1 -1
  165. package/dist/material/unlit.js +3 -0
  166. package/dist/material/unlit.js.map +1 -1
  167. package/dist/material/water.js +2009 -201
  168. package/dist/material/water.js.map +1 -1
  169. package/dist/node_modules/meshoptimizer/LICENSE +21 -0
  170. package/dist/node_modules/meshoptimizer/meshopt_decoder.js +197 -0
  171. package/dist/node_modules/meshoptimizer/meshopt_decoder.js.map +1 -0
  172. package/dist/node_modules/meshoptimizer/meshopt_simplifier.js +677 -0
  173. package/dist/node_modules/meshoptimizer/meshopt_simplifier.js.map +1 -0
  174. package/dist/physics/character.js +226 -0
  175. package/dist/physics/character.js.map +1 -0
  176. package/dist/physics/collider.js +209 -0
  177. package/dist/physics/collider.js.map +1 -0
  178. package/dist/physics/events.js +79 -0
  179. package/dist/physics/events.js.map +1 -0
  180. package/dist/physics/joint.js +272 -0
  181. package/dist/physics/joint.js.map +1 -0
  182. package/dist/physics/node_physics.js +234 -0
  183. package/dist/physics/node_physics.js.map +1 -0
  184. package/dist/physics/part.js +91 -0
  185. package/dist/physics/part.js.map +1 -0
  186. package/dist/physics/rigid_body.js +379 -0
  187. package/dist/physics/rigid_body.js.map +1 -0
  188. package/dist/physics/vehicle.js +335 -0
  189. package/dist/physics/vehicle.js.map +1 -0
  190. package/dist/physics/world.js +25 -0
  191. package/dist/physics/world.js.map +1 -0
  192. package/dist/posteffect/bloom.js +49 -14
  193. package/dist/posteffect/bloom.js.map +1 -1
  194. package/dist/posteffect/motionblur.js +668 -63
  195. package/dist/posteffect/motionblur.js.map +1 -1
  196. package/dist/posteffect/posteffect.js +12 -1
  197. package/dist/posteffect/posteffect.js.map +1 -1
  198. package/dist/posteffect/postsss.js +572 -0
  199. package/dist/posteffect/postsss.js.map +1 -0
  200. package/dist/posteffect/sao.js +48 -50
  201. package/dist/posteffect/sao.js.map +1 -1
  202. package/dist/posteffect/skinsss.js +605 -355
  203. package/dist/posteffect/skinsss.js.map +1 -1
  204. package/dist/posteffect/ssgi.js +91 -162
  205. package/dist/posteffect/ssgi.js.map +1 -1
  206. package/dist/posteffect/ssr.js +3 -11
  207. package/dist/posteffect/ssr.js.map +1 -1
  208. package/dist/posteffect/sss.js +34 -15
  209. package/dist/posteffect/sss.js.map +1 -1
  210. package/dist/posteffect/taa.js +1 -0
  211. package/dist/posteffect/taa.js.map +1 -1
  212. package/dist/render/abuffer_oit.js +40 -39
  213. package/dist/render/abuffer_oit.js.map +1 -1
  214. package/dist/render/clipmap.js +328 -62
  215. package/dist/render/clipmap.js.map +1 -1
  216. package/dist/render/cluster_light.js +958 -224
  217. package/dist/render/cluster_light.js.map +1 -1
  218. package/dist/render/cull_visitor.js +26 -5
  219. package/dist/render/cull_visitor.js.map +1 -1
  220. package/dist/render/debug_views.js +37 -0
  221. package/dist/render/debug_views.js.map +1 -0
  222. package/dist/render/depthpass.js +5 -1
  223. package/dist/render/depthpass.js.map +1 -1
  224. package/dist/render/drawable_mixin.js +53 -6
  225. package/dist/render/drawable_mixin.js.map +1 -1
  226. package/dist/render/dualdepthpeeling_oit.js +53 -53
  227. package/dist/render/dualdepthpeeling_oit.js.map +1 -1
  228. package/dist/render/envlight.js +196 -113
  229. package/dist/render/envlight.js.map +1 -1
  230. package/dist/render/fbm_wavegenerator.js +8 -13
  231. package/dist/render/fbm_wavegenerator.js.map +1 -1
  232. package/dist/render/fft_wavegenerator.js +268 -136
  233. package/dist/render/fft_wavegenerator.js.map +1 -1
  234. package/dist/render/gerstner_wavegenerator.js +113 -28
  235. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  236. package/dist/render/gi/probe_volume.js +1334 -0
  237. package/dist/render/gi/probe_volume.js.map +1 -0
  238. package/dist/render/gi/scene_gi.js +282 -0
  239. package/dist/render/gi/scene_gi.js.map +1 -0
  240. package/dist/render/gi/voxel_atlas.js +198 -0
  241. package/dist/render/gi/voxel_atlas.js.map +1 -0
  242. package/dist/render/gi/voxel_lighting.js +652 -0
  243. package/dist/render/gi/voxel_lighting.js.map +1 -0
  244. package/dist/render/gi/voxel_scene.js +642 -0
  245. package/dist/render/gi/voxel_scene.js.map +1 -0
  246. package/dist/render/gi/voxelize_pass.js +223 -0
  247. package/dist/render/gi/voxelize_pass.js.map +1 -0
  248. package/dist/render/globalbindgroup_allocator.js +3 -2
  249. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  250. package/dist/render/gpu_picking.js +9 -36
  251. package/dist/render/gpu_picking.js.map +1 -1
  252. package/dist/render/hzb.js +80 -22
  253. package/dist/render/hzb.js.map +1 -1
  254. package/dist/render/instance_culling.js +499 -0
  255. package/dist/render/instance_culling.js.map +1 -0
  256. package/dist/render/lightpass.js +23 -9
  257. package/dist/render/lightpass.js.map +1 -1
  258. package/dist/render/lod.js +46 -0
  259. package/dist/render/lod.js.map +1 -0
  260. package/dist/render/oit.js +11 -11
  261. package/dist/render/oit.js.map +1 -1
  262. package/dist/render/primitive.js +301 -9
  263. package/dist/render/primitive.js.map +1 -1
  264. package/dist/render/primitive_readback.js +209 -0
  265. package/dist/render/primitive_readback.js.map +1 -0
  266. package/dist/render/render_queue.js +198 -11
  267. package/dist/render/render_queue.js.map +1 -1
  268. package/dist/render/renderer.js +14 -7
  269. package/dist/render/renderer.js.map +1 -1
  270. package/dist/render/rendergraph/blackboard.js +15 -1
  271. package/dist/render/rendergraph/blackboard.js.map +1 -1
  272. package/dist/render/rendergraph/executor.js +136 -0
  273. package/dist/render/rendergraph/executor.js.map +1 -1
  274. package/dist/render/rendergraph/forward_plus_builder.js +585 -59
  275. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  276. package/dist/render/rendergraph/frame_resource_requirements.js +1 -0
  277. package/dist/render/rendergraph/frame_resource_requirements.js.map +1 -1
  278. package/dist/render/rendergraph/history_resources.js +8 -1
  279. package/dist/render/rendergraph/history_resources.js.map +1 -1
  280. package/dist/render/rendergraph/scene_render_context.js +31 -2
  281. package/dist/render/rendergraph/scene_render_context.js.map +1 -1
  282. package/dist/render/rendergraph/types.js.map +1 -1
  283. package/dist/render/renderpass.js +28 -5
  284. package/dist/render/renderpass.js.map +1 -1
  285. package/dist/render/sdf/box_allocator.js +98 -0
  286. package/dist/render/sdf/box_allocator.js.map +1 -0
  287. package/dist/render/sdf/global_sdf.js +865 -0
  288. package/dist/render/sdf/global_sdf.js.map +1 -0
  289. package/dist/render/sdf/scene_sdf.js +562 -0
  290. package/dist/render/sdf/scene_sdf.js.map +1 -0
  291. package/dist/render/sdf/sdf_atlas.js +227 -0
  292. package/dist/render/sdf/sdf_atlas.js.map +1 -0
  293. package/dist/render/sdf/sdf_programs.js +42 -0
  294. package/dist/render/sdf/sdf_programs.js.map +1 -0
  295. package/dist/render/sdf/sdf_view.js +199 -0
  296. package/dist/render/sdf/sdf_view.js.map +1 -0
  297. package/dist/render/sdf/waterline.js +610 -0
  298. package/dist/render/sdf/waterline.js.map +1 -0
  299. package/dist/render/shadow_mask_pass.js +142 -25
  300. package/dist/render/shadow_mask_pass.js.map +1 -1
  301. package/dist/render/shore_wave_generator.js +1193 -0
  302. package/dist/render/shore_wave_generator.js.map +1 -0
  303. package/dist/render/sky.js +516 -86
  304. package/dist/render/sky.js.map +1 -1
  305. package/dist/render/transmission_thickness_pass.js +477 -0
  306. package/dist/render/transmission_thickness_pass.js.map +1 -0
  307. package/dist/render/underwater.js +524 -0
  308. package/dist/render/underwater.js.map +1 -0
  309. package/dist/render/virtualtexture/virtual_texture.js +1214 -0
  310. package/dist/render/virtualtexture/virtual_texture.js.map +1 -0
  311. package/dist/render/volumetric_cloud/cloud_common.js +472 -0
  312. package/dist/render/volumetric_cloud/cloud_common.js.map +1 -0
  313. package/dist/render/volumetric_cloud/cloud_noise.js +189 -0
  314. package/dist/render/volumetric_cloud/cloud_noise.js.map +1 -0
  315. package/dist/render/volumetric_cloud/debug_view.js +131 -0
  316. package/dist/render/volumetric_cloud/debug_view.js.map +1 -0
  317. package/dist/render/volumetric_cloud/resources.js +380 -0
  318. package/dist/render/volumetric_cloud/resources.js.map +1 -0
  319. package/dist/render/volumetric_cloud/sky_cache.js +380 -0
  320. package/dist/render/volumetric_cloud/sky_cache.js.map +1 -0
  321. package/dist/render/volumetric_cloud/volumetric_cloud.js +318 -0
  322. package/dist/render/volumetric_cloud/volumetric_cloud.js.map +1 -0
  323. package/dist/render/water_caustics.js +1195 -0
  324. package/dist/render/water_caustics.js.map +1 -0
  325. package/dist/render/water_foam.js +627 -0
  326. package/dist/render/water_foam.js.map +1 -0
  327. package/dist/render/water_interaction.js +1795 -0
  328. package/dist/render/water_interaction.js.map +1 -0
  329. package/dist/render/weightedblended_oit.js +36 -36
  330. package/dist/render/weightedblended_oit.js.map +1 -1
  331. package/dist/scene/basesprite.js +9 -4
  332. package/dist/scene/basesprite.js.map +1 -1
  333. package/dist/scene/batchgroup.js +108 -12
  334. package/dist/scene/batchgroup.js.map +1 -1
  335. package/dist/scene/environment.js +28 -7
  336. package/dist/scene/environment.js.map +1 -1
  337. package/dist/scene/foliage.js +1020 -0
  338. package/dist/scene/foliage.js.map +1 -0
  339. package/dist/scene/foliage_buckets.js +147 -0
  340. package/dist/scene/foliage_buckets.js.map +1 -0
  341. package/dist/scene/foliage_mask.js +358 -0
  342. package/dist/scene/foliage_mask.js.map +1 -0
  343. package/dist/scene/hair.js +15 -4
  344. package/dist/scene/hair.js.map +1 -1
  345. package/dist/scene/light.js +179 -13
  346. package/dist/scene/light.js.map +1 -1
  347. package/dist/scene/mesh.js +327 -45
  348. package/dist/scene/mesh.js.map +1 -1
  349. package/dist/scene/meshdrawable.js +6 -0
  350. package/dist/scene/meshdrawable.js.map +1 -1
  351. package/dist/scene/msdftext.js +9 -3
  352. package/dist/scene/msdftext.js.map +1 -1
  353. package/dist/scene/msdftextsprite.js +9 -3
  354. package/dist/scene/msdftextsprite.js.map +1 -1
  355. package/dist/scene/particlesys.js +8 -2
  356. package/dist/scene/particlesys.js.map +1 -1
  357. package/dist/scene/physics_settings.js +157 -0
  358. package/dist/scene/physics_settings.js.map +1 -0
  359. package/dist/scene/scene.js +190 -44
  360. package/dist/scene/scene.js.map +1 -1
  361. package/dist/scene/scene_node.js +147 -6
  362. package/dist/scene/scene_node.js.map +1 -1
  363. package/dist/scene/terrain-cm/bladegrassmaterial.js +735 -0
  364. package/dist/scene/terrain-cm/bladegrassmaterial.js.map +1 -0
  365. package/dist/scene/terrain-cm/grass.js +881 -42
  366. package/dist/scene/terrain-cm/grass.js.map +1 -1
  367. package/dist/scene/terrain-cm/grass_gpu.js +929 -0
  368. package/dist/scene/terrain-cm/grass_gpu.js.map +1 -0
  369. package/dist/scene/terrain-cm/grassmaterial.js +180 -9
  370. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  371. package/dist/scene/terrain-cm/terrain-cm.js +465 -36
  372. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  373. package/dist/scene/terrain-cm/terrain_gi_albedo.js +257 -0
  374. package/dist/scene/terrain-cm/terrain_gi_albedo.js.map +1 -0
  375. package/dist/scene/terrain-cm/terrain_rvt.js +395 -0
  376. package/dist/scene/terrain-cm/terrain_rvt.js.map +1 -0
  377. package/dist/scene/update_queue.js +54 -0
  378. package/dist/scene/update_queue.js.map +1 -0
  379. package/dist/scene/water.js +997 -96
  380. package/dist/scene/water.js.map +1 -1
  381. package/dist/scene/water_surface_sampler.js +324 -0
  382. package/dist/scene/water_surface_sampler.js.map +1 -0
  383. package/dist/scene/wind.js +317 -0
  384. package/dist/scene/wind.js.map +1 -0
  385. package/dist/shaders/atmosphere.js +388 -166
  386. package/dist/shaders/atmosphere.js.map +1 -1
  387. package/dist/shaders/fog.js +100 -32
  388. package/dist/shaders/fog.js.map +1 -1
  389. package/dist/shaders/gi.js +365 -0
  390. package/dist/shaders/gi.js.map +1 -0
  391. package/dist/shaders/ltc_rect.js +202 -0
  392. package/dist/shaders/ltc_rect.js.map +1 -0
  393. package/dist/shaders/misc.js +1 -10
  394. package/dist/shaders/misc.js.map +1 -1
  395. package/dist/shaders/noise.js +5 -1
  396. package/dist/shaders/noise.js.map +1 -1
  397. package/dist/shaders/probes.js +309 -0
  398. package/dist/shaders/probes.js.map +1 -0
  399. package/dist/shaders/sdf.js +537 -0
  400. package/dist/shaders/sdf.js.map +1 -0
  401. package/dist/shaders/shadow.js +104 -70
  402. package/dist/shaders/shadow.js.map +1 -1
  403. package/dist/shaders/skin_brdf.js +243 -0
  404. package/dist/shaders/skin_brdf.js.map +1 -0
  405. package/dist/shaders/ssr.js +6 -159
  406. package/dist/shaders/ssr.js.map +1 -1
  407. package/dist/shaders/temporal.js +38 -27
  408. package/dist/shaders/temporal.js.map +1 -1
  409. package/dist/shaders/water.js +40 -87
  410. package/dist/shaders/water.js.map +1 -1
  411. package/dist/shaders/water_medium.js +42 -0
  412. package/dist/shaders/water_medium.js.map +1 -0
  413. package/dist/shadow/dom.js +110 -19
  414. package/dist/shadow/dom.js.map +1 -1
  415. package/dist/shadow/esm.js +3 -3
  416. package/dist/shadow/esm.js.map +1 -1
  417. package/dist/shadow/pcf_opt.js +15 -48
  418. package/dist/shadow/pcf_opt.js.map +1 -1
  419. package/dist/shadow/pcf_pd.js +15 -53
  420. package/dist/shadow/pcf_pd.js.map +1 -1
  421. package/dist/shadow/pcss.js +34 -9
  422. package/dist/shadow/pcss.js.map +1 -1
  423. package/dist/shadow/shadow_impl.js +3 -8
  424. package/dist/shadow/shadow_impl.js.map +1 -1
  425. package/dist/shadow/shadow_region.js +87 -49
  426. package/dist/shadow/shadow_region.js.map +1 -1
  427. package/dist/shadow/shadowmapper.js +93 -53
  428. package/dist/shadow/shadowmapper.js.map +1 -1
  429. package/dist/shadow/ssm.js +18 -72
  430. package/dist/shadow/ssm.js.map +1 -1
  431. package/dist/shadow/vsm.js +3 -3
  432. package/dist/shadow/vsm.js.map +1 -1
  433. package/dist/shapes/shape.js +44 -1
  434. package/dist/shapes/shape.js.map +1 -1
  435. package/dist/utility/buoyancy.js +287 -0
  436. package/dist/utility/buoyancy.js.map +1 -0
  437. package/dist/utility/physical.js +10 -1
  438. package/dist/utility/physical.js.map +1 -1
  439. package/dist/utility/pmrem.js +17 -43
  440. package/dist/utility/pmrem.js.map +1 -1
  441. package/dist/utility/sdf/bake.js +435 -0
  442. package/dist/utility/sdf/bake.js.map +1 -0
  443. package/dist/utility/sdf/bvh.js +576 -0
  444. package/dist/utility/sdf/bvh.js.map +1 -0
  445. package/dist/utility/serialization/manager.js +36 -6
  446. package/dist/utility/serialization/manager.js.map +1 -1
  447. package/dist/utility/serialization/scene/animation.js +77 -7
  448. package/dist/utility/serialization/scene/animation.js.map +1 -1
  449. package/dist/utility/serialization/scene/batch.js +11 -4
  450. package/dist/utility/serialization/scene/batch.js.map +1 -1
  451. package/dist/utility/serialization/scene/camera.js +140 -279
  452. package/dist/utility/serialization/scene/camera.js.map +1 -1
  453. package/dist/utility/serialization/scene/cloth.js +25 -0
  454. package/dist/utility/serialization/scene/cloth.js.map +1 -0
  455. package/dist/utility/serialization/scene/common.js +14 -6
  456. package/dist/utility/serialization/scene/common.js.map +1 -1
  457. package/dist/utility/serialization/scene/foliage.js +821 -0
  458. package/dist/utility/serialization/scene/foliage.js.map +1 -0
  459. package/dist/utility/serialization/scene/hair.js +11 -4
  460. package/dist/utility/serialization/scene/hair.js.map +1 -1
  461. package/dist/utility/serialization/scene/light.js +115 -7
  462. package/dist/utility/serialization/scene/light.js.map +1 -1
  463. package/dist/utility/serialization/scene/material.js +388 -220
  464. package/dist/utility/serialization/scene/material.js.map +1 -1
  465. package/dist/utility/serialization/scene/mesh.js +69 -4
  466. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  467. package/dist/utility/serialization/scene/node.js +140 -5
  468. package/dist/utility/serialization/scene/node.js.map +1 -1
  469. package/dist/utility/serialization/scene/node_physics.js +1318 -0
  470. package/dist/utility/serialization/scene/node_physics.js.map +1 -0
  471. package/dist/utility/serialization/scene/particle.js +11 -4
  472. package/dist/utility/serialization/scene/particle.js.map +1 -1
  473. package/dist/utility/serialization/scene/physics.js +120 -0
  474. package/dist/utility/serialization/scene/physics.js.map +1 -0
  475. package/dist/utility/serialization/scene/primitive.js +124 -10
  476. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  477. package/dist/utility/serialization/scene/scene.js +1687 -51
  478. package/dist/utility/serialization/scene/scene.js.map +1 -1
  479. package/dist/utility/serialization/scene/sprite.js +11 -4
  480. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  481. package/dist/utility/serialization/scene/terrain.js +163 -33
  482. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  483. package/dist/utility/serialization/scene/text.js +11 -4
  484. package/dist/utility/serialization/scene/text.js.map +1 -1
  485. package/dist/utility/serialization/scene/water.js +2473 -114
  486. package/dist/utility/serialization/scene/water.js.map +1 -1
  487. package/dist/utility/serialization/types.js.map +1 -1
  488. package/dist/utility/shprojector.js +97 -109
  489. package/dist/utility/shprojector.js.map +1 -1
  490. package/dist/utility/textures/foam.js +170 -0
  491. package/dist/utility/textures/foam.js.map +1 -0
  492. package/dist/utility/textures/ggxlut.js +17 -43
  493. package/dist/utility/textures/ggxlut.js.map +1 -1
  494. package/dist/utility/textures/ltcdata.js +4 -4
  495. package/dist/utility/textures/ltcdata.js.map +1 -1
  496. package/dist/utility/textures/ltclut.js +16 -6
  497. package/dist/utility/textures/ltclut.js.map +1 -1
  498. package/dist/utility/unsupported.js +24 -0
  499. package/dist/utility/unsupported.js.map +1 -0
  500. package/dist/values.js +13 -1
  501. package/dist/values.js.map +1 -1
  502. package/package.json +25 -12
  503. package/src/asset/loaders/ktx2/basis/LICENSE +201 -0
  504. package/src/asset/loaders/ktx2/basis/basis_transcoder.js +2 -0
  505. package/src/asset/loaders/ktx2/basis/basis_transcoder.wasm +0 -0
  506. package/src/asset/meshoptimizer/LICENSE +21 -0
@@ -2,14 +2,15 @@ import '../../../material/shader/helper.js';
2
2
  import { LambertMaterial } from '../../../material/lambert.js';
3
3
  import { BlinnMaterial } from '../../../material/blinn.js';
4
4
  import { UnlitMaterial } from '../../../material/unlit.js';
5
+ import { MeshMaterial } from '../../../material/meshmaterial.js';
5
6
  import { ParticleMaterial } from '../../../material/particle.js';
6
7
  import { SubsurfaceProfile } from '../../../material/subsurfaceprofile.js';
7
- import { SkinMaterial } from '../../../material/skin.js';
8
+ import { SSSProfile } from '../../../material/sssprofile.js';
9
+ import { SSSMaterial } from '../../../material/sss.js';
8
10
  import { EyeMaterial } from '../../../material/eye.js';
9
11
  import '@zephyr3d/device';
10
12
  import '../../../values.js';
11
13
  import { Vector3, Vector4, Vector2 } from '@zephyr3d/base';
12
- import { MeshMaterial } from '../../../material/meshmaterial.js';
13
14
  import { HairMaterial } from '../../../material/hair.js';
14
15
  import '../../../material/hairstrand.js';
15
16
  import '../../../material/grassmaterial.js';
@@ -311,6 +312,336 @@ function getSubsurfaceProfileClass() {
311
312
  }
312
313
  };
313
314
  }
315
+ /**
316
+ * Serialization for {@link SSSProfile}, the profile asset driving
317
+ * {@link SSSMaterial}'s subsurface scattering.
318
+ */ function getSSSProfileClass() {
319
+ return {
320
+ // Not constructible from here by design; the cast is the price of declaring
321
+ // the class at all. `createFunc` below is what actually supplies the
322
+ // instance, so the constructor is never reached.
323
+ ctor: SSSProfile,
324
+ name: 'SSSProfile',
325
+ /**
326
+ * Hands back the owning material's profile instead of building one.
327
+ *
328
+ * A profile holds a row of a 256-entry GPU table that is only freed when its
329
+ * material is disposed, so deserializing into a fresh instance - which is
330
+ * what the default path does for an object-typed property - stranded a row
331
+ * on every scene load and every undo. `ctx` is the owner, since the
332
+ * property's deserializer passes the object it is filling in.
333
+ */ createFunc (ctx) {
334
+ const material = ctx;
335
+ return material instanceof SSSMaterial ? {
336
+ obj: material.subsurfaceProfile
337
+ } : {
338
+ obj: null,
339
+ loadProps: false
340
+ };
341
+ },
342
+ getProps () {
343
+ return defineProps([
344
+ {
345
+ name: 'Preset',
346
+ description: 'Starting look for the whole profile: skin tones, wax, jade or marble. Choosing a preset overwrites every other value here, so pick one first and fine-tune afterwards',
347
+ type: 'string',
348
+ default: 'skin',
349
+ options: {
350
+ label: 'LookPreset',
351
+ enum: {
352
+ labels: [
353
+ 'Skin',
354
+ 'Skin Pale',
355
+ 'Skin Tan',
356
+ 'Skin Dark',
357
+ 'Wax',
358
+ 'Jade',
359
+ 'Marble'
360
+ ],
361
+ values: [
362
+ 'skin',
363
+ 'skin_pale',
364
+ 'skin_tan',
365
+ 'skin_dark',
366
+ 'wax',
367
+ 'jade',
368
+ 'marble'
369
+ ]
370
+ }
371
+ },
372
+ get (value) {
373
+ value.str[0] = this.preset;
374
+ },
375
+ set (value) {
376
+ this.preset = value.str[0];
377
+ }
378
+ },
379
+ {
380
+ name: 'SurfaceAlbedo',
381
+ description: "Set this close to the skin's base color. It does not recolor the surface; it fine-tunes how soft or tight the scattered glow is in each color channel",
382
+ type: 'rgb',
383
+ default: [
384
+ 0.91058,
385
+ 0.338275,
386
+ 0.2718
387
+ ],
388
+ options: {
389
+ animatable: true,
390
+ minValue: 0,
391
+ maxValue: 1
392
+ },
393
+ get (value) {
394
+ value.num[0] = this.surfaceAlbedo.x;
395
+ value.num[1] = this.surfaceAlbedo.y;
396
+ value.num[2] = this.surfaceAlbedo.z;
397
+ },
398
+ set (value) {
399
+ this.surfaceAlbedo = new Vector3(value.num[0], value.num[1], value.num[2]);
400
+ }
401
+ },
402
+ {
403
+ name: 'MeanFreePath',
404
+ description: 'Relative softness per color channel. The channel with the highest value bleeds furthest, which sets the color of the glow in shadow edges and around fine details; skin keeps red high, giving the warm red fringe at the light-to-shadow transition',
405
+ type: 'rgb',
406
+ default: [
407
+ 1,
408
+ 0.0889636,
409
+ 0.0720951
410
+ ],
411
+ options: {
412
+ animatable: true,
413
+ minValue: 0,
414
+ maxValue: 1
415
+ },
416
+ get (value) {
417
+ value.num[0] = this.meanFreePath.x;
418
+ value.num[1] = this.meanFreePath.y;
419
+ value.num[2] = this.meanFreePath.z;
420
+ },
421
+ set (value) {
422
+ this.meanFreePath = new Vector3(value.num[0], value.num[1], value.num[2]);
423
+ }
424
+ },
425
+ {
426
+ name: 'MeanFreePathDistance',
427
+ description: 'Overall softness of the skin, in real-world metres (about 0.01 for human skin). Higher values blur lighting and surface detail more, giving a waxy, translucent look; lower values give a harder, more opaque, plastic-like surface',
428
+ type: 'float',
429
+ default: 0.026748,
430
+ options: {
431
+ animatable: true,
432
+ minValue: 0,
433
+ maxValue: 1
434
+ },
435
+ get (value) {
436
+ value.num[0] = this.meanFreePathDistance;
437
+ },
438
+ set (value) {
439
+ this.meanFreePathDistance = value.num[0];
440
+ }
441
+ },
442
+ {
443
+ name: 'WorldUnitScale',
444
+ description: "Set this to the model's size relative to real life (1 for a life-size model in metres, 4 for a head modelled four times too large). If the skin looks too waxy or too hard only because of the model's scale, fix it here instead of changing the softness",
445
+ type: 'float',
446
+ default: 1,
447
+ options: {
448
+ animatable: true,
449
+ minValue: 0.01,
450
+ maxValue: 100
451
+ },
452
+ get (value) {
453
+ value.num[0] = this.worldUnitScale;
454
+ },
455
+ set (value) {
456
+ this.worldUnitScale = value.num[0];
457
+ }
458
+ },
459
+ {
460
+ name: 'ScatterScale',
461
+ description: 'Quick overall softness knob on top of MeanFreePathDistance, affecting both the soft skin look and the glow through thin parts. Raise it for softer, more translucent skin; 0 removes the soft scattering look entirely',
462
+ type: 'float',
463
+ default: 1,
464
+ options: {
465
+ animatable: true,
466
+ minValue: 0,
467
+ maxValue: 8
468
+ },
469
+ get (value) {
470
+ value.num[0] = this.scatterScale;
471
+ },
472
+ set (value) {
473
+ this.scatterScale = value.num[0];
474
+ }
475
+ },
476
+ {
477
+ name: 'BoundaryColorBleed',
478
+ description: 'Color used where this skin meets a different profile, e.g. face and lips. Values near white let the softness blend smoothly across the boundary; darker or more saturated values tint the transition and make the seam more visible',
479
+ type: 'rgb',
480
+ default: [
481
+ 1,
482
+ 1,
483
+ 1
484
+ ],
485
+ options: {
486
+ animatable: true,
487
+ minValue: 0,
488
+ maxValue: 1
489
+ },
490
+ get (value) {
491
+ value.num[0] = this.boundaryColorBleed.x;
492
+ value.num[1] = this.boundaryColorBleed.y;
493
+ value.num[2] = this.boundaryColorBleed.z;
494
+ },
495
+ set (value) {
496
+ this.boundaryColorBleed = new Vector3(value.num[0], value.num[1], value.num[2]);
497
+ }
498
+ },
499
+ {
500
+ name: 'TransmissionTint',
501
+ description: 'Color of the glow seen when light shines through thin parts such as ears, nostrils and fingers from behind. Warm reds and oranges for skin',
502
+ type: 'rgb',
503
+ default: [
504
+ 1,
505
+ 0.42,
506
+ 0.3
507
+ ],
508
+ options: {
509
+ animatable: true,
510
+ minValue: 0,
511
+ maxValue: 1
512
+ },
513
+ get (value) {
514
+ value.num[0] = this.transmissionTint.x;
515
+ value.num[1] = this.transmissionTint.y;
516
+ value.num[2] = this.transmissionTint.z;
517
+ },
518
+ set (value) {
519
+ this.transmissionTint = new Vector3(value.num[0], value.num[1], value.num[2]);
520
+ }
521
+ },
522
+ {
523
+ name: 'ExtinctionScale',
524
+ description: 'How opaque the material is to back-lighting. Higher values make only the thinnest edges glow; lower values let the glow reach thicker areas, making the object look more translucent overall',
525
+ type: 'float',
526
+ default: 1,
527
+ options: {
528
+ animatable: true,
529
+ minValue: 0,
530
+ maxValue: 8
531
+ },
532
+ get (value) {
533
+ value.num[0] = this.extinctionScale;
534
+ },
535
+ set (value) {
536
+ this.extinctionScale = value.num[0];
537
+ }
538
+ },
539
+ {
540
+ name: 'NormalScale',
541
+ description: 'Stability of the back-lit glow. Too low makes the glow through thin parts disappear or look blotchy; higher values give a cleaner, smoother glow but wash out small thin details. Does not affect front-lit skin',
542
+ type: 'float',
543
+ default: 0.08,
544
+ options: {
545
+ animatable: true,
546
+ minValue: 0,
547
+ maxValue: 1
548
+ },
549
+ get (value) {
550
+ value.num[0] = this.normalScale;
551
+ },
552
+ set (value) {
553
+ this.normalScale = value.num[0];
554
+ }
555
+ },
556
+ {
557
+ name: 'ScatteringDistribution',
558
+ description: 'How directional the back-lit glow is. Values near 1 make thin parts glow strongly only when looking almost straight towards the light; lower values spread the glow over a wider range of viewing angles',
559
+ type: 'float',
560
+ default: 0.93,
561
+ options: {
562
+ animatable: true,
563
+ minValue: -1,
564
+ maxValue: 1
565
+ },
566
+ get (value) {
567
+ value.num[0] = this.scatteringDistribution;
568
+ },
569
+ set (value) {
570
+ this.scatteringDistribution = value.num[0];
571
+ }
572
+ },
573
+ {
574
+ name: 'IOR',
575
+ description: 'Changes how the back-lit glow depends on the viewing angle. Higher values make the glow follow the surface shape and the light more than the camera direction. Does not affect front-lit highlights',
576
+ type: 'float',
577
+ default: 1.55,
578
+ options: {
579
+ animatable: true,
580
+ minValue: 1,
581
+ maxValue: 3
582
+ },
583
+ get (value) {
584
+ value.num[0] = this.ior;
585
+ },
586
+ set (value) {
587
+ this.ior = value.num[0];
588
+ }
589
+ },
590
+ {
591
+ name: 'Roughness0',
592
+ description: 'Sharpness of the tight highlight layer, as a fraction of the material roughness. Lower values give a small, crisp, oily-looking highlight',
593
+ type: 'float',
594
+ default: 0.75,
595
+ options: {
596
+ animatable: true,
597
+ minValue: 0.5,
598
+ maxValue: 2
599
+ },
600
+ get (value) {
601
+ value.num[0] = this.roughness0;
602
+ },
603
+ set (value) {
604
+ this.roughness0 = value.num[0];
605
+ }
606
+ },
607
+ {
608
+ name: 'Roughness1',
609
+ description: 'Sharpness of the broad highlight layer, as a fraction of the material roughness. Lower values make the soft sheen smaller and brighter',
610
+ type: 'float',
611
+ default: 1.3,
612
+ options: {
613
+ animatable: true,
614
+ minValue: 0.5,
615
+ maxValue: 2
616
+ },
617
+ get (value) {
618
+ value.num[0] = this.roughness1;
619
+ },
620
+ set (value) {
621
+ this.roughness1 = value.num[0];
622
+ }
623
+ },
624
+ {
625
+ name: 'LobeMix',
626
+ description: 'Balance between the two highlight layers. 0 shows only the tight, crisp highlight; higher values add more of the broad, soft sheen for a more matte look',
627
+ type: 'float',
628
+ default: 0.85,
629
+ options: {
630
+ animatable: true,
631
+ minValue: 0.1,
632
+ maxValue: 0.9
633
+ },
634
+ get (value) {
635
+ value.num[0] = this.lobeMix;
636
+ },
637
+ set (value) {
638
+ this.lobeMix = value.num[0];
639
+ }
640
+ }
641
+ ]);
642
+ }
643
+ };
644
+ }
314
645
  function getPBRCommonProps(manager) {
315
646
  const supportsSSSThicknessAuthoring = function() {
316
647
  return (!this.$isInstance || isBlueprintMaterialAssetInstance(this)) && !!(this.transmission || this.subsurfaceProfile);
@@ -445,6 +776,7 @@ function getPBRCommonProps(manager) {
445
776
  },
446
777
  {
447
778
  name: 'RectSpecularScale',
779
+ description: 'Brightness of the highlights produced by rectangular area lights on this material; 1 is neutral, lower values dim the reflections of the light panels, higher values make them brighter',
448
780
  type: 'float',
449
781
  options: {
450
782
  label: 'RectSpecularScale',
@@ -1651,6 +1983,7 @@ function getMToonMaterialProps(manager) {
1651
1983
  },
1652
1984
  {
1653
1985
  name: 'TransparentShadowCaster',
1986
+ description: 'Lets a transparent (blended) material cast shadows. Areas more opaque than ShadowAlphaCutoff cast solid shadows, useful for foliage, hair cards or fabric; when off, transparent objects cast no shadow',
1654
1987
  type: 'bool',
1655
1988
  default: false,
1656
1989
  get (value) {
@@ -1665,6 +1998,7 @@ function getMToonMaterialProps(manager) {
1665
1998
  },
1666
1999
  {
1667
2000
  name: 'ShadowAlphaCutoff',
2001
+ description: 'Opacity above which a transparent material casts shadow. Lower values make fainter parts cast shadow too, giving fuller shadows; higher values keep only the most opaque parts, giving thinner shadows',
1668
2002
  type: 'float',
1669
2003
  default: 0.5,
1670
2004
  options: {
@@ -1754,7 +2088,7 @@ function getMToonMaterialProps(manager) {
1754
2088
  ]);
1755
2089
  }
1756
2090
  },
1757
- getMeshMaterialInstanceUniformsClass(MeshMaterial)
2091
+ getMeshMaterialInstanceUniformsClass(MeshMaterial, 'MeshMaterial')
1758
2092
  ];
1759
2093
  }
1760
2094
  /** @internal */ function getSpriteMaterialClass(_manager) {
@@ -1767,7 +2101,7 @@ function getMToonMaterialProps(manager) {
1767
2101
  return [];
1768
2102
  }
1769
2103
  },
1770
- getMeshMaterialInstanceUniformsClass(SpriteMaterial)
2104
+ getMeshMaterialInstanceUniformsClass(SpriteMaterial, 'SpriteMaterial')
1771
2105
  ];
1772
2106
  }
1773
2107
  /** @internal */ function getStandardSpriteMaterialClass(manager) {
@@ -1827,7 +2161,7 @@ function getMToonMaterialProps(manager) {
1827
2161
  ]);
1828
2162
  }
1829
2163
  },
1830
- getMeshMaterialInstanceUniformsClass(StandardSpriteMaterial)
2164
+ getMeshMaterialInstanceUniformsClass(StandardSpriteMaterial, 'StandardSpriteMaterial')
1831
2165
  ];
1832
2166
  }
1833
2167
  /** @internal */ function getParticleMaterialClass(manager) {
@@ -1923,7 +2257,7 @@ function getMToonMaterialProps(manager) {
1923
2257
  ]);
1924
2258
  }
1925
2259
  },
1926
- getMeshMaterialInstanceUniformsClass(ParticleMaterial)
2260
+ getMeshMaterialInstanceUniformsClass(ParticleMaterial, 'ParticleMaterial')
1927
2261
  ];
1928
2262
  }
1929
2263
  /** @internal */ function getPBRBluePrintMaterialClass() {
@@ -1936,7 +2270,7 @@ function getMToonMaterialProps(manager) {
1936
2270
  return defineProps([]);
1937
2271
  }
1938
2272
  },
1939
- getMeshMaterialInstanceUniformsClass(PBRBluePrintMaterial)
2273
+ getMeshMaterialInstanceUniformsClass(PBRBluePrintMaterial, 'PBRBluePrintMaterial')
1940
2274
  ];
1941
2275
  }
1942
2276
  /** @internal */ function getPBRBluePrintMaterialInstanceClass() {
@@ -1949,7 +2283,7 @@ function getMToonMaterialProps(manager) {
1949
2283
  return defineProps([]);
1950
2284
  }
1951
2285
  },
1952
- getMeshMaterialInstanceUniformsClass(PBRBluePrintMaterialInstance)
2286
+ getMeshMaterialInstanceUniformsClass(PBRBluePrintMaterialInstance, 'PBRBluePrintMaterialInstance')
1953
2287
  ];
1954
2288
  }
1955
2289
  /** @internal */ function getSpriteBlueprintMaterialClass() {
@@ -1962,7 +2296,7 @@ function getMToonMaterialProps(manager) {
1962
2296
  return [];
1963
2297
  }
1964
2298
  },
1965
- getMeshMaterialInstanceUniformsClass(SpriteBlueprintMaterial)
2299
+ getMeshMaterialInstanceUniformsClass(SpriteBlueprintMaterial, 'SpriteBlueprintMaterial')
1966
2300
  ];
1967
2301
  }
1968
2302
  /** @internal */ function getUnlitMaterialClass(manager) {
@@ -1975,7 +2309,7 @@ function getMToonMaterialProps(manager) {
1975
2309
  return getUnlitMaterialProps(manager);
1976
2310
  }
1977
2311
  },
1978
- getMeshMaterialInstanceUniformsClass(UnlitMaterial)
2312
+ getMeshMaterialInstanceUniformsClass(UnlitMaterial, 'UnlitMaterial')
1979
2313
  ];
1980
2314
  }
1981
2315
  /** @internal */ function getMToonMaterialClass(manager) {
@@ -1988,7 +2322,7 @@ function getMToonMaterialProps(manager) {
1988
2322
  return getMToonMaterialProps(manager);
1989
2323
  }
1990
2324
  },
1991
- getMeshMaterialInstanceUniformsClass(MToonMaterial)
2325
+ getMeshMaterialInstanceUniformsClass(MToonMaterial, 'MToonMaterial')
1992
2326
  ];
1993
2327
  }
1994
2328
  /** @internal */ function getLambertMaterialClass(manager) {
@@ -2001,7 +2335,7 @@ function getMToonMaterialProps(manager) {
2001
2335
  return getLitMaterialProps(manager);
2002
2336
  }
2003
2337
  },
2004
- getMeshMaterialInstanceUniformsClass(LambertMaterial)
2338
+ getMeshMaterialInstanceUniformsClass(LambertMaterial, 'LambertMaterial')
2005
2339
  ];
2006
2340
  }
2007
2341
  /** @internal */ function getBlinnMaterialClass(manager) {
@@ -2035,7 +2369,7 @@ function getMToonMaterialProps(manager) {
2035
2369
  ]);
2036
2370
  }
2037
2371
  },
2038
- getMeshMaterialInstanceUniformsClass(BlinnMaterial)
2372
+ getMeshMaterialInstanceUniformsClass(BlinnMaterial, 'BlinnMaterial')
2039
2373
  ];
2040
2374
  }
2041
2375
  /** @internal */ function getHairMaterialClass(manager) {
@@ -2519,230 +2853,84 @@ function getMToonMaterialProps(manager) {
2519
2853
  ]);
2520
2854
  }
2521
2855
  },
2522
- getMeshMaterialInstanceUniformsClass(HairMaterial)
2856
+ getMeshMaterialInstanceUniformsClass(HairMaterial, 'HairMaterial')
2523
2857
  ];
2524
2858
  }
2525
2859
  /** @internal */ function getSkinMaterialClass(manager) {
2526
2860
  return [
2527
2861
  {
2528
- ctor: SkinMaterial,
2862
+ ctor: SSSMaterial,
2529
2863
  parent: MeshMaterial,
2530
- name: 'SkinMaterial',
2864
+ name: 'SSSMaterial',
2531
2865
  getProps () {
2532
2866
  return defineProps([
2533
2867
  {
2534
- name: 'Shininess',
2535
- description: 'Blinn specular exponent for skin highlights',
2536
- type: 'float',
2537
- default: 72,
2538
- options: {
2539
- animatable: true,
2540
- minValue: 1,
2541
- maxValue: 2048
2542
- },
2543
- get (value) {
2544
- value.num[0] = this.shininess;
2545
- },
2546
- set (value) {
2547
- this.shininess = value.num[0];
2548
- },
2549
- getDefaultValue () {
2550
- return this.$isInstance ? this.coreMaterial.shininess : 72;
2551
- }
2552
- },
2553
- {
2554
- name: 'SpecularStrength',
2555
- description: 'Direct specular strength for restrained skin highlights',
2556
- type: 'float',
2557
- default: 1,
2558
- options: {
2559
- animatable: true,
2560
- minValue: 0,
2561
- maxValue: 4
2562
- },
2563
- get (value) {
2564
- value.num[0] = this.specularStrength;
2565
- },
2566
- set (value) {
2567
- this.specularStrength = value.num[0];
2568
- },
2569
- getDefaultValue () {
2570
- return this.$isInstance ? this.coreMaterial.specularStrength : 1;
2571
- }
2572
- },
2573
- {
2574
- name: 'DiffuseWrap',
2575
- description: 'Wrap amount for visible diffuse lighting',
2576
- type: 'float',
2577
- default: 0.28,
2578
- options: {
2579
- animatable: true,
2580
- minValue: 0,
2581
- maxValue: 2
2582
- },
2583
- get (value) {
2584
- value.num[0] = this.diffuseWrap;
2585
- },
2586
- set (value) {
2587
- this.diffuseWrap = value.num[0];
2588
- },
2589
- getDefaultValue () {
2590
- return this.$isInstance ? this.coreMaterial.diffuseWrap : 0.28;
2591
- }
2592
- },
2593
- {
2594
- name: 'DiffuseSoftness',
2595
- description: 'Blend from hard Lambert lighting to wrapped diffuse lighting',
2868
+ name: 'Roughness',
2869
+ description: 'GGX base roughness for skin',
2596
2870
  type: 'float',
2597
- default: 0.45,
2871
+ default: 0.5,
2598
2872
  options: {
2599
2873
  animatable: true,
2600
- minValue: 0,
2874
+ minValue: 0.045,
2601
2875
  maxValue: 1
2602
2876
  },
2603
2877
  get (value) {
2604
- value.num[0] = this.diffuseSoftness;
2605
- },
2606
- set (value) {
2607
- this.diffuseSoftness = value.num[0];
2608
- },
2609
- getDefaultValue () {
2610
- return this.$isInstance ? this.coreMaterial.diffuseSoftness : 0.45;
2611
- }
2612
- },
2613
- {
2614
- name: 'ScatterWrap',
2615
- description: 'Wide wrap amount written to the Skin SSS scattering source',
2616
- type: 'float',
2617
- default: 0.65,
2618
- options: {
2619
- animatable: true,
2620
- minValue: 0,
2621
- maxValue: 2
2622
- },
2623
- get (value) {
2624
- value.num[0] = this.scatterWrap;
2878
+ value.num[0] = this.roughness;
2625
2879
  },
2626
2880
  set (value) {
2627
- this.scatterWrap = value.num[0];
2881
+ this.roughness = value.num[0];
2628
2882
  },
2629
2883
  getDefaultValue () {
2630
- return this.$isInstance ? this.coreMaterial.scatterWrap : 0.65;
2884
+ return this.$isInstance ? this.coreMaterial.roughness : 0.5;
2631
2885
  }
2632
2886
  },
2633
2887
  {
2634
- name: 'ScatterStrength',
2635
- description: 'Strength of the scatter irradiance written to the Skin SSS side buffer',
2888
+ name: 'SpecularF0',
2889
+ description: 'Fresnel F0 for the skin oil layer',
2636
2890
  type: 'float',
2637
- default: 1.5,
2891
+ default: 0.04,
2638
2892
  options: {
2639
2893
  animatable: true,
2640
2894
  minValue: 0,
2641
- maxValue: 4
2642
- },
2643
- get (value) {
2644
- value.num[0] = this.scatterStrength;
2645
- },
2646
- set (value) {
2647
- this.scatterStrength = value.num[0];
2648
- },
2649
- getDefaultValue () {
2650
- return this.$isInstance ? this.coreMaterial.scatterStrength : 1.5;
2651
- }
2652
- },
2653
- {
2654
- name: 'ScatterColor',
2655
- description: 'Warm tint for the blurred skin scattering contribution',
2656
- type: 'rgba',
2657
- default: [
2658
- 1,
2659
- 0.42,
2660
- 0.28,
2661
- 1
2662
- ],
2663
- options: {
2664
- animatable: true,
2665
- minValue: 0,
2666
- maxValue: 1
2667
- },
2668
- get (value) {
2669
- value.num[0] = this.scatterColor.x;
2670
- value.num[1] = this.scatterColor.y;
2671
- value.num[2] = this.scatterColor.z;
2672
- value.num[3] = this.scatterColor.w;
2673
- },
2674
- set (value) {
2675
- this.scatterColor = new Vector4(value.num[0], value.num[1], value.num[2], value.num[3]);
2676
- },
2677
- getDefaultValue () {
2678
- const color = this.$isInstance ? this.coreMaterial.scatterColor : new Vector4(1, 0.42, 0.28, 1);
2679
- return [
2680
- color.x,
2681
- color.y,
2682
- color.z,
2683
- color.w
2684
- ];
2685
- }
2686
- },
2687
- {
2688
- name: 'ShadowTint',
2689
- description: 'NPR shadow tint the dark end of the diffuse ramp lifts toward (black is neutral)',
2690
- type: 'rgba',
2691
- default: [
2692
- 0,
2693
- 0,
2694
- 0,
2695
- 1
2696
- ],
2697
- options: {
2698
- animatable: true,
2699
- minValue: 0,
2700
- maxValue: 1
2895
+ maxValue: 0.2
2701
2896
  },
2702
2897
  get (value) {
2703
- value.num[0] = this.shadowTint.x;
2704
- value.num[1] = this.shadowTint.y;
2705
- value.num[2] = this.shadowTint.z;
2706
- value.num[3] = this.shadowTint.w;
2898
+ value.num[0] = this.specularF0;
2707
2899
  },
2708
2900
  set (value) {
2709
- this.shadowTint = new Vector4(value.num[0], value.num[1], value.num[2], value.num[3]);
2901
+ this.specularF0 = value.num[0];
2710
2902
  },
2711
2903
  getDefaultValue () {
2712
- const color = this.$isInstance ? this.coreMaterial.shadowTint : new Vector4(0, 0, 0, 1);
2713
- return [
2714
- color.x,
2715
- color.y,
2716
- color.z,
2717
- color.w
2718
- ];
2904
+ return this.$isInstance ? this.coreMaterial.specularF0 : 0.04;
2719
2905
  }
2720
2906
  },
2721
2907
  {
2722
- name: 'Brightening',
2723
- description: 'Whitening gain applied to the whole diffuse response',
2724
- type: 'float',
2725
- default: 0,
2908
+ name: 'SubsurfaceProfile',
2909
+ description: 'Profile driving the subsurface scattering of this skin',
2910
+ type: 'object',
2911
+ phase: 0,
2912
+ default: null,
2726
2913
  options: {
2727
- animatable: true,
2728
- minValue: 0,
2729
- maxValue: 2
2914
+ objectTypes: [
2915
+ SSSProfile
2916
+ ]
2730
2917
  },
2731
2918
  get (value) {
2732
- value.num[0] = this.brightening;
2733
- },
2734
- set (value) {
2735
- this.brightening = value.num[0];
2919
+ value.object[0] = this.subsurfaceProfile;
2736
2920
  },
2737
- getDefaultValue () {
2738
- return this.$isInstance ? this.coreMaterial.brightening : 0;
2739
- }
2921
+ // Deliberately empty rather than absent. The material owns its
2922
+ // profile and cannot be handed another one, but a property with no
2923
+ // setter is skipped outright during deserialization, and the nested
2924
+ // values would never be read back - `createFunc` on the profile
2925
+ // class has already routed them into this material's own instance by
2926
+ // the time this runs.
2927
+ set () {}
2740
2928
  },
2741
2929
  {
2742
2930
  name: 'TransmissionStrength',
2743
- description: 'Back-lit transmission strength (needs thickness in subsurface texture B)',
2931
+ description: 'Multiplier on back-lit transmission; needs a shadow-casting light with transmission enabled',
2744
2932
  type: 'float',
2745
- default: 0,
2933
+ default: 1,
2746
2934
  options: {
2747
2935
  animatable: true,
2748
2936
  minValue: 0,
@@ -2755,27 +2943,7 @@ function getMToonMaterialProps(manager) {
2755
2943
  this.transmissionStrength = value.num[0];
2756
2944
  },
2757
2945
  getDefaultValue () {
2758
- return this.$isInstance ? this.coreMaterial.transmissionStrength : 0;
2759
- }
2760
- },
2761
- {
2762
- name: 'TransmissionPower',
2763
- description: 'Exponent of the back-lit transmission falloff',
2764
- type: 'float',
2765
- default: 4,
2766
- options: {
2767
- animatable: true,
2768
- minValue: 1,
2769
- maxValue: 16
2770
- },
2771
- get (value) {
2772
- value.num[0] = this.transmissionPower;
2773
- },
2774
- set (value) {
2775
- this.transmissionPower = value.num[0];
2776
- },
2777
- getDefaultValue () {
2778
- return this.$isInstance ? this.coreMaterial.transmissionPower : 4;
2946
+ return this.$isInstance ? this.coreMaterial.transmissionStrength : 1;
2779
2947
  }
2780
2948
  },
2781
2949
  ...getTextureProps(manager, 'subsurfaceTexture', '2D', false, 1),
@@ -2783,7 +2951,7 @@ function getMToonMaterialProps(manager) {
2783
2951
  ]);
2784
2952
  }
2785
2953
  },
2786
- getMeshMaterialInstanceUniformsClass(SkinMaterial)
2954
+ getMeshMaterialInstanceUniformsClass(SSSMaterial, 'SSSMaterial')
2787
2955
  ];
2788
2956
  }
2789
2957
  /**
@@ -3406,7 +3574,7 @@ function getMToonMaterialProps(manager) {
3406
3574
  ]);
3407
3575
  }
3408
3576
  },
3409
- getMeshMaterialInstanceUniformsClass(EyeMaterial)
3577
+ getMeshMaterialInstanceUniformsClass(EyeMaterial, 'EyeMaterial')
3410
3578
  ];
3411
3579
  }
3412
3580
  /** @internal */ function getPBRMetallicRoughnessMaterialClass(manager) {
@@ -3982,7 +4150,7 @@ function getMToonMaterialProps(manager) {
3982
4150
  ]);
3983
4151
  }
3984
4152
  },
3985
- getMeshMaterialInstanceUniformsClass(PBRMetallicRoughnessMaterial)
4153
+ getMeshMaterialInstanceUniformsClass(PBRMetallicRoughnessMaterial, 'PBRMetallicRoughnessMaterial')
3986
4154
  ];
3987
4155
  }
3988
4156
  /** @internal */ function getPBRSpecularGlossinessMaterialClass(manager) {
@@ -4039,9 +4207,9 @@ function getMToonMaterialProps(manager) {
4039
4207
  ]);
4040
4208
  }
4041
4209
  },
4042
- getMeshMaterialInstanceUniformsClass(PBRSpecularGlossinessMaterial)
4210
+ getMeshMaterialInstanceUniformsClass(PBRSpecularGlossinessMaterial, 'PBRSpecularGlossinessMaterial')
4043
4211
  ];
4044
4212
  }
4045
4213
 
4046
- export { getBlinnMaterialClass, getEyeMaterialClass, getHairMaterialClass, getLambertMaterialClass, getMToonMaterialClass, getMeshMaterialClass, getPBRBluePrintMaterialClass, getPBRBluePrintMaterialInstanceClass, getPBRMetallicRoughnessMaterialClass, getPBRSpecularGlossinessMaterialClass, getParticleMaterialClass, getSkinMaterialClass, getSpriteBlueprintMaterialClass, getSpriteMaterialClass, getStandardSpriteMaterialClass, getSubsurfaceProfileClass, getUnlitMaterialClass };
4214
+ export { getBlinnMaterialClass, getEyeMaterialClass, getHairMaterialClass, getLambertMaterialClass, getMToonMaterialClass, getMeshMaterialClass, getPBRBluePrintMaterialClass, getPBRBluePrintMaterialInstanceClass, getPBRMetallicRoughnessMaterialClass, getPBRSpecularGlossinessMaterialClass, getParticleMaterialClass, getSSSProfileClass, getSkinMaterialClass, getSpriteBlueprintMaterialClass, getSpriteMaterialClass, getStandardSpriteMaterialClass, getSubsurfaceProfileClass, getUnlitMaterialClass };
4047
4215
  //# sourceMappingURL=material.js.map