@zephyr3d/scene 0.8.0 → 0.8.2

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 (389) hide show
  1. package/dist/animation/animationset.js +220 -1
  2. package/dist/animation/animationset.js.map +1 -1
  3. package/dist/animation/ik/ccd_solver.js +3 -4
  4. package/dist/animation/ik/ccd_solver.js.map +1 -1
  5. package/dist/animation/ik/fabrik_solver.js +3 -4
  6. package/dist/animation/ik/fabrik_solver.js.map +1 -1
  7. package/dist/animation/ik/ik_pole_constraint.js +7 -2
  8. package/dist/animation/ik/ik_pole_constraint.js.map +1 -1
  9. package/dist/animation/ik/ik_utils.js +0 -79
  10. package/dist/animation/ik/ik_utils.js.map +1 -1
  11. package/dist/animation/ik/two_bone_ik_solver.js +3 -4
  12. package/dist/animation/ik/two_bone_ik_solver.js.map +1 -1
  13. package/dist/animation/skeleton.js +157 -125
  14. package/dist/animation/skeleton.js.map +1 -1
  15. package/dist/animation/spring/spring_bone.js +240 -0
  16. package/dist/animation/spring/spring_bone.js.map +1 -0
  17. package/dist/animation/spring/spring_bone_collider.js +198 -0
  18. package/dist/animation/spring/spring_bone_collider.js.map +1 -0
  19. package/dist/animation/spring/spring_bone_constraint.js +170 -0
  20. package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
  21. package/dist/animation/spring/spring_bone_system.js +328 -0
  22. package/dist/animation/spring/spring_bone_system.js.map +1 -0
  23. package/dist/asset/model.js +2 -2
  24. package/dist/index.d.ts +17 -0
  25. package/dist/material/mixins/pbr/common.js +20 -17
  26. package/dist/material/mixins/pbr/common.js.map +1 -1
  27. package/dist/render/gpu_picking.js +100 -0
  28. package/dist/render/gpu_picking.js.map +1 -0
  29. package/dist/render/rendergraph/device_pool_allocator.js +41 -0
  30. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
  31. package/dist/render/rendergraph/executor.js +146 -0
  32. package/dist/render/rendergraph/executor.js.map +1 -0
  33. package/dist/render/rendergraph/forward_plus_builder.js +414 -0
  34. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
  35. package/dist/render/rendergraph/rendergraph.js +306 -0
  36. package/dist/render/rendergraph/rendergraph.js.map +1 -0
  37. package/dist/render/rendergraph/types.js +57 -0
  38. package/dist/render/rendergraph/types.js.map +1 -0
  39. package/dist/render/sky_motion_vector.js +85 -0
  40. package/dist/render/sky_motion_vector.js.map +1 -0
  41. package/dist/utility/serialization/scene/animation.js +3 -3
  42. package/dist/utility/serialization/scene/node.js +1 -1
  43. package/package.json +2 -2
  44. package/dist/animation/ik/ik_chain_builder.js +0 -68
  45. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  46. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  47. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  48. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  49. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  50. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  51. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  52. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  53. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  54. package/dist/src/animation/animation.js +0 -127
  55. package/dist/src/animation/animation.js.map +0 -1
  56. package/dist/src/animation/animationset.js +0 -255
  57. package/dist/src/animation/animationset.js.map +0 -1
  58. package/dist/src/animation/animationtrack.js +0 -34
  59. package/dist/src/animation/animationtrack.js.map +0 -1
  60. package/dist/src/animation/eulerrotationtrack.js +0 -52
  61. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  62. package/dist/src/animation/morphtarget.js +0 -93
  63. package/dist/src/animation/morphtarget.js.map +0 -1
  64. package/dist/src/animation/morphtrack.js +0 -70
  65. package/dist/src/animation/morphtrack.js.map +0 -1
  66. package/dist/src/animation/proptrack.js +0 -161
  67. package/dist/src/animation/proptrack.js.map +0 -1
  68. package/dist/src/animation/rotationtrack.js +0 -51
  69. package/dist/src/animation/rotationtrack.js.map +0 -1
  70. package/dist/src/animation/scaletrack.js +0 -50
  71. package/dist/src/animation/scaletrack.js.map +0 -1
  72. package/dist/src/animation/skeleton.js +0 -204
  73. package/dist/src/animation/skeleton.js.map +0 -1
  74. package/dist/src/animation/translationtrack.js +0 -50
  75. package/dist/src/animation/translationtrack.js.map +0 -1
  76. package/dist/src/app/app.js +0 -129
  77. package/dist/src/app/app.js.map +0 -1
  78. package/dist/src/app/inputmgr.js +0 -267
  79. package/dist/src/app/inputmgr.js.map +0 -1
  80. package/dist/src/asset/assetmanager.js +0 -404
  81. package/dist/src/asset/assetmanager.js.map +0 -1
  82. package/dist/src/asset/builtin.js +0 -337
  83. package/dist/src/asset/builtin.js.map +0 -1
  84. package/dist/src/asset/loaders/dds/dds.js +0 -470
  85. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  86. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  87. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  88. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  89. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  90. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  91. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  92. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  93. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  94. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  95. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  96. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  97. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  98. package/dist/src/asset/loaders/loader.js +0 -45
  99. package/dist/src/asset/loaders/loader.js.map +0 -1
  100. package/dist/src/asset/model.js +0 -414
  101. package/dist/src/asset/model.js.map +0 -1
  102. package/dist/src/blitter/bilateralblur.js +0 -221
  103. package/dist/src/blitter/bilateralblur.js.map +0 -1
  104. package/dist/src/blitter/blitter.js +0 -390
  105. package/dist/src/blitter/blitter.js.map +0 -1
  106. package/dist/src/blitter/box.js +0 -118
  107. package/dist/src/blitter/box.js.map +0 -1
  108. package/dist/src/blitter/copy.js +0 -22
  109. package/dist/src/blitter/copy.js.map +0 -1
  110. package/dist/src/blitter/gaussianblur.js +0 -228
  111. package/dist/src/blitter/gaussianblur.js.map +0 -1
  112. package/dist/src/camera/base.js +0 -92
  113. package/dist/src/camera/base.js.map +0 -1
  114. package/dist/src/camera/camera.js +0 -1005
  115. package/dist/src/camera/camera.js.map +0 -1
  116. package/dist/src/camera/fps.js +0 -238
  117. package/dist/src/camera/fps.js.map +0 -1
  118. package/dist/src/camera/orbit.js +0 -245
  119. package/dist/src/camera/orbit.js.map +0 -1
  120. package/dist/src/camera/orthocamera.js +0 -167
  121. package/dist/src/camera/orthocamera.js.map +0 -1
  122. package/dist/src/camera/perspectivecamera.js +0 -141
  123. package/dist/src/camera/perspectivecamera.js.map +0 -1
  124. package/dist/src/index.js +0 -120
  125. package/dist/src/index.js.map +0 -1
  126. package/dist/src/material/blinn.js +0 -81
  127. package/dist/src/material/blinn.js.map +0 -1
  128. package/dist/src/material/grassmaterial.js +0 -113
  129. package/dist/src/material/grassmaterial.js.map +0 -1
  130. package/dist/src/material/lambert.js +0 -92
  131. package/dist/src/material/lambert.js.map +0 -1
  132. package/dist/src/material/material.js +0 -301
  133. package/dist/src/material/material.js.map +0 -1
  134. package/dist/src/material/meshmaterial.js +0 -704
  135. package/dist/src/material/meshmaterial.js.map +0 -1
  136. package/dist/src/material/mixins/albedocolor.js +0 -76
  137. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  138. package/dist/src/material/mixins/foliage.js +0 -47
  139. package/dist/src/material/mixins/foliage.js.map +0 -1
  140. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  141. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  142. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  143. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  144. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  145. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  146. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  147. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  148. package/dist/src/material/mixins/lit.js +0 -476
  149. package/dist/src/material/mixins/lit.js.map +0 -1
  150. package/dist/src/material/mixins/pbr/common.js +0 -918
  151. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  152. package/dist/src/material/mixins/texture.js +0 -172
  153. package/dist/src/material/mixins/texture.js.map +0 -1
  154. package/dist/src/material/mixins/vertexcolor.js +0 -56
  155. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  156. package/dist/src/material/particle.js +0 -178
  157. package/dist/src/material/particle.js.map +0 -1
  158. package/dist/src/material/pbrmr.js +0 -97
  159. package/dist/src/material/pbrmr.js.map +0 -1
  160. package/dist/src/material/pbrsg.js +0 -97
  161. package/dist/src/material/pbrsg.js.map +0 -1
  162. package/dist/src/material/shader/helper.js +0 -1209
  163. package/dist/src/material/shader/helper.js.map +0 -1
  164. package/dist/src/material/terrain-cm.js +0 -606
  165. package/dist/src/material/terrain-cm.js.map +0 -1
  166. package/dist/src/material/terrainmaterial.js +0 -375
  167. package/dist/src/material/terrainmaterial.js.map +0 -1
  168. package/dist/src/material/unlit.js +0 -41
  169. package/dist/src/material/unlit.js.map +0 -1
  170. package/dist/src/material/water.js +0 -417
  171. package/dist/src/material/water.js.map +0 -1
  172. package/dist/src/posteffect/bloom.js +0 -361
  173. package/dist/src/posteffect/bloom.js.map +0 -1
  174. package/dist/src/posteffect/compositor.js +0 -226
  175. package/dist/src/posteffect/compositor.js.map +0 -1
  176. package/dist/src/posteffect/fxaa.js +0 -273
  177. package/dist/src/posteffect/fxaa.js.map +0 -1
  178. package/dist/src/posteffect/grayscale.js +0 -69
  179. package/dist/src/posteffect/grayscale.js.map +0 -1
  180. package/dist/src/posteffect/motionblur.js +0 -96
  181. package/dist/src/posteffect/motionblur.js.map +0 -1
  182. package/dist/src/posteffect/posteffect.js +0 -126
  183. package/dist/src/posteffect/posteffect.js.map +0 -1
  184. package/dist/src/posteffect/sao.js +0 -324
  185. package/dist/src/posteffect/sao.js.map +0 -1
  186. package/dist/src/posteffect/ssr.js +0 -489
  187. package/dist/src/posteffect/ssr.js.map +0 -1
  188. package/dist/src/posteffect/taa.js +0 -172
  189. package/dist/src/posteffect/taa.js.map +0 -1
  190. package/dist/src/posteffect/tonemap.js +0 -94
  191. package/dist/src/posteffect/tonemap.js.map +0 -1
  192. package/dist/src/render/abuffer_oit.js +0 -361
  193. package/dist/src/render/abuffer_oit.js.map +0 -1
  194. package/dist/src/render/clipmap.js +0 -851
  195. package/dist/src/render/clipmap.js.map +0 -1
  196. package/dist/src/render/cluster_light.js +0 -333
  197. package/dist/src/render/cluster_light.js.map +0 -1
  198. package/dist/src/render/cull_visitor.js +0 -187
  199. package/dist/src/render/cull_visitor.js.map +0 -1
  200. package/dist/src/render/depthpass.js +0 -68
  201. package/dist/src/render/depthpass.js.map +0 -1
  202. package/dist/src/render/drawable_mixin.js +0 -227
  203. package/dist/src/render/drawable_mixin.js.map +0 -1
  204. package/dist/src/render/envlight.js +0 -463
  205. package/dist/src/render/envlight.js.map +0 -1
  206. package/dist/src/render/fbm_wavegenerator.js +0 -251
  207. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  208. package/dist/src/render/fft_wavegenerator.js +0 -1006
  209. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  210. package/dist/src/render/fullscreenquad.js +0 -38
  211. package/dist/src/render/fullscreenquad.js.map +0 -1
  212. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  213. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  214. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  215. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  216. package/dist/src/render/hzb.js +0 -273
  217. package/dist/src/render/hzb.js.map +0 -1
  218. package/dist/src/render/lightpass.js +0 -172
  219. package/dist/src/render/lightpass.js.map +0 -1
  220. package/dist/src/render/objectcolorpass.js +0 -51
  221. package/dist/src/render/objectcolorpass.js.map +0 -1
  222. package/dist/src/render/primitive.js +0 -364
  223. package/dist/src/render/primitive.js.map +0 -1
  224. package/dist/src/render/render_queue.js +0 -467
  225. package/dist/src/render/render_queue.js.map +0 -1
  226. package/dist/src/render/renderbundle_wrapper.js +0 -152
  227. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  228. package/dist/src/render/renderer.js +0 -455
  229. package/dist/src/render/renderer.js.map +0 -1
  230. package/dist/src/render/renderpass.js +0 -200
  231. package/dist/src/render/renderpass.js.map +0 -1
  232. package/dist/src/render/shadowmap_pass.js +0 -56
  233. package/dist/src/render/shadowmap_pass.js.map +0 -1
  234. package/dist/src/render/sky.js +0 -1103
  235. package/dist/src/render/sky.js.map +0 -1
  236. package/dist/src/render/weightedblended_oit.js +0 -168
  237. package/dist/src/render/weightedblended_oit.js.map +0 -1
  238. package/dist/src/scene/batchgroup.js +0 -162
  239. package/dist/src/scene/batchgroup.js.map +0 -1
  240. package/dist/src/scene/environment.js +0 -209
  241. package/dist/src/scene/environment.js.map +0 -1
  242. package/dist/src/scene/graph_node.js +0 -72
  243. package/dist/src/scene/graph_node.js.map +0 -1
  244. package/dist/src/scene/light.js +0 -416
  245. package/dist/src/scene/light.js.map +0 -1
  246. package/dist/src/scene/mesh.js +0 -341
  247. package/dist/src/scene/mesh.js.map +0 -1
  248. package/dist/src/scene/octree.js +0 -649
  249. package/dist/src/scene/octree.js.map +0 -1
  250. package/dist/src/scene/particlesys.js +0 -738
  251. package/dist/src/scene/particlesys.js.map +0 -1
  252. package/dist/src/scene/raycast_visitor.js +0 -103
  253. package/dist/src/scene/raycast_visitor.js.map +0 -1
  254. package/dist/src/scene/scene.js +0 -284
  255. package/dist/src/scene/scene.js.map +0 -1
  256. package/dist/src/scene/scene_node.js +0 -732
  257. package/dist/src/scene/scene_node.js.map +0 -1
  258. package/dist/src/scene/terrain/grass.js +0 -278
  259. package/dist/src/scene/terrain/grass.js.map +0 -1
  260. package/dist/src/scene/terrain/heightfield.js +0 -475
  261. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  262. package/dist/src/scene/terrain/patch.js +0 -530
  263. package/dist/src/scene/terrain/patch.js.map +0 -1
  264. package/dist/src/scene/terrain/quadtree.js +0 -461
  265. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  266. package/dist/src/scene/terrain/terrain.js +0 -246
  267. package/dist/src/scene/terrain/terrain.js.map +0 -1
  268. package/dist/src/scene/terrain-cm/grass.js +0 -594
  269. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  270. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  271. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  272. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  273. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  274. package/dist/src/scene/water.js +0 -374
  275. package/dist/src/scene/water.js.map +0 -1
  276. package/dist/src/shaders/atmosphere.js +0 -957
  277. package/dist/src/shaders/atmosphere.js.map +0 -1
  278. package/dist/src/shaders/fog.js +0 -112
  279. package/dist/src/shaders/fog.js.map +0 -1
  280. package/dist/src/shaders/misc.js +0 -266
  281. package/dist/src/shaders/misc.js.map +0 -1
  282. package/dist/src/shaders/noise.js +0 -222
  283. package/dist/src/shaders/noise.js.map +0 -1
  284. package/dist/src/shaders/pbr.js +0 -51
  285. package/dist/src/shaders/pbr.js.map +0 -1
  286. package/dist/src/shaders/shadow.js +0 -636
  287. package/dist/src/shaders/shadow.js.map +0 -1
  288. package/dist/src/shaders/ssr.js +0 -490
  289. package/dist/src/shaders/ssr.js.map +0 -1
  290. package/dist/src/shaders/temporal.js +0 -215
  291. package/dist/src/shaders/temporal.js.map +0 -1
  292. package/dist/src/shaders/water.js +0 -756
  293. package/dist/src/shaders/water.js.map +0 -1
  294. package/dist/src/shadow/esm.js +0 -237
  295. package/dist/src/shadow/esm.js.map +0 -1
  296. package/dist/src/shadow/pcf_opt.js +0 -181
  297. package/dist/src/shadow/pcf_opt.js.map +0 -1
  298. package/dist/src/shadow/pcf_pd.js +0 -189
  299. package/dist/src/shadow/pcf_pd.js.map +0 -1
  300. package/dist/src/shadow/shader.js +0 -37
  301. package/dist/src/shadow/shader.js.map +0 -1
  302. package/dist/src/shadow/shadow_impl.js +0 -15
  303. package/dist/src/shadow/shadow_impl.js.map +0 -1
  304. package/dist/src/shadow/shadowmapper.js +0 -790
  305. package/dist/src/shadow/shadowmapper.js.map +0 -1
  306. package/dist/src/shadow/ssm.js +0 -159
  307. package/dist/src/shadow/ssm.js.map +0 -1
  308. package/dist/src/shadow/vsm.js +0 -297
  309. package/dist/src/shadow/vsm.js.map +0 -1
  310. package/dist/src/shapes/box.js +0 -386
  311. package/dist/src/shapes/box.js.map +0 -1
  312. package/dist/src/shapes/cylinder.js +0 -125
  313. package/dist/src/shapes/cylinder.js.map +0 -1
  314. package/dist/src/shapes/plane.js +0 -88
  315. package/dist/src/shapes/plane.js.map +0 -1
  316. package/dist/src/shapes/shape.js +0 -87
  317. package/dist/src/shapes/shape.js.map +0 -1
  318. package/dist/src/shapes/sphere.js +0 -114
  319. package/dist/src/shapes/sphere.js.map +0 -1
  320. package/dist/src/shapes/tetrahedron.js +0 -188
  321. package/dist/src/shapes/tetrahedron.js.map +0 -1
  322. package/dist/src/shapes/torus.js +0 -111
  323. package/dist/src/shapes/torus.js.map +0 -1
  324. package/dist/src/utility/aabbtree.js +0 -400
  325. package/dist/src/utility/aabbtree.js.map +0 -1
  326. package/dist/src/utility/bounding_volume.js +0 -29
  327. package/dist/src/utility/bounding_volume.js.map +0 -1
  328. package/dist/src/utility/debug.js +0 -28
  329. package/dist/src/utility/debug.js.map +0 -1
  330. package/dist/src/utility/draco/decoder.js +0 -116
  331. package/dist/src/utility/draco/decoder.js.map +0 -1
  332. package/dist/src/utility/misc.js +0 -105
  333. package/dist/src/utility/misc.js.map +0 -1
  334. package/dist/src/utility/panorama.js +0 -163
  335. package/dist/src/utility/panorama.js.map +0 -1
  336. package/dist/src/utility/pmrem.js +0 -354
  337. package/dist/src/utility/pmrem.js.map +0 -1
  338. package/dist/src/utility/rendermipmap.js +0 -115
  339. package/dist/src/utility/rendermipmap.js.map +0 -1
  340. package/dist/src/utility/serialization/json.js +0 -402
  341. package/dist/src/utility/serialization/json.js.map +0 -1
  342. package/dist/src/utility/serialization/manager.js +0 -623
  343. package/dist/src/utility/serialization/manager.js.map +0 -1
  344. package/dist/src/utility/serialization/scene/animation.js +0 -248
  345. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  346. package/dist/src/utility/serialization/scene/batch.js +0 -59
  347. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  348. package/dist/src/utility/serialization/scene/camera.js +0 -790
  349. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  350. package/dist/src/utility/serialization/scene/common.js +0 -222
  351. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  352. package/dist/src/utility/serialization/scene/light.js +0 -575
  353. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  354. package/dist/src/utility/serialization/scene/material.js +0 -1111
  355. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  356. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  357. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  358. package/dist/src/utility/serialization/scene/misc.js +0 -39
  359. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  360. package/dist/src/utility/serialization/scene/node.js +0 -451
  361. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  362. package/dist/src/utility/serialization/scene/particle.js +0 -425
  363. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  364. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  365. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  366. package/dist/src/utility/serialization/scene/scene.js +0 -704
  367. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  368. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  369. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  370. package/dist/src/utility/serialization/scene/water.js +0 -465
  371. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  372. package/dist/src/utility/shprojector.js +0 -297
  373. package/dist/src/utility/shprojector.js.map +0 -1
  374. package/dist/src/utility/textures/ggxlut.js +0 -213
  375. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  376. package/dist/src/utility/textures/gradientnoise.js +0 -62
  377. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  378. package/dist/src/utility/textures/randomnoise.js +0 -41
  379. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  380. package/dist/src/values.js +0 -162
  381. package/dist/src/values.js.map +0 -1
  382. package/dist/utility/blueprint/material/common.js +0 -7
  383. package/dist/utility/blueprint/material/common.js.map +0 -1
  384. package/dist/utility/serialization/blueprint/constants.js +0 -255
  385. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  386. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  387. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  388. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  389. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
@@ -1,273 +0,0 @@
1
- import { drawFullscreenQuad } from './fullscreenquad.js';
2
- import { Application } from '../app/app.js';
3
- import '@zephyr3d/base';
4
- import '@zephyr3d/device';
5
- import { CopyBlitter } from '../blitter/copy.js';
6
- import { fetchSampler } from '../utility/misc.js';
7
-
8
- let hzbProgram = null;
9
- let hzbBindGroup = null;
10
- let blitter = null;
11
- let srcSize = null;
12
- /*
13
- vec3 trace_ray(vec3 ray_start, vec3 ray_dir)
14
- {
15
-
16
- if (ray_dir.z < 0.0) {
17
- return vec3(0);
18
- }
19
-
20
- ray_dir = normalize(ray_dir);
21
- ivec2 work_size = SCREEN_SIZE_INT;
22
-
23
- const int loop_max = 150;
24
- int mipmap = 0;
25
- int max_iter = loop_max;
26
-
27
- vec3 pos = ray_start;
28
-
29
- // Move pos by a small bias
30
- pos += ray_dir * 0.008;
31
-
32
- float hit_bias = 0.0017;
33
-
34
- while (mipmap > -1 && max_iter --> 0)
35
- {
36
-
37
- // Check if we are out of screen bounds, if so, return
38
- if (pos.x < 0.0 || pos.y < 0.0 || pos.x > 1.0 || pos.y > 1.0 || pos.z < 0.0 || pos.z > 1.0)
39
- {
40
- return vec3(0,0,0);
41
- }
42
-
43
- // Fetch the current minimum cell plane height
44
- float cell_z = textureLod(DownscaledDepth, pos.xy, mipmap).x;
45
-
46
- // Compute the fractional part of the coordinate (scaled by the working size)
47
- // so the values will be between 0.0 and 1.0
48
- vec2 fract_coord = mod(pos.xy * work_size, 1.0);
49
-
50
- // Modify fract coord based on which direction we are stepping in.
51
- // Fract coord now contains the percentage how far we moved already in
52
- // the current cell in each direction.
53
- fract_coord.x = ray_dir.x > 0.0 ? fract_coord.x : 1.0 - fract_coord.x;
54
- fract_coord.y = ray_dir.y > 0.0 ? fract_coord.y : 1.0 - fract_coord.y;
55
-
56
- // Compute maximum k and minimum k for which the ray would still be
57
- // inside of the cell.
58
- vec2 max_k_v = (1.0 / abs(ray_dir.xy)) / work_size.xy;
59
- vec2 min_k_v = -max_k_v * fract_coord.xy;
60
-
61
- // Scale the maximum k by the percentage we already processed in the current cell,
62
- // since e.g. if we already moved 50%, we can only move another 50%.
63
- max_k_v *= 1.0 - fract_coord.xy;
64
-
65
- // The maximum k is the minimum of the both sub-k's since if one component-maximum
66
- // is reached, the ray is out of the cell
67
- float max_k = min(max_k_v.x, max_k_v.y);
68
-
69
- // Same applies to the min_k, but because min_k is negative we have to use max()
70
- float min_k = max(min_k_v.x, min_k_v.y);
71
-
72
- // Check if the ray intersects with the cell plane. We have the following
73
- // equation:
74
- // pos.z + k * ray_dir.z = cell.z
75
- // So k is:
76
- float k = (cell_z - pos.z) / ray_dir.z;
77
-
78
- // Optional: Abort when ray didn't exactly intersect:
79
- // if (k < min_k && mipmap <= 0) {
80
- // return vec3(0);
81
- // }
82
-
83
- // Check if we intersected the cell
84
- if (k < max_k + hit_bias)
85
- {
86
- // Clamp k
87
- k = max(min_k, k);
88
-
89
- if (mipmap < 1) {
90
- pos += k * ray_dir;
91
- return pos;
92
- }
93
-
94
- // If we hit anything at a higher mipmap, step up to a higher detailed
95
- // mipmap:
96
- mipmap -= 2;
97
- work_size *= 4;
98
- } else {
99
-
100
- // If we hit nothing, move to the next cell, with a small bias
101
- pos += max_k * ray_dir * 1.04;
102
- }
103
-
104
- mipmap += 1;
105
- work_size /= 2;
106
- }
107
-
108
- return vec3(0);
109
- }
110
- */ /*
111
- float2 cell(float2 ray, float2 cell_count, uint camera) {
112
- return floor(ray.xy * cell_count);
113
- }
114
-
115
- float2 cell_count(float level) {
116
- return input_texture2_size / (level == 0.0 ? 1.0 : exp2(level));
117
- }
118
-
119
- float3 intersect_cell_boundary(float3 pos, float3 dir, float2 cell_id, float2 cell_count, float2 cross_step, float2 cross_offset, uint camera) {
120
- float2 cell_size = 1.0 / cell_count;
121
- float2 planes = cell_id/cell_count + cell_size * cross_step;
122
-
123
- float2 solutions = (planes - pos)/dir.xy;
124
- float3 intersection_pos = pos + dir * min(solutions.x, solutions.y);
125
-
126
- intersection_pos.xy += (solutions.x < solutions.y) ? float2(cross_offset.x, 0.0) : float2(0.0, cross_offset.y);
127
-
128
- return intersection_pos;
129
- }
130
-
131
- bool crossed_cell_boundary(float2 cell_id_one, float2 cell_id_two) {
132
- return (int)cell_id_one.x != (int)cell_id_two.x || (int)cell_id_one.y != (int)cell_id_two.y;
133
- }
134
-
135
- float minimum_depth_plane(float2 ray, float level, float2 cell_count, uint camera) {
136
- return input_texture2.Load(int3(vr_stereo_to_mono(ray.xy, camera) * cell_count, level)).r;
137
- }
138
-
139
- float3 hi_z_trace(float3 p, float3 v, in uint camera, out uint iterations) {
140
- float level = HIZ_START_LEVEL;
141
- float3 v_z = v/v.z;
142
- float2 hi_z_size = cell_count(level);
143
- float3 ray = p;
144
-
145
- float2 cross_step = float2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);
146
- float2 cross_offset = cross_step * 0.00001;
147
- cross_step = saturate(cross_step);
148
-
149
- float2 ray_cell = cell(ray.xy, hi_z_size.xy, camera);
150
- ray = intersect_cell_boundary(ray, v, ray_cell, hi_z_size, cross_step, cross_offset, camera);
151
-
152
- iterations = 0;
153
- while(level >= HIZ_STOP_LEVEL && iterations < MAX_ITERATIONS) {
154
- // get the cell number of the current ray
155
- float2 current_cell_count = cell_count(level);
156
- float2 old_cell_id = cell(ray.xy, current_cell_count, camera);
157
-
158
- // get the minimum depth plane in which the current ray resides
159
- float min_z = minimum_depth_plane(ray.xy, level, current_cell_count, camera);
160
-
161
- // intersect only if ray depth is below the minimum depth plane
162
- float3 tmp_ray = ray;
163
- if(v.z > 0) {
164
- float min_minus_ray = min_z - ray.z;
165
- tmp_ray = min_minus_ray > 0 ? ray + v_z*min_minus_ray : tmp_ray;
166
- float2 new_cell_id = cell(tmp_ray.xy, current_cell_count, camera);
167
- if(crossed_cell_boundary(old_cell_id, new_cell_id)) {
168
- tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);
169
- level = min(HIZ_MAX_LEVEL, level + 2.0f);
170
- }else{
171
- if(level == 1 && abs(min_minus_ray) > 0.0001) {
172
- tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);
173
- level = 2;
174
- }
175
- }
176
- } else if(ray.z < min_z) {
177
- tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);
178
- level = min(HIZ_MAX_LEVEL, level + 2.0f);
179
- }
180
-
181
- ray.xyz = tmp_ray.xyz;
182
- --level;
183
-
184
- ++iterations;
185
- }
186
- return ray;
187
- }
188
- */ function buildHZBProgram(device) {
189
- return device.buildRenderProgram({
190
- label: 'HZBBuilder',
191
- vertex (pb) {
192
- this.$inputs.pos = pb.vec2().attrib('position');
193
- this.$outputs.uv = pb.vec2();
194
- pb.main(function() {
195
- this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);
196
- this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));
197
- if (device.type === 'webgpu') {
198
- this.$builtins.position.y = pb.neg(this.$builtins.position.y);
199
- }
200
- });
201
- },
202
- fragment (pb) {
203
- this.$outputs.color = pb.vec4();
204
- this.srcTex = pb.tex2D().sampleType('unfilterable-float').uniform(0);
205
- this.srcSize = pb.ivec2().uniform(0);
206
- if (device.type !== 'webgpu') {
207
- this.srcMipLevel = pb.int().uniform(0);
208
- }
209
- pb.main(function() {
210
- this.$l.coord = pb.mul(pb.ivec2(this.$builtins.fragCoord.xy), 2);
211
- this.$l.minCoord = pb.ivec2(0, 0);
212
- this.$l.maxCoord = pb.sub(this.srcSize, pb.ivec2(1, 1));
213
- for(let i = 0; i < 4; i++){
214
- this.$l[`d${i}`] = pb.textureLoad(this.srcTex, pb.clamp(pb.add(this.coord, pb.ivec2(i >> 1, i & 1)), this.minCoord, this.maxCoord), device.type === 'webgpu' ? 0 : this.srcMipLevel).r;
215
- }
216
- this.$l.d = pb.min(pb.min(this.d0, this.d1), pb.min(this.d2, this.d3));
217
- this.$outputs.color = pb.vec4(this.d, 0, 0, 1);
218
- });
219
- }
220
- });
221
- }
222
- function buildHiZLevel(device, miplevel, srcTexture, dstTexture) {
223
- const sampler = fetchSampler('clamp_nearest');
224
- const framebuffer = device.pool.fetchTemporalFramebuffer(false, 0, 0, [
225
- dstTexture
226
- ], null, false, 1, true, miplevel + 1);
227
- framebuffer.setColorAttachmentGenerateMipmaps(0, false);
228
- srcSize[0] = Math.max(srcTexture.width >> miplevel, 1);
229
- srcSize[1] = Math.max(srcTexture.height >> miplevel, 1);
230
- hzbBindGroup.setValue('srcSize', srcSize);
231
- if (device.type === 'webgpu') {
232
- hzbBindGroup.setTextureView('srcTex', srcTexture, miplevel, 0, 1, sampler);
233
- } else {
234
- hzbBindGroup.setTexture('srcTex', srcTexture, sampler);
235
- hzbBindGroup.setValue('srcMipLevel', miplevel);
236
- }
237
- device.setProgram(hzbProgram);
238
- device.setBindGroup(0, hzbBindGroup);
239
- device.setFramebuffer(framebuffer);
240
- drawFullscreenQuad();
241
- if (srcTexture !== dstTexture) {
242
- device.copyFramebufferToTexture2D(framebuffer, 0, srcTexture, miplevel + 1);
243
- }
244
- device.pool.releaseFrameBuffer(framebuffer);
245
- }
246
- function buildHiZ(sourceTex, HiZFrameBuffer) {
247
- const device = Application.instance.device;
248
- if (!hzbProgram) {
249
- hzbProgram = buildHZBProgram(device);
250
- hzbBindGroup = device.createBindGroup(hzbProgram.bindGroupLayouts[0]);
251
- blitter = new CopyBlitter();
252
- srcSize = new Int32Array(2);
253
- }
254
- blitter.blit(sourceTex, HiZFrameBuffer, fetchSampler('clamp_nearest'));
255
- device.pushDeviceStates();
256
- const srcTex = HiZFrameBuffer.getColorAttachments()[0];
257
- if (device.type === 'webgpu') {
258
- for(let i = 0; i < srcTex.mipLevelCount - 1; i++){
259
- buildHiZLevel(device, i, srcTex, srcTex);
260
- }
261
- } else {
262
- const tmpFramebuffer = device.pool.fetchTemporalFramebuffer(false, HiZFrameBuffer.getWidth(), HiZFrameBuffer.getHeight(), HiZFrameBuffer.getColorAttachments()[0].format, null, true);
263
- const dstTex = tmpFramebuffer.getColorAttachments()[0];
264
- for(let i = 0; i < srcTex.mipLevelCount - 1; i++){
265
- buildHiZLevel(device, i, srcTex, dstTex);
266
- }
267
- device.pool.releaseFrameBuffer(tmpFramebuffer);
268
- }
269
- device.popDeviceStates();
270
- }
271
-
272
- export { buildHiZ };
273
- //# sourceMappingURL=hzb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hzb.js","sources":["../../../src/render/hzb.ts"],"sourcesContent":["import type { AbstractDevice, BindGroup, FrameBuffer, GPUProgram, Texture2D } from '@zephyr3d/device';\nimport { drawFullscreenQuad } from './fullscreenquad';\nimport { Application } from '../app/app';\nimport { CopyBlitter } from '../blitter';\nimport { fetchSampler } from '../utility/misc';\n\nlet hzbProgram: GPUProgram = null;\nlet hzbBindGroup: BindGroup = null;\nlet blitter: CopyBlitter = null;\nlet srcSize: Int32Array<ArrayBuffer> = null;\n\n/*\nvec3 trace_ray(vec3 ray_start, vec3 ray_dir)\n{\n\n if (ray_dir.z < 0.0) {\n return vec3(0);\n }\n\n ray_dir = normalize(ray_dir);\n ivec2 work_size = SCREEN_SIZE_INT;\n\n const int loop_max = 150;\n int mipmap = 0;\n int max_iter = loop_max;\n\n vec3 pos = ray_start;\n\n // Move pos by a small bias\n pos += ray_dir * 0.008;\n\n float hit_bias = 0.0017;\n\n while (mipmap > -1 && max_iter --> 0)\n {\n\n // Check if we are out of screen bounds, if so, return\n if (pos.x < 0.0 || pos.y < 0.0 || pos.x > 1.0 || pos.y > 1.0 || pos.z < 0.0 || pos.z > 1.0)\n {\n return vec3(0,0,0);\n }\n\n // Fetch the current minimum cell plane height\n float cell_z = textureLod(DownscaledDepth, pos.xy, mipmap).x;\n\n // Compute the fractional part of the coordinate (scaled by the working size)\n // so the values will be between 0.0 and 1.0\n vec2 fract_coord = mod(pos.xy * work_size, 1.0);\n\n // Modify fract coord based on which direction we are stepping in.\n // Fract coord now contains the percentage how far we moved already in\n // the current cell in each direction.\n fract_coord.x = ray_dir.x > 0.0 ? fract_coord.x : 1.0 - fract_coord.x;\n fract_coord.y = ray_dir.y > 0.0 ? fract_coord.y : 1.0 - fract_coord.y;\n\n // Compute maximum k and minimum k for which the ray would still be\n // inside of the cell.\n vec2 max_k_v = (1.0 / abs(ray_dir.xy)) / work_size.xy;\n vec2 min_k_v = -max_k_v * fract_coord.xy;\n\n // Scale the maximum k by the percentage we already processed in the current cell,\n // since e.g. if we already moved 50%, we can only move another 50%.\n max_k_v *= 1.0 - fract_coord.xy;\n\n // The maximum k is the minimum of the both sub-k's since if one component-maximum\n // is reached, the ray is out of the cell\n float max_k = min(max_k_v.x, max_k_v.y);\n\n // Same applies to the min_k, but because min_k is negative we have to use max()\n float min_k = max(min_k_v.x, min_k_v.y);\n\n // Check if the ray intersects with the cell plane. We have the following\n // equation:\n // pos.z + k * ray_dir.z = cell.z\n // So k is:\n float k = (cell_z - pos.z) / ray_dir.z;\n\n // Optional: Abort when ray didn't exactly intersect:\n // if (k < min_k && mipmap <= 0) {\n // return vec3(0);\n // }\n\n // Check if we intersected the cell\n if (k < max_k + hit_bias)\n {\n // Clamp k\n k = max(min_k, k);\n\n if (mipmap < 1) {\n pos += k * ray_dir;\n return pos;\n }\n\n // If we hit anything at a higher mipmap, step up to a higher detailed\n // mipmap:\n mipmap -= 2;\n work_size *= 4;\n } else {\n\n // If we hit nothing, move to the next cell, with a small bias\n pos += max_k * ray_dir * 1.04;\n }\n\n mipmap += 1;\n work_size /= 2;\n }\n\n return vec3(0);\n}\n*/\n/*\nfloat2 cell(float2 ray, float2 cell_count, uint camera) {\n return floor(ray.xy * cell_count);\n}\n\nfloat2 cell_count(float level) {\n return input_texture2_size / (level == 0.0 ? 1.0 : exp2(level));\n}\n\nfloat3 intersect_cell_boundary(float3 pos, float3 dir, float2 cell_id, float2 cell_count, float2 cross_step, float2 cross_offset, uint camera) {\n float2 cell_size = 1.0 / cell_count;\n float2 planes = cell_id/cell_count + cell_size * cross_step;\n\n float2 solutions = (planes - pos)/dir.xy;\n float3 intersection_pos = pos + dir * min(solutions.x, solutions.y);\n\n intersection_pos.xy += (solutions.x < solutions.y) ? float2(cross_offset.x, 0.0) : float2(0.0, cross_offset.y);\n\n return intersection_pos;\n}\n\nbool crossed_cell_boundary(float2 cell_id_one, float2 cell_id_two) {\n return (int)cell_id_one.x != (int)cell_id_two.x || (int)cell_id_one.y != (int)cell_id_two.y;\n}\n\nfloat minimum_depth_plane(float2 ray, float level, float2 cell_count, uint camera) {\n return input_texture2.Load(int3(vr_stereo_to_mono(ray.xy, camera) * cell_count, level)).r;\n}\n\nfloat3 hi_z_trace(float3 p, float3 v, in uint camera, out uint iterations) {\n float level = HIZ_START_LEVEL;\n float3 v_z = v/v.z;\n float2 hi_z_size = cell_count(level);\n float3 ray = p;\n\n float2 cross_step = float2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\n float2 cross_offset = cross_step * 0.00001;\n cross_step = saturate(cross_step);\n\n float2 ray_cell = cell(ray.xy, hi_z_size.xy, camera);\n ray = intersect_cell_boundary(ray, v, ray_cell, hi_z_size, cross_step, cross_offset, camera);\n\n iterations = 0;\n while(level >= HIZ_STOP_LEVEL && iterations < MAX_ITERATIONS) {\n // get the cell number of the current ray\n float2 current_cell_count = cell_count(level);\n float2 old_cell_id = cell(ray.xy, current_cell_count, camera);\n\n // get the minimum depth plane in which the current ray resides\n float min_z = minimum_depth_plane(ray.xy, level, current_cell_count, camera);\n\n // intersect only if ray depth is below the minimum depth plane\n float3 tmp_ray = ray;\n if(v.z > 0) {\n float min_minus_ray = min_z - ray.z;\n tmp_ray = min_minus_ray > 0 ? ray + v_z*min_minus_ray : tmp_ray;\n float2 new_cell_id = cell(tmp_ray.xy, current_cell_count, camera);\n if(crossed_cell_boundary(old_cell_id, new_cell_id)) {\n tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);\n level = min(HIZ_MAX_LEVEL, level + 2.0f);\n }else{\n if(level == 1 && abs(min_minus_ray) > 0.0001) {\n tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);\n level = 2;\n }\n }\n } else if(ray.z < min_z) {\n tmp_ray = intersect_cell_boundary(ray, v, old_cell_id, current_cell_count, cross_step, cross_offset, camera);\n level = min(HIZ_MAX_LEVEL, level + 2.0f);\n }\n\n ray.xyz = tmp_ray.xyz;\n --level;\n\n ++iterations;\n }\n return ray;\n}\n*/\n\nfunction buildHZBProgram(device: AbstractDevice): GPUProgram {\n return device.buildRenderProgram({\n label: 'HZBBuilder',\n vertex(pb) {\n this.$inputs.pos = pb.vec2().attrib('position');\n this.$outputs.uv = pb.vec2();\n pb.main(function () {\n this.$builtins.position = pb.vec4(this.$inputs.pos, 1, 1);\n this.$outputs.uv = pb.add(pb.mul(this.$inputs.pos.xy, 0.5), pb.vec2(0.5));\n if (device.type === 'webgpu') {\n this.$builtins.position.y = pb.neg(this.$builtins.position.y);\n }\n });\n },\n fragment(pb) {\n this.$outputs.color = pb.vec4();\n this.srcTex = pb.tex2D().sampleType('unfilterable-float').uniform(0);\n this.srcSize = pb.ivec2().uniform(0);\n if (device.type !== 'webgpu') {\n this.srcMipLevel = pb.int().uniform(0);\n }\n pb.main(function () {\n this.$l.coord = pb.mul(pb.ivec2(this.$builtins.fragCoord.xy), 2);\n this.$l.minCoord = pb.ivec2(0, 0);\n this.$l.maxCoord = pb.sub(this.srcSize, pb.ivec2(1, 1));\n for (let i = 0; i < 4; i++) {\n this.$l[`d${i}`] = pb.textureLoad(\n this.srcTex,\n pb.clamp(pb.add(this.coord, pb.ivec2(i >> 1, i & 1)), this.minCoord, this.maxCoord),\n device.type === 'webgpu' ? 0 : this.srcMipLevel\n ).r;\n }\n this.$l.d = pb.min(pb.min(this.d0, this.d1), pb.min(this.d2, this.d3));\n this.$outputs.color = pb.vec4(this.d, 0, 0, 1);\n });\n }\n });\n}\n\nfunction buildHiZLevel(\n device: AbstractDevice,\n miplevel: number,\n srcTexture: Texture2D,\n dstTexture: Texture2D\n): void {\n const sampler = fetchSampler('clamp_nearest');\n const framebuffer = device.pool.fetchTemporalFramebuffer(\n false,\n 0,\n 0,\n [dstTexture],\n null,\n false,\n 1,\n true,\n miplevel + 1\n );\n framebuffer.setColorAttachmentGenerateMipmaps(0, false);\n srcSize[0] = Math.max(srcTexture.width >> miplevel, 1);\n srcSize[1] = Math.max(srcTexture.height >> miplevel, 1);\n hzbBindGroup.setValue('srcSize', srcSize);\n if (device.type === 'webgpu') {\n hzbBindGroup.setTextureView('srcTex', srcTexture, miplevel, 0, 1, sampler);\n } else {\n hzbBindGroup.setTexture('srcTex', srcTexture, sampler);\n hzbBindGroup.setValue('srcMipLevel', miplevel);\n }\n device.setProgram(hzbProgram);\n device.setBindGroup(0, hzbBindGroup);\n device.setFramebuffer(framebuffer);\n drawFullscreenQuad();\n if (srcTexture !== dstTexture) {\n device.copyFramebufferToTexture2D(framebuffer, 0, srcTexture, miplevel + 1);\n }\n device.pool.releaseFrameBuffer(framebuffer);\n}\n\nexport function buildHiZ(sourceTex: Texture2D, HiZFrameBuffer: FrameBuffer) {\n const device = Application.instance.device;\n if (!hzbProgram) {\n hzbProgram = buildHZBProgram(device);\n hzbBindGroup = device.createBindGroup(hzbProgram.bindGroupLayouts[0]);\n blitter = new CopyBlitter();\n srcSize = new Int32Array(2);\n }\n blitter.blit(sourceTex, HiZFrameBuffer, fetchSampler('clamp_nearest'));\n device.pushDeviceStates();\n const srcTex = HiZFrameBuffer.getColorAttachments()[0] as Texture2D;\n if (device.type === 'webgpu') {\n for (let i = 0; i < srcTex.mipLevelCount - 1; i++) {\n buildHiZLevel(device, i, srcTex, srcTex);\n }\n } else {\n const tmpFramebuffer = device.pool.fetchTemporalFramebuffer(\n false,\n HiZFrameBuffer.getWidth(),\n HiZFrameBuffer.getHeight(),\n HiZFrameBuffer.getColorAttachments()[0].format,\n null,\n true\n );\n const dstTex = tmpFramebuffer.getColorAttachments()[0] as Texture2D;\n for (let i = 0; i < srcTex.mipLevelCount - 1; i++) {\n buildHiZLevel(device, i, srcTex, dstTex);\n }\n device.pool.releaseFrameBuffer(tmpFramebuffer);\n }\n device.popDeviceStates();\n}\n"],"names":["hzbProgram","hzbBindGroup","blitter","srcSize","buildHZBProgram","device","buildRenderProgram","label","vertex","pb","$inputs","pos","vec2","attrib","$outputs","uv","main","$builtins","position","vec4","add","mul","xy","type","y","neg","fragment","color","srcTex","tex2D","sampleType","uniform","ivec2","srcMipLevel","int","$l","coord","fragCoord","minCoord","maxCoord","sub","i","textureLoad","clamp","r","d","min","d0","d1","d2","d3","buildHiZLevel","miplevel","srcTexture","dstTexture","sampler","fetchSampler","framebuffer","pool","fetchTemporalFramebuffer","setColorAttachmentGenerateMipmaps","Math","max","width","height","setValue","setTextureView","setTexture","setProgram","setBindGroup","setFramebuffer","drawFullscreenQuad","copyFramebufferToTexture2D","releaseFrameBuffer","buildHiZ","sourceTex","HiZFrameBuffer","Application","instance","createBindGroup","bindGroupLayouts","CopyBlitter","Int32Array","blit","pushDeviceStates","getColorAttachments","mipLevelCount","tmpFramebuffer","getWidth","getHeight","format","dstTex","popDeviceStates"],"mappings":"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"}
@@ -1,172 +0,0 @@
1
- import { RenderPass } from './renderpass.js';
2
- import { RENDER_PASS_TYPE_LIGHT, MaterialVaryingFlags, QUEUE_OPAQUE, QUEUE_TRANSPARENT } from '../values.js';
3
- import { Vector4 } from '@zephyr3d/base';
4
- import { ShaderHelper } from '../material/shader/helper.js';
5
- import { PostEffectLayer } from '../posteffect/posteffect.js';
6
-
7
- /**
8
- * Forward render pass
9
- * @internal
10
- */ class LightPass extends RenderPass {
11
- /** @internal */ _shadowMapHash;
12
- /** @internal */ _transmission;
13
- /**
14
- * Creates an instance of ForwardRenderPass
15
- */ constructor(){
16
- super(RENDER_PASS_TYPE_LIGHT);
17
- this._shadowMapHash = null;
18
- this._clearColor = Vector4.zero();
19
- }
20
- /** @internal */ get transmission() {
21
- return this._transmission;
22
- }
23
- set transmission(val) {
24
- this._transmission = val;
25
- }
26
- /** @internal */ _getGlobalBindGroupHash(ctx) {
27
- return `${this._shadowMapHash}:${ctx.oit?.calculateHash() ?? ''}:${ctx.env.getHash(ctx)}:${ctx.materialFlags}:${ctx.linearDepthTexture?.uid ?? 0}:${ctx.sceneColorTexture?.uid ?? 0}:${ctx.HiZTexture?.uid ?? 0}`;
28
- }
29
- /** @internal */ renderLightPass(ctx, itemList, lights, flags) {
30
- const baseLightPass = !ctx.lightBlending;
31
- ctx.drawEnvLight = baseLightPass && ctx.env.light.type !== 'none' && (ctx.env.light.envLight.hasRadiance() || ctx.env.light.envLight.hasIrradiance());
32
- ctx.renderPassHash = this.getGlobalBindGroupHash(ctx);
33
- const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);
34
- if (!flags.cameraSet[ctx.renderPassHash]) {
35
- ShaderHelper.setCameraUniforms(bindGroup, ctx, !!ctx.device.getFramebuffer());
36
- flags.cameraSet[ctx.renderPassHash] = 1;
37
- }
38
- if (ctx.currentShadowLight) {
39
- ShaderHelper.setLightUniformsShadow(bindGroup, ctx, lights[0]);
40
- } else {
41
- if (!flags.lightSet[ctx.renderPassHash]) {
42
- ShaderHelper.setLightUniforms(bindGroup, ctx, ctx.clusteredLight.clusterParam, ctx.clusteredLight.countParam, ctx.clusteredLight.lightBuffer, ctx.clusteredLight.lightIndexTexture);
43
- flags.lightSet[ctx.renderPassHash] = 1;
44
- }
45
- }
46
- if (ctx.materialFlags & MaterialVaryingFlags.APPLY_FOG && !flags.fogSet[ctx.renderPassHash]) {
47
- ShaderHelper.setFogUniforms(bindGroup, ctx.env.sky.skyType === 'scatter' ? 1 : 0, ctx.env.sky.mappedFogType, baseLightPass ? 0 : 1, ctx.env.sky.atmosphereParams, ctx.env.sky.heightFogParams, ctx.env.sky.getAerialPerspectiveLUT(ctx), ctx.env.sky.getSkyDistantLightLUT(ctx));
48
- flags.fogSet[ctx.renderPassHash] = 1;
49
- }
50
- ctx.device.setBindGroup(0, bindGroup);
51
- const reverseWinding = ctx.camera.worldMatrixDet < 0;
52
- for (const lit of itemList.lit){
53
- this.drawItemList(lit, ctx, reverseWinding);
54
- }
55
- if (!ctx.lightBlending) {
56
- for (const unlit of itemList.unlit){
57
- this.drawItemList(unlit, ctx, reverseWinding);
58
- }
59
- }
60
- }
61
- /** @internal */ renderItems(ctx, renderQueue) {
62
- ctx.fogFlags = 0;
63
- ctx.renderPassHash = null;
64
- ctx.env = ctx.scene.env;
65
- ctx.drawEnvLight = false;
66
- ctx.flip = this.isAutoFlip(ctx);
67
- const ssr = !!(ctx.materialFlags & MaterialVaryingFlags.SSR_STORE_ROUGHNESS);
68
- const tmpFramebuffer = ssr ? ctx.device.pool.fetchTemporalFramebuffer(false, ctx.device.getDrawingBufferWidth(), ctx.device.getDrawingBufferHeight(), ctx.device.getFramebuffer().getColorAttachments()[0], ctx.device.getFramebuffer().getDepthAttachment()) : null;
69
- const oit = renderQueue.drawTransparent && ctx.primaryCamera.oit && ctx.primaryCamera.oit.supportDevice(ctx.device.type) ? ctx.primaryCamera.oit : null;
70
- if (!oit && renderQueue.drawTransparent) {
71
- renderQueue.sortTransparentItems(ctx.primaryCamera.getWorldPosition());
72
- }
73
- const flags = {
74
- lightSet: {},
75
- cameraSet: {},
76
- fogSet: {}
77
- };
78
- const items = renderQueue.itemList;
79
- const lists = this._transmission ? [
80
- items?.transmission,
81
- items?.transmission_trans,
82
- items?.transparent
83
- ] : [
84
- items?.opaque,
85
- items?.transparent
86
- ];
87
- const transparentPass = lists.length - 1;
88
- for(let i = 0; i < lists.length; i++){
89
- if (lists[i]) {
90
- ctx.queue = i === 0 ? QUEUE_OPAQUE : QUEUE_TRANSPARENT;
91
- ctx.oit = i === 0 || !items ? null : oit;
92
- if (ctx.queue === QUEUE_TRANSPARENT && ctx.scene.env.sky.fogPresents) {
93
- ctx.materialFlags |= MaterialVaryingFlags.APPLY_FOG;
94
- }
95
- const numOitPasses = ctx.oit ? ctx.oit.begin(ctx) : 1;
96
- for(let p = 0; p < numOitPasses; p++){
97
- if (ctx.oit) {
98
- if (!ctx.oit.beginPass(ctx, p)) {
99
- continue;
100
- }
101
- }
102
- let lightIndex = 0;
103
- if (ctx.shadowMapInfo) {
104
- for (const k of ctx.shadowMapInfo.keys()){
105
- ctx.currentShadowLight = k;
106
- ctx.lightBlending = lightIndex > 0;
107
- this._shadowMapHash = ctx.shadowMapInfo.get(k).shaderHash;
108
- this.renderLightPass(ctx, lists[i], [
109
- k
110
- ], flags);
111
- lightIndex++;
112
- }
113
- }
114
- if (lightIndex === 0 || renderQueue.unshadowedLights.length > 0) {
115
- ctx.currentShadowLight = null;
116
- ctx.lightBlending = lightIndex > 0;
117
- this._shadowMapHash = '';
118
- if (ctx.lightBlending && tmpFramebuffer) {
119
- ctx.materialFlags &= ~MaterialVaryingFlags.SSR_STORE_ROUGHNESS;
120
- ctx.device.pushDeviceStates();
121
- ctx.device.setFramebuffer(tmpFramebuffer);
122
- }
123
- this.renderLightPass(ctx, lists[i], renderQueue.unshadowedLights, flags);
124
- if (ctx.lightBlending && tmpFramebuffer) {
125
- ctx.materialFlags |= MaterialVaryingFlags.SSR_STORE_ROUGHNESS;
126
- ctx.device.popDeviceStates();
127
- }
128
- }
129
- if (ctx.oit) {
130
- ctx.oit.endPass(ctx, p);
131
- }
132
- }
133
- if (ctx.oit) {
134
- ctx.oit.end(ctx);
135
- }
136
- ctx.materialFlags &= ~MaterialVaryingFlags.APPLY_FOG;
137
- }
138
- if (i === 0 && !ctx.sceneColorTexture) {
139
- if (tmpFramebuffer) {
140
- ctx.device.pushDeviceStates();
141
- ctx.device.setFramebuffer(tmpFramebuffer);
142
- }
143
- ctx.env.sky.skyWorldMatrix = ctx.scene.rootNode.worldMatrix;
144
- ctx.env.sky.renderSky(ctx);
145
- if (tmpFramebuffer) {
146
- ctx.device.popDeviceStates();
147
- }
148
- }
149
- if (!renderQueue.needSceneColor() || ctx.sceneColorTexture) {
150
- if (i === 0) {
151
- if (tmpFramebuffer) {
152
- ctx.device.pushDeviceStates();
153
- ctx.device.setFramebuffer(tmpFramebuffer);
154
- }
155
- ctx.env.sky.renderFog(ctx);
156
- if (tmpFramebuffer) {
157
- ctx.device.popDeviceStates();
158
- }
159
- }
160
- if (i === 0 || i === transparentPass) {
161
- ctx.compositor?.drawPostEffects(ctx, i === 0 ? PostEffectLayer.opaque : PostEffectLayer.transparent, ctx.linearDepthTexture);
162
- }
163
- }
164
- }
165
- if (tmpFramebuffer) {
166
- ctx.device.pool.releaseFrameBuffer(tmpFramebuffer);
167
- }
168
- }
169
- }
170
-
171
- export { LightPass };
172
- //# sourceMappingURL=lightpass.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lightpass.js","sources":["../../../src/render/lightpass.ts"],"sourcesContent":["import { RenderPass } from './renderpass';\r\nimport { MaterialVaryingFlags, QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_LIGHT } from '../values';\r\nimport { Vector4 } from '@zephyr3d/base';\r\nimport type { RenderItemListBundle, RenderQueue } from './render_queue';\r\nimport type { PunctualLight } from '../scene/light';\r\nimport type { DrawContext } from './drawable';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { PostEffectLayer } from '../posteffect/posteffect';\r\n\r\n/**\r\n * Forward render pass\r\n * @internal\r\n */\r\nexport class LightPass extends RenderPass {\r\n /** @internal */\r\n protected _shadowMapHash: string;\r\n /** @internal */\r\n protected _transmission: boolean;\r\n /**\r\n * Creates an instance of ForwardRenderPass\r\n */\r\n constructor() {\r\n super(RENDER_PASS_TYPE_LIGHT);\r\n this._shadowMapHash = null;\r\n this._clearColor = Vector4.zero();\r\n }\r\n /** @internal */\r\n get transmission(): boolean {\r\n return this._transmission;\r\n }\r\n set transmission(val: boolean) {\r\n this._transmission = val;\r\n }\r\n /** @internal */\r\n protected _getGlobalBindGroupHash(ctx: DrawContext) {\r\n return `${this._shadowMapHash}:${ctx.oit?.calculateHash() ?? ''}:${ctx.env.getHash(ctx)}:${\r\n ctx.materialFlags\r\n }:${ctx.linearDepthTexture?.uid ?? 0}:${ctx.sceneColorTexture?.uid ?? 0}:${ctx.HiZTexture?.uid ?? 0}`;\r\n }\r\n /** @internal */\r\n protected renderLightPass(\r\n ctx: DrawContext,\r\n itemList: RenderItemListBundle,\r\n lights: PunctualLight[],\r\n flags: any\r\n ) {\r\n const baseLightPass = !ctx.lightBlending;\r\n ctx.drawEnvLight =\r\n baseLightPass &&\r\n ctx.env.light.type !== 'none' &&\r\n (ctx.env.light.envLight.hasRadiance() || ctx.env.light.envLight.hasIrradiance());\r\n ctx.renderPassHash = this.getGlobalBindGroupHash(ctx);\r\n const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);\r\n if (!flags.cameraSet[ctx.renderPassHash]) {\r\n ShaderHelper.setCameraUniforms(bindGroup, ctx, !!ctx.device.getFramebuffer());\r\n flags.cameraSet[ctx.renderPassHash] = 1;\r\n }\r\n if (ctx.currentShadowLight) {\r\n ShaderHelper.setLightUniformsShadow(bindGroup, ctx, lights[0]);\r\n } else {\r\n if (!flags.lightSet[ctx.renderPassHash]) {\r\n ShaderHelper.setLightUniforms(\r\n bindGroup,\r\n ctx,\r\n ctx.clusteredLight.clusterParam,\r\n ctx.clusteredLight.countParam,\r\n ctx.clusteredLight.lightBuffer,\r\n ctx.clusteredLight.lightIndexTexture\r\n );\r\n flags.lightSet[ctx.renderPassHash] = 1;\r\n }\r\n }\r\n if (ctx.materialFlags & MaterialVaryingFlags.APPLY_FOG && !flags.fogSet[ctx.renderPassHash]) {\r\n ShaderHelper.setFogUniforms(\r\n bindGroup,\r\n ctx.env.sky.skyType === 'scatter' ? 1 : 0,\r\n ctx.env.sky.mappedFogType,\r\n baseLightPass ? 0 : 1,\r\n ctx.env.sky.atmosphereParams,\r\n ctx.env.sky.heightFogParams,\r\n ctx.env.sky.getAerialPerspectiveLUT(ctx),\r\n ctx.env.sky.getSkyDistantLightLUT(ctx)\r\n );\r\n flags.fogSet[ctx.renderPassHash] = 1;\r\n }\r\n ctx.device.setBindGroup(0, bindGroup);\r\n const reverseWinding = ctx.camera.worldMatrixDet < 0;\r\n for (const lit of itemList.lit) {\r\n this.drawItemList(lit, ctx, reverseWinding);\r\n }\r\n if (!ctx.lightBlending) {\r\n for (const unlit of itemList.unlit) {\r\n this.drawItemList(unlit, ctx, reverseWinding);\r\n }\r\n }\r\n }\r\n /** @internal */\r\n protected renderItems(ctx: DrawContext, renderQueue: RenderQueue) {\r\n ctx.fogFlags = 0;\r\n ctx.renderPassHash = null;\r\n ctx.env = ctx.scene.env;\r\n ctx.drawEnvLight = false;\r\n ctx.flip = this.isAutoFlip(ctx);\r\n const ssr = !!(ctx.materialFlags & MaterialVaryingFlags.SSR_STORE_ROUGHNESS);\r\n const tmpFramebuffer = ssr\r\n ? ctx.device.pool.fetchTemporalFramebuffer(\r\n false,\r\n ctx.device.getDrawingBufferWidth(),\r\n ctx.device.getDrawingBufferHeight(),\r\n ctx.device.getFramebuffer().getColorAttachments()[0],\r\n ctx.device.getFramebuffer().getDepthAttachment()\r\n )\r\n : null;\r\n const oit =\r\n renderQueue.drawTransparent &&\r\n ctx.primaryCamera.oit &&\r\n ctx.primaryCamera.oit.supportDevice(ctx.device.type)\r\n ? ctx.primaryCamera.oit\r\n : null;\r\n if (!oit && renderQueue.drawTransparent) {\r\n renderQueue.sortTransparentItems(ctx.primaryCamera.getWorldPosition());\r\n }\r\n const flags: any = {\r\n lightSet: {},\r\n cameraSet: {},\r\n fogSet: {}\r\n };\r\n const items = renderQueue.itemList;\r\n const lists = this._transmission\r\n ? [items?.transmission, items?.transmission_trans, items?.transparent]\r\n : [items?.opaque, items?.transparent];\r\n const transparentPass = lists.length - 1;\r\n for (let i = 0; i < lists.length; i++) {\r\n if (lists[i]) {\r\n ctx.queue = i === 0 ? QUEUE_OPAQUE : QUEUE_TRANSPARENT;\r\n ctx.oit = i === 0 || !items ? null : oit;\r\n if (ctx.queue === QUEUE_TRANSPARENT && ctx.scene.env.sky.fogPresents) {\r\n ctx.materialFlags |= MaterialVaryingFlags.APPLY_FOG;\r\n }\r\n const numOitPasses = ctx.oit ? ctx.oit.begin(ctx) : 1;\r\n for (let p = 0; p < numOitPasses; p++) {\r\n if (ctx.oit) {\r\n if (!ctx.oit.beginPass(ctx, p)) {\r\n continue;\r\n }\r\n }\r\n let lightIndex = 0;\r\n if (ctx.shadowMapInfo) {\r\n for (const k of ctx.shadowMapInfo.keys()) {\r\n ctx.currentShadowLight = k;\r\n ctx.lightBlending = lightIndex > 0;\r\n this._shadowMapHash = ctx.shadowMapInfo.get(k).shaderHash;\r\n this.renderLightPass(ctx, lists[i], [k], flags);\r\n lightIndex++;\r\n }\r\n }\r\n if (lightIndex === 0 || renderQueue.unshadowedLights.length > 0) {\r\n ctx.currentShadowLight = null;\r\n ctx.lightBlending = lightIndex > 0;\r\n this._shadowMapHash = '';\r\n if (ctx.lightBlending && tmpFramebuffer) {\r\n ctx.materialFlags &= ~MaterialVaryingFlags.SSR_STORE_ROUGHNESS;\r\n ctx.device.pushDeviceStates();\r\n ctx.device.setFramebuffer(tmpFramebuffer);\r\n }\r\n this.renderLightPass(ctx, lists[i], renderQueue.unshadowedLights, flags);\r\n if (ctx.lightBlending && tmpFramebuffer) {\r\n ctx.materialFlags |= MaterialVaryingFlags.SSR_STORE_ROUGHNESS;\r\n ctx.device.popDeviceStates();\r\n }\r\n }\r\n if (ctx.oit) {\r\n ctx.oit.endPass(ctx, p);\r\n }\r\n }\r\n if (ctx.oit) {\r\n ctx.oit.end(ctx);\r\n }\r\n ctx.materialFlags &= ~MaterialVaryingFlags.APPLY_FOG;\r\n }\r\n if (i === 0 && !ctx.sceneColorTexture) {\r\n if (tmpFramebuffer) {\r\n ctx.device.pushDeviceStates();\r\n ctx.device.setFramebuffer(tmpFramebuffer);\r\n }\r\n ctx.env.sky.skyWorldMatrix = ctx.scene.rootNode.worldMatrix;\r\n ctx.env.sky.renderSky(ctx);\r\n if (tmpFramebuffer) {\r\n ctx.device.popDeviceStates();\r\n }\r\n }\r\n if (!renderQueue.needSceneColor() || ctx.sceneColorTexture) {\r\n if (i === 0) {\r\n if (tmpFramebuffer) {\r\n ctx.device.pushDeviceStates();\r\n ctx.device.setFramebuffer(tmpFramebuffer);\r\n }\r\n ctx.env.sky.renderFog(ctx);\r\n if (tmpFramebuffer) {\r\n ctx.device.popDeviceStates();\r\n }\r\n }\r\n if (i === 0 || i === transparentPass) {\r\n ctx.compositor?.drawPostEffects(\r\n ctx,\r\n i === 0 ? PostEffectLayer.opaque : PostEffectLayer.transparent,\r\n ctx.linearDepthTexture\r\n );\r\n }\r\n }\r\n }\r\n if (tmpFramebuffer) {\r\n ctx.device.pool.releaseFrameBuffer(tmpFramebuffer);\r\n }\r\n }\r\n}\r\n"],"names":["LightPass","RenderPass","RENDER_PASS_TYPE_LIGHT","_shadowMapHash","_clearColor","Vector4","zero","transmission","_transmission","val","_getGlobalBindGroupHash","ctx","oit","calculateHash","env","getHash","materialFlags","linearDepthTexture","uid","sceneColorTexture","HiZTexture","renderLightPass","itemList","lights","flags","baseLightPass","lightBlending","drawEnvLight","light","type","envLight","hasRadiance","hasIrradiance","renderPassHash","getGlobalBindGroupHash","bindGroup","globalBindGroupAllocator","getGlobalBindGroup","cameraSet","ShaderHelper","setCameraUniforms","device","getFramebuffer","currentShadowLight","setLightUniformsShadow","lightSet","setLightUniforms","clusteredLight","clusterParam","countParam","lightBuffer","lightIndexTexture","MaterialVaryingFlags","APPLY_FOG","fogSet","setFogUniforms","sky","skyType","mappedFogType","atmosphereParams","heightFogParams","getAerialPerspectiveLUT","getSkyDistantLightLUT","setBindGroup","reverseWinding","camera","worldMatrixDet","lit","drawItemList","unlit","renderItems","renderQueue","fogFlags","scene","flip","isAutoFlip","ssr","SSR_STORE_ROUGHNESS","tmpFramebuffer","pool","fetchTemporalFramebuffer","getDrawingBufferWidth","getDrawingBufferHeight","getColorAttachments","getDepthAttachment","drawTransparent","primaryCamera","supportDevice","sortTransparentItems","getWorldPosition","items","lists","transmission_trans","transparent","opaque","transparentPass","length","i","queue","QUEUE_OPAQUE","QUEUE_TRANSPARENT","fogPresents","numOitPasses","begin","p","beginPass","lightIndex","shadowMapInfo","k","keys","get","shaderHash","unshadowedLights","pushDeviceStates","setFramebuffer","popDeviceStates","endPass","end","skyWorldMatrix","rootNode","worldMatrix","renderSky","needSceneColor","renderFog","compositor","drawPostEffects","PostEffectLayer","releaseFrameBuffer"],"mappings":"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"}
@@ -1,51 +0,0 @@
1
- import { RenderPass } from './renderpass.js';
2
- import { RENDER_PASS_TYPE_OBJECT_COLOR } from '../values.js';
3
- import { ShaderHelper } from '../material/shader/helper.js';
4
-
5
- /**
6
- * Object color render pass
7
- * @internal
8
- */ class ObjectColorPass extends RenderPass {
9
- /**
10
- * Creates an instance of ForwardRenderPass
11
- */ constructor(){
12
- super(RENDER_PASS_TYPE_OBJECT_COLOR);
13
- }
14
- /** @internal */ _getGlobalBindGroupHash(_ctx) {
15
- return '';
16
- }
17
- /** @internal */ renderItems(ctx, renderQueue) {
18
- const items = renderQueue.itemList;
19
- if (items) {
20
- ctx.fogFlags = 0;
21
- ctx.drawEnvLight = false;
22
- ctx.env = null;
23
- ctx.picking = true;
24
- ctx.flip = this.isAutoFlip(ctx);
25
- ctx.renderPassHash = this.getGlobalBindGroupHash(ctx);
26
- const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);
27
- ctx.device.setBindGroup(0, bindGroup);
28
- ShaderHelper.setCameraUniforms(bindGroup, ctx, true);
29
- const reverseWinding = ctx.camera.worldMatrixDet < 0;
30
- for (const list of [
31
- items.opaque,
32
- items.transmission,
33
- items.transparent,
34
- items.transmission_trans
35
- ]){
36
- if (list) {
37
- for (const lit of list.lit){
38
- this.drawItemList(lit, ctx, reverseWinding);
39
- }
40
- for (const unlit of list.unlit){
41
- this.drawItemList(unlit, ctx, reverseWinding);
42
- }
43
- }
44
- }
45
- ctx.picking = false;
46
- }
47
- }
48
- }
49
-
50
- export { ObjectColorPass };
51
- //# sourceMappingURL=objectcolorpass.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"objectcolorpass.js","sources":["../../../src/render/objectcolorpass.ts"],"sourcesContent":["import { RenderPass } from './renderpass';\r\nimport { RENDER_PASS_TYPE_OBJECT_COLOR } from '../values';\r\nimport type { RenderQueue } from './render_queue';\r\nimport type { DrawContext } from './drawable';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\n\r\n/**\r\n * Object color render pass\r\n * @internal\r\n */\r\nexport class ObjectColorPass extends RenderPass {\r\n /**\r\n * Creates an instance of ForwardRenderPass\r\n */\r\n constructor() {\r\n super(RENDER_PASS_TYPE_OBJECT_COLOR);\r\n }\r\n /** @internal */\r\n protected _getGlobalBindGroupHash(_ctx: DrawContext) {\r\n return '';\r\n }\r\n /** @internal */\r\n protected renderItems(ctx: DrawContext, renderQueue: RenderQueue) {\r\n const items = renderQueue.itemList;\r\n if (items) {\r\n ctx.fogFlags = 0;\r\n ctx.drawEnvLight = false;\r\n ctx.env = null;\r\n ctx.picking = true;\r\n ctx.flip = this.isAutoFlip(ctx);\r\n ctx.renderPassHash = this.getGlobalBindGroupHash(ctx);\r\n const bindGroup = ctx.globalBindGroupAllocator.getGlobalBindGroup(ctx);\r\n ctx.device.setBindGroup(0, bindGroup);\r\n ShaderHelper.setCameraUniforms(bindGroup, ctx, true);\r\n const reverseWinding = ctx.camera.worldMatrixDet < 0;\r\n for (const list of [items.opaque, items.transmission, items.transparent, items.transmission_trans]) {\r\n if (list) {\r\n for (const lit of list.lit) {\r\n this.drawItemList(lit, ctx, reverseWinding);\r\n }\r\n for (const unlit of list.unlit) {\r\n this.drawItemList(unlit, ctx, reverseWinding);\r\n }\r\n }\r\n }\r\n ctx.picking = false;\r\n }\r\n }\r\n}\r\n"],"names":["ObjectColorPass","RenderPass","RENDER_PASS_TYPE_OBJECT_COLOR","_getGlobalBindGroupHash","_ctx","renderItems","ctx","renderQueue","items","itemList","fogFlags","drawEnvLight","env","picking","flip","isAutoFlip","renderPassHash","getGlobalBindGroupHash","bindGroup","globalBindGroupAllocator","getGlobalBindGroup","device","setBindGroup","ShaderHelper","setCameraUniforms","reverseWinding","camera","worldMatrixDet","list","opaque","transmission","transparent","transmission_trans","lit","drawItemList","unlit"],"mappings":";;;;AAMA;;;IAIO,MAAMA,eAAwBC,SAAAA,UAAAA,CAAAA;AACnC;;AAEC,MACD,WAAc,EAAA;AACZ,QAAA,KAAK,CAACC,6BAAAA,CAAAA;AACR;AACA,qBACUC,uBAAwBC,CAAAA,IAAiB,EAAE;QACnD,OAAO,EAAA;AACT;AACA,qBACA,WAAUC,CAAYC,GAAgB,EAAEC,WAAwB,EAAE;QAChE,MAAMC,KAAAA,GAAQD,YAAYE,QAAQ;AAClC,QAAA,IAAID,KAAO,EAAA;AACTF,YAAAA,GAAAA,CAAII,QAAQ,GAAG,CAAA;AACfJ,YAAAA,GAAAA,CAAIK,YAAY,GAAG,KAAA;AACnBL,YAAAA,GAAAA,CAAIM,GAAG,GAAG,IAAA;AACVN,YAAAA,GAAAA,CAAIO,OAAO,GAAG,IAAA;AACdP,YAAAA,GAAAA,CAAIQ,IAAI,GAAG,IAAI,CAACC,UAAU,CAACT,GAAAA,CAAAA;AAC3BA,YAAAA,GAAAA,CAAIU,cAAc,GAAG,IAAI,CAACC,sBAAsB,CAACX,GAAAA,CAAAA;AACjD,YAAA,MAAMY,SAAYZ,GAAAA,GAAAA,CAAIa,wBAAwB,CAACC,kBAAkB,CAACd,GAAAA,CAAAA;AAClEA,YAAAA,GAAAA,CAAIe,MAAM,CAACC,YAAY,CAAC,CAAGJ,EAAAA,SAAAA,CAAAA;YAC3BK,YAAaC,CAAAA,iBAAiB,CAACN,SAAAA,EAAWZ,GAAK,EAAA,IAAA,CAAA;AAC/C,YAAA,MAAMmB,cAAiBnB,GAAAA,GAAAA,CAAIoB,MAAM,CAACC,cAAc,GAAG,CAAA;AACnD,YAAA,KAAK,MAAMC,IAAQ,IAAA;AAACpB,gBAAAA,KAAAA,CAAMqB,MAAM;AAAErB,gBAAAA,KAAAA,CAAMsB,YAAY;AAAEtB,gBAAAA,KAAAA,CAAMuB,WAAW;AAAEvB,gBAAAA,KAAAA,CAAMwB;aAAmB,CAAE;AAClG,gBAAA,IAAIJ,IAAM,EAAA;AACR,oBAAA,KAAK,MAAMK,GAAAA,IAAOL,IAAKK,CAAAA,GAAG,CAAE;AAC1B,wBAAA,IAAI,CAACC,YAAY,CAACD,GAAAA,EAAK3B,GAAKmB,EAAAA,cAAAA,CAAAA;AAC9B;AACA,oBAAA,KAAK,MAAMU,KAAAA,IAASP,IAAKO,CAAAA,KAAK,CAAE;AAC9B,wBAAA,IAAI,CAACD,YAAY,CAACC,KAAAA,EAAO7B,GAAKmB,EAAAA,cAAAA,CAAAA;AAChC;AACF;AACF;AACAnB,YAAAA,GAAAA,CAAIO,OAAO,GAAG,KAAA;AAChB;AACF;AACF;;;;"}