@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"sky.js","sources":["../../../src/render/sky.ts"],"sourcesContent":["import { Application } from '../app/app';\r\nimport { linearToGamma } from '../shaders/misc';\r\nimport type { AtmosphereParams } from '../shaders';\r\nimport {\r\n getDefaultAtmosphereParams,\r\n getAerialPerspectiveLut,\r\n getAtmosphereParamsStruct,\r\n getSkyViewLut,\r\n getTransmittanceLut,\r\n renderAtmosphereLUTs,\r\n skyBox,\r\n smoothNoise3D,\r\n createTransmittanceLutProgram,\r\n createMultiScatteringLutProgram,\r\n createSkyViewLutProgram,\r\n createAPLutProgram,\r\n atmosphereLUTRendered\r\n} from '../shaders';\r\nimport { DRef, Quaternion, Vector3 } from '@zephyr3d/base';\r\nimport { CubeFace, Matrix4x4, Vector2, Vector4 } from '@zephyr3d/base';\r\nimport { Primitive } from './primitive';\r\nimport { BoxShape } from '../shapes';\r\nimport { Camera } from '../camera/camera';\r\nimport { prefilterCubemap } from '../utility/pmrem';\r\nimport type { DirectionalLight } from '../scene';\r\nimport type { BaseTexture, GPUDataBuffer, Texture2D } from '@zephyr3d/device';\r\nimport {\r\n type AbstractDevice,\r\n type BindGroup,\r\n type FrameBuffer,\r\n type GPUProgram,\r\n type RenderStateSet,\r\n type TextureCube,\r\n type TextureFormat,\r\n type VertexLayout\r\n} from '@zephyr3d/device';\r\nimport type { DrawContext } from './drawable';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { fetchSampler } from '../utility/misc';\r\nimport { CubemapSHProjector } from '../utility/shprojector';\r\nimport { Fog, uniformSphereSamples } from '../values';\r\nimport type { HeightFogParams } from '../shaders/fog';\r\nimport { calculateFog, getDefaultHeightFogParams, getHeightFogParamsStruct } from '../shaders/fog';\r\n\r\n/**\r\n * Type of sky\r\n *\r\n * @remarks\r\n * none - Sky will not be rendered\r\n * color - Sky will be rendered with a solid color.\r\n * skybox - Sky will be rendered as box using a preloaded cube texture.\r\n * scatter - Render dynamic sky with atmospheric scattering.\r\n *\r\n * @public\r\n */\r\nexport type SkyType = 'color' | 'skybox' | 'scatter' | 'none';\r\n\r\n/**\r\n * Type of fog\r\n * @public\r\n */\r\nexport type FogType = 'height_fog' | 'none';\r\n\r\nconst fogTypeMap: Record<FogType, number> = {\r\n height_fog: Fog.FOG_TYPE_HEIGHT,\r\n none: Fog.FOG_TYPE_NONE\r\n};\r\n\r\nconst defaultSkyWorldMatrix = Matrix4x4.identity();\r\n\r\n/**\r\n * The sky renderer\r\n * @public\r\n */\r\nexport class SkyRenderer {\r\n private static readonly _skyCamera = (() => {\r\n const camera = new Camera(null);\r\n camera.setPerspective(Math.PI / 2, 1, 1, 20);\r\n return camera;\r\n })();\r\n private static transmittanceLutProgram: GPUProgram = null;\r\n private static multiScatteringLutProgram: GPUProgram = null;\r\n private static skyViewLutProgram: GPUProgram = null;\r\n private static APLutProgram: GPUProgram = null;\r\n private static readonly _programSky: Partial<Record<SkyType, GPUProgram>> = {};\r\n private static _programDistantLight: GPUProgram = null;\r\n private static _programFog: GPUProgram = null;\r\n private static _vertexLayout: VertexLayout = null;\r\n private static _primitiveSky: Primitive = null;\r\n private static _primitiveDistantLight: Primitive = null;\r\n private static _renderStatesSky: RenderStateSet = null;\r\n private static _renderStatesSkyNoDepthTest: RenderStateSet = null;\r\n private static _renderStatesFog: RenderStateSet = null;\r\n private static _renderStatesFogScatter: RenderStateSet = null;\r\n private static _renderStatesDistantLight: RenderStateSet = null;\r\n private _skyType: SkyType;\r\n private readonly _skyColor: Vector4;\r\n private _bakedSkyboxDirty: boolean;\r\n private readonly _scatterSkyboxTextureWidth: number;\r\n private readonly _skyboxTexture: DRef<TextureCube>;\r\n private readonly _bakedSkyboxTexture: DRef<TextureCube>;\r\n private readonly _bakedSkyboxFrameBuffer: DRef<FrameBuffer>;\r\n private readonly _radianceMap: DRef<TextureCube>;\r\n private readonly _radianceFrameBuffer: DRef<FrameBuffer>;\r\n private readonly _irradianceMap: DRef<TextureCube>;\r\n private readonly _irradianceSH: DRef<GPUDataBuffer>;\r\n private readonly _irradianceSHFB: DRef<FrameBuffer>;\r\n private readonly _skyDistantLightLut: DRef<FrameBuffer>;\r\n private readonly _irradianceFrameBuffer: DRef<FrameBuffer>;\r\n private readonly _radianceMapWidth: number;\r\n private readonly _irradianceMapWidth: number;\r\n private readonly _atmosphereParams: AtmosphereParams;\r\n private _atmosphereExposure: number;\r\n private _fogType: FogType;\r\n private readonly _heightFogParams: HeightFogParams;\r\n private _cloudy: number;\r\n private _cloudIntensity: number;\r\n private _debugAerialPerspective: number;\r\n private readonly _wind: Vector2;\r\n private _skyWorldMatrix: Matrix4x4;\r\n private readonly _lastSunDir: Vector3;\r\n private readonly _lastSunColor: Vector4;\r\n private _panoramaAsset: string;\r\n private readonly _shProjector: CubemapSHProjector;\r\n private readonly _shWindowWeights: Vector3;\r\n private _radianceConvSamples: number;\r\n private _irradianceConvSamples: number;\r\n private readonly _bindgroupDistantLight: DRef<BindGroup> = null;\r\n private _bindgroupSky: Partial<Record<SkyType, DRef<BindGroup>>> = {};\r\n private readonly _bindgroupFog: DRef<BindGroup> = null;\r\n /**\r\n * Creates an instance of SkyRenderer\r\n */\r\n constructor() {\r\n this._skyType = 'scatter';\r\n this._skyColor = Vector4.zero();\r\n this._skyboxTexture = new DRef();\r\n this._bakedSkyboxTexture = new DRef();\r\n this._bakedSkyboxFrameBuffer = new DRef();\r\n this._bakedSkyboxDirty = true;\r\n this._scatterSkyboxTextureWidth = 256;\r\n this._radianceMap = new DRef();\r\n this._radianceFrameBuffer = new DRef();\r\n this._radianceMapWidth = 128;\r\n this._irradianceMap = new DRef();\r\n this._irradianceSH = new DRef();\r\n this._irradianceSHFB = new DRef();\r\n this._skyDistantLightLut = new DRef();\r\n this._irradianceFrameBuffer = new DRef();\r\n this._irradianceMapWidth = 64;\r\n this._atmosphereParams = getDefaultAtmosphereParams();\r\n this._atmosphereExposure = 1;\r\n this._debugAerialPerspective = 0;\r\n this._fogType = 'none';\r\n this._heightFogParams = getDefaultHeightFogParams();\r\n this._cloudy = 0.45;\r\n this._cloudIntensity = 15;\r\n this._wind = new Vector2(0, 0);\r\n this._skyWorldMatrix = defaultSkyWorldMatrix;\r\n this._lastSunDir = SkyRenderer._getSunDir(null);\r\n this._lastSunColor = SkyRenderer._getSunColor(null);\r\n this._panoramaAsset = '';\r\n this._shProjector = new CubemapSHProjector(10000);\r\n this._shWindowWeights = new Vector3(1, 0.8, 0.6);\r\n this._radianceConvSamples = 64;\r\n this._irradianceConvSamples = 256;\r\n this._bindgroupDistantLight = new DRef();\r\n this._bindgroupSky = {};\r\n this._bindgroupFog = new DRef();\r\n }\r\n /** @internal */\r\n dispose() {\r\n this._skyboxTexture.dispose();\r\n this._bakedSkyboxTexture.dispose();\r\n this._bakedSkyboxFrameBuffer.dispose();\r\n this._radianceMap.dispose();\r\n this._radianceFrameBuffer.dispose();\r\n this._irradianceMap.dispose();\r\n this._irradianceSH.dispose();\r\n this._irradianceSHFB.dispose();\r\n this._irradianceFrameBuffer.dispose();\r\n this._shProjector.dispose();\r\n if (this._skyDistantLightLut.get()) {\r\n this._skyDistantLightLut.get().getColorAttachments()[0].dispose();\r\n this._skyDistantLightLut.dispose();\r\n }\r\n this._bindgroupDistantLight.dispose();\r\n for (const k in this._bindgroupSky) {\r\n this._bindgroupSky[k].dispose();\r\n }\r\n this._bindgroupSky = {};\r\n this._bindgroupFog.dispose();\r\n }\r\n /** @internal */\r\n getHash(_ctx: DrawContext): string {\r\n return `${this.skyType}:${this.fogType}`;\r\n }\r\n /** Which type of the sky should be rendered */\r\n get skyType(): SkyType {\r\n return this._skyType;\r\n }\r\n set skyType(val: SkyType) {\r\n if (val !== this._skyType) {\r\n this._skyType = val;\r\n this.invalidate();\r\n }\r\n }\r\n /** @internal */\r\n get panoramaTextureAsset() {\r\n return this._panoramaAsset;\r\n }\r\n set panoramaTextureAsset(id: string) {\r\n this._panoramaAsset = id;\r\n }\r\n /** Whether ground should be rendered */\r\n /** Baked sky texture */\r\n getBakedSkyTexture(ctx: DrawContext): TextureCube {\r\n if (this._bakedSkyboxDirty) {\r\n this.update(ctx);\r\n }\r\n return this._bakedSkyboxTexture.get();\r\n }\r\n /**\r\n * The solid sky color\r\n */\r\n get skyColor(): Vector4 {\r\n return this._skyColor;\r\n }\r\n set skyColor(val: Vector4) {\r\n if (!val.equalsTo(this._skyColor)) {\r\n this._skyColor.set(val);\r\n this.invalidate();\r\n }\r\n }\r\n /**\r\n * Window weights for SH projection\r\n */\r\n get shWindowWeights(): Vector3 {\r\n return this._shWindowWeights;\r\n }\r\n set shWindowWeights(weights: Vector3) {\r\n this._shWindowWeights.set(weights);\r\n this.invalidate();\r\n }\r\n /**\r\n * Sample count for radiance convolution\r\n */\r\n get radianceConvSamples() {\r\n return this._radianceConvSamples;\r\n }\r\n set radianceConvSamples(val: number) {\r\n if (val !== this._radianceConvSamples) {\r\n this._radianceConvSamples = val;\r\n this.invalidate();\r\n }\r\n }\r\n /**\r\n * Sample count for irradiance convolution\r\n */\r\n get irradianceConvSamples() {\r\n return this._irradianceConvSamples;\r\n }\r\n set irradianceConvSamples(val: number) {\r\n if (val !== this._irradianceConvSamples) {\r\n this._irradianceConvSamples = val;\r\n this.invalidate();\r\n }\r\n }\r\n /** Aerial perspective density */\r\n get aerialPerspectiveDistance() {\r\n return this._atmosphereParams.apDistance;\r\n }\r\n set aerialPerspectiveDistance(val: number) {\r\n this._atmosphereParams.apDistance = val;\r\n }\r\n /** Atmosphere exposure */\r\n get atmosphereExposure() {\r\n return this._atmosphereExposure;\r\n }\r\n set atmosphereExposure(val) {\r\n if (val !== this._atmosphereExposure) {\r\n this._atmosphereExposure = val;\r\n this.invalidate();\r\n }\r\n }\r\n /** Aerial perspective density */\r\n get cameraHeightScale() {\r\n return this._atmosphereParams.cameraHeightScale;\r\n }\r\n set cameraHeightScale(val: number) {\r\n if (val !== this._atmosphereParams.cameraHeightScale) {\r\n this._atmosphereParams.cameraHeightScale = val;\r\n this.invalidate();\r\n }\r\n }\r\n /** Height fog color */\r\n get heightFogColor() {\r\n return this._heightFogParams.parameter1.xyz();\r\n }\r\n set heightFogColor(val: Vector3) {\r\n this._heightFogParams.parameter1.set(val);\r\n }\r\n /** Height fog density */\r\n get heightFogDensity() {\r\n return this._heightFogParams.parameter2.x;\r\n }\r\n set heightFogDensity(val: number) {\r\n this._heightFogParams.parameter2.x = val;\r\n }\r\n /** Height fog falloff */\r\n get heightFogFalloff() {\r\n return this._heightFogParams.parameter1.w;\r\n }\r\n set heightFogFalloff(val: number) {\r\n this._heightFogParams.parameter1.w = val;\r\n }\r\n /** Height fog start height */\r\n get heightFogStartHeight() {\r\n return this._heightFogParams.parameter2.y;\r\n }\r\n set heightFogStartHeight(val: number) {\r\n this._heightFogParams.parameter2.y = val;\r\n }\r\n /** Height fog start distance */\r\n get heightFogStartDistance() {\r\n return this._heightFogParams.parameter2.z;\r\n }\r\n set heightFogStartDistance(val: number) {\r\n this._heightFogParams.parameter2.z = val;\r\n }\r\n /** Height fog maximum opacity */\r\n get heightFogMaxOpacity() {\r\n return this._heightFogParams.parameter3.x;\r\n }\r\n set heightFogMaxOpacity(val: number) {\r\n this._heightFogParams.parameter3.x = val;\r\n }\r\n /** Height fog atmosphere contribution strength */\r\n get heightFogAtmosphereContribution() {\r\n return this._heightFogParams.parameter3.y;\r\n }\r\n set heightFogAtmosphereContribution(val: number) {\r\n this._heightFogParams.parameter3.y = val;\r\n }\r\n /** Height fog directional exponent */\r\n get heightFogDirExponent() {\r\n return this._heightFogParams.parameter3.w;\r\n }\r\n set heightFogDirExponent(val: number) {\r\n this._heightFogParams.parameter3.w = val;\r\n }\r\n /** Height fog directional inscattering color */\r\n get heightFogDirColor() {\r\n return this._heightFogParams.parameter4.xyz();\r\n }\r\n set heightFogDirColor(val: Vector3) {\r\n this._heightFogParams.parameter4.set(val);\r\n }\r\n /**\r\n * Light density of the sky.\r\n *\r\n * @remarks\r\n * This value controls how much cloud should be rendered when the sky type is scatter.\r\n * Typically, the value should be in the range of 0 to 1.\r\n */\r\n get cloudy(): number {\r\n return this._cloudy;\r\n }\r\n set cloudy(val: number) {\r\n if (val !== this._cloudy && this._skyType === 'scatter') {\r\n this._cloudy = val;\r\n this.invalidate();\r\n }\r\n }\r\n /**\r\n * Intensity of the sky color\r\n */\r\n get cloudIntensity(): number {\r\n return this._cloudIntensity;\r\n }\r\n set cloudIntensity(val: number) {\r\n if (val !== this._cloudIntensity && this._skyType === 'scatter') {\r\n this._cloudIntensity = val;\r\n this.invalidate();\r\n }\r\n }\r\n /**\r\n * Wind velocity\r\n *\r\n * @remarks\r\n * This value affects the movement of the cloud\r\n */\r\n get wind(): Vector2 {\r\n return this._wind;\r\n }\r\n set wind(val: Vector2) {\r\n this._wind.set(val);\r\n }\r\n /**\r\n * Radiance map of the sky.\r\n */\r\n get radianceMap(): TextureCube {\r\n if (!this._radianceMap.get()) {\r\n this._radianceMap.set(Application.instance.device.createCubeTexture('rgba16f', this._radianceMapWidth));\r\n this._radianceMap.get().name = 'SkyRadianceMap';\r\n }\r\n return this._radianceMap.get();\r\n }\r\n /** @internal */\r\n get atmosphereParams() {\r\n return this._atmosphereParams;\r\n }\r\n /** @internal */\r\n get heightFogParams() {\r\n return this._heightFogParams;\r\n }\r\n /** @internal */\r\n get radianceFramebuffer() {\r\n if (!this._radianceFrameBuffer.get()) {\r\n this._radianceFrameBuffer.set(Application.instance.device.createFrameBuffer([this.radianceMap], null));\r\n }\r\n return this._radianceFrameBuffer.get();\r\n }\r\n /**\r\n * Irradiance map of the sky.\r\n */\r\n get irradianceMap(): TextureCube {\r\n if (!this._irradianceMap.get()) {\r\n this._irradianceMap.set(\r\n Application.instance.device.createCubeTexture('rgba16f', this._irradianceMapWidth, {\r\n samplerOptions: { mipFilter: 'none' }\r\n })\r\n );\r\n this._irradianceMap.get().name = 'SkyIrradianceMap';\r\n }\r\n return this._irradianceMap.get();\r\n }\r\n /**\r\n * Irradiance SH coeffecients buffer\r\n */\r\n get irradianceSH(): GPUDataBuffer {\r\n if (!this._irradianceSH.get()) {\r\n const buffer = Application.instance.device.createBuffer(4 * 4 * 9, { usage: 'uniform' });\r\n this._irradianceSH.set(buffer);\r\n }\r\n return this._irradianceSH.get();\r\n }\r\n /**\r\n * Irradiance SH coeffecients texture\r\n */\r\n get irradianceSHFB(): FrameBuffer {\r\n if (!this._irradianceSHFB.get()) {\r\n const device = Application.instance.device;\r\n const texture = device.createTexture2D('rgba32f', 3, 3, {\r\n samplerOptions: { mipFilter: 'none' }\r\n });\r\n this._irradianceSHFB.set(device.createFrameBuffer([texture], null));\r\n }\r\n return this._irradianceSHFB.get();\r\n }\r\n /** @internal */\r\n get irradianceFramebuffer() {\r\n if (!this._irradianceFrameBuffer.get()) {\r\n this._irradianceFrameBuffer.set(\r\n Application.instance.device.createFrameBuffer([this.irradianceMap], null)\r\n );\r\n }\r\n return this._irradianceFrameBuffer.get();\r\n }\r\n /**\r\n * Cube texture for skybox.\r\n */\r\n get skyboxTexture(): TextureCube {\r\n return this._skyboxTexture.get();\r\n }\r\n set skyboxTexture(tex: TextureCube) {\r\n if (tex !== this.skyboxTexture) {\r\n this._skyboxTexture.set(tex);\r\n if (this._skyType === 'skybox') {\r\n this.invalidate();\r\n }\r\n }\r\n }\r\n /** @internal */\r\n get skyWorldMatrix(): Matrix4x4 {\r\n return this._skyWorldMatrix;\r\n }\r\n set skyWorldMatrix(val: Matrix4x4) {\r\n val = val ?? defaultSkyWorldMatrix;\r\n if (val !== this._skyWorldMatrix) {\r\n this._skyWorldMatrix = val;\r\n this.invalidate();\r\n }\r\n }\r\n /** @internal */\r\n get mappedFogType(): number {\r\n return fogTypeMap[this._fogType];\r\n }\r\n /** Current fog type */\r\n get fogType(): FogType {\r\n return this._fogType;\r\n }\r\n set fogType(val: FogType) {\r\n this._fogType = val;\r\n }\r\n /** @internal */\r\n get aerialPerspectiveDebug() {\r\n return this._debugAerialPerspective;\r\n }\r\n set aerialPerspectiveDebug(val: number) {\r\n this._debugAerialPerspective = val;\r\n }\r\n /** @internal */\r\n get fogPresents() {\r\n return this._skyType === 'scatter' || this._fogType !== 'none';\r\n }\r\n /**\r\n * Force the radiance map and irradiance map to be regenerated.\r\n */\r\n invalidate() {\r\n this._bakedSkyboxDirty = true;\r\n }\r\n /** @internal */\r\n drawScatteredFog(_ctx: DrawContext) {\r\n return this.skyType === 'scatter';\r\n }\r\n /** @internal */\r\n getAerialPerspectiveLUT(_ctx: DrawContext) {\r\n return getAerialPerspectiveLut();\r\n }\r\n /** @internal */\r\n getSkyDistantLightLUT(_ctx: DrawContext) {\r\n return this._skyDistantLightLut.get().getColorAttachments()[0] as Texture2D;\r\n }\r\n update(ctx: DrawContext) {\r\n const useScatter = this._skyType === 'scatter';\r\n if (useScatter || !atmosphereLUTRendered()) {\r\n this.renderAtmosphereLUTs(ctx);\r\n }\r\n const oldSunLight = ctx.sunLight && useScatter ? ctx.sunLight.color : null;\r\n const sunDir = SkyRenderer._getSunDir(ctx.sunLight);\r\n const sunColor = SkyRenderer._getSunColor(ctx.sunLight);\r\n if (this._skyType === 'scatter' && (this._wind.x !== 0 || this._wind.y !== 0)) {\r\n this._bakedSkyboxDirty = true;\r\n }\r\n if (!this._skyDistantLightLut.get()) {\r\n const tex = ctx.device.createTexture2D('rgba32f', 1, 1, { samplerOptions: { mipFilter: 'none' } });\r\n tex.name = 'DistantSkyLut';\r\n this._skyDistantLightLut.set(ctx.device.createFrameBuffer([tex], null));\r\n this._bakedSkyboxDirty = true;\r\n }\r\n if (!sunDir.equalsTo(this._lastSunDir) || !sunColor.equalsTo(this._lastSunColor)) {\r\n this._lastSunDir.set(sunDir);\r\n this._lastSunColor.set(sunColor);\r\n this._bakedSkyboxDirty = true;\r\n }\r\n if (this._bakedSkyboxDirty) {\r\n this._bakedSkyboxDirty = false;\r\n this.updateBakedSkyMap();\r\n this.renderSkyDistantLut(ctx, this._bakedSkyboxTexture.get());\r\n if (\r\n ctx.scene.env.light.radianceMap &&\r\n (ctx.scene.env.light.radianceMap === this.radianceMap ||\r\n ctx.scene.env.light.irradianceMap === this.irradianceMap ||\r\n (this._irradianceSH.get() && ctx.scene.env.light.irradianceSH === this.irradianceSH) ||\r\n (this._irradianceSHFB.get() && ctx.scene.env.light.irradianceSHFB === this.irradianceSHFB))\r\n ) {\r\n prefilterCubemap(\r\n this._bakedSkyboxTexture.get(),\r\n 'ggx',\r\n this.radianceFramebuffer,\r\n this._radianceConvSamples\r\n );\r\n prefilterCubemap(\r\n this._bakedSkyboxTexture.get(),\r\n 'lambertian',\r\n this.irradianceFramebuffer,\r\n this._irradianceConvSamples\r\n );\r\n if (ctx.device.type === 'webgl') {\r\n this._shProjector.projectCubemapToTexture(\r\n this.irradianceFramebuffer.getColorAttachments()[0] as TextureCube,\r\n this.irradianceSHFB\r\n );\r\n } else {\r\n this._shProjector.projectCubemap(\r\n this.irradianceFramebuffer.getColorAttachments()[0] as TextureCube,\r\n this.irradianceSH\r\n );\r\n }\r\n ctx.scene.env.light.irradianceSH = this.irradianceSH;\r\n ctx.scene.env.light.irradianceWindow = this._shWindowWeights;\r\n }\r\n }\r\n const newSunLight = oldSunLight\r\n ? Vector3.mul(ctx.sunLight.color.xyz(), this.sunTransmittance(ctx.sunLight))\r\n : Vector3.zero();\r\n if (oldSunLight) {\r\n ctx.sunLight.setColor(newSunLight);\r\n }\r\n // Update height fog parameters\r\n if (this._fogType === 'height_fog') {\r\n const cameraY = Math.min(\r\n this._heightFogParams.parameter2.y + this._heightFogParams.parameter2.w,\r\n ctx.camera.getWorldPosition().y\r\n );\r\n const p = Math.max(\r\n -125,\r\n Math.min(126, -this._heightFogParams.parameter1.w * (cameraY - this._heightFogParams.parameter2.y))\r\n );\r\n this._heightFogParams.parameter3.z = this._heightFogParams.parameter2.x * Math.pow(2, p);\r\n this._heightFogParams.lightColor.set(newSunLight);\r\n this._heightFogParams.lightDir.set(SkyRenderer._getSunDir(ctx.sunLight));\r\n }\r\n return oldSunLight;\r\n }\r\n renderAtmosphereLUTs(ctx: DrawContext) {\r\n this._atmosphereParams.lightDir.set(SkyRenderer._getSunDir(ctx.sunLight));\r\n this._atmosphereParams.lightColor.set(SkyRenderer._getSunColor(ctx.sunLight));\r\n this._atmosphereParams.lightColor.w *= this._atmosphereExposure;\r\n this._atmosphereParams.cameraAspect = ctx.camera.getAspect();\r\n this._atmosphereParams.cameraWorldMatrix.set(ctx.camera.worldMatrix);\r\n renderAtmosphereLUTs(this._atmosphereParams);\r\n }\r\n renderSkyDistantLut(ctx: DrawContext, skybox: TextureCube) {\r\n this._prepareSkyBox(ctx.device);\r\n ctx.device.pushDeviceStates();\r\n ctx.device.setRenderStates(SkyRenderer._renderStatesDistantLight);\r\n ctx.device.setProgram(SkyRenderer._programDistantLight);\r\n ctx.device.setFramebuffer(this._skyDistantLightLut.get());\r\n ctx.device.clearFrameBuffer(new Vector4(0, 0, 0, 1), null, null);\r\n this._bindgroupDistantLight.get().setTexture('skybox', skybox, fetchSampler('clamp_linear_nomip'));\r\n ctx.device.setBindGroup(0, this._bindgroupDistantLight.get());\r\n SkyRenderer._primitiveDistantLight.draw();\r\n ctx.device.popDeviceStates();\r\n }\r\n updateBakedSkyMap() {\r\n if (this._skyType === 'skybox' && this.skyboxTexture) {\r\n this._bakedSkyboxTexture.set(this.skyboxTexture);\r\n } else {\r\n const device = Application.instance.device;\r\n const texCaps = device.getDeviceCaps().textureCaps;\r\n const format: TextureFormat =\r\n texCaps.supportHalfFloatColorBuffer && texCaps.supportLinearHalfFloatTexture\r\n ? 'rgba16f'\r\n : texCaps.supportFloatColorBuffer && texCaps.supportLinearFloatTexture\r\n ? 'rgba32f'\r\n : 'rgba8unorm';\r\n const tex =\r\n this._bakedSkyboxTexture.get() && this._bakedSkyboxTexture.get() !== this.skyboxTexture\r\n ? this._bakedSkyboxTexture.get()\r\n : device.createCubeTexture(format, this._scatterSkyboxTextureWidth, {\r\n samplerOptions: { mipFilter: 'none' }\r\n });\r\n tex.name = 'BakedSkyboxTexture';\r\n if (tex !== this._bakedSkyboxTexture.get()) {\r\n this._bakedSkyboxFrameBuffer.set(device.createFrameBuffer([tex], null));\r\n }\r\n const camera = SkyRenderer._skyCamera;\r\n const saveRenderStates = device.getRenderStates();\r\n device.pushDeviceStates();\r\n device.setFramebuffer(this._bakedSkyboxFrameBuffer.get());\r\n for (const face of [CubeFace.PX, CubeFace.NX, CubeFace.PY, CubeFace.NY, CubeFace.PZ, CubeFace.NZ]) {\r\n camera.lookAtCubeFace(face);\r\n this._bakedSkyboxFrameBuffer.get().setColorAttachmentCubeFace(0, face);\r\n this._renderSky(camera, false);\r\n }\r\n device.popDeviceStates();\r\n device.setRenderStates(saveRenderStates);\r\n this._bakedSkyboxTexture.set(tex);\r\n }\r\n }\r\n renderUberFog(ctx: DrawContext, depthTexture: BaseTexture) {\r\n const camera = ctx.camera;\r\n const device = ctx.device;\r\n const fogProgram = SkyRenderer._programFog;\r\n const renderStates = SkyRenderer._renderStatesFog;\r\n const bindgroup = this._bindgroupFog.get();\r\n bindgroup.setTexture('depthTex', depthTexture, fetchSampler('clamp_nearest_nomip'));\r\n bindgroup.setTexture(\r\n 'skyDistantLightLut',\r\n this._skyDistantLightLut.get().getColorAttachments()[0],\r\n fetchSampler('clamp_nearest_nomip')\r\n );\r\n bindgroup.setTexture('apLut', getAerialPerspectiveLut(), fetchSampler('clamp_linear_nomip'));\r\n bindgroup.setValue('rt', device.getFramebuffer() ? 1 : 0);\r\n bindgroup.setValue('invProjViewMatrix', camera.invViewProjectionMatrix);\r\n bindgroup.setValue('cameraNearFar', new Vector2(camera.getNearPlane(), camera.getFarPlane()));\r\n bindgroup.setValue('cameraPosition', camera.getWorldPosition());\r\n bindgroup.setValue('srgbOut', device.getFramebuffer() ? 0 : 1);\r\n bindgroup.setValue('withAerialPerspective', this.skyType === 'scatter' ? 1 : 0);\r\n bindgroup.setValue('fogType', this.mappedFogType);\r\n bindgroup.setValue('atmosphereParams', this._atmosphereParams);\r\n bindgroup.setValue('heightFogParams', this._heightFogParams);\r\n device.setProgram(fogProgram);\r\n device.setBindGroup(0, bindgroup);\r\n device.setVertexLayout(SkyRenderer._vertexLayout);\r\n device.setRenderStates(renderStates);\r\n device.draw('triangle-strip', 0, 4);\r\n }\r\n /** @internal */\r\n renderFog(ctx: DrawContext) {\r\n const currentFramebuffer = ctx.device.getFramebuffer();\r\n const depthBuffer = currentFramebuffer?.getDepthAttachment() ?? null;\r\n const colorBuffer = currentFramebuffer?.getColorAttachments()[0] ?? null;\r\n const fogFramebuffer =\r\n depthBuffer && colorBuffer\r\n ? ctx.device.pool.fetchTemporalFramebuffer(false, 0, 0, colorBuffer, null, false)\r\n : null;\r\n if (fogFramebuffer) {\r\n const vp = ctx.device.getViewport();\r\n const scissor = ctx.device.getScissor();\r\n ctx.device.pushDeviceStates();\r\n ctx.device.setFramebuffer(fogFramebuffer);\r\n ctx.device.setViewport(vp);\r\n ctx.device.setScissor(scissor);\r\n }\r\n const savedRenderStates = ctx.device.getRenderStates();\r\n this._prepareSkyBox(ctx.device);\r\n this.renderUberFog(ctx, depthBuffer);\r\n /*\r\n if (this._skyType === 'scatter') {\r\n this.renderAtmosphericFog(ctx, depthBuffer);\r\n }\r\n */\r\n /*\r\n if (this._fogType === 'height_fog') {\r\n this.renderHeightFog(ctx, depthBuffer);\r\n }\r\n */\r\n ctx.device.setRenderStates(savedRenderStates);\r\n if (fogFramebuffer) {\r\n ctx.device.popDeviceStates();\r\n ctx.device.pool.releaseFrameBuffer(fogFramebuffer);\r\n }\r\n }\r\n /** @internal */\r\n renderSky(ctx: DrawContext) {\r\n let skyCamera = ctx.camera;\r\n if (!skyCamera.isPerspective()) {\r\n skyCamera = SkyRenderer._skyCamera;\r\n ctx.camera.worldMatrix.decompose(null, skyCamera.rotation, null);\r\n }\r\n this._renderSky(skyCamera, true);\r\n }\r\n /** @internal */\r\n private _renderSky(camera: Camera, depthTest: boolean) {\r\n const device = Application.instance.device;\r\n const savedRenderStates = device.getRenderStates();\r\n this._prepareSkyBox(device);\r\n if (this._skyType === 'scatter') {\r\n this._drawScattering(camera, depthTest);\r\n } else if (this._skyType === 'skybox' && this.skyboxTexture) {\r\n this._drawSkybox(camera, depthTest);\r\n } else {\r\n this._drawSkyColor(camera, depthTest);\r\n }\r\n device.setRenderStates(savedRenderStates);\r\n }\r\n /** @internal */\r\n private _drawSkyColor(camera: Camera, depthTest: boolean) {\r\n const device = Application.instance.device;\r\n const bindgroup = this._bindgroupSky.color.get();\r\n const p = new Vector3();\r\n const s = new Vector3();\r\n const r = new Quaternion();\r\n camera.viewMatrix.decompose(s, r, p);\r\n camera.worldMatrix.decompose(s, r, p);\r\n bindgroup.setValue('viewProjMatrix', camera.viewProjectionMatrix);\r\n bindgroup.setValue('worldMatrix', this._skyWorldMatrix);\r\n bindgroup.setValue('cameraPos', camera.getWorldPosition());\r\n bindgroup.setValue('color', this._skyColor);\r\n bindgroup.setValue('srgbOut', device.getFramebuffer() ? 0 : 1);\r\n device.setProgram(SkyRenderer._programSky.color);\r\n device.setBindGroup(0, bindgroup);\r\n device.setRenderStates(\r\n depthTest ? SkyRenderer._renderStatesSky : SkyRenderer._renderStatesSkyNoDepthTest\r\n );\r\n SkyRenderer._primitiveSky.draw();\r\n }\r\n /** @internal */\r\n private _drawSkybox(camera: Camera, depthTest: boolean) {\r\n const device = Application.instance.device;\r\n const bindgroup = this._bindgroupSky.skybox.get();\r\n bindgroup.setTexture('skyCubeMap', this.skyboxTexture, fetchSampler('clamp_linear_nomip'));\r\n bindgroup.setValue(\r\n 'flip',\r\n device.getFramebuffer() && device.type === 'webgpu' ? new Vector4(1, -1, 1, 1) : new Vector4(1, 1, 1, 1)\r\n );\r\n bindgroup.setValue('viewProjMatrix', camera.viewProjectionMatrix);\r\n bindgroup.setValue('worldMatrix', this._skyWorldMatrix);\r\n bindgroup.setValue('cameraPos', camera.getWorldPosition());\r\n bindgroup.setValue('srgbOut', device.getFramebuffer() ? 0 : 1);\r\n device.setProgram(SkyRenderer._programSky.skybox);\r\n device.setBindGroup(0, bindgroup);\r\n device.setRenderStates(\r\n depthTest ? SkyRenderer._renderStatesSky : SkyRenderer._renderStatesSkyNoDepthTest\r\n );\r\n SkyRenderer._primitiveSky.draw();\r\n }\r\n /** @internal */\r\n private _rayIntersectSphere(radius: number, rayStart: Vector3, rayDir: Vector3) {\r\n const OS = rayStart.magnitude;\r\n const SH = -Vector3.dot(rayStart, rayDir);\r\n const OH = Math.sqrt(Math.max(0, OS * OS - SH * SH));\r\n const PH = Math.sqrt(Math.max(0, radius * radius - OH * OH));\r\n if (OH > radius) {\r\n return -1;\r\n }\r\n const t1 = SH - PH;\r\n const t2 = SH + PH;\r\n return t1 < 0 ? t2 : t1;\r\n }\r\n /** @internal */\r\n sunTransmittance(sunLight: DirectionalLight): Vector3 {\r\n const TRANSMITTANCE_SAMPLES = 32;\r\n const RAYLEIGH_SIGMA = [5.802, 13.558, 33.1];\r\n const MIE_SIGMA = 3.996;\r\n const MIE_ABSORPTION_SIGMA = 4.4;\r\n const OZONE_ABSORPTION_SIGMA = [0.65, 1.881, 0.085];\r\n function rayleighSc(params: AtmosphereParams, fH: number) {\r\n const sigma = new Vector3(RAYLEIGH_SIGMA[0] * 1e-6, RAYLEIGH_SIGMA[1] * 1e-6, RAYLEIGH_SIGMA[2] * 1e-6);\r\n const rho_h = Math.exp(-fH / params.rayleighScatteringHeight);\r\n return Vector3.scale(sigma, rho_h);\r\n }\r\n function mieSc(params: AtmosphereParams, fH: number) {\r\n const sigma = new Vector3(MIE_SIGMA * 1e-6, MIE_SIGMA * 1e-6, MIE_SIGMA * 1e-6);\r\n const rho_h = Math.exp(-(fH / params.mieScatteringHeight));\r\n return Vector3.scale(sigma, rho_h);\r\n }\r\n function mieAb(params: AtmosphereParams, fH: number) {\r\n const sigma = new Vector3(\r\n MIE_ABSORPTION_SIGMA * 1e-6,\r\n MIE_ABSORPTION_SIGMA * 1e-6,\r\n MIE_ABSORPTION_SIGMA * 1e-6\r\n );\r\n const rho_h = Math.exp(-(fH / params.mieScatteringHeight));\r\n return Vector3.scale(sigma, rho_h);\r\n }\r\n function ozoneAb(params: AtmosphereParams, fH: number) {\r\n const sigma = new Vector3(\r\n OZONE_ABSORPTION_SIGMA[0] * 1e-6,\r\n OZONE_ABSORPTION_SIGMA[1] * 1e-6,\r\n OZONE_ABSORPTION_SIGMA[2] * 1e-6\r\n );\r\n const rho_h = Math.max(0, 1 - (Math.abs(fH - params.ozoneCenter) * 0.5) / params.ozoneWidth);\r\n return Vector3.scale(sigma, rho_h);\r\n }\r\n const eyePos = new Vector3(\r\n 0,\r\n this._atmosphereParams.plantRadius + this._atmosphereParams.cameraHeightScale,\r\n 0\r\n );\r\n const lightDir = SkyRenderer._getSunDir(sunLight);\r\n const d = this._rayIntersectSphere(\r\n this._atmosphereParams.plantRadius + this._atmosphereParams.atmosphereHeight,\r\n eyePos,\r\n lightDir\r\n );\r\n if (d < 0) {\r\n return new Vector3(0, 0, 0);\r\n }\r\n const ds = d / TRANSMITTANCE_SAMPLES;\r\n const sum = new Vector3(0, 0, 0);\r\n const p = Vector3.combine(eyePos, lightDir, 1, ds * 0.5);\r\n for (let i = 0; i < TRANSMITTANCE_SAMPLES; i++) {\r\n const h = p.magnitude - this._atmosphereParams.plantRadius;\r\n const scattering = Vector3.add(rayleighSc(this._atmosphereParams, h), mieSc(this._atmosphereParams, h));\r\n const absorption = Vector3.add(ozoneAb(this._atmosphereParams, h), mieAb(this._atmosphereParams, h));\r\n const extinction = Vector3.add(scattering, absorption);\r\n Vector3.add(sum, Vector3.scale(extinction, ds), sum);\r\n Vector3.add(p, Vector3.scale(lightDir, ds), p);\r\n }\r\n return new Vector3(Math.exp(-sum.x), Math.exp(-sum.y), Math.exp(-sum.z));\r\n }\r\n /** @internal */\r\n private _drawScattering(camera: Camera, depthTest: boolean) {\r\n const device = Application.instance.device;\r\n const tLut = getTransmittanceLut();\r\n const skyLut = getSkyViewLut();\r\n //const apLut = ScatteringLut.getAerialPerspectiveLut(alpha, 8000);\r\n const program = SkyRenderer._programSky.scatter;\r\n const bindgroup = this._bindgroupSky.scatter.get();\r\n bindgroup.setValue(\r\n 'flip',\r\n device.getFramebuffer() && device.type === 'webgpu' ? new Vector4(1, -1, 1, 1) : new Vector4(1, 1, 1, 1)\r\n );\r\n bindgroup.setValue('params', this._atmosphereParams);\r\n bindgroup.setValue('viewProjMatrix', camera.viewProjectionMatrix);\r\n bindgroup.setValue('worldMatrix', this._skyWorldMatrix);\r\n bindgroup.setValue('cameraPos', camera.getWorldPosition());\r\n bindgroup.setValue('srgbOut', device.getFramebuffer() ? 0 : 1);\r\n bindgroup.setTexture('tLut', tLut, fetchSampler('clamp_linear_nomip'));\r\n bindgroup.setTexture('skyLut', skyLut, fetchSampler('clamp_linear_nomip'));\r\n bindgroup.setValue('cloudy', this._cloudy);\r\n bindgroup.setValue('cloudIntensity', this._cloudIntensity);\r\n bindgroup.setValue('time', device.frameInfo.elapsedOverall * 0.001);\r\n bindgroup.setValue('velocity', this._wind);\r\n device.setProgram(program);\r\n device.setBindGroup(0, bindgroup);\r\n device.setRenderStates(\r\n depthTest ? SkyRenderer._renderStatesSky : SkyRenderer._renderStatesSkyNoDepthTest\r\n );\r\n SkyRenderer._primitiveSky.draw();\r\n }\r\n /** @internal */\r\n private _prepareSkyBox(device: AbstractDevice) {\r\n SkyRenderer._createAtmosphereLUTPrograms(device);\r\n if (!SkyRenderer._programDistantLight) {\r\n SkyRenderer._programDistantLight = device.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.vector = pb.vec3().attrib('position');\r\n pb.main(function () {\r\n this.$outputs.vector = this.$inputs.vector;\r\n this.$builtins.position = pb.vec4(0, 0, 0, 1);\r\n if (pb.getDevice().type !== 'webgpu') {\r\n this.$builtins.pointSize = 1;\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.color = pb.vec4();\r\n this.skybox = pb.texCube().uniform(0);\r\n pb.main(function () {\r\n this.$l.sunColor = pb.vec4();\r\n this.$l.skyColor = pb.textureSampleLevel(this.skybox, this.$inputs.vector, 0).rgb;\r\n this.$outputs.color = pb.vec4(pb.mul(this.skyColor, 1 / 32 /*1 / 64*/), 1);\r\n });\r\n }\r\n });\r\n }\r\n if (!this._bindgroupDistantLight.get()) {\r\n this._bindgroupDistantLight.set(\r\n device.createBindGroup(SkyRenderer._programDistantLight.bindGroupLayouts[0])\r\n );\r\n }\r\n if (!SkyRenderer._programFog) {\r\n SkyRenderer._programFog = device.buildRenderProgram({\r\n label: 'Fog',\r\n vertex(pb) {\r\n this.rt = pb.int().uniform(0);\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n if (device.type === 'webgpu') {\r\n this.$if(pb.notEqual(this.rt, 0), function () {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n });\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n const AtmosphereParams = getAtmosphereParamsStruct(pb);\r\n const HeightFogParams = getHeightFogParamsStruct(pb);\r\n this.depthTex = pb.tex2D().sampleType('unfilterable-float').uniform(0);\r\n this.apLut = pb.tex2D().uniform(0);\r\n this.skyDistantLightLut = pb.tex2D().uniform(0);\r\n this.invProjViewMatrix = pb.mat4().uniform(0);\r\n this.cameraNearFar = pb.vec2().uniform(0);\r\n this.cameraPosition = pb.vec3().uniform(0);\r\n this.withAerialPerspective = pb.int().uniform(0);\r\n this.fogType = pb.int().uniform(0);\r\n this.atmosphereParams = AtmosphereParams().uniform(0);\r\n this.heightFogParams = HeightFogParams().uniform(0);\r\n this.srgbOut = pb.int().uniform(0);\r\n this.$outputs.outColor = pb.vec4();\r\n pb.main(function () {\r\n this.$l.depthValue = pb.textureSample(this.depthTex, this.$inputs.uv).r;\r\n this.$l.clipSpacePos = pb.vec4(\r\n pb.sub(pb.mul(this.$inputs.uv, 2), pb.vec2(1)),\r\n pb.sub(pb.mul(this.depthValue, 2), 1),\r\n 1\r\n );\r\n this.$l.hPos = pb.mul(this.invProjViewMatrix, this.clipSpacePos);\r\n this.$l.worldPos = pb.div(this.$l.hPos, this.$l.hPos.w).xyz;\r\n this.$l.isSky = pb.equal(this.$l.depthValue, 1);\r\n this.$l.color = calculateFog(\r\n this,\r\n this.withAerialPerspective,\r\n this.fogType,\r\n this.atmosphereParams,\r\n this.heightFogParams,\r\n this.$inputs.uv,\r\n this.isSky,\r\n this.cameraPosition,\r\n this.worldPos,\r\n 0,\r\n this.apLut,\r\n this.skyDistantLightLut\r\n );\r\n this.$if(pb.equal(this.srgbOut, 0), function () {\r\n this.$outputs.outColor = this.color;\r\n }).$else(function () {\r\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.color.rgb), this.color.a);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n if (!this._bindgroupFog.get()) {\r\n this._bindgroupFog.set(device.createBindGroup(SkyRenderer._programFog.bindGroupLayouts[0]));\r\n }\r\n if (!SkyRenderer._programSky.color) {\r\n SkyRenderer._programSky.color = device.buildRenderProgram({\r\n label: 'SolidColorSky',\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec3().attrib('position');\r\n this.worldMatrix = pb.mat4().uniform(0);\r\n this.viewProjMatrix = pb.mat4().uniform(0);\r\n this.cameraPos = pb.vec3().uniform(0);\r\n pb.main(function () {\r\n this.$l.worldDirection = pb.mul(this.worldMatrix, pb.vec4(this.$inputs.pos, 0)).xyz;\r\n this.$builtins.position = pb.mul(\r\n this.viewProjMatrix,\r\n pb.vec4(pb.add(this.worldDirection, this.cameraPos), 1)\r\n );\r\n this.$builtins.position.z = this.$builtins.position.w;\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.outColor = pb.vec4();\r\n this.color = pb.vec4().uniform(0);\r\n this.srgbOut = pb.int().uniform(0);\r\n pb.main(function () {\r\n this.$if(pb.equal(this.srgbOut, 0), function () {\r\n this.$outputs.outColor = pb.vec4(this.color.rgb, 1);\r\n }).$else(function () {\r\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.color.rgb), 1);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n if (!this._bindgroupSky.color) {\r\n this._bindgroupSky.color = new DRef(\r\n device.createBindGroup(SkyRenderer._programSky.color.bindGroupLayouts[0])\r\n );\r\n }\r\n if (!SkyRenderer._programSky.scatter) {\r\n SkyRenderer._programSky.scatter = SkyRenderer._createScatterProgram(device, true);\r\n }\r\n if (!this._bindgroupSky.scatter) {\r\n this._bindgroupSky.scatter = new DRef(\r\n device.createBindGroup(SkyRenderer._programSky.scatter.bindGroupLayouts[0])\r\n );\r\n }\r\n if (!SkyRenderer._programSky.skybox) {\r\n SkyRenderer._programSky.skybox = device.buildRenderProgram({\r\n label: 'SkyBoxSky',\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec3().attrib('position');\r\n this.$outputs.texCoord = pb.vec3();\r\n this.worldMatrix = pb.mat4().uniform(0);\r\n this.viewProjMatrix = pb.mat4().uniform(0);\r\n this.cameraPos = pb.vec3().uniform(0);\r\n this.flip = pb.vec4().uniform(0);\r\n pb.main(function () {\r\n this.$outputs.texCoord = this.$inputs.pos;\r\n this.$l.worldPos = pb.add(\r\n this.cameraPos,\r\n pb.mul(this.worldMatrix, pb.vec4(this.$inputs.pos, 0)).xyz\r\n );\r\n this.$builtins.position = pb.mul(this.viewProjMatrix, pb.vec4(this.worldPos, 1), this.flip);\r\n this.$builtins.position.z = this.$builtins.position.w;\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.outColor = pb.vec4();\r\n this.skyCubeMap = pb.texCube().uniform(0);\r\n this.srgbOut = pb.int().uniform(0);\r\n pb.main(function () {\r\n this.$l.texCoord = pb.normalize(this.$inputs.texCoord);\r\n this.$l.color = pb.textureSampleLevel(this.skyCubeMap, this.texCoord, 0).rgb;\r\n this.$if(pb.equal(this.srgbOut, 0), function () {\r\n this.$outputs.outColor = pb.vec4(this.color, 1);\r\n }).$else(function () {\r\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.color), 1);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n if (!this._bindgroupSky.skybox) {\r\n this._bindgroupSky.skybox = new DRef(\r\n device.createBindGroup(SkyRenderer._programSky.skybox.bindGroupLayouts[0])\r\n );\r\n }\r\n if (!SkyRenderer._renderStatesSky) {\r\n SkyRenderer._renderStatesSky = device.createRenderStateSet();\r\n SkyRenderer._renderStatesSky.useDepthState().enableTest(true).enableWrite(false).setCompareFunc('le');\r\n SkyRenderer._renderStatesSky.useRasterizerState().setCullMode('none');\r\n }\r\n if (!SkyRenderer._renderStatesSkyNoDepthTest) {\r\n SkyRenderer._renderStatesSkyNoDepthTest = device.createRenderStateSet();\r\n SkyRenderer._renderStatesSkyNoDepthTest.useDepthState().enableTest(false).enableWrite(false);\r\n SkyRenderer._renderStatesSkyNoDepthTest.useRasterizerState().setCullMode('none');\r\n }\r\n if (!SkyRenderer._renderStatesFog) {\r\n SkyRenderer._renderStatesFog = device.createRenderStateSet();\r\n SkyRenderer._renderStatesFog.useRasterizerState().setCullMode('none');\r\n SkyRenderer._renderStatesFog.useBlendingState().enable(true).setBlendFunc('one', 'src-alpha');\r\n SkyRenderer._renderStatesFog.useDepthState().enableTest(false).enableWrite(false);\r\n }\r\n if (!SkyRenderer._renderStatesFogScatter) {\r\n SkyRenderer._renderStatesFogScatter = device.createRenderStateSet();\r\n SkyRenderer._renderStatesFogScatter.useRasterizerState().setCullMode('none');\r\n SkyRenderer._renderStatesFogScatter.useBlendingState().enable(true).setBlendFunc('one', 'src-alpha');\r\n SkyRenderer._renderStatesFogScatter\r\n .useDepthState()\r\n .enableTest(true)\r\n .enableWrite(false)\r\n .setCompareFunc('gt');\r\n }\r\n if (!SkyRenderer._renderStatesDistantLight) {\r\n SkyRenderer._renderStatesDistantLight = device.createRenderStateSet();\r\n SkyRenderer._renderStatesDistantLight.useDepthState().enableTest(false).enableWrite(false);\r\n SkyRenderer._renderStatesDistantLight\r\n .useBlendingState()\r\n .enable(true)\r\n .setBlendEquation('add', 'add')\r\n .setBlendFuncRGB('one', 'one')\r\n .setBlendFuncAlpha('zero', 'one');\r\n SkyRenderer._renderStatesDistantLight.useRasterizerState().setCullMode('none');\r\n }\r\n if (!SkyRenderer._vertexLayout) {\r\n SkyRenderer._vertexLayout = device.createVertexLayout({\r\n vertexBuffers: [\r\n {\r\n buffer: device.createVertexBuffer(\r\n 'position_f32x2',\r\n new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1])\r\n )\r\n }\r\n ]\r\n });\r\n }\r\n if (!SkyRenderer._primitiveSky) {\r\n SkyRenderer._primitiveSky = new BoxShape({ size: 8 });\r\n }\r\n if (!SkyRenderer._primitiveDistantLight) {\r\n const data = new Float32Array(uniformSphereSamples.length * 3);\r\n let i = 0;\r\n for (const v of uniformSphereSamples) {\r\n data[i++] = v.x;\r\n data[i++] = v.y;\r\n data[i++] = v.z;\r\n }\r\n SkyRenderer._primitiveDistantLight = new Primitive();\r\n SkyRenderer._primitiveDistantLight.createAndSetVertexBuffer('position_f32x3', data);\r\n SkyRenderer._primitiveDistantLight.indexCount = uniformSphereSamples.length;\r\n SkyRenderer._primitiveDistantLight.indexStart = 0;\r\n SkyRenderer._primitiveDistantLight.primitiveType = 'point-list';\r\n }\r\n }\r\n /** @internal */\r\n private static _getSunDir(sunLight: DirectionalLight) {\r\n // TODO: reduce GC\r\n return sunLight?.directionAndCutoff.xyz().scaleBy(-1) ?? ShaderHelper.defaultSunDir;\r\n }\r\n /** @internal */\r\n private static _getSunColor(sunLight: DirectionalLight) {\r\n // TODO: reduce GC\r\n return sunLight?.diffuseAndIntensity ?? new Vector4(1, 1, 1, 10);\r\n }\r\n private static _createAtmosphereLUTPrograms(device: AbstractDevice) {\r\n if (!this.transmittanceLutProgram) {\r\n this.transmittanceLutProgram = createTransmittanceLutProgram(device);\r\n }\r\n if (!this.multiScatteringLutProgram) {\r\n this.multiScatteringLutProgram = createMultiScatteringLutProgram(device);\r\n }\r\n if (!this.skyViewLutProgram) {\r\n this.skyViewLutProgram = createSkyViewLutProgram(device);\r\n }\r\n if (!this.APLutProgram) {\r\n this.APLutProgram = createAPLutProgram(device);\r\n }\r\n }\r\n private static _createScatterProgram(device: AbstractDevice, cloud: boolean) {\r\n return device.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec3().attrib('position');\r\n this.worldMatrix = pb.mat4().uniform(0);\r\n this.viewProjMatrix = pb.mat4().uniform(0);\r\n this.cameraPos = pb.vec3().uniform(0);\r\n this.flip = pb.vec4().uniform(0);\r\n pb.main(function () {\r\n this.$outputs.worldDirection = pb.mul(this.worldMatrix, pb.vec4(this.$inputs.pos, 0)).xyz;\r\n this.$builtins.position = pb.mul(\r\n this.viewProjMatrix,\r\n pb.vec4(pb.add(this.$outputs.worldDirection, this.cameraPos), 1),\r\n this.flip\r\n );\r\n this.$builtins.position.z = this.$builtins.position.w;\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.outColor = pb.vec4();\r\n this.tLut = pb.tex2D().uniform(0);\r\n this.skyLut = pb.tex2D().uniform(0);\r\n this.params = getAtmosphereParamsStruct(pb)().uniform(0);\r\n if (cloud) {\r\n this.cloudy = pb.float().uniform(0);\r\n this.cloudIntensity = pb.float().uniform(0);\r\n this.time = pb.float().uniform(0);\r\n this.velocity = pb.vec2().uniform(0);\r\n }\r\n this.srgbOut = pb.int().uniform(0);\r\n pb.func('noise', [pb.vec3('p'), pb.float('t')], function () {\r\n this.p2 = pb.mul(this.p, 0.25);\r\n this.f = pb.mul(smoothNoise3D(this, this.p2), 0.5);\r\n this.p2 = pb.mul(this.p2, 3.02);\r\n this.p2.y = pb.sub(this.p2.y, pb.mul(this.t, 0.02));\r\n this.f = pb.add(this.f, pb.mul(smoothNoise3D(this, this.p2), 0.25));\r\n this.p2 = pb.mul(this.p2, 3.03);\r\n this.p2.y = pb.add(this.p2.y, pb.mul(this.t, 0.01));\r\n this.f = pb.add(this.f, pb.mul(smoothNoise3D(this, this.p2), 0.125));\r\n this.p2 = pb.mul(this.p2, 3.02);\r\n this.f = pb.add(this.f, pb.mul(smoothNoise3D(this, this.p2), 0.0625));\r\n this.p2 = pb.mul(this.p2, 3.01);\r\n this.f = pb.add(this.f, pb.mul(smoothNoise3D(this, this.p2), 0.03125));\r\n this.p2 = pb.mul(this.p2, 3.01);\r\n this.f = pb.add(this.f, pb.mul(smoothNoise3D(this, this.p2), 0.015625));\r\n this.$return(this.f);\r\n });\r\n pb.main(function () {\r\n // Calculate sky color\r\n this.$l.sunColor = pb.vec4();\r\n this.$l.skyColor = skyBox(\r\n this,\r\n this.params,\r\n this.sunColor,\r\n this.$inputs.worldDirection,\r\n pb.float(0.01),\r\n this.tLut,\r\n this.skyLut\r\n ).rgb;\r\n\r\n this.$l.rayDir = pb.normalize(this.$inputs.worldDirection);\r\n this.$l.sunDir = this.params.lightDir;\r\n // ad-hoc\r\n this.$l.sunIntensity = pb.sqrt(pb.max(0, pb.mul(this.sunDir.y, this.rayDir.y)));\r\n\r\n // compute cloud\r\n if (cloud) {\r\n this.$l.noiseValue = pb.float();\r\n this.$if(pb.lessThanEqual(this.rayDir.y, 0), function () {\r\n this.noiseValue = 0;\r\n }).$else(function () {\r\n this.$l.tMin = pb.div(3000, this.rayDir.y);\r\n this.$l.cloudPoint = pb.mul(this.rayDir, this.tMin);\r\n this.speed = pb.mul(pb.vec3(this.velocity.x, 0, this.velocity.y), this.time);\r\n this.$l.noiseScale = pb.float(4e-4);\r\n this.noiseValue = this.noise(\r\n pb.mul(pb.add(this.cloudPoint, this.speed), this.noiseScale),\r\n this.time\r\n );\r\n this.noiseValue = pb.add(this.noiseValue, this.cloudy);\r\n this.noiseValue = pb.smoothStep(1, pb.add(1, this.cloudy), this.noiseValue);\r\n });\r\n // use sun color as cloud color\r\n /*\r\n this.$l.sunColor = pb.mul(\r\n pb.textureSampleLevel(this.skyLut, viewDirToUV(this, this.sunDir), 0),\r\n this.sunIntensity\r\n );\r\n */\r\n this.$l.cloudColor = pb.mul(\r\n this.sunColor.rgb,\r\n this.sunIntensity,\r\n pb.mul(this.noiseValue, this.cloudIntensity)\r\n );\r\n }\r\n\r\n // Compute sky color\r\n if (cloud) {\r\n // blend\r\n this.$l.vfactor = pb.clamp(pb.div(pb.sub(this.rayDir.y, 0.01), pb.sub(0.03, 0.01)), 0, 1);\r\n this.$l.factor = pb.clamp(pb.mul(this.noiseValue, this.vfactor), 0, 1);\r\n this.$l.color = pb.mix(this.skyColor, this.cloudColor, this.factor);\r\n } else {\r\n this.$l.color = this.skyColor;\r\n }\r\n this.$if(pb.equal(this.srgbOut, 0), function () {\r\n this.$outputs.outColor = pb.vec4(this.color, 1);\r\n }).$else(function () {\r\n this.$outputs.outColor = pb.vec4(linearToGamma(this, this.color), 1);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n}\r\n"],"names":["fogTypeMap","height_fog","Fog","FOG_TYPE_HEIGHT","none","FOG_TYPE_NONE","defaultSkyWorldMatrix","Matrix4x4","identity","SkyRenderer","_skyCamera","camera","Camera","setPerspective","Math","PI","transmittanceLutProgram","multiScatteringLutProgram","skyViewLutProgram","APLutProgram","_programSky","_programDistantLight","_programFog","_vertexLayout","_primitiveSky","_primitiveDistantLight","_renderStatesSky","_renderStatesSkyNoDepthTest","_renderStatesFog","_renderStatesFogScatter","_renderStatesDistantLight","_skyType","_skyColor","_bakedSkyboxDirty","_scatterSkyboxTextureWidth","_skyboxTexture","_bakedSkyboxTexture","_bakedSkyboxFrameBuffer","_radianceMap","_radianceFrameBuffer","_irradianceMap","_irradianceSH","_irradianceSHFB","_skyDistantLightLut","_irradianceFrameBuffer","_radianceMapWidth","_irradianceMapWidth","_atmosphereParams","_atmosphereExposure","_fogType","_heightFogParams","_cloudy","_cloudIntensity","_debugAerialPerspective","_wind","_skyWorldMatrix","_lastSunDir","_lastSunColor","_panoramaAsset","_shProjector","_shWindowWeights","_radianceConvSamples","_irradianceConvSamples","_bindgroupDistantLight","_bindgroupSky","_bindgroupFog","Vector4","zero","DRef","getDefaultAtmosphereParams","getDefaultHeightFogParams","Vector2","_getSunDir","_getSunColor","CubemapSHProjector","Vector3","dispose","get","getColorAttachments","k","getHash","_ctx","skyType","fogType","val","invalidate","panoramaTextureAsset","id","getBakedSkyTexture","ctx","update","skyColor","equalsTo","set","shWindowWeights","weights","radianceConvSamples","irradianceConvSamples","aerialPerspectiveDistance","apDistance","atmosphereExposure","cameraHeightScale","heightFogColor","parameter1","xyz","heightFogDensity","parameter2","x","heightFogFalloff","w","heightFogStartHeight","y","heightFogStartDistance","z","heightFogMaxOpacity","parameter3","heightFogAtmosphereContribution","heightFogDirExponent","heightFogDirColor","parameter4","cloudy","cloudIntensity","wind","radianceMap","Application","instance","device","createCubeTexture","name","atmosphereParams","heightFogParams","radianceFramebuffer","createFrameBuffer","irradianceMap","samplerOptions","mipFilter","irradianceSH","buffer","createBuffer","usage","irradianceSHFB","texture","createTexture2D","irradianceFramebuffer","skyboxTexture","tex","skyWorldMatrix","mappedFogType","aerialPerspectiveDebug","fogPresents","drawScatteredFog","getAerialPerspectiveLUT","getAerialPerspectiveLut","getSkyDistantLightLUT","useScatter","atmosphereLUTRendered","renderAtmosphereLUTs","oldSunLight","sunLight","color","sunDir","sunColor","updateBakedSkyMap","renderSkyDistantLut","scene","env","light","prefilterCubemap","type","projectCubemapToTexture","projectCubemap","irradianceWindow","newSunLight","mul","sunTransmittance","setColor","cameraY","min","getWorldPosition","p","max","pow","lightColor","lightDir","cameraAspect","getAspect","cameraWorldMatrix","worldMatrix","skybox","_prepareSkyBox","pushDeviceStates","setRenderStates","setProgram","setFramebuffer","clearFrameBuffer","setTexture","fetchSampler","setBindGroup","draw","popDeviceStates","texCaps","getDeviceCaps","textureCaps","format","supportHalfFloatColorBuffer","supportLinearHalfFloatTexture","supportFloatColorBuffer","supportLinearFloatTexture","saveRenderStates","getRenderStates","face","CubeFace","PX","NX","PY","NY","PZ","NZ","lookAtCubeFace","setColorAttachmentCubeFace","_renderSky","renderUberFog","depthTexture","fogProgram","renderStates","bindgroup","setValue","getFramebuffer","invViewProjectionMatrix","getNearPlane","getFarPlane","setVertexLayout","renderFog","currentFramebuffer","depthBuffer","getDepthAttachment","colorBuffer","fogFramebuffer","pool","fetchTemporalFramebuffer","vp","getViewport","scissor","getScissor","setViewport","setScissor","savedRenderStates","releaseFrameBuffer","renderSky","skyCamera","isPerspective","decompose","rotation","depthTest","_drawScattering","_drawSkybox","_drawSkyColor","s","r","Quaternion","viewMatrix","viewProjectionMatrix","radius","rayStart","rayDir","OS","magnitude","SH","dot","OH","sqrt","PH","t1","t2","TRANSMITTANCE_SAMPLES","RAYLEIGH_SIGMA","MIE_SIGMA","MIE_ABSORPTION_SIGMA","OZONE_ABSORPTION_SIGMA","rayleighSc","params","fH","sigma","rho_h","exp","rayleighScatteringHeight","scale","mieSc","mieScatteringHeight","mieAb","ozoneAb","abs","ozoneCenter","ozoneWidth","eyePos","plantRadius","d","_rayIntersectSphere","atmosphereHeight","ds","sum","combine","i","h","scattering","add","absorption","extinction","tLut","getTransmittanceLut","skyLut","getSkyViewLut","program","scatter","frameInfo","elapsedOverall","_createAtmosphereLUTPrograms","buildRenderProgram","vertex","pb","$inputs","vector","vec3","attrib","main","$outputs","$builtins","position","vec4","getDevice","pointSize","fragment","texCube","uniform","$l","textureSampleLevel","rgb","createBindGroup","bindGroupLayouts","label","rt","int","pos","vec2","uv","xy","$if","notEqual","neg","AtmosphereParams","getAtmosphereParamsStruct","HeightFogParams","getHeightFogParamsStruct","depthTex","tex2D","sampleType","apLut","skyDistantLightLut","invProjViewMatrix","mat4","cameraNearFar","cameraPosition","withAerialPerspective","srgbOut","outColor","depthValue","textureSample","clipSpacePos","sub","hPos","worldPos","div","isSky","equal","calculateFog","$else","linearToGamma","a","viewProjMatrix","cameraPos","worldDirection","_createScatterProgram","texCoord","flip","skyCubeMap","normalize","createRenderStateSet","useDepthState","enableTest","enableWrite","setCompareFunc","useRasterizerState","setCullMode","useBlendingState","enable","setBlendFunc","setBlendEquation","setBlendFuncRGB","setBlendFuncAlpha","createVertexLayout","vertexBuffers","createVertexBuffer","Float32Array","BoxShape","size","data","uniformSphereSamples","length","v","Primitive","createAndSetVertexBuffer","indexCount","indexStart","primitiveType","directionAndCutoff","scaleBy","ShaderHelper","defaultSunDir","diffuseAndIntensity","createTransmittanceLutProgram","createMultiScatteringLutProgram","createSkyViewLutProgram","createAPLutProgram","cloud","float","time","velocity","func","p2","f","smoothNoise3D","t","$return","skyBox","sunIntensity","noiseValue","lessThanEqual","tMin","cloudPoint","speed","noiseScale","noise","smoothStep","cloudColor","vfactor","clamp","factor","mix"],"mappings":"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"}
@@ -1,168 +0,0 @@
1
- import { drawFullscreenQuad } from './fullscreenquad.js';
2
- import { Disposable, Vector4 } from '@zephyr3d/base';
3
-
4
- /**
5
- * Weighted-blended OIT renderer.
6
- *
7
- * @remarks
8
- * The weighed-blended OIT renderer supports both WebGL, WebGL2 and WebGPU device.
9
- *
10
- * @public
11
- */ class WeightedBlendedOIT extends Disposable {
12
- /** Type name of WeightedBlendedOIT */ static type = 'wb';
13
- static _compositeProgram;
14
- static _compositeBindGroup;
15
- static _compositeRenderStates;
16
- constructor(){
17
- super();
18
- }
19
- /**
20
- * {@inheritDoc OIT.getType}
21
- */ getType() {
22
- return WeightedBlendedOIT.type;
23
- }
24
- /**
25
- * {@inheritDoc OIT.supportDevice}
26
- */ supportDevice(_deviceType) {
27
- return true;
28
- }
29
- /**
30
- * {@inheritDoc OIT.wantsPremultipliedAlpha}
31
- */ wantsPremultipliedAlpha() {
32
- return false;
33
- }
34
- /**
35
- * {@inheritDoc OIT.begin}
36
- */ begin(_ctx) {
37
- return 1;
38
- }
39
- /**
40
- * {@inheritDoc OIT.end}
41
- */ end(_ctx) {
42
- return;
43
- }
44
- /**
45
- * {@inheritDoc OIT.setupFragmentOutput}
46
- */ setupFragmentOutput(scope) {
47
- const pb = scope.$builder;
48
- scope.$outputs.outColor = pb.vec4();
49
- scope.$outputs.outAlpha = pb.getDevice().type === 'webgl' ? pb.vec4() : pb.float();
50
- }
51
- /**
52
- * {@inheritDoc OIT.beginPass}
53
- */ beginPass(ctx, _pass) {
54
- const device = ctx.device;
55
- const accumBuffer = this.getAccumFramebuffer(ctx, device);
56
- device.pushDeviceStates();
57
- device.setFramebuffer(accumBuffer);
58
- device.clearFrameBuffer(new Vector4(0, 0, 0, 1), null, null);
59
- return true;
60
- }
61
- /**
62
- * {@inheritDoc OIT.endPass}
63
- */ endPass(ctx, _pass) {
64
- const device = ctx.device;
65
- const accumBuffer = device.getFramebuffer();
66
- device.popDeviceStates();
67
- const accumTargets = accumBuffer.getColorAttachments();
68
- this.composite(ctx, device, accumTargets[0], accumTargets[1]);
69
- }
70
- /**
71
- * {@inheritDoc OIT.calculateHash}
72
- */ calculateHash() {
73
- return this.getType();
74
- }
75
- /**
76
- * {@inheritDoc OIT.applyUniforms}
77
- */ applyUniforms(_ctx, _bindGroup) {
78
- return;
79
- }
80
- /**
81
- * {@inheritDoc OIT.outputFragmentColor}
82
- */ outputFragmentColor(scope, color) {
83
- const pb = scope.$builder;
84
- pb.func('Z_WBOIT_depthWeight', [
85
- pb.float('z'),
86
- pb.float('a')
87
- ], function() {
88
- this.$return(pb.clamp(pb.mul(pb.pow(pb.add(pb.min(1, pb.mul(this.a, 10)), 0.01), 3), 1e8, pb.pow(pb.sub(1, pb.mul(this.z, 0.9)), 2)), 1e-2, 3e3));
89
- });
90
- pb.func('Z_WBOIT_output', [
91
- pb.vec4('color')
92
- ], function() {
93
- this.$l.w = this.Z_WBOIT_depthWeight(this.$builtins.fragCoord.z, this.color.a);
94
- this.$outputs[0] = pb.vec4(pb.mul(this.color.rgb, this.w), this.color.a);
95
- this.$outputs[1] = pb.getDevice().type === 'webgl' ? pb.vec4(pb.mul(this.color.a, this.w)) : pb.mul(this.color.a, this.w);
96
- });
97
- scope.Z_WBOIT_output(color);
98
- return true;
99
- }
100
- /**
101
- * {@inheritDoc OIT.setRenderStates}
102
- */ setRenderStates(rs) {
103
- const blendingState = rs.useBlendingState();
104
- blendingState.enable(true);
105
- blendingState.setBlendEquation('add', 'add');
106
- blendingState.setBlendFuncRGB('one', 'one');
107
- blendingState.setBlendFuncAlpha('zero', 'inv-src-alpha');
108
- const depthState = rs.useDepthState();
109
- depthState.enableWrite(false).enableTest(true);
110
- }
111
- /** @internal */ composite(ctx, device, accumColor, accumAlpha) {
112
- device.setProgram(WeightedBlendedOIT.getCompositeProgram(device));
113
- WeightedBlendedOIT._compositeBindGroup.setTexture('accumColorTex', accumColor);
114
- WeightedBlendedOIT._compositeBindGroup.setTexture('accumAlphaTex', accumAlpha);
115
- device.setBindGroup(0, WeightedBlendedOIT._compositeBindGroup);
116
- drawFullscreenQuad(WeightedBlendedOIT._compositeRenderStates);
117
- }
118
- /** @internal */ getAccumFramebuffer(ctx, device) {
119
- const width = ctx.depthTexture.width;
120
- const height = ctx.depthTexture.height;
121
- const accumColor = device.pool.fetchTemporalTexture2D(false, 'rgba16f', width, height, false);
122
- const accumAlpha = device.pool.fetchTemporalTexture2D(false, device.type === 'webgl' ? 'rgba16f' : 'r16f', width, height, false);
123
- const fb = device.pool.createTemporalFramebuffer(true, [
124
- accumColor,
125
- accumAlpha
126
- ], ctx.depthTexture);
127
- device.pool.releaseTexture(accumColor);
128
- device.pool.releaseTexture(accumAlpha);
129
- return fb;
130
- }
131
- /** @internal */ static getCompositeProgram(device) {
132
- if (!this._compositeProgram) {
133
- this._compositeProgram = device.buildRenderProgram({
134
- vertex (pb) {
135
- this.$inputs.pos = pb.vec2().attrib('position');
136
- this.$outputs.uv = pb.vec2();
137
- pb.main(function() {
138
- this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);
139
- this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));
140
- if (device.type === 'webgpu') {
141
- this.$builtins.position.y = pb.neg(this.$builtins.position.y);
142
- }
143
- });
144
- },
145
- fragment (pb) {
146
- this.$outputs.outColor = pb.vec4();
147
- this.accumColorTex = pb.tex2D().uniform(0);
148
- this.accumAlphaTex = pb.tex2D().uniform(0);
149
- pb.main(function() {
150
- this.$l.accumColor = pb.textureSample(this.accumColorTex, this.$inputs.uv);
151
- this.$l.accumAlpha = pb.textureSample(this.accumAlphaTex, this.$inputs.uv);
152
- this.$l.r = this.accumColor.a;
153
- this.accumColor.a = this.accumAlpha.r;
154
- this.$outputs.outColor = pb.vec4(pb.div(this.accumColor.rgb, pb.clamp(this.accumColor.a, 0.0001, 50000)), this.r);
155
- });
156
- }
157
- });
158
- this._compositeBindGroup = device.createBindGroup(this._compositeProgram.bindGroupLayouts[0]);
159
- this._compositeRenderStates = device.createRenderStateSet();
160
- this._compositeRenderStates.useBlendingState().enable(true).setBlendFuncRGB('inv-src-alpha', 'src-alpha').setBlendFuncAlpha('zero', 'one');
161
- this._compositeRenderStates.useDepthState().enableTest(false).enableWrite(false);
162
- }
163
- return this._compositeProgram;
164
- }
165
- }
166
-
167
- export { WeightedBlendedOIT };
168
- //# sourceMappingURL=weightedblended_oit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"weightedblended_oit.js","sources":["../../../src/render/weightedblended_oit.ts"],"sourcesContent":["import type {\r\n AbstractDevice,\r\n BindGroup,\r\n GPUProgram,\r\n PBGlobalScope,\r\n PBInsideFunctionScope,\r\n PBShaderExp,\r\n RenderStateSet,\r\n Texture2D\r\n} from '@zephyr3d/device';\r\nimport type { OIT } from './oit';\r\nimport type { DrawContext } from './drawable';\r\nimport { drawFullscreenQuad } from './fullscreenquad';\r\nimport { Disposable, Vector4 } from '@zephyr3d/base';\r\n\r\n/**\r\n * Weighted-blended OIT renderer.\r\n *\r\n * @remarks\r\n * The weighed-blended OIT renderer supports both WebGL, WebGL2 and WebGPU device.\r\n *\r\n * @public\r\n */\r\nexport class WeightedBlendedOIT extends Disposable implements OIT {\r\n /** Type name of WeightedBlendedOIT */\r\n public static readonly type = 'wb';\r\n private static _compositeProgram: GPUProgram;\r\n private static _compositeBindGroup: BindGroup;\r\n private static _compositeRenderStates: RenderStateSet;\r\n\r\n constructor() {\r\n super();\r\n }\r\n /**\r\n * {@inheritDoc OIT.getType}\r\n */\r\n getType(): string {\r\n return WeightedBlendedOIT.type;\r\n }\r\n /**\r\n * {@inheritDoc OIT.supportDevice}\r\n */\r\n supportDevice(_deviceType: string): boolean {\r\n return true;\r\n }\r\n /**\r\n * {@inheritDoc OIT.wantsPremultipliedAlpha}\r\n */\r\n wantsPremultipliedAlpha() {\r\n return false;\r\n }\r\n /**\r\n * {@inheritDoc OIT.begin}\r\n */\r\n begin(_ctx: DrawContext): number {\r\n return 1;\r\n }\r\n /**\r\n * {@inheritDoc OIT.end}\r\n */\r\n end(_ctx: DrawContext) {\r\n return;\r\n }\r\n /**\r\n * {@inheritDoc OIT.setupFragmentOutput}\r\n */\r\n setupFragmentOutput(scope: PBGlobalScope) {\r\n const pb = scope.$builder;\r\n scope.$outputs.outColor = pb.vec4();\r\n scope.$outputs.outAlpha = pb.getDevice().type === 'webgl' ? pb.vec4() : pb.float();\r\n }\r\n /**\r\n * {@inheritDoc OIT.beginPass}\r\n */\r\n beginPass(ctx: DrawContext, _pass: number): boolean {\r\n const device = ctx.device;\r\n const accumBuffer = this.getAccumFramebuffer(ctx, device);\r\n device.pushDeviceStates();\r\n device.setFramebuffer(accumBuffer);\r\n device.clearFrameBuffer(new Vector4(0, 0, 0, 1), null, null);\r\n return true;\r\n }\r\n /**\r\n * {@inheritDoc OIT.endPass}\r\n */\r\n endPass(ctx: DrawContext, _pass: number) {\r\n const device = ctx.device;\r\n const accumBuffer = device.getFramebuffer();\r\n device.popDeviceStates();\r\n const accumTargets = accumBuffer.getColorAttachments();\r\n this.composite(ctx, device, accumTargets[0] as Texture2D, accumTargets[1] as Texture2D);\r\n }\r\n /**\r\n * {@inheritDoc OIT.calculateHash}\r\n */\r\n calculateHash(): string {\r\n return this.getType();\r\n }\r\n /**\r\n * {@inheritDoc OIT.applyUniforms}\r\n */\r\n applyUniforms(_ctx: DrawContext, _bindGroup: BindGroup) {\r\n return;\r\n }\r\n /**\r\n * {@inheritDoc OIT.outputFragmentColor}\r\n */\r\n outputFragmentColor(scope: PBInsideFunctionScope, color: PBShaderExp) {\r\n const pb = scope.$builder;\r\n pb.func('Z_WBOIT_depthWeight', [pb.float('z'), pb.float('a')], function () {\r\n this.$return(\r\n pb.clamp(\r\n pb.mul(\r\n pb.pow(pb.add(pb.min(1, pb.mul(this.a, 10)), 0.01), 3),\r\n 1e8,\r\n pb.pow(pb.sub(1, pb.mul(this.z, 0.9)), 2)\r\n ),\r\n 1e-2,\r\n 3e3\r\n )\r\n );\r\n });\r\n pb.func('Z_WBOIT_output', [pb.vec4('color')], function () {\r\n this.$l.w = this.Z_WBOIT_depthWeight(this.$builtins.fragCoord.z, this.color.a);\r\n this.$outputs[0] = pb.vec4(pb.mul(this.color.rgb, this.w), this.color.a);\r\n this.$outputs[1] =\r\n pb.getDevice().type === 'webgl'\r\n ? pb.vec4(pb.mul(this.color.a, this.w))\r\n : pb.mul(this.color.a, this.w);\r\n });\r\n scope.Z_WBOIT_output(color);\r\n return true;\r\n }\r\n /**\r\n * {@inheritDoc OIT.setRenderStates}\r\n */\r\n setRenderStates(rs: RenderStateSet) {\r\n const blendingState = rs.useBlendingState();\r\n blendingState.enable(true);\r\n blendingState.setBlendEquation('add', 'add');\r\n blendingState.setBlendFuncRGB('one', 'one');\r\n blendingState.setBlendFuncAlpha('zero', 'inv-src-alpha');\r\n const depthState = rs.useDepthState();\r\n depthState.enableWrite(false).enableTest(true);\r\n }\r\n /** @internal */\r\n private composite(ctx: DrawContext, device: AbstractDevice, accumColor: Texture2D, accumAlpha: Texture2D) {\r\n device.setProgram(WeightedBlendedOIT.getCompositeProgram(device));\r\n WeightedBlendedOIT._compositeBindGroup.setTexture('accumColorTex', accumColor);\r\n WeightedBlendedOIT._compositeBindGroup.setTexture('accumAlphaTex', accumAlpha);\r\n device.setBindGroup(0, WeightedBlendedOIT._compositeBindGroup);\r\n drawFullscreenQuad(WeightedBlendedOIT._compositeRenderStates);\r\n }\r\n /** @internal */\r\n private getAccumFramebuffer(ctx: DrawContext, device: AbstractDevice) {\r\n const width = ctx.depthTexture.width;\r\n const height = ctx.depthTexture.height;\r\n const accumColor = device.pool.fetchTemporalTexture2D(false, 'rgba16f', width, height, false);\r\n const accumAlpha = device.pool.fetchTemporalTexture2D(\r\n false,\r\n device.type === 'webgl' ? 'rgba16f' : 'r16f',\r\n width,\r\n height,\r\n false\r\n );\r\n const fb = device.pool.createTemporalFramebuffer(true, [accumColor, accumAlpha], ctx.depthTexture);\r\n device.pool.releaseTexture(accumColor);\r\n device.pool.releaseTexture(accumAlpha);\r\n return fb;\r\n }\r\n /** @internal */\r\n private static getCompositeProgram(device: AbstractDevice) {\r\n if (!this._compositeProgram) {\r\n this._compositeProgram = device.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.pos = pb.vec2().attrib('position');\r\n this.$outputs.uv = pb.vec2();\r\n pb.main(function () {\r\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\r\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\r\n if (device.type === 'webgpu') {\r\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.outColor = pb.vec4();\r\n this.accumColorTex = pb.tex2D().uniform(0);\r\n this.accumAlphaTex = pb.tex2D().uniform(0);\r\n pb.main(function () {\r\n this.$l.accumColor = pb.textureSample(this.accumColorTex, this.$inputs.uv);\r\n this.$l.accumAlpha = pb.textureSample(this.accumAlphaTex, this.$inputs.uv);\r\n this.$l.r = this.accumColor.a;\r\n this.accumColor.a = this.accumAlpha.r;\r\n this.$outputs.outColor = pb.vec4(\r\n pb.div(this.accumColor.rgb, pb.clamp(this.accumColor.a, 0.0001, 50000)),\r\n this.r\r\n );\r\n });\r\n }\r\n });\r\n this._compositeBindGroup = device.createBindGroup(this._compositeProgram.bindGroupLayouts[0]);\r\n this._compositeRenderStates = device.createRenderStateSet();\r\n this._compositeRenderStates\r\n .useBlendingState()\r\n .enable(true)\r\n .setBlendFuncRGB('inv-src-alpha', 'src-alpha')\r\n .setBlendFuncAlpha('zero', 'one');\r\n this._compositeRenderStates.useDepthState().enableTest(false).enableWrite(false);\r\n }\r\n return this._compositeProgram;\r\n }\r\n}\r\n"],"names":["WeightedBlendedOIT","Disposable","type","_compositeProgram","_compositeBindGroup","_compositeRenderStates","getType","supportDevice","_deviceType","wantsPremultipliedAlpha","begin","_ctx","end","setupFragmentOutput","scope","pb","$builder","$outputs","outColor","vec4","outAlpha","getDevice","float","beginPass","ctx","_pass","device","accumBuffer","getAccumFramebuffer","pushDeviceStates","setFramebuffer","clearFrameBuffer","Vector4","endPass","getFramebuffer","popDeviceStates","accumTargets","getColorAttachments","composite","calculateHash","applyUniforms","_bindGroup","outputFragmentColor","color","func","$return","clamp","mul","pow","add","min","a","sub","z","$l","w","Z_WBOIT_depthWeight","$builtins","fragCoord","rgb","Z_WBOIT_output","setRenderStates","rs","blendingState","useBlendingState","enable","setBlendEquation","setBlendFuncRGB","setBlendFuncAlpha","depthState","useDepthState","enableWrite","enableTest","accumColor","accumAlpha","setProgram","getCompositeProgram","setTexture","setBindGroup","drawFullscreenQuad","width","depthTexture","height","pool","fetchTemporalTexture2D","fb","createTemporalFramebuffer","releaseTexture","buildRenderProgram","vertex","$inputs","pos","vec2","attrib","uv","main","position","xy","y","neg","fragment","accumColorTex","tex2D","uniform","accumAlphaTex","textureSample","r","div","createBindGroup","bindGroupLayouts","createRenderStateSet"],"mappings":"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"}