@zephyr3d/scene 0.9.4 → 0.9.6

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 (517) hide show
  1. package/dist/animation/animationmask.js +224 -0
  2. package/dist/animation/animationmask.js.map +1 -0
  3. package/dist/animation/animationset.js +268 -67
  4. package/dist/animation/animationset.js.map +1 -1
  5. package/dist/animation/animationtrack.js.map +1 -1
  6. package/dist/animation/eulerrotationtrack.js +3 -0
  7. package/dist/animation/eulerrotationtrack.js.map +1 -1
  8. package/dist/animation/fixed_geometry_cache_track.js +7 -0
  9. package/dist/animation/fixed_geometry_cache_track.js.map +1 -1
  10. package/dist/animation/ik_modifier.js.map +1 -1
  11. package/dist/animation/joint_dynamics/collision.js +6 -4
  12. package/dist/animation/joint_dynamics/collision.js.map +1 -1
  13. package/dist/animation/joint_dynamics/controller.js +390 -43
  14. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  15. package/dist/animation/joint_dynamics/joint_dynamics_system.js +62 -3
  16. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  17. package/dist/animation/joint_dynamics/solver.js +4 -3
  18. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  19. package/dist/animation/joint_dynamics/types.js.map +1 -1
  20. package/dist/animation/joint_dynamics_modifier.js +2 -0
  21. package/dist/animation/joint_dynamics_modifier.js.map +1 -1
  22. package/dist/animation/morphtarget.js +3 -72
  23. package/dist/animation/morphtarget.js.map +1 -1
  24. package/dist/animation/morphtrack.js +3 -0
  25. package/dist/animation/morphtrack.js.map +1 -1
  26. package/dist/animation/pca_geometry_cache_track.js +3 -0
  27. package/dist/animation/pca_geometry_cache_track.js.map +1 -1
  28. package/dist/animation/proptrack.js +3 -0
  29. package/dist/animation/proptrack.js.map +1 -1
  30. package/dist/animation/rotationtrack.js +3 -0
  31. package/dist/animation/rotationtrack.js.map +1 -1
  32. package/dist/animation/scaletrack.js +3 -0
  33. package/dist/animation/scaletrack.js.map +1 -1
  34. package/dist/animation/skeleton.js +254 -79
  35. package/dist/animation/skeleton.js.map +1 -1
  36. package/dist/animation/skeleton_modifier.js.map +1 -1
  37. package/dist/animation/spring_modifier.js.map +1 -1
  38. package/dist/animation/translationtrack.js +3 -0
  39. package/dist/animation/translationtrack.js.map +1 -1
  40. package/dist/app/engine.js +171 -107
  41. package/dist/app/engine.js.map +1 -1
  42. package/dist/app/scriptregistry.js +251 -80
  43. package/dist/app/scriptregistry.js.map +1 -1
  44. package/dist/asset/assetmanager.js +344 -365
  45. package/dist/asset/assetmanager.js.map +1 -1
  46. package/dist/asset/loaders/loader.js +1 -6
  47. package/dist/asset/loaders/loader.js.map +1 -1
  48. package/dist/asset/loaders/zabc/zabc_loader.js.map +1 -1
  49. package/dist/asset/model.js +1000 -131
  50. package/dist/asset/model.js.map +1 -1
  51. package/dist/avatar/wardrobe.js +474 -0
  52. package/dist/avatar/wardrobe.js.map +1 -0
  53. package/dist/index.d.ts +1126 -199
  54. package/dist/index.js +3 -2
  55. package/dist/index.js.map +1 -1
  56. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +6 -3
  57. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  58. package/dist/material/mixins/pbr/common.js +72 -15
  59. package/dist/material/mixins/pbr/common.js.map +1 -1
  60. package/dist/material/msdf_text.js +3 -3
  61. package/dist/material/msdf_text.js.map +1 -1
  62. package/dist/material/msdf_text_sprite.js +4 -4
  63. package/dist/material/msdf_text_sprite.js.map +1 -1
  64. package/dist/material/pbrblueprint.js +102 -102
  65. package/dist/material/pbrblueprint.js.map +1 -1
  66. package/dist/render/envlight.js +54 -1
  67. package/dist/render/envlight.js.map +1 -1
  68. package/dist/render/sky.js +9 -0
  69. package/dist/render/sky.js.map +1 -1
  70. package/dist/scene/batchgroup.js +11 -13
  71. package/dist/scene/batchgroup.js.map +1 -1
  72. package/dist/scene/environment.js +15 -2
  73. package/dist/scene/environment.js.map +1 -1
  74. package/dist/scene/mesh.js +79 -16
  75. package/dist/scene/mesh.js.map +1 -1
  76. package/dist/scene/scene.js +1 -0
  77. package/dist/scene/scene.js.map +1 -1
  78. package/dist/scene/scene_node.js +203 -2
  79. package/dist/scene/scene_node.js.map +1 -1
  80. package/dist/text/font/cff_font.js +890 -0
  81. package/dist/text/font/cff_font.js.map +1 -0
  82. package/dist/text/font/font_asset.js +17 -3
  83. package/dist/text/font/font_asset.js.map +1 -1
  84. package/dist/text/msdf/generator.js.map +1 -1
  85. package/dist/text/msdf/shape.js +4 -1
  86. package/dist/text/msdf/shape.js.map +1 -1
  87. package/dist/text/runtime/msdf_text_atlas_manager.js +4 -1
  88. package/dist/text/runtime/msdf_text_atlas_manager.js.map +1 -1
  89. package/dist/utility/blueprint/material/inputs.js +1157 -1154
  90. package/dist/utility/blueprint/material/inputs.js.map +1 -1
  91. package/dist/utility/bounding_volume.js.map +1 -1
  92. package/dist/utility/pmrem.js +34 -8
  93. package/dist/utility/pmrem.js.map +1 -1
  94. package/dist/utility/serialization/manager.js +22 -9
  95. package/dist/utility/serialization/manager.js.map +1 -1
  96. package/dist/utility/serialization/scene/animation.js +700 -7
  97. package/dist/utility/serialization/scene/animation.js.map +1 -1
  98. package/dist/utility/serialization/scene/mesh.js +64 -4
  99. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  100. package/dist/utility/serialization/scene/node.js +187 -8
  101. package/dist/utility/serialization/scene/node.js.map +1 -1
  102. package/dist/utility/serialization/types.js.map +1 -1
  103. package/dist/utility/textures/sheenlut.js +138 -0
  104. package/dist/utility/textures/sheenlut.js.map +1 -0
  105. package/package.json +2 -2
  106. package/dist/animation/ik/ik_chain_builder.js +0 -68
  107. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  108. package/dist/animation/ik/ik_pole_constraint.js +0 -123
  109. package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
  110. package/dist/animation/ik/ik_track.js +0 -96
  111. package/dist/animation/ik/ik_track.js.map +0 -1
  112. package/dist/animation/ik_postprocessor.js +0 -71
  113. package/dist/animation/ik_postprocessor.js.map +0 -1
  114. package/dist/animation/joint_dynamics/math.js +0 -16
  115. package/dist/animation/joint_dynamics/math.js.map +0 -1
  116. package/dist/animation/manual_transform_processor.js +0 -156
  117. package/dist/animation/manual_transform_processor.js.map +0 -1
  118. package/dist/animation/skeleton_postprocessor.js +0 -50
  119. package/dist/animation/skeleton_postprocessor.js.map +0 -1
  120. package/dist/animation/spring2/collision.js +0 -469
  121. package/dist/animation/spring2/collision.js.map +0 -1
  122. package/dist/animation/spring2/constraints.js +0 -329
  123. package/dist/animation/spring2/constraints.js.map +0 -1
  124. package/dist/animation/spring2/controller.js +0 -434
  125. package/dist/animation/spring2/controller.js.map +0 -1
  126. package/dist/animation/spring2/math.js +0 -16
  127. package/dist/animation/spring2/math.js.map +0 -1
  128. package/dist/animation/spring2/solver.js +0 -624
  129. package/dist/animation/spring2/solver.js.map +0 -1
  130. package/dist/animation/spring2/spring_system.js +0 -118
  131. package/dist/animation/spring2/spring_system.js.map +0 -1
  132. package/dist/animation/spring2/types.js +0 -19
  133. package/dist/animation/spring2/types.js.map +0 -1
  134. package/dist/animation/spring_postprocessor.js +0 -54
  135. package/dist/animation/spring_postprocessor.js.map +0 -1
  136. package/dist/asset/loaders/gltf/gltf_loader.js +0 -1273
  137. package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
  138. package/dist/asset/loaders/gltf/helpers.js +0 -331
  139. package/dist/asset/loaders/gltf/helpers.js.map +0 -1
  140. package/dist/material/sprite3d.js +0 -301
  141. package/dist/material/sprite3d.js.map +0 -1
  142. package/dist/material/sprite3d_std.js +0 -116
  143. package/dist/material/sprite3d_std.js.map +0 -1
  144. package/dist/material/sprite3dblueprint.js +0 -235
  145. package/dist/material/sprite3dblueprint.js.map +0 -1
  146. package/dist/material/sprite_sdf.js +0 -106
  147. package/dist/material/sprite_sdf.js.map +0 -1
  148. package/dist/material/terrainmaterial.js +0 -368
  149. package/dist/material/terrainmaterial.js.map +0 -1
  150. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  151. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  152. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  153. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  154. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  155. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  156. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  157. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  158. package/dist/render/deferredlightpass.js +0 -510
  159. package/dist/render/deferredlightpass.js.map +0 -1
  160. package/dist/render/deferredshadowlightpass.js +0 -428
  161. package/dist/render/deferredshadowlightpass.js.map +0 -1
  162. package/dist/render/gbufferpass.js +0 -50
  163. package/dist/render/gbufferpass.js.map +0 -1
  164. package/dist/scene/sdftextsprite.js +0 -322
  165. package/dist/scene/sdftextsprite.js.map +0 -1
  166. package/dist/scene/sprite3d.js +0 -18
  167. package/dist/scene/sprite3d.js.map +0 -1
  168. package/dist/scene/terrain/grass.js +0 -280
  169. package/dist/scene/terrain/grass.js.map +0 -1
  170. package/dist/scene/terrain/heightfield.js +0 -475
  171. package/dist/scene/terrain/heightfield.js.map +0 -1
  172. package/dist/scene/terrain/patch.js +0 -532
  173. package/dist/scene/terrain/patch.js.map +0 -1
  174. package/dist/scene/terrain/quadtree.js +0 -461
  175. package/dist/scene/terrain/quadtree.js.map +0 -1
  176. package/dist/scene/terrain/terrain.js +0 -231
  177. package/dist/scene/terrain/terrain.js.map +0 -1
  178. package/dist/src/animation/animation.js +0 -127
  179. package/dist/src/animation/animation.js.map +0 -1
  180. package/dist/src/animation/animationset.js +0 -255
  181. package/dist/src/animation/animationset.js.map +0 -1
  182. package/dist/src/animation/animationtrack.js +0 -34
  183. package/dist/src/animation/animationtrack.js.map +0 -1
  184. package/dist/src/animation/eulerrotationtrack.js +0 -52
  185. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  186. package/dist/src/animation/morphtarget.js +0 -93
  187. package/dist/src/animation/morphtarget.js.map +0 -1
  188. package/dist/src/animation/morphtrack.js +0 -70
  189. package/dist/src/animation/morphtrack.js.map +0 -1
  190. package/dist/src/animation/proptrack.js +0 -161
  191. package/dist/src/animation/proptrack.js.map +0 -1
  192. package/dist/src/animation/rotationtrack.js +0 -51
  193. package/dist/src/animation/rotationtrack.js.map +0 -1
  194. package/dist/src/animation/scaletrack.js +0 -50
  195. package/dist/src/animation/scaletrack.js.map +0 -1
  196. package/dist/src/animation/skeleton.js +0 -204
  197. package/dist/src/animation/skeleton.js.map +0 -1
  198. package/dist/src/animation/translationtrack.js +0 -50
  199. package/dist/src/animation/translationtrack.js.map +0 -1
  200. package/dist/src/app/app.js +0 -129
  201. package/dist/src/app/app.js.map +0 -1
  202. package/dist/src/app/inputmgr.js +0 -267
  203. package/dist/src/app/inputmgr.js.map +0 -1
  204. package/dist/src/asset/assetmanager.js +0 -404
  205. package/dist/src/asset/assetmanager.js.map +0 -1
  206. package/dist/src/asset/builtin.js +0 -337
  207. package/dist/src/asset/builtin.js.map +0 -1
  208. package/dist/src/asset/loaders/dds/dds.js +0 -470
  209. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  210. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  211. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  212. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  213. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  214. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  215. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  216. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  217. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  218. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  219. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  220. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  221. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  222. package/dist/src/asset/loaders/loader.js +0 -45
  223. package/dist/src/asset/loaders/loader.js.map +0 -1
  224. package/dist/src/asset/model.js +0 -414
  225. package/dist/src/asset/model.js.map +0 -1
  226. package/dist/src/blitter/bilateralblur.js +0 -221
  227. package/dist/src/blitter/bilateralblur.js.map +0 -1
  228. package/dist/src/blitter/blitter.js +0 -390
  229. package/dist/src/blitter/blitter.js.map +0 -1
  230. package/dist/src/blitter/box.js +0 -118
  231. package/dist/src/blitter/box.js.map +0 -1
  232. package/dist/src/blitter/copy.js +0 -22
  233. package/dist/src/blitter/copy.js.map +0 -1
  234. package/dist/src/blitter/gaussianblur.js +0 -228
  235. package/dist/src/blitter/gaussianblur.js.map +0 -1
  236. package/dist/src/camera/base.js +0 -92
  237. package/dist/src/camera/base.js.map +0 -1
  238. package/dist/src/camera/camera.js +0 -1005
  239. package/dist/src/camera/camera.js.map +0 -1
  240. package/dist/src/camera/fps.js +0 -238
  241. package/dist/src/camera/fps.js.map +0 -1
  242. package/dist/src/camera/orbit.js +0 -245
  243. package/dist/src/camera/orbit.js.map +0 -1
  244. package/dist/src/camera/orthocamera.js +0 -167
  245. package/dist/src/camera/orthocamera.js.map +0 -1
  246. package/dist/src/camera/perspectivecamera.js +0 -141
  247. package/dist/src/camera/perspectivecamera.js.map +0 -1
  248. package/dist/src/index.js +0 -120
  249. package/dist/src/index.js.map +0 -1
  250. package/dist/src/material/blinn.js +0 -81
  251. package/dist/src/material/blinn.js.map +0 -1
  252. package/dist/src/material/grassmaterial.js +0 -113
  253. package/dist/src/material/grassmaterial.js.map +0 -1
  254. package/dist/src/material/lambert.js +0 -92
  255. package/dist/src/material/lambert.js.map +0 -1
  256. package/dist/src/material/material.js +0 -301
  257. package/dist/src/material/material.js.map +0 -1
  258. package/dist/src/material/meshmaterial.js +0 -704
  259. package/dist/src/material/meshmaterial.js.map +0 -1
  260. package/dist/src/material/mixins/albedocolor.js +0 -76
  261. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  262. package/dist/src/material/mixins/foliage.js +0 -47
  263. package/dist/src/material/mixins/foliage.js.map +0 -1
  264. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  265. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  266. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  267. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  268. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  269. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  270. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  271. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  272. package/dist/src/material/mixins/lit.js +0 -476
  273. package/dist/src/material/mixins/lit.js.map +0 -1
  274. package/dist/src/material/mixins/pbr/common.js +0 -918
  275. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  276. package/dist/src/material/mixins/texture.js +0 -172
  277. package/dist/src/material/mixins/texture.js.map +0 -1
  278. package/dist/src/material/mixins/vertexcolor.js +0 -56
  279. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  280. package/dist/src/material/particle.js +0 -178
  281. package/dist/src/material/particle.js.map +0 -1
  282. package/dist/src/material/pbrmr.js +0 -97
  283. package/dist/src/material/pbrmr.js.map +0 -1
  284. package/dist/src/material/pbrsg.js +0 -97
  285. package/dist/src/material/pbrsg.js.map +0 -1
  286. package/dist/src/material/shader/helper.js +0 -1209
  287. package/dist/src/material/shader/helper.js.map +0 -1
  288. package/dist/src/material/terrain-cm.js +0 -606
  289. package/dist/src/material/terrain-cm.js.map +0 -1
  290. package/dist/src/material/terrainmaterial.js +0 -375
  291. package/dist/src/material/terrainmaterial.js.map +0 -1
  292. package/dist/src/material/unlit.js +0 -41
  293. package/dist/src/material/unlit.js.map +0 -1
  294. package/dist/src/material/water.js +0 -417
  295. package/dist/src/material/water.js.map +0 -1
  296. package/dist/src/posteffect/bloom.js +0 -361
  297. package/dist/src/posteffect/bloom.js.map +0 -1
  298. package/dist/src/posteffect/compositor.js +0 -226
  299. package/dist/src/posteffect/compositor.js.map +0 -1
  300. package/dist/src/posteffect/fxaa.js +0 -273
  301. package/dist/src/posteffect/fxaa.js.map +0 -1
  302. package/dist/src/posteffect/grayscale.js +0 -69
  303. package/dist/src/posteffect/grayscale.js.map +0 -1
  304. package/dist/src/posteffect/motionblur.js +0 -96
  305. package/dist/src/posteffect/motionblur.js.map +0 -1
  306. package/dist/src/posteffect/posteffect.js +0 -126
  307. package/dist/src/posteffect/posteffect.js.map +0 -1
  308. package/dist/src/posteffect/sao.js +0 -324
  309. package/dist/src/posteffect/sao.js.map +0 -1
  310. package/dist/src/posteffect/ssr.js +0 -489
  311. package/dist/src/posteffect/ssr.js.map +0 -1
  312. package/dist/src/posteffect/taa.js +0 -172
  313. package/dist/src/posteffect/taa.js.map +0 -1
  314. package/dist/src/posteffect/tonemap.js +0 -94
  315. package/dist/src/posteffect/tonemap.js.map +0 -1
  316. package/dist/src/render/abuffer_oit.js +0 -361
  317. package/dist/src/render/abuffer_oit.js.map +0 -1
  318. package/dist/src/render/clipmap.js +0 -851
  319. package/dist/src/render/clipmap.js.map +0 -1
  320. package/dist/src/render/cluster_light.js +0 -333
  321. package/dist/src/render/cluster_light.js.map +0 -1
  322. package/dist/src/render/cull_visitor.js +0 -187
  323. package/dist/src/render/cull_visitor.js.map +0 -1
  324. package/dist/src/render/depthpass.js +0 -68
  325. package/dist/src/render/depthpass.js.map +0 -1
  326. package/dist/src/render/drawable_mixin.js +0 -227
  327. package/dist/src/render/drawable_mixin.js.map +0 -1
  328. package/dist/src/render/envlight.js +0 -463
  329. package/dist/src/render/envlight.js.map +0 -1
  330. package/dist/src/render/fbm_wavegenerator.js +0 -251
  331. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  332. package/dist/src/render/fft_wavegenerator.js +0 -1006
  333. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  334. package/dist/src/render/fullscreenquad.js +0 -38
  335. package/dist/src/render/fullscreenquad.js.map +0 -1
  336. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  337. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  338. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  339. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  340. package/dist/src/render/hzb.js +0 -273
  341. package/dist/src/render/hzb.js.map +0 -1
  342. package/dist/src/render/lightpass.js +0 -172
  343. package/dist/src/render/lightpass.js.map +0 -1
  344. package/dist/src/render/objectcolorpass.js +0 -51
  345. package/dist/src/render/objectcolorpass.js.map +0 -1
  346. package/dist/src/render/primitive.js +0 -364
  347. package/dist/src/render/primitive.js.map +0 -1
  348. package/dist/src/render/render_queue.js +0 -467
  349. package/dist/src/render/render_queue.js.map +0 -1
  350. package/dist/src/render/renderbundle_wrapper.js +0 -152
  351. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  352. package/dist/src/render/renderer.js +0 -455
  353. package/dist/src/render/renderer.js.map +0 -1
  354. package/dist/src/render/renderpass.js +0 -200
  355. package/dist/src/render/renderpass.js.map +0 -1
  356. package/dist/src/render/shadowmap_pass.js +0 -56
  357. package/dist/src/render/shadowmap_pass.js.map +0 -1
  358. package/dist/src/render/sky.js +0 -1103
  359. package/dist/src/render/sky.js.map +0 -1
  360. package/dist/src/render/weightedblended_oit.js +0 -168
  361. package/dist/src/render/weightedblended_oit.js.map +0 -1
  362. package/dist/src/scene/batchgroup.js +0 -162
  363. package/dist/src/scene/batchgroup.js.map +0 -1
  364. package/dist/src/scene/environment.js +0 -209
  365. package/dist/src/scene/environment.js.map +0 -1
  366. package/dist/src/scene/graph_node.js +0 -72
  367. package/dist/src/scene/graph_node.js.map +0 -1
  368. package/dist/src/scene/light.js +0 -416
  369. package/dist/src/scene/light.js.map +0 -1
  370. package/dist/src/scene/mesh.js +0 -341
  371. package/dist/src/scene/mesh.js.map +0 -1
  372. package/dist/src/scene/octree.js +0 -649
  373. package/dist/src/scene/octree.js.map +0 -1
  374. package/dist/src/scene/particlesys.js +0 -738
  375. package/dist/src/scene/particlesys.js.map +0 -1
  376. package/dist/src/scene/raycast_visitor.js +0 -103
  377. package/dist/src/scene/raycast_visitor.js.map +0 -1
  378. package/dist/src/scene/scene.js +0 -284
  379. package/dist/src/scene/scene.js.map +0 -1
  380. package/dist/src/scene/scene_node.js +0 -732
  381. package/dist/src/scene/scene_node.js.map +0 -1
  382. package/dist/src/scene/terrain/grass.js +0 -278
  383. package/dist/src/scene/terrain/grass.js.map +0 -1
  384. package/dist/src/scene/terrain/heightfield.js +0 -475
  385. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  386. package/dist/src/scene/terrain/patch.js +0 -530
  387. package/dist/src/scene/terrain/patch.js.map +0 -1
  388. package/dist/src/scene/terrain/quadtree.js +0 -461
  389. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  390. package/dist/src/scene/terrain/terrain.js +0 -246
  391. package/dist/src/scene/terrain/terrain.js.map +0 -1
  392. package/dist/src/scene/terrain-cm/grass.js +0 -594
  393. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  394. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  395. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  396. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  397. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  398. package/dist/src/scene/water.js +0 -374
  399. package/dist/src/scene/water.js.map +0 -1
  400. package/dist/src/shaders/atmosphere.js +0 -957
  401. package/dist/src/shaders/atmosphere.js.map +0 -1
  402. package/dist/src/shaders/fog.js +0 -112
  403. package/dist/src/shaders/fog.js.map +0 -1
  404. package/dist/src/shaders/misc.js +0 -266
  405. package/dist/src/shaders/misc.js.map +0 -1
  406. package/dist/src/shaders/noise.js +0 -222
  407. package/dist/src/shaders/noise.js.map +0 -1
  408. package/dist/src/shaders/pbr.js +0 -51
  409. package/dist/src/shaders/pbr.js.map +0 -1
  410. package/dist/src/shaders/shadow.js +0 -636
  411. package/dist/src/shaders/shadow.js.map +0 -1
  412. package/dist/src/shaders/ssr.js +0 -490
  413. package/dist/src/shaders/ssr.js.map +0 -1
  414. package/dist/src/shaders/temporal.js +0 -215
  415. package/dist/src/shaders/temporal.js.map +0 -1
  416. package/dist/src/shaders/water.js +0 -756
  417. package/dist/src/shaders/water.js.map +0 -1
  418. package/dist/src/shadow/esm.js +0 -237
  419. package/dist/src/shadow/esm.js.map +0 -1
  420. package/dist/src/shadow/pcf_opt.js +0 -181
  421. package/dist/src/shadow/pcf_opt.js.map +0 -1
  422. package/dist/src/shadow/pcf_pd.js +0 -189
  423. package/dist/src/shadow/pcf_pd.js.map +0 -1
  424. package/dist/src/shadow/shader.js +0 -37
  425. package/dist/src/shadow/shader.js.map +0 -1
  426. package/dist/src/shadow/shadow_impl.js +0 -15
  427. package/dist/src/shadow/shadow_impl.js.map +0 -1
  428. package/dist/src/shadow/shadowmapper.js +0 -790
  429. package/dist/src/shadow/shadowmapper.js.map +0 -1
  430. package/dist/src/shadow/ssm.js +0 -159
  431. package/dist/src/shadow/ssm.js.map +0 -1
  432. package/dist/src/shadow/vsm.js +0 -297
  433. package/dist/src/shadow/vsm.js.map +0 -1
  434. package/dist/src/shapes/box.js +0 -386
  435. package/dist/src/shapes/box.js.map +0 -1
  436. package/dist/src/shapes/cylinder.js +0 -125
  437. package/dist/src/shapes/cylinder.js.map +0 -1
  438. package/dist/src/shapes/plane.js +0 -88
  439. package/dist/src/shapes/plane.js.map +0 -1
  440. package/dist/src/shapes/shape.js +0 -87
  441. package/dist/src/shapes/shape.js.map +0 -1
  442. package/dist/src/shapes/sphere.js +0 -114
  443. package/dist/src/shapes/sphere.js.map +0 -1
  444. package/dist/src/shapes/tetrahedron.js +0 -188
  445. package/dist/src/shapes/tetrahedron.js.map +0 -1
  446. package/dist/src/shapes/torus.js +0 -111
  447. package/dist/src/shapes/torus.js.map +0 -1
  448. package/dist/src/utility/aabbtree.js +0 -400
  449. package/dist/src/utility/aabbtree.js.map +0 -1
  450. package/dist/src/utility/bounding_volume.js +0 -29
  451. package/dist/src/utility/bounding_volume.js.map +0 -1
  452. package/dist/src/utility/debug.js +0 -28
  453. package/dist/src/utility/debug.js.map +0 -1
  454. package/dist/src/utility/draco/decoder.js +0 -116
  455. package/dist/src/utility/draco/decoder.js.map +0 -1
  456. package/dist/src/utility/misc.js +0 -105
  457. package/dist/src/utility/misc.js.map +0 -1
  458. package/dist/src/utility/panorama.js +0 -163
  459. package/dist/src/utility/panorama.js.map +0 -1
  460. package/dist/src/utility/pmrem.js +0 -354
  461. package/dist/src/utility/pmrem.js.map +0 -1
  462. package/dist/src/utility/rendermipmap.js +0 -115
  463. package/dist/src/utility/rendermipmap.js.map +0 -1
  464. package/dist/src/utility/serialization/json.js +0 -402
  465. package/dist/src/utility/serialization/json.js.map +0 -1
  466. package/dist/src/utility/serialization/manager.js +0 -623
  467. package/dist/src/utility/serialization/manager.js.map +0 -1
  468. package/dist/src/utility/serialization/scene/animation.js +0 -248
  469. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  470. package/dist/src/utility/serialization/scene/batch.js +0 -59
  471. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  472. package/dist/src/utility/serialization/scene/camera.js +0 -790
  473. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  474. package/dist/src/utility/serialization/scene/common.js +0 -222
  475. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  476. package/dist/src/utility/serialization/scene/light.js +0 -575
  477. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  478. package/dist/src/utility/serialization/scene/material.js +0 -1111
  479. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  480. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  481. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  482. package/dist/src/utility/serialization/scene/misc.js +0 -39
  483. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  484. package/dist/src/utility/serialization/scene/node.js +0 -451
  485. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  486. package/dist/src/utility/serialization/scene/particle.js +0 -425
  487. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  488. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  489. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  490. package/dist/src/utility/serialization/scene/scene.js +0 -704
  491. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  492. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  493. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  494. package/dist/src/utility/serialization/scene/water.js +0 -465
  495. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  496. package/dist/src/utility/shprojector.js +0 -297
  497. package/dist/src/utility/shprojector.js.map +0 -1
  498. package/dist/src/utility/textures/ggxlut.js +0 -213
  499. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  500. package/dist/src/utility/textures/gradientnoise.js +0 -62
  501. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  502. package/dist/src/utility/textures/randomnoise.js +0 -41
  503. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  504. package/dist/src/values.js +0 -162
  505. package/dist/src/values.js.map +0 -1
  506. package/dist/utility/blueprint/material/common.js +0 -7
  507. package/dist/utility/blueprint/material/common.js.map +0 -1
  508. package/dist/utility/serialization/blueprint/constants.js +0 -255
  509. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  510. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  511. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  512. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  513. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
  514. package/dist/utility/serialization/scene/cloth_script.js +0 -834
  515. package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
  516. package/dist/utility/serialization/scene/spring_script.js +0 -596
  517. package/dist/utility/serialization/scene/spring_script.js.map +0 -1
@@ -125,9 +125,9 @@ import { fetchSampler } from '../utility/misc.js';
125
125
  scope.zMSDFAtlasSize = pb.vec2().uniform(2);
126
126
  scope.zMSDFSmallGlyphThreshold = pb.float().uniform(2);
127
127
  scope.zMSDFOutlineWidth = pb.float().uniform(2);
128
- scope.$l.sample = pb.textureSample(scope.zMSDFAtlas, scope.$inputs.zMSDFUV);
129
- scope.$l.msdf = scope.sample.rgb;
130
- scope.$l.sdf = scope.sample.a;
128
+ scope.$l.msdfSample = pb.textureSample(scope.zMSDFAtlas, scope.$inputs.zMSDFUV);
129
+ scope.$l.msdf = scope.msdfSample.rgb;
130
+ scope.$l.sdf = scope.msdfSample.a;
131
131
  scope.$l.sd = median3(pb, scope.msdf.r, scope.msdf.g, scope.msdf.b);
132
132
  scope.$l.unitRange = pb.div(pb.vec2(scope.zMSDFDistanceRange), pb.max(scope.zMSDFAtlasSize, pb.vec2(1)));
133
133
  scope.$l.screenTexSize = pb.div(pb.vec2(1), pb.max(pb.fwidth(scope.$inputs.zMSDFUV), pb.vec2(1e-4)));
@@ -1 +1 @@
1
- {"version":3,"file":"msdf_text.js","sources":["../../src/material/msdf_text.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n PBFunctionScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n Texture2D\r\n} from '@zephyr3d/device';\r\nimport { DRef, type Clonable, type Immutable, Vector3 } from '@zephyr3d/base';\r\nimport type { DrawContext } from '../render';\r\nimport { MeshMaterial } from './meshmaterial';\r\nimport { ShaderHelper } from './shader/helper';\r\nimport { fetchSampler } from '../utility/misc';\r\n\r\n/**\r\n * Atlas-based MSDF text material.\r\n *\r\n * @public\r\n */\r\nexport class MSDFTextMaterial extends MeshMaterial implements Clonable<MSDFTextMaterial> {\r\n static FEATURE_TEXT_ATLAS = this.defineFeature();\r\n private _atlas: DRef<Texture2D>;\r\n private _textColor: Vector3;\r\n private _outlineColor: Vector3;\r\n private _distanceRange: number;\r\n private _atlasSize: Float32Array<ArrayBuffer>;\r\n private _smallGlyphThreshold: number;\r\n private _outlineWidth: number;\r\n constructor() {\r\n super();\r\n this._atlas = new DRef();\r\n this._textColor = new Vector3(1, 1, 1);\r\n this._outlineColor = new Vector3(0, 0, 0);\r\n this._distanceRange = 6;\r\n this._atlasSize = new Float32Array([1, 1]);\r\n this._smallGlyphThreshold = 18;\r\n this._outlineWidth = 0;\r\n this.cullMode = 'none';\r\n this.blendMode = 'blend';\r\n }\r\n get atlasTexture() {\r\n return this._atlas.get();\r\n }\r\n set atlasTexture(tex) {\r\n tex = tex ?? null;\r\n if (tex !== this._atlas.get()) {\r\n this._atlas.set(tex);\r\n this.useFeature(MSDFTextMaterial.FEATURE_TEXT_ATLAS, !!tex);\r\n this.uniformChanged();\r\n }\r\n }\r\n get textColor(): Immutable<Vector3> {\r\n return this._textColor;\r\n }\r\n set textColor(value: Immutable<Vector3>) {\r\n if (!this._textColor.equalsTo(value)) {\r\n this._textColor.set(value);\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineColor(): Immutable<Vector3> {\r\n return this._outlineColor;\r\n }\r\n set outlineColor(value: Immutable<Vector3>) {\r\n if (!this._outlineColor.equalsTo(value)) {\r\n this._outlineColor.set(value);\r\n this.uniformChanged();\r\n }\r\n }\r\n get distanceRange() {\r\n return this._distanceRange;\r\n }\r\n set distanceRange(value: number) {\r\n if (this._distanceRange !== value) {\r\n this._distanceRange = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n get smallGlyphThreshold() {\r\n return this._smallGlyphThreshold;\r\n }\r\n set smallGlyphThreshold(value: number) {\r\n if (this._smallGlyphThreshold !== value) {\r\n this._smallGlyphThreshold = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineWidth() {\r\n return this._outlineWidth;\r\n }\r\n set outlineWidth(value: number) {\r\n value = Math.max(0, value);\r\n if (this._outlineWidth !== value) {\r\n this._outlineWidth = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n clone() {\r\n const other = new MSDFTextMaterial();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.atlasTexture = other.atlasTexture;\r\n this.textColor = other.textColor;\r\n this.outlineColor = other.outlineColor;\r\n this.distanceRange = other.distanceRange;\r\n this.smallGlyphThreshold = other.smallGlyphThreshold;\r\n this.outlineWidth = other.outlineWidth;\r\n this._atlasSize[0] = other._atlasSize[0];\r\n this._atlasSize[1] = other._atlasSize[1];\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n const pb = scope.$builder;\r\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\r\n scope.$inputs.zMSDFUV = pb.vec2().attrib('texCoord0');\r\n scope.$outputs.zMSDFUV = scope.$inputs.zMSDFUV;\r\n scope.$outputs.zMSDFLocalPos = scope.oPos.xy;\r\n scope.$outputs.worldPos = pb.mul(ShaderHelper.getWorldMatrix(scope), pb.vec4(scope.oPos, 1)).xyz;\r\n ShaderHelper.setClipSpacePosition(\r\n scope,\r\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\r\n );\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n super.fragmentShader(scope);\r\n if (this.needFragmentColor()) {\r\n const pb = scope.$builder;\r\n scope.zMSDFAtlas = pb.tex2D().uniform(2);\r\n scope.zMSDFTextColor = pb.vec3().uniform(2);\r\n scope.zMSDFOutlineColor = pb.vec3().uniform(2);\r\n scope.zMSDFDistanceRange = pb.float().uniform(2);\r\n scope.zMSDFAtlasSize = pb.vec2().uniform(2);\r\n scope.zMSDFSmallGlyphThreshold = pb.float().uniform(2);\r\n scope.zMSDFOutlineWidth = pb.float().uniform(2);\r\n scope.$l.sample = pb.textureSample(scope.zMSDFAtlas, scope.$inputs.zMSDFUV);\r\n scope.$l.msdf = scope.sample.rgb;\r\n scope.$l.sdf = scope.sample.a;\r\n scope.$l.sd = median3(pb, scope.msdf.r, scope.msdf.g, scope.msdf.b);\r\n scope.$l.unitRange = pb.div(\r\n pb.vec2(scope.zMSDFDistanceRange),\r\n pb.max(scope.zMSDFAtlasSize, pb.vec2(1))\r\n );\r\n scope.$l.screenTexSize = pb.div(pb.vec2(1), pb.max(pb.fwidth(scope.$inputs.zMSDFUV), pb.vec2(1e-4)));\r\n scope.$l.screenPxRange = pb.max(pb.mul(0.5, pb.dot(scope.unitRange, scope.screenTexSize)), 1);\r\n scope.$l.msdfPxDistance = pb.mul(scope.screenPxRange, pb.sub(scope.sd, 0.5));\r\n scope.$l.sdfPxDistance = pb.mul(scope.screenPxRange, pb.sub(scope.sdf, 0.5));\r\n scope.$l.alphaMsdf = pb.clamp(pb.add(scope.msdfPxDistance, 0.5), 0, 1);\r\n scope.$l.alphaSdf = pb.clamp(pb.add(scope.sdfPxDistance, 0.5), 0, 1);\r\n scope.$l.glyphPixelSpan = pb.min(scope.screenTexSize.x, scope.screenTexSize.y);\r\n scope.$l.useSdf = pb.lessThan(scope.glyphPixelSpan, scope.zMSDFSmallGlyphThreshold);\r\n scope.$l.alpha = pb.mix(scope.alphaMsdf, scope.alphaSdf, pb.float(scope.useSdf));\r\n scope.$l.localUnitsPerPixel = pb.max(\r\n pb.min(pb.fwidth(scope.$inputs.zMSDFLocalPos.x), pb.fwidth(scope.$inputs.zMSDFLocalPos.y)),\r\n 1e-4\r\n );\r\n scope.$l.outlinePxWidth = pb.div(scope.zMSDFOutlineWidth, scope.localUnitsPerPixel);\r\n scope.$l.outlineAlpha = pb.clamp(pb.add(scope.sdfPxDistance, pb.add(0.5, scope.outlinePxWidth)), 0, 1);\r\n scope.$l.outlineMaskRaw = pb.max(pb.sub(scope.outlineAlpha, scope.alpha), 0);\r\n scope.$l.hasOutline = pb.greaterThan(scope.zMSDFOutlineWidth, 1e-4);\r\n scope.$l.outlineMask = pb.mul(scope.outlineMaskRaw, pb.float(scope.hasOutline));\r\n scope.$l.finalAlpha = pb.clamp(pb.add(scope.alpha, scope.outlineMask), 0, 1);\r\n scope.$l.weightedColor = pb.add(\r\n pb.mul(scope.zMSDFTextColor, scope.alpha),\r\n pb.mul(scope.zMSDFOutlineColor, scope.outlineMask)\r\n );\r\n scope.$l.finalColor = pb.div(scope.weightedColor, pb.max(scope.finalAlpha, 1e-4));\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(scope.finalColor, scope.finalAlpha));\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, null);\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) && this.atlasTexture) {\r\n bindGroup.setValue('zMSDFTextColor', this._textColor);\r\n bindGroup.setValue('zMSDFOutlineColor', this._outlineColor);\r\n bindGroup.setValue('zMSDFDistanceRange', this._distanceRange);\r\n this._atlasSize[0] = this.atlasTexture.width;\r\n this._atlasSize[1] = this.atlasTexture.height;\r\n bindGroup.setValue('zMSDFAtlasSize', this._atlasSize);\r\n bindGroup.setValue('zMSDFSmallGlyphThreshold', this._smallGlyphThreshold);\r\n bindGroup.setValue('zMSDFOutlineWidth', this._outlineWidth);\r\n bindGroup.setTexture('zMSDFAtlas', this.atlasTexture, fetchSampler('clamp_linear'));\r\n }\r\n }\r\n protected onDispose() {\r\n super.onDispose();\r\n this._atlas.dispose();\r\n }\r\n}\r\n\r\nfunction median3(pb: PBInsideFunctionScope['$builder'], a: PBShaderExp, b: PBShaderExp, c: PBShaderExp) {\r\n return pb.sub(pb.sub(pb.add(a, b, c), pb.min(pb.min(a, b), c)), pb.max(pb.max(a, b), c));\r\n}\r\n"],"names":["MSDFTextMaterial","MeshMaterial","FEATURE_TEXT_ATLAS","defineFeature","_atlas","_textColor","_outlineColor","_distanceRange","_atlasSize","_smallGlyphThreshold","_outlineWidth","DRef","Vector3","Float32Array","cullMode","blendMode","atlasTexture","get","tex","set","useFeature","uniformChanged","textColor","value","equalsTo","outlineColor","distanceRange","smallGlyphThreshold","outlineWidth","Math","max","clone","other","copyFrom","vertexShader","scope","pb","$builder","$l","oPos","ShaderHelper","resolveVertexPosition","$inputs","zMSDFUV","vec2","attrib","$outputs","zMSDFLocalPos","xy","worldPos","mul","getWorldMatrix","vec4","xyz","setClipSpacePosition","getViewProjectionMatrix","fragmentShader","needFragmentColor","zMSDFAtlas","tex2D","uniform","zMSDFTextColor","vec3","zMSDFOutlineColor","zMSDFDistanceRange","float","zMSDFAtlasSize","zMSDFSmallGlyphThreshold","zMSDFOutlineWidth","sample","textureSample","msdf","rgb","sdf","a","sd","median3","r","g","b","unitRange","div","screenTexSize","fwidth","screenPxRange","dot","msdfPxDistance","sub","sdfPxDistance","alphaMsdf","clamp","add","alphaSdf","glyphPixelSpan","min","x","y","useSdf","lessThan","alpha","mix","localUnitsPerPixel","outlinePxWidth","outlineAlpha","outlineMaskRaw","hasOutline","greaterThan","outlineMask","finalAlpha","weightedColor","finalColor","outputFragmentColor","applyUniformValues","bindGroup","ctx","pass","setValue","width","height","setTexture","fetchSampler","onDispose","dispose","c"],"mappings":"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"}
1
+ {"version":3,"file":"msdf_text.js","sources":["../../src/material/msdf_text.ts"],"sourcesContent":["import type {\r\n BindGroup,\r\n PBFunctionScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n Texture2D\r\n} from '@zephyr3d/device';\r\nimport { DRef, type Clonable, type Immutable, Vector3 } from '@zephyr3d/base';\r\nimport type { DrawContext } from '../render';\r\nimport { MeshMaterial } from './meshmaterial';\r\nimport { ShaderHelper } from './shader/helper';\r\nimport { fetchSampler } from '../utility/misc';\r\n\r\n/**\r\n * Atlas-based MSDF text material.\r\n *\r\n * @public\r\n */\r\nexport class MSDFTextMaterial extends MeshMaterial implements Clonable<MSDFTextMaterial> {\r\n static FEATURE_TEXT_ATLAS = this.defineFeature();\r\n private _atlas: DRef<Texture2D>;\r\n private _textColor: Vector3;\r\n private _outlineColor: Vector3;\r\n private _distanceRange: number;\r\n private _atlasSize: Float32Array<ArrayBuffer>;\r\n private _smallGlyphThreshold: number;\r\n private _outlineWidth: number;\r\n constructor() {\r\n super();\r\n this._atlas = new DRef();\r\n this._textColor = new Vector3(1, 1, 1);\r\n this._outlineColor = new Vector3(0, 0, 0);\r\n this._distanceRange = 6;\r\n this._atlasSize = new Float32Array([1, 1]);\r\n this._smallGlyphThreshold = 18;\r\n this._outlineWidth = 0;\r\n this.cullMode = 'none';\r\n this.blendMode = 'blend';\r\n }\r\n get atlasTexture() {\r\n return this._atlas.get();\r\n }\r\n set atlasTexture(tex) {\r\n tex = tex ?? null;\r\n if (tex !== this._atlas.get()) {\r\n this._atlas.set(tex);\r\n this.useFeature(MSDFTextMaterial.FEATURE_TEXT_ATLAS, !!tex);\r\n this.uniformChanged();\r\n }\r\n }\r\n get textColor(): Immutable<Vector3> {\r\n return this._textColor;\r\n }\r\n set textColor(value: Immutable<Vector3>) {\r\n if (!this._textColor.equalsTo(value)) {\r\n this._textColor.set(value);\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineColor(): Immutable<Vector3> {\r\n return this._outlineColor;\r\n }\r\n set outlineColor(value: Immutable<Vector3>) {\r\n if (!this._outlineColor.equalsTo(value)) {\r\n this._outlineColor.set(value);\r\n this.uniformChanged();\r\n }\r\n }\r\n get distanceRange() {\r\n return this._distanceRange;\r\n }\r\n set distanceRange(value: number) {\r\n if (this._distanceRange !== value) {\r\n this._distanceRange = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n get smallGlyphThreshold() {\r\n return this._smallGlyphThreshold;\r\n }\r\n set smallGlyphThreshold(value: number) {\r\n if (this._smallGlyphThreshold !== value) {\r\n this._smallGlyphThreshold = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n get outlineWidth() {\r\n return this._outlineWidth;\r\n }\r\n set outlineWidth(value: number) {\r\n value = Math.max(0, value);\r\n if (this._outlineWidth !== value) {\r\n this._outlineWidth = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n clone() {\r\n const other = new MSDFTextMaterial();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.atlasTexture = other.atlasTexture;\r\n this.textColor = other.textColor;\r\n this.outlineColor = other.outlineColor;\r\n this.distanceRange = other.distanceRange;\r\n this.smallGlyphThreshold = other.smallGlyphThreshold;\r\n this.outlineWidth = other.outlineWidth;\r\n this._atlasSize[0] = other._atlasSize[0];\r\n this._atlasSize[1] = other._atlasSize[1];\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n super.vertexShader(scope);\r\n const pb = scope.$builder;\r\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\r\n scope.$inputs.zMSDFUV = pb.vec2().attrib('texCoord0');\r\n scope.$outputs.zMSDFUV = scope.$inputs.zMSDFUV;\r\n scope.$outputs.zMSDFLocalPos = scope.oPos.xy;\r\n scope.$outputs.worldPos = pb.mul(ShaderHelper.getWorldMatrix(scope), pb.vec4(scope.oPos, 1)).xyz;\r\n ShaderHelper.setClipSpacePosition(\r\n scope,\r\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\r\n );\r\n }\r\n fragmentShader(scope: PBFunctionScope) {\r\n super.fragmentShader(scope);\r\n if (this.needFragmentColor()) {\r\n const pb = scope.$builder;\r\n scope.zMSDFAtlas = pb.tex2D().uniform(2);\r\n scope.zMSDFTextColor = pb.vec3().uniform(2);\r\n scope.zMSDFOutlineColor = pb.vec3().uniform(2);\r\n scope.zMSDFDistanceRange = pb.float().uniform(2);\r\n scope.zMSDFAtlasSize = pb.vec2().uniform(2);\r\n scope.zMSDFSmallGlyphThreshold = pb.float().uniform(2);\r\n scope.zMSDFOutlineWidth = pb.float().uniform(2);\r\n scope.$l.msdfSample = pb.textureSample(scope.zMSDFAtlas, scope.$inputs.zMSDFUV);\r\n scope.$l.msdf = scope.msdfSample.rgb;\r\n scope.$l.sdf = scope.msdfSample.a;\r\n scope.$l.sd = median3(pb, scope.msdf.r, scope.msdf.g, scope.msdf.b);\r\n scope.$l.unitRange = pb.div(\r\n pb.vec2(scope.zMSDFDistanceRange),\r\n pb.max(scope.zMSDFAtlasSize, pb.vec2(1))\r\n );\r\n scope.$l.screenTexSize = pb.div(pb.vec2(1), pb.max(pb.fwidth(scope.$inputs.zMSDFUV), pb.vec2(1e-4)));\r\n scope.$l.screenPxRange = pb.max(pb.mul(0.5, pb.dot(scope.unitRange, scope.screenTexSize)), 1);\r\n scope.$l.msdfPxDistance = pb.mul(scope.screenPxRange, pb.sub(scope.sd, 0.5));\r\n scope.$l.sdfPxDistance = pb.mul(scope.screenPxRange, pb.sub(scope.sdf, 0.5));\r\n scope.$l.alphaMsdf = pb.clamp(pb.add(scope.msdfPxDistance, 0.5), 0, 1);\r\n scope.$l.alphaSdf = pb.clamp(pb.add(scope.sdfPxDistance, 0.5), 0, 1);\r\n scope.$l.glyphPixelSpan = pb.min(scope.screenTexSize.x, scope.screenTexSize.y);\r\n scope.$l.useSdf = pb.lessThan(scope.glyphPixelSpan, scope.zMSDFSmallGlyphThreshold);\r\n scope.$l.alpha = pb.mix(scope.alphaMsdf, scope.alphaSdf, pb.float(scope.useSdf));\r\n scope.$l.localUnitsPerPixel = pb.max(\r\n pb.min(pb.fwidth(scope.$inputs.zMSDFLocalPos.x), pb.fwidth(scope.$inputs.zMSDFLocalPos.y)),\r\n 1e-4\r\n );\r\n scope.$l.outlinePxWidth = pb.div(scope.zMSDFOutlineWidth, scope.localUnitsPerPixel);\r\n scope.$l.outlineAlpha = pb.clamp(pb.add(scope.sdfPxDistance, pb.add(0.5, scope.outlinePxWidth)), 0, 1);\r\n scope.$l.outlineMaskRaw = pb.max(pb.sub(scope.outlineAlpha, scope.alpha), 0);\r\n scope.$l.hasOutline = pb.greaterThan(scope.zMSDFOutlineWidth, 1e-4);\r\n scope.$l.outlineMask = pb.mul(scope.outlineMaskRaw, pb.float(scope.hasOutline));\r\n scope.$l.finalAlpha = pb.clamp(pb.add(scope.alpha, scope.outlineMask), 0, 1);\r\n scope.$l.weightedColor = pb.add(\r\n pb.mul(scope.zMSDFTextColor, scope.alpha),\r\n pb.mul(scope.zMSDFOutlineColor, scope.outlineMask)\r\n );\r\n scope.$l.finalColor = pb.div(scope.weightedColor, pb.max(scope.finalAlpha, 1e-4));\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, pb.vec4(scope.finalColor, scope.finalAlpha));\r\n } else {\r\n this.outputFragmentColor(scope, scope.$inputs.worldPos, null);\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) && this.atlasTexture) {\r\n bindGroup.setValue('zMSDFTextColor', this._textColor);\r\n bindGroup.setValue('zMSDFOutlineColor', this._outlineColor);\r\n bindGroup.setValue('zMSDFDistanceRange', this._distanceRange);\r\n this._atlasSize[0] = this.atlasTexture.width;\r\n this._atlasSize[1] = this.atlasTexture.height;\r\n bindGroup.setValue('zMSDFAtlasSize', this._atlasSize);\r\n bindGroup.setValue('zMSDFSmallGlyphThreshold', this._smallGlyphThreshold);\r\n bindGroup.setValue('zMSDFOutlineWidth', this._outlineWidth);\r\n bindGroup.setTexture('zMSDFAtlas', this.atlasTexture, fetchSampler('clamp_linear'));\r\n }\r\n }\r\n protected onDispose() {\r\n super.onDispose();\r\n this._atlas.dispose();\r\n }\r\n}\r\n\r\nfunction median3(pb: PBInsideFunctionScope['$builder'], a: PBShaderExp, b: PBShaderExp, c: PBShaderExp) {\r\n return pb.sub(pb.sub(pb.add(a, b, c), pb.min(pb.min(a, b), c)), pb.max(pb.max(a, b), c));\r\n}\r\n"],"names":["MSDFTextMaterial","MeshMaterial","FEATURE_TEXT_ATLAS","defineFeature","_atlas","_textColor","_outlineColor","_distanceRange","_atlasSize","_smallGlyphThreshold","_outlineWidth","DRef","Vector3","Float32Array","cullMode","blendMode","atlasTexture","get","tex","set","useFeature","uniformChanged","textColor","value","equalsTo","outlineColor","distanceRange","smallGlyphThreshold","outlineWidth","Math","max","clone","other","copyFrom","vertexShader","scope","pb","$builder","$l","oPos","ShaderHelper","resolveVertexPosition","$inputs","zMSDFUV","vec2","attrib","$outputs","zMSDFLocalPos","xy","worldPos","mul","getWorldMatrix","vec4","xyz","setClipSpacePosition","getViewProjectionMatrix","fragmentShader","needFragmentColor","zMSDFAtlas","tex2D","uniform","zMSDFTextColor","vec3","zMSDFOutlineColor","zMSDFDistanceRange","float","zMSDFAtlasSize","zMSDFSmallGlyphThreshold","zMSDFOutlineWidth","msdfSample","textureSample","msdf","rgb","sdf","a","sd","median3","r","g","b","unitRange","div","screenTexSize","fwidth","screenPxRange","dot","msdfPxDistance","sub","sdfPxDistance","alphaMsdf","clamp","add","alphaSdf","glyphPixelSpan","min","x","y","useSdf","lessThan","alpha","mix","localUnitsPerPixel","outlinePxWidth","outlineAlpha","outlineMaskRaw","hasOutline","greaterThan","outlineMask","finalAlpha","weightedColor","finalColor","outputFragmentColor","applyUniformValues","bindGroup","ctx","pass","setValue","width","height","setTexture","fetchSampler","onDispose","dispose","c"],"mappings":"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"}
@@ -2,10 +2,10 @@ import { ShaderHelper } from './shader/helper.js';
2
2
  import { MeshMaterial } from './meshmaterial.js';
3
3
  import { MSDFTextMaterial } from './msdf_text.js';
4
4
 
5
- /**
6
- * Billboard MSDF text material.
7
- *
8
- * @public
5
+ /**
6
+ * Billboard MSDF text material.
7
+ *
8
+ * @public
9
9
  */ class MSDFTextSpriteMaterial extends MSDFTextMaterial {
10
10
  _rotation;
11
11
  constructor(){
@@ -1 +1 @@
1
- {"version":3,"file":"msdf_text_sprite.js","sources":["../../src/material/msdf_text_sprite.ts"],"sourcesContent":["import type { BindGroup, PBFunctionScope } from '@zephyr3d/device';\nimport type { Clonable } from '@zephyr3d/base';\nimport { ShaderHelper } from './shader/helper';\nimport { MeshMaterial } from './meshmaterial';\nimport { MSDFTextMaterial } from './msdf_text';\nimport type { DrawContext } from '../render';\n\n/**\n * Billboard MSDF text material.\n *\n * @public\n */\nexport class MSDFTextSpriteMaterial extends MSDFTextMaterial implements Clonable<MSDFTextSpriteMaterial> {\n private _rotation: number;\n constructor() {\n super();\n this._rotation = 0;\n }\n get rotation() {\n return this._rotation;\n }\n set rotation(value: number) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.uniformChanged();\n }\n }\n clone() {\n const other = new MSDFTextSpriteMaterial();\n other.copyFrom(this);\n return other;\n }\n copyFrom(other: this) {\n super.copyFrom(other);\n this.rotation = other.rotation;\n }\n vertexShader(scope: PBFunctionScope) {\n MeshMaterial.prototype.vertexShader.call(this, scope);\n const pb = scope.$builder;\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\n scope.$inputs.zMSDFUV = pb.vec2().attrib('texCoord0');\n scope.$outputs.zMSDFUV = scope.$inputs.zMSDFUV;\n scope.$outputs.zMSDFLocalPos = scope.oPos.xy;\n scope.zMSDFSpriteRotation = pb.float().uniform(2);\n scope.$l.worldPos = ShaderHelper.getWorldMatrix(scope)[3].xyz;\n scope.$l.scaleX = pb.sqrt(\n pb.dot(ShaderHelper.getWorldMatrix(scope)[0].xyz, ShaderHelper.getWorldMatrix(scope)[0].xyz)\n );\n scope.$l.scaleY = pb.sqrt(\n pb.dot(ShaderHelper.getWorldMatrix(scope)[1].xyz, ShaderHelper.getWorldMatrix(scope)[1].xyz)\n );\n scope.$l.localPos = scope.oPos.xy;\n const viewMatrix = ShaderHelper.getViewMatrix(scope);\n scope.$l.forward = pb.vec3(viewMatrix[0].z, viewMatrix[1].z, viewMatrix[2].z);\n scope.$l.axis = scope.$choice(\n pb.lessThan(pb.abs(scope.forward.y), 0.999),\n pb.vec3(0, 1, 0),\n pb.vec3(1, 0, 0)\n );\n scope.$l.right = pb.normalize(pb.cross(scope.axis, scope.forward));\n scope.$l.up = pb.normalize(pb.cross(scope.forward, scope.right));\n scope.$l.c = pb.cos(scope.zMSDFSpriteRotation);\n scope.$l.s = pb.sin(scope.zMSDFSpriteRotation);\n scope.$l.rightRot = pb.add(pb.mul(scope.up, scope.s), pb.mul(scope.right, scope.c));\n scope.$l.upRot = pb.sub(pb.mul(scope.up, scope.c), pb.mul(scope.right, scope.s));\n scope.$outputs.worldPos = pb.add(\n scope.worldPos,\n pb.mul(scope.rightRot, pb.mul(scope.localPos.x, scope.scaleX)),\n pb.mul(scope.upRot, pb.mul(scope.localPos.y, scope.scaleY))\n );\n ShaderHelper.setClipSpacePosition(\n scope,\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\n );\n }\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\n super.applyUniformValues(bindGroup, ctx, pass);\n bindGroup.setValue('zMSDFSpriteRotation', this._rotation);\n }\n}\n"],"names":["MSDFTextSpriteMaterial","MSDFTextMaterial","_rotation","rotation","value","uniformChanged","clone","other","copyFrom","vertexShader","scope","MeshMaterial","prototype","call","pb","$builder","$l","oPos","ShaderHelper","resolveVertexPosition","$inputs","zMSDFUV","vec2","attrib","$outputs","zMSDFLocalPos","xy","zMSDFSpriteRotation","float","uniform","worldPos","getWorldMatrix","xyz","scaleX","sqrt","dot","scaleY","localPos","viewMatrix","getViewMatrix","forward","vec3","z","axis","$choice","lessThan","abs","y","right","normalize","cross","up","c","cos","s","sin","rightRot","add","mul","upRot","sub","x","setClipSpacePosition","getViewProjectionMatrix","vec4","applyUniformValues","bindGroup","ctx","pass","setValue"],"mappings":"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"}
1
+ {"version":3,"file":"msdf_text_sprite.js","sources":["../../src/material/msdf_text_sprite.ts"],"sourcesContent":["import type { BindGroup, PBFunctionScope } from '@zephyr3d/device';\r\nimport type { Clonable } from '@zephyr3d/base';\r\nimport { ShaderHelper } from './shader/helper';\r\nimport { MeshMaterial } from './meshmaterial';\r\nimport { MSDFTextMaterial } from './msdf_text';\r\nimport type { DrawContext } from '../render';\r\n\r\n/**\r\n * Billboard MSDF text material.\r\n *\r\n * @public\r\n */\r\nexport class MSDFTextSpriteMaterial extends MSDFTextMaterial implements Clonable<MSDFTextSpriteMaterial> {\r\n private _rotation: number;\r\n constructor() {\r\n super();\r\n this._rotation = 0;\r\n }\r\n get rotation() {\r\n return this._rotation;\r\n }\r\n set rotation(value: number) {\r\n if (this._rotation !== value) {\r\n this._rotation = value;\r\n this.uniformChanged();\r\n }\r\n }\r\n clone() {\r\n const other = new MSDFTextSpriteMaterial();\r\n other.copyFrom(this);\r\n return other;\r\n }\r\n copyFrom(other: this) {\r\n super.copyFrom(other);\r\n this.rotation = other.rotation;\r\n }\r\n vertexShader(scope: PBFunctionScope) {\r\n MeshMaterial.prototype.vertexShader.call(this, scope);\r\n const pb = scope.$builder;\r\n scope.$l.oPos = ShaderHelper.resolveVertexPosition(scope);\r\n scope.$inputs.zMSDFUV = pb.vec2().attrib('texCoord0');\r\n scope.$outputs.zMSDFUV = scope.$inputs.zMSDFUV;\r\n scope.$outputs.zMSDFLocalPos = scope.oPos.xy;\r\n scope.zMSDFSpriteRotation = pb.float().uniform(2);\r\n scope.$l.worldPos = ShaderHelper.getWorldMatrix(scope)[3].xyz;\r\n scope.$l.scaleX = pb.sqrt(\r\n pb.dot(ShaderHelper.getWorldMatrix(scope)[0].xyz, ShaderHelper.getWorldMatrix(scope)[0].xyz)\r\n );\r\n scope.$l.scaleY = pb.sqrt(\r\n pb.dot(ShaderHelper.getWorldMatrix(scope)[1].xyz, ShaderHelper.getWorldMatrix(scope)[1].xyz)\r\n );\r\n scope.$l.localPos = scope.oPos.xy;\r\n const viewMatrix = ShaderHelper.getViewMatrix(scope);\r\n scope.$l.forward = pb.vec3(viewMatrix[0].z, viewMatrix[1].z, viewMatrix[2].z);\r\n scope.$l.axis = scope.$choice(\r\n pb.lessThan(pb.abs(scope.forward.y), 0.999),\r\n pb.vec3(0, 1, 0),\r\n pb.vec3(1, 0, 0)\r\n );\r\n scope.$l.right = pb.normalize(pb.cross(scope.axis, scope.forward));\r\n scope.$l.up = pb.normalize(pb.cross(scope.forward, scope.right));\r\n scope.$l.c = pb.cos(scope.zMSDFSpriteRotation);\r\n scope.$l.s = pb.sin(scope.zMSDFSpriteRotation);\r\n scope.$l.rightRot = pb.add(pb.mul(scope.up, scope.s), pb.mul(scope.right, scope.c));\r\n scope.$l.upRot = pb.sub(pb.mul(scope.up, scope.c), pb.mul(scope.right, scope.s));\r\n scope.$outputs.worldPos = pb.add(\r\n scope.worldPos,\r\n pb.mul(scope.rightRot, pb.mul(scope.localPos.x, scope.scaleX)),\r\n pb.mul(scope.upRot, pb.mul(scope.localPos.y, scope.scaleY))\r\n );\r\n ShaderHelper.setClipSpacePosition(\r\n scope,\r\n pb.mul(ShaderHelper.getViewProjectionMatrix(scope), pb.vec4(scope.$outputs.worldPos, 1))\r\n );\r\n }\r\n applyUniformValues(bindGroup: BindGroup, ctx: DrawContext, pass: number) {\r\n super.applyUniformValues(bindGroup, ctx, pass);\r\n bindGroup.setValue('zMSDFSpriteRotation', this._rotation);\r\n }\r\n}\r\n"],"names":["MSDFTextSpriteMaterial","MSDFTextMaterial","_rotation","rotation","value","uniformChanged","clone","other","copyFrom","vertexShader","scope","MeshMaterial","prototype","call","pb","$builder","$l","oPos","ShaderHelper","resolveVertexPosition","$inputs","zMSDFUV","vec2","attrib","$outputs","zMSDFLocalPos","xy","zMSDFSpriteRotation","float","uniform","worldPos","getWorldMatrix","xyz","scaleX","sqrt","dot","scaleY","localPos","viewMatrix","getViewMatrix","forward","vec3","z","axis","$choice","lessThan","abs","y","right","normalize","cross","up","c","cos","s","sin","rightRot","add","mul","upRot","sub","x","setClipSpacePosition","getViewProjectionMatrix","vec4","applyUniformValues","bindGroup","ctx","pass","setValue"],"mappings":"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"}
@@ -12,24 +12,24 @@ const PBR_REFLECTION_MODE = {
12
12
  anisotropic: 2,
13
13
  glint: 3
14
14
  };
15
- /**
16
- * Physically-based rendering material driven by blueprint graphs.
17
- *
18
- * @remarks
19
- * This material extends {@link MeshMaterial} with PBR behavior via
20
- * {@link mixinPBRBluePrint}, and uses {@link MaterialBlueprintIR}
21
- * graphs for both vertex and fragment stages.
22
- *
23
- * - The **vertex blueprint IR** (`vertexIR`) controls vertex
24
- * transformations and per-vertex data.
25
- * - The **fragment blueprint IR** (`fragmentIR`) produces inputs
26
- * for the PBR shading model (albedo, roughness, metalness, etc.).
27
- *
28
- * Uniform values and textures for the blueprints are provided via
29
- * {@link PBRBluePrintMaterial.uniformValues} and
30
- * {@link PBRBluePrintMaterial.uniformTextures}.
31
- *
32
- * @public
15
+ /**
16
+ * Physically-based rendering material driven by blueprint graphs.
17
+ *
18
+ * @remarks
19
+ * This material extends {@link MeshMaterial} with PBR behavior via
20
+ * {@link mixinPBRBluePrint}, and uses {@link MaterialBlueprintIR}
21
+ * graphs for both vertex and fragment stages.
22
+ *
23
+ * - The **vertex blueprint IR** (`vertexIR`) controls vertex
24
+ * transformations and per-vertex data.
25
+ * - The **fragment blueprint IR** (`fragmentIR`) produces inputs
26
+ * for the PBR shading model (albedo, roughness, metalness, etc.).
27
+ *
28
+ * Uniform values and textures for the blueprints are provided via
29
+ * {@link PBRBluePrintMaterial.uniformValues} and
30
+ * {@link PBRBluePrintMaterial.uniformTextures}.
31
+ *
32
+ * @public
33
33
  */ class PBRBluePrintMaterial extends applyMaterialMixins(MeshMaterial, mixinPBRBluePrint) {
34
34
  /** @internal */ static FEATURE_VERTEX_COLOR = this.defineFeature();
35
35
  /** @internal */ static FEATURE_VERTEX_UV = this.defineFeature();
@@ -46,15 +46,15 @@ const PBR_REFLECTION_MODE = {
46
46
  /** @internal */ _anisotropy;
47
47
  /** @internal */ _anisotropyDirection;
48
48
  /** @internal */ _anisotropyDirectionScaleBias;
49
- /**
50
- * Creates a new {@link PBRBluePrintMaterial} instance.
51
- *
52
- * @param irFrag - Optional fragment blueprint IR. If omitted, a default
53
- * IR containing a single {@link PBRBlockNode} is created.
54
- * @param irVertex - Optional vertex blueprint IR. If omitted, a default
55
- * IR containing a single {@link VertexBlockNode} is created.
56
- * @param uniformValues - Optional initial list of uniform value descriptors.
57
- * @param uniformTextures - Optional initial list of texture uniform descriptors.
49
+ /**
50
+ * Creates a new {@link PBRBluePrintMaterial} instance.
51
+ *
52
+ * @param irFrag - Optional fragment blueprint IR. If omitted, a default
53
+ * IR containing a single {@link PBRBlockNode} is created.
54
+ * @param irVertex - Optional vertex blueprint IR. If omitted, a default
55
+ * IR containing a single {@link VertexBlockNode} is created.
56
+ * @param uniformValues - Optional initial list of uniform value descriptors.
57
+ * @param uniformTextures - Optional initial list of texture uniform descriptors.
58
58
  */ constructor(irFrag, irVertex, uniformValues, uniformTextures){
59
59
  super();
60
60
  this._irFrag = irFrag ?? new MaterialBlueprintIR({
@@ -206,8 +206,8 @@ const PBR_REFLECTION_MODE = {
206
206
  this.uniformChanged();
207
207
  }
208
208
  }
209
- /**
210
- * Gets the fragment blueprint IR.
209
+ /**
210
+ * Gets the fragment blueprint IR.
211
211
  */ get fragmentIR() {
212
212
  return this._irFrag;
213
213
  }
@@ -218,8 +218,8 @@ const PBR_REFLECTION_MODE = {
218
218
  this.optionChanged(true);
219
219
  }
220
220
  }
221
- /**
222
- * Gets the vertex blueprint IR.
221
+ /**
222
+ * Gets the vertex blueprint IR.
223
223
  */ get vertexIR() {
224
224
  return this._irVertex;
225
225
  }
@@ -232,8 +232,8 @@ const PBR_REFLECTION_MODE = {
232
232
  this.optionChanged(true);
233
233
  }
234
234
  }
235
- /**
236
- * Gets the list of uniform value descriptors used by the blueprints.
235
+ /**
236
+ * Gets the list of uniform value descriptors used by the blueprints.
237
237
  */ get uniformValues() {
238
238
  return this._uniformValues;
239
239
  }
@@ -243,8 +243,8 @@ const PBR_REFLECTION_MODE = {
243
243
  }));
244
244
  this.uniformChanged();
245
245
  }
246
- /**
247
- * Gets the list of texture uniform descriptors used by the blueprints.
246
+ /**
247
+ * Gets the list of texture uniform descriptors used by the blueprints.
248
248
  */ get uniformTextures() {
249
249
  return this._uniformTextures;
250
250
  }
@@ -273,15 +273,15 @@ const PBR_REFLECTION_MODE = {
273
273
  this.uniformChanged();
274
274
  }
275
275
  }
276
- /**
277
- * Creates a deep copy of this material.
278
- *
279
- * @remarks
280
- * The clone shares the same vertex/fragment IR references and copies
281
- * the current blueprint uniform descriptors, then calls `copyFrom`
282
- * to copy base-class and mixin state.
283
- *
284
- * @returns A new {@link PBRBluePrintMaterial} instance.
276
+ /**
277
+ * Creates a deep copy of this material.
278
+ *
279
+ * @remarks
280
+ * The clone shares the same vertex/fragment IR references and copies
281
+ * the current blueprint uniform descriptors, then calls `copyFrom`
282
+ * to copy base-class and mixin state.
283
+ *
284
+ * @returns A new {@link PBRBluePrintMaterial} instance.
285
285
  */ clone() {
286
286
  const other = new PBRBluePrintMaterial(this._irFrag, this._irVertex, this._uniformValues, this._uniformTextures);
287
287
  other.copyFrom(this);
@@ -299,10 +299,10 @@ const PBR_REFLECTION_MODE = {
299
299
  this.anisotropyDirection = other.anisotropyDirection;
300
300
  this.anisotropyDirectionScaleBias = other.anisotropyDirectionScaleBias;
301
301
  }
302
- /**
303
- * Builds the vertex shader for this PBR blueprint material.
304
- *
305
- * @param scope - The current vertex shader function scope.
302
+ /**
303
+ * Builds the vertex shader for this PBR blueprint material.
304
+ *
305
+ * @param scope - The current vertex shader function scope.
306
306
  */ vertexShader(scope) {
307
307
  super.vertexShader(scope);
308
308
  const pb = scope.$builder;
@@ -349,10 +349,10 @@ const PBR_REFLECTION_MODE = {
349
349
  }
350
350
  }
351
351
  }
352
- /**
353
- * Builds the fragment shader for this PBR blueprint material.
354
- *
355
- * @param scope - The current fragment shader function scope.
352
+ /**
353
+ * Builds the fragment shader for this PBR blueprint material.
354
+ *
355
+ * @param scope - The current fragment shader function scope.
356
356
  */ fragmentShader(scope) {
357
357
  super.fragmentShader(scope);
358
358
  const pb = scope.$builder;
@@ -400,17 +400,17 @@ const PBR_REFLECTION_MODE = {
400
400
  this.outputFragmentColor(scope, scope.$inputs.worldPos, null);
401
401
  }
402
402
  }
403
- /**
404
- * Applies runtime uniform values and textures to the given bind group.
405
- *
406
- * @remarks
407
- * - Calls the base implementation first to bind standard mesh/PBR uniforms.
408
- * - If fragment color is needed for the current context, all blueprint
409
- * scalar/vector uniform values and textures are then bound by name.
410
- *
411
- * @param bindGroup - The bind group to which material resources are bound.
412
- * @param ctx - The current draw context.
413
- * @param pass - Index of the active render pass.
403
+ /**
404
+ * Applies runtime uniform values and textures to the given bind group.
405
+ *
406
+ * @remarks
407
+ * - Calls the base implementation first to bind standard mesh/PBR uniforms.
408
+ * - If fragment color is needed for the current context, all blueprint
409
+ * scalar/vector uniform values and textures are then bound by name.
410
+ *
411
+ * @param bindGroup - The bind group to which material resources are bound.
412
+ * @param ctx - The current draw context.
413
+ * @param pass - Index of the active render pass.
414
414
  */ applyUniformValues(bindGroup, ctx, pass) {
415
415
  super.applyUniformValues(bindGroup, ctx, pass);
416
416
  if (this.needFragmentColor(ctx)) {
@@ -436,60 +436,60 @@ const PBR_REFLECTION_MODE = {
436
436
  }
437
437
  }
438
438
  }
439
- /**
440
- * Creates a unique hash string used for program caching.
441
- *
442
- * @remarks
443
- * The hash includes:
444
- * - The base material hash (`super._createHash()`).
445
- * - The fragment IR hash.
446
- * - The vertex IR hash.
447
- *
448
- * Different blueprint graphs will therefore produce different programs.
449
- *
450
- * @returns A hash string that uniquely identifies this material configuration.
439
+ /**
440
+ * Creates a unique hash string used for program caching.
441
+ *
442
+ * @remarks
443
+ * The hash includes:
444
+ * - The base material hash (`super._createHash()`).
445
+ * - The fragment IR hash.
446
+ * - The vertex IR hash.
447
+ *
448
+ * Different blueprint graphs will therefore produce different programs.
449
+ *
450
+ * @returns A hash string that uniquely identifies this material configuration.
451
451
  */ _createHash() {
452
452
  return `${super._createHash()}:${this._irFrag.hash}:${this._irVertex.hash}`;
453
453
  }
454
- /**
455
- * Creates the GPU program for this blueprint PBR material.
456
- *
457
- * @remarks
458
- * This calls the base implementation and returns its result.
459
- * Commented-out `console.log` lines are provided for debugging the
460
- * generated vertex and fragment shader sources.
461
- *
462
- * @param ctx - The current draw context.
463
- * @param pass - Index of the active render pass.
464
- * @returns The created GPU program.
454
+ /**
455
+ * Creates the GPU program for this blueprint PBR material.
456
+ *
457
+ * @remarks
458
+ * This calls the base implementation and returns its result.
459
+ * Commented-out `console.log` lines are provided for debugging the
460
+ * generated vertex and fragment shader sources.
461
+ *
462
+ * @param ctx - The current draw context.
463
+ * @param pass - Index of the active render pass.
464
+ * @returns The created GPU program.
465
465
  */ createProgram(ctx, pass) {
466
466
  const program = super.createProgram(ctx, pass);
467
467
  //console.log(program.getShaderSource('vertex'));
468
468
  //console.log(program.getShaderSource('fragment'));
469
469
  return program;
470
470
  }
471
- /**
472
- * Disposes resources associated with this material.
473
- *
474
- * @remarks
475
- * - Calls the base `onDispose` to clean up inherited resources.
476
- * - Disposes all `finalTexture` references from the blueprint
477
- * texture uniform descriptors.
478
- *
479
- * This method is intended to be called by the engine's resource
480
- * management system rather than directly by user code.
471
+ /**
472
+ * Disposes resources associated with this material.
473
+ *
474
+ * @remarks
475
+ * - Calls the base `onDispose` to clean up inherited resources.
476
+ * - Disposes all `finalTexture` references from the blueprint
477
+ * texture uniform descriptors.
478
+ *
479
+ * This method is intended to be called by the engine's resource
480
+ * management system rather than directly by user code.
481
481
  */ onDispose() {
482
482
  super.onDispose();
483
483
  for (const u of this._uniformTextures){
484
484
  u.finalTexture.dispose();
485
485
  }
486
486
  }
487
- /**
488
- * Retrieves a named output expression from a blueprint output list.
489
- *
490
- * @param outputs - The list of outputs generated by a blueprint graph.
491
- * @param name - The desired output name (e.g. `"Position"`, `"Color"`, `"UV"`).
492
- * @returns The expression associated with the given name, or `undefined` if not found.
487
+ /**
488
+ * Retrieves a named output expression from a blueprint output list.
489
+ *
490
+ * @param outputs - The list of outputs generated by a blueprint graph.
491
+ * @param name - The desired output name (e.g. `"Position"`, `"Color"`, `"UV"`).
492
+ * @returns The expression associated with the given name, or `undefined` if not found.
493
493
  */ getOutput(outputs, name) {
494
494
  return outputs.find((output)=>output.name === name)?.exp;
495
495
  }