@zephyr3d/scene 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/dist/animation/animationset.js +198 -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/spring/spring_bone.js +240 -0
  14. package/dist/animation/spring/spring_bone.js.map +1 -0
  15. package/dist/animation/spring/spring_bone_collider.js +198 -0
  16. package/dist/animation/spring/spring_bone_collider.js.map +1 -0
  17. package/dist/animation/spring/spring_bone_constraint.js +170 -0
  18. package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
  19. package/dist/animation/spring/spring_bone_system.js +328 -0
  20. package/dist/animation/spring/spring_bone_system.js.map +1 -0
  21. package/dist/asset/model.js +2 -2
  22. package/dist/index.d.ts +15 -0
  23. package/dist/material/mixins/pbr/common.js +20 -17
  24. package/dist/material/mixins/pbr/common.js.map +1 -1
  25. package/dist/render/gpu_picking.js +100 -0
  26. package/dist/render/gpu_picking.js.map +1 -0
  27. package/dist/render/rendergraph/device_pool_allocator.js +41 -0
  28. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
  29. package/dist/render/rendergraph/executor.js +146 -0
  30. package/dist/render/rendergraph/executor.js.map +1 -0
  31. package/dist/render/rendergraph/forward_plus_builder.js +414 -0
  32. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
  33. package/dist/render/rendergraph/rendergraph.js +306 -0
  34. package/dist/render/rendergraph/rendergraph.js.map +1 -0
  35. package/dist/render/rendergraph/types.js +57 -0
  36. package/dist/render/rendergraph/types.js.map +1 -0
  37. package/dist/render/sky_motion_vector.js +85 -0
  38. package/dist/render/sky_motion_vector.js.map +1 -0
  39. package/dist/utility/serialization/scene/animation.js +3 -3
  40. package/dist/utility/serialization/scene/node.js +1 -1
  41. package/package.json +2 -2
  42. package/dist/animation/ik/ik_chain_builder.js +0 -68
  43. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  44. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  45. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  46. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  47. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  48. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  49. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  50. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  51. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  52. package/dist/src/animation/animation.js +0 -127
  53. package/dist/src/animation/animation.js.map +0 -1
  54. package/dist/src/animation/animationset.js +0 -255
  55. package/dist/src/animation/animationset.js.map +0 -1
  56. package/dist/src/animation/animationtrack.js +0 -34
  57. package/dist/src/animation/animationtrack.js.map +0 -1
  58. package/dist/src/animation/eulerrotationtrack.js +0 -52
  59. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  60. package/dist/src/animation/morphtarget.js +0 -93
  61. package/dist/src/animation/morphtarget.js.map +0 -1
  62. package/dist/src/animation/morphtrack.js +0 -70
  63. package/dist/src/animation/morphtrack.js.map +0 -1
  64. package/dist/src/animation/proptrack.js +0 -161
  65. package/dist/src/animation/proptrack.js.map +0 -1
  66. package/dist/src/animation/rotationtrack.js +0 -51
  67. package/dist/src/animation/rotationtrack.js.map +0 -1
  68. package/dist/src/animation/scaletrack.js +0 -50
  69. package/dist/src/animation/scaletrack.js.map +0 -1
  70. package/dist/src/animation/skeleton.js +0 -204
  71. package/dist/src/animation/skeleton.js.map +0 -1
  72. package/dist/src/animation/translationtrack.js +0 -50
  73. package/dist/src/animation/translationtrack.js.map +0 -1
  74. package/dist/src/app/app.js +0 -129
  75. package/dist/src/app/app.js.map +0 -1
  76. package/dist/src/app/inputmgr.js +0 -267
  77. package/dist/src/app/inputmgr.js.map +0 -1
  78. package/dist/src/asset/assetmanager.js +0 -404
  79. package/dist/src/asset/assetmanager.js.map +0 -1
  80. package/dist/src/asset/builtin.js +0 -337
  81. package/dist/src/asset/builtin.js.map +0 -1
  82. package/dist/src/asset/loaders/dds/dds.js +0 -470
  83. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  84. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  85. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  86. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  87. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  88. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  89. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  90. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  91. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  92. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  93. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  94. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  95. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  96. package/dist/src/asset/loaders/loader.js +0 -45
  97. package/dist/src/asset/loaders/loader.js.map +0 -1
  98. package/dist/src/asset/model.js +0 -414
  99. package/dist/src/asset/model.js.map +0 -1
  100. package/dist/src/blitter/bilateralblur.js +0 -221
  101. package/dist/src/blitter/bilateralblur.js.map +0 -1
  102. package/dist/src/blitter/blitter.js +0 -390
  103. package/dist/src/blitter/blitter.js.map +0 -1
  104. package/dist/src/blitter/box.js +0 -118
  105. package/dist/src/blitter/box.js.map +0 -1
  106. package/dist/src/blitter/copy.js +0 -22
  107. package/dist/src/blitter/copy.js.map +0 -1
  108. package/dist/src/blitter/gaussianblur.js +0 -228
  109. package/dist/src/blitter/gaussianblur.js.map +0 -1
  110. package/dist/src/camera/base.js +0 -92
  111. package/dist/src/camera/base.js.map +0 -1
  112. package/dist/src/camera/camera.js +0 -1005
  113. package/dist/src/camera/camera.js.map +0 -1
  114. package/dist/src/camera/fps.js +0 -238
  115. package/dist/src/camera/fps.js.map +0 -1
  116. package/dist/src/camera/orbit.js +0 -245
  117. package/dist/src/camera/orbit.js.map +0 -1
  118. package/dist/src/camera/orthocamera.js +0 -167
  119. package/dist/src/camera/orthocamera.js.map +0 -1
  120. package/dist/src/camera/perspectivecamera.js +0 -141
  121. package/dist/src/camera/perspectivecamera.js.map +0 -1
  122. package/dist/src/index.js +0 -120
  123. package/dist/src/index.js.map +0 -1
  124. package/dist/src/material/blinn.js +0 -81
  125. package/dist/src/material/blinn.js.map +0 -1
  126. package/dist/src/material/grassmaterial.js +0 -113
  127. package/dist/src/material/grassmaterial.js.map +0 -1
  128. package/dist/src/material/lambert.js +0 -92
  129. package/dist/src/material/lambert.js.map +0 -1
  130. package/dist/src/material/material.js +0 -301
  131. package/dist/src/material/material.js.map +0 -1
  132. package/dist/src/material/meshmaterial.js +0 -704
  133. package/dist/src/material/meshmaterial.js.map +0 -1
  134. package/dist/src/material/mixins/albedocolor.js +0 -76
  135. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  136. package/dist/src/material/mixins/foliage.js +0 -47
  137. package/dist/src/material/mixins/foliage.js.map +0 -1
  138. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  139. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  140. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  141. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  142. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  143. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  144. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  145. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  146. package/dist/src/material/mixins/lit.js +0 -476
  147. package/dist/src/material/mixins/lit.js.map +0 -1
  148. package/dist/src/material/mixins/pbr/common.js +0 -918
  149. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  150. package/dist/src/material/mixins/texture.js +0 -172
  151. package/dist/src/material/mixins/texture.js.map +0 -1
  152. package/dist/src/material/mixins/vertexcolor.js +0 -56
  153. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  154. package/dist/src/material/particle.js +0 -178
  155. package/dist/src/material/particle.js.map +0 -1
  156. package/dist/src/material/pbrmr.js +0 -97
  157. package/dist/src/material/pbrmr.js.map +0 -1
  158. package/dist/src/material/pbrsg.js +0 -97
  159. package/dist/src/material/pbrsg.js.map +0 -1
  160. package/dist/src/material/shader/helper.js +0 -1209
  161. package/dist/src/material/shader/helper.js.map +0 -1
  162. package/dist/src/material/terrain-cm.js +0 -606
  163. package/dist/src/material/terrain-cm.js.map +0 -1
  164. package/dist/src/material/terrainmaterial.js +0 -375
  165. package/dist/src/material/terrainmaterial.js.map +0 -1
  166. package/dist/src/material/unlit.js +0 -41
  167. package/dist/src/material/unlit.js.map +0 -1
  168. package/dist/src/material/water.js +0 -417
  169. package/dist/src/material/water.js.map +0 -1
  170. package/dist/src/posteffect/bloom.js +0 -361
  171. package/dist/src/posteffect/bloom.js.map +0 -1
  172. package/dist/src/posteffect/compositor.js +0 -226
  173. package/dist/src/posteffect/compositor.js.map +0 -1
  174. package/dist/src/posteffect/fxaa.js +0 -273
  175. package/dist/src/posteffect/fxaa.js.map +0 -1
  176. package/dist/src/posteffect/grayscale.js +0 -69
  177. package/dist/src/posteffect/grayscale.js.map +0 -1
  178. package/dist/src/posteffect/motionblur.js +0 -96
  179. package/dist/src/posteffect/motionblur.js.map +0 -1
  180. package/dist/src/posteffect/posteffect.js +0 -126
  181. package/dist/src/posteffect/posteffect.js.map +0 -1
  182. package/dist/src/posteffect/sao.js +0 -324
  183. package/dist/src/posteffect/sao.js.map +0 -1
  184. package/dist/src/posteffect/ssr.js +0 -489
  185. package/dist/src/posteffect/ssr.js.map +0 -1
  186. package/dist/src/posteffect/taa.js +0 -172
  187. package/dist/src/posteffect/taa.js.map +0 -1
  188. package/dist/src/posteffect/tonemap.js +0 -94
  189. package/dist/src/posteffect/tonemap.js.map +0 -1
  190. package/dist/src/render/abuffer_oit.js +0 -361
  191. package/dist/src/render/abuffer_oit.js.map +0 -1
  192. package/dist/src/render/clipmap.js +0 -851
  193. package/dist/src/render/clipmap.js.map +0 -1
  194. package/dist/src/render/cluster_light.js +0 -333
  195. package/dist/src/render/cluster_light.js.map +0 -1
  196. package/dist/src/render/cull_visitor.js +0 -187
  197. package/dist/src/render/cull_visitor.js.map +0 -1
  198. package/dist/src/render/depthpass.js +0 -68
  199. package/dist/src/render/depthpass.js.map +0 -1
  200. package/dist/src/render/drawable_mixin.js +0 -227
  201. package/dist/src/render/drawable_mixin.js.map +0 -1
  202. package/dist/src/render/envlight.js +0 -463
  203. package/dist/src/render/envlight.js.map +0 -1
  204. package/dist/src/render/fbm_wavegenerator.js +0 -251
  205. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  206. package/dist/src/render/fft_wavegenerator.js +0 -1006
  207. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  208. package/dist/src/render/fullscreenquad.js +0 -38
  209. package/dist/src/render/fullscreenquad.js.map +0 -1
  210. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  211. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  212. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  213. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  214. package/dist/src/render/hzb.js +0 -273
  215. package/dist/src/render/hzb.js.map +0 -1
  216. package/dist/src/render/lightpass.js +0 -172
  217. package/dist/src/render/lightpass.js.map +0 -1
  218. package/dist/src/render/objectcolorpass.js +0 -51
  219. package/dist/src/render/objectcolorpass.js.map +0 -1
  220. package/dist/src/render/primitive.js +0 -364
  221. package/dist/src/render/primitive.js.map +0 -1
  222. package/dist/src/render/render_queue.js +0 -467
  223. package/dist/src/render/render_queue.js.map +0 -1
  224. package/dist/src/render/renderbundle_wrapper.js +0 -152
  225. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  226. package/dist/src/render/renderer.js +0 -455
  227. package/dist/src/render/renderer.js.map +0 -1
  228. package/dist/src/render/renderpass.js +0 -200
  229. package/dist/src/render/renderpass.js.map +0 -1
  230. package/dist/src/render/shadowmap_pass.js +0 -56
  231. package/dist/src/render/shadowmap_pass.js.map +0 -1
  232. package/dist/src/render/sky.js +0 -1103
  233. package/dist/src/render/sky.js.map +0 -1
  234. package/dist/src/render/weightedblended_oit.js +0 -168
  235. package/dist/src/render/weightedblended_oit.js.map +0 -1
  236. package/dist/src/scene/batchgroup.js +0 -162
  237. package/dist/src/scene/batchgroup.js.map +0 -1
  238. package/dist/src/scene/environment.js +0 -209
  239. package/dist/src/scene/environment.js.map +0 -1
  240. package/dist/src/scene/graph_node.js +0 -72
  241. package/dist/src/scene/graph_node.js.map +0 -1
  242. package/dist/src/scene/light.js +0 -416
  243. package/dist/src/scene/light.js.map +0 -1
  244. package/dist/src/scene/mesh.js +0 -341
  245. package/dist/src/scene/mesh.js.map +0 -1
  246. package/dist/src/scene/octree.js +0 -649
  247. package/dist/src/scene/octree.js.map +0 -1
  248. package/dist/src/scene/particlesys.js +0 -738
  249. package/dist/src/scene/particlesys.js.map +0 -1
  250. package/dist/src/scene/raycast_visitor.js +0 -103
  251. package/dist/src/scene/raycast_visitor.js.map +0 -1
  252. package/dist/src/scene/scene.js +0 -284
  253. package/dist/src/scene/scene.js.map +0 -1
  254. package/dist/src/scene/scene_node.js +0 -732
  255. package/dist/src/scene/scene_node.js.map +0 -1
  256. package/dist/src/scene/terrain/grass.js +0 -278
  257. package/dist/src/scene/terrain/grass.js.map +0 -1
  258. package/dist/src/scene/terrain/heightfield.js +0 -475
  259. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  260. package/dist/src/scene/terrain/patch.js +0 -530
  261. package/dist/src/scene/terrain/patch.js.map +0 -1
  262. package/dist/src/scene/terrain/quadtree.js +0 -461
  263. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  264. package/dist/src/scene/terrain/terrain.js +0 -246
  265. package/dist/src/scene/terrain/terrain.js.map +0 -1
  266. package/dist/src/scene/terrain-cm/grass.js +0 -594
  267. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  268. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  269. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  270. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  271. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  272. package/dist/src/scene/water.js +0 -374
  273. package/dist/src/scene/water.js.map +0 -1
  274. package/dist/src/shaders/atmosphere.js +0 -957
  275. package/dist/src/shaders/atmosphere.js.map +0 -1
  276. package/dist/src/shaders/fog.js +0 -112
  277. package/dist/src/shaders/fog.js.map +0 -1
  278. package/dist/src/shaders/misc.js +0 -266
  279. package/dist/src/shaders/misc.js.map +0 -1
  280. package/dist/src/shaders/noise.js +0 -222
  281. package/dist/src/shaders/noise.js.map +0 -1
  282. package/dist/src/shaders/pbr.js +0 -51
  283. package/dist/src/shaders/pbr.js.map +0 -1
  284. package/dist/src/shaders/shadow.js +0 -636
  285. package/dist/src/shaders/shadow.js.map +0 -1
  286. package/dist/src/shaders/ssr.js +0 -490
  287. package/dist/src/shaders/ssr.js.map +0 -1
  288. package/dist/src/shaders/temporal.js +0 -215
  289. package/dist/src/shaders/temporal.js.map +0 -1
  290. package/dist/src/shaders/water.js +0 -756
  291. package/dist/src/shaders/water.js.map +0 -1
  292. package/dist/src/shadow/esm.js +0 -237
  293. package/dist/src/shadow/esm.js.map +0 -1
  294. package/dist/src/shadow/pcf_opt.js +0 -181
  295. package/dist/src/shadow/pcf_opt.js.map +0 -1
  296. package/dist/src/shadow/pcf_pd.js +0 -189
  297. package/dist/src/shadow/pcf_pd.js.map +0 -1
  298. package/dist/src/shadow/shader.js +0 -37
  299. package/dist/src/shadow/shader.js.map +0 -1
  300. package/dist/src/shadow/shadow_impl.js +0 -15
  301. package/dist/src/shadow/shadow_impl.js.map +0 -1
  302. package/dist/src/shadow/shadowmapper.js +0 -790
  303. package/dist/src/shadow/shadowmapper.js.map +0 -1
  304. package/dist/src/shadow/ssm.js +0 -159
  305. package/dist/src/shadow/ssm.js.map +0 -1
  306. package/dist/src/shadow/vsm.js +0 -297
  307. package/dist/src/shadow/vsm.js.map +0 -1
  308. package/dist/src/shapes/box.js +0 -386
  309. package/dist/src/shapes/box.js.map +0 -1
  310. package/dist/src/shapes/cylinder.js +0 -125
  311. package/dist/src/shapes/cylinder.js.map +0 -1
  312. package/dist/src/shapes/plane.js +0 -88
  313. package/dist/src/shapes/plane.js.map +0 -1
  314. package/dist/src/shapes/shape.js +0 -87
  315. package/dist/src/shapes/shape.js.map +0 -1
  316. package/dist/src/shapes/sphere.js +0 -114
  317. package/dist/src/shapes/sphere.js.map +0 -1
  318. package/dist/src/shapes/tetrahedron.js +0 -188
  319. package/dist/src/shapes/tetrahedron.js.map +0 -1
  320. package/dist/src/shapes/torus.js +0 -111
  321. package/dist/src/shapes/torus.js.map +0 -1
  322. package/dist/src/utility/aabbtree.js +0 -400
  323. package/dist/src/utility/aabbtree.js.map +0 -1
  324. package/dist/src/utility/bounding_volume.js +0 -29
  325. package/dist/src/utility/bounding_volume.js.map +0 -1
  326. package/dist/src/utility/debug.js +0 -28
  327. package/dist/src/utility/debug.js.map +0 -1
  328. package/dist/src/utility/draco/decoder.js +0 -116
  329. package/dist/src/utility/draco/decoder.js.map +0 -1
  330. package/dist/src/utility/misc.js +0 -105
  331. package/dist/src/utility/misc.js.map +0 -1
  332. package/dist/src/utility/panorama.js +0 -163
  333. package/dist/src/utility/panorama.js.map +0 -1
  334. package/dist/src/utility/pmrem.js +0 -354
  335. package/dist/src/utility/pmrem.js.map +0 -1
  336. package/dist/src/utility/rendermipmap.js +0 -115
  337. package/dist/src/utility/rendermipmap.js.map +0 -1
  338. package/dist/src/utility/serialization/json.js +0 -402
  339. package/dist/src/utility/serialization/json.js.map +0 -1
  340. package/dist/src/utility/serialization/manager.js +0 -623
  341. package/dist/src/utility/serialization/manager.js.map +0 -1
  342. package/dist/src/utility/serialization/scene/animation.js +0 -248
  343. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  344. package/dist/src/utility/serialization/scene/batch.js +0 -59
  345. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  346. package/dist/src/utility/serialization/scene/camera.js +0 -790
  347. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  348. package/dist/src/utility/serialization/scene/common.js +0 -222
  349. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  350. package/dist/src/utility/serialization/scene/light.js +0 -575
  351. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  352. package/dist/src/utility/serialization/scene/material.js +0 -1111
  353. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  354. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  355. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  356. package/dist/src/utility/serialization/scene/misc.js +0 -39
  357. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  358. package/dist/src/utility/serialization/scene/node.js +0 -451
  359. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  360. package/dist/src/utility/serialization/scene/particle.js +0 -425
  361. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  362. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  363. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  364. package/dist/src/utility/serialization/scene/scene.js +0 -704
  365. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  366. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  367. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  368. package/dist/src/utility/serialization/scene/water.js +0 -465
  369. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  370. package/dist/src/utility/shprojector.js +0 -297
  371. package/dist/src/utility/shprojector.js.map +0 -1
  372. package/dist/src/utility/textures/ggxlut.js +0 -213
  373. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  374. package/dist/src/utility/textures/gradientnoise.js +0 -62
  375. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  376. package/dist/src/utility/textures/randomnoise.js +0 -41
  377. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  378. package/dist/src/values.js +0 -162
  379. package/dist/src/values.js.map +0 -1
  380. package/dist/utility/blueprint/material/common.js +0 -7
  381. package/dist/utility/blueprint/material/common.js.map +0 -1
  382. package/dist/utility/serialization/blueprint/constants.js +0 -255
  383. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  384. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  385. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  386. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  387. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
@@ -1,181 +0,0 @@
1
- import { ShadowImpl } from './shadow_impl.js';
2
- import { decodeNormalizedFloatFromRGBA } from '../shaders/misc.js';
3
- import { computeShadowMapDepth, computeReceiverPlaneDepthBias, filterShadowPCF } from '../shaders/shadow.js';
4
- import { Application } from '../app/app.js';
5
- import { LIGHT_TYPE_POINT } from '../values.js';
6
- import { ShaderHelper } from '../material/shader/helper.js';
7
- import { computeShadowBiasCSM, computeShadowBias } from './shader.js';
8
-
9
- /** @internal */ class PCFOPT extends ShadowImpl {
10
- _kernelSize;
11
- _shadowSampler;
12
- constructor(kernelSize){
13
- super();
14
- this._kernelSize = kernelSize ?? 5;
15
- this._shadowSampler = null;
16
- }
17
- get kernelSize() {
18
- return this._kernelSize;
19
- }
20
- set kernelSize(val) {
21
- val = val !== 3 && val !== 5 && val !== 7 ? 5 : val;
22
- this._kernelSize = val;
23
- }
24
- getType() {
25
- return 'pcf-opt';
26
- }
27
- dispose() {
28
- this._shadowSampler = null;
29
- }
30
- resourceDirty() {
31
- return false;
32
- }
33
- getShadowMapBorder(_shadowMapParams) {
34
- return this._kernelSize;
35
- }
36
- getShadowMap(shadowMapParams) {
37
- return this.useNativeShadowMap(shadowMapParams) ? shadowMapParams.shadowMapFramebuffer.getDepthAttachment() : shadowMapParams.shadowMapFramebuffer.getColorAttachments()[0];
38
- }
39
- doUpdateResources(shadowMapParams) {
40
- shadowMapParams.shadowMap = this.getShadowMap(shadowMapParams);
41
- shadowMapParams.shadowMapSampler = shadowMapParams.shadowMap?.getDefaultSampler(this.useNativeShadowMap(shadowMapParams)) || null;
42
- }
43
- postRenderShadowMap() {}
44
- getDepthScale() {
45
- return 1;
46
- }
47
- setDepthScale(_val) {}
48
- getShaderHash() {
49
- return `${this._kernelSize}`;
50
- }
51
- getShadowMapColorFormat(shadowMapParams) {
52
- return this.useNativeShadowMap(shadowMapParams) ? null : 'rgba8unorm';
53
- }
54
- getShadowMapDepthFormat(_shadowMapParams) {
55
- return Application.instance.device.type === 'webgl' ? 'd24s8' : 'd32f';
56
- }
57
- computeShadowMapDepth(shadowMapParams, scope, worldPos) {
58
- return computeShadowMapDepth(scope, worldPos, shadowMapParams.shadowMap.format);
59
- }
60
- computeShadowCSM(shadowMapParams, scope, shadowVertex, NdotL, split) {
61
- const funcNameComputeShadowCSM = 'lib_computeShadowCSM';
62
- const pb = scope.$builder;
63
- const that = this;
64
- pb.func(funcNameComputeShadowCSM, [
65
- pb.vec4('shadowVertex'),
66
- pb.float('NdotL'),
67
- pb.int('split')
68
- ], function() {
69
- this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);
70
- this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);
71
- this.$l.inShadow = pb.all(pb.bvec2(pb.all(pb.bvec4(pb.greaterThanEqual(this.shadowCoord.x, 0), pb.lessThanEqual(this.shadowCoord.x, 1), pb.greaterThanEqual(this.shadowCoord.y, 0), pb.lessThanEqual(this.shadowCoord.y, 1))), pb.lessThanEqual(this.shadowCoord.z, 1)));
72
- this.$l.shadow = pb.float(1);
73
- this.$l.receiverPlaneDepthBias = computeReceiverPlaneDepthBias(this, this.shadowCoord);
74
- this.$if(this.inShadow, function() {
75
- this.$l.shadowBias = computeShadowBiasCSM(this, this.NdotL, this.split);
76
- this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);
77
- this.shadow = filterShadowPCF(this, shadowMapParams.lightType, shadowMapParams.shadowMap.format, that._kernelSize, this.shadowCoord, this.receiverPlaneDepthBias, this.split);
78
- });
79
- this.$return(this.shadow);
80
- });
81
- return pb.getGlobalScope()[funcNameComputeShadowCSM](shadowVertex, NdotL, split);
82
- }
83
- computeShadow(shadowMapParams, scope, shadowVertex, NdotL) {
84
- const funcNameComputeShadow = 'lib_computeShadow';
85
- const pb = scope.$builder;
86
- const that = this;
87
- pb.func(funcNameComputeShadow, [
88
- pb.vec4('shadowVertex'),
89
- pb.float('NdotL')
90
- ], function() {
91
- if (shadowMapParams.lightType === LIGHT_TYPE_POINT) {
92
- this.$l.dir = pb.sub(this.shadowVertex.xyz, ShaderHelper.getLightPositionAndRangeForShadow(this).xyz);
93
- if (that.useNativeShadowMap(shadowMapParams)) {
94
- this.$l.nearFar = ShaderHelper.getShadowCameraParams(this).xy;
95
- this.$l.maxZ = pb.max(pb.max(pb.abs(this.dir.x), pb.abs(this.dir.y)), pb.abs(this.dir.z));
96
- this.$l.distance = ShaderHelper.linearDepthToNonLinear(this, this.maxZ, this.nearFar);
97
- this.$l.shadowBias = computeShadowBias(shadowMapParams.lightType, this, pb.div(this.maxZ, ShaderHelper.getLightPositionAndRangeForShadow(this).w), this.NdotL, true);
98
- this.$return(that.sampleShadowMap(shadowMapParams, this, this.dir, this.distance, this.shadowBias));
99
- } else {
100
- this.$l.distance = pb.div(pb.length(this.dir), ShaderHelper.getLightPositionAndRangeForShadow(this).w);
101
- this.$l.shadowBias = computeShadowBias(shadowMapParams.lightType, this, this.distance, this.NdotL, true);
102
- this.$return(that.sampleShadowMap(shadowMapParams, this, this.dir, this.distance, this.shadowBias));
103
- }
104
- } else {
105
- this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);
106
- this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);
107
- this.$l.inShadow = pb.all(pb.bvec2(pb.all(pb.bvec4(pb.greaterThanEqual(this.shadowCoord.x, 0), pb.lessThanEqual(this.shadowCoord.x, 1), pb.greaterThanEqual(this.shadowCoord.y, 0), pb.lessThanEqual(this.shadowCoord.y, 1))), pb.lessThanEqual(this.shadowCoord.z, 1)));
108
- this.$l.shadow = pb.float(1);
109
- this.$l.receiverPlaneDepthBias = computeReceiverPlaneDepthBias(this, this.shadowCoord);
110
- this.$if(this.inShadow, function() {
111
- this.$l.shadowBias = computeShadowBias(shadowMapParams.lightType, this, this.shadowCoord.z, this.NdotL, false);
112
- this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);
113
- this.shadow = filterShadowPCF(this, shadowMapParams.lightType, shadowMapParams.shadowMap.format, that._kernelSize, this.shadowCoord, this.receiverPlaneDepthBias);
114
- });
115
- this.$return(this.shadow);
116
- }
117
- });
118
- return pb.getGlobalScope()[funcNameComputeShadow](shadowVertex, NdotL);
119
- }
120
- useNativeShadowMap(_shadowMapParams) {
121
- return Application.instance.device.type !== 'webgl';
122
- }
123
- /** @internal */ sampleShadowMap(shadowMapParams, scope, coords, z, bias) {
124
- const funcNameSampleShadowMap = `lib_sampleShadowMap`;
125
- const pb = scope.$builder;
126
- const that = this;
127
- pb.func(funcNameSampleShadowMap, [
128
- pb.vec3('coords'),
129
- pb.float('z'),
130
- pb.float('bias')
131
- ], function() {
132
- const floatDepthTexture = shadowMapParams.shadowMap.format !== 'rgba8unorm';
133
- if (that.useNativeShadowMap(shadowMapParams)) {
134
- this.$return(pb.clamp(pb.textureSampleCompareLevel(ShaderHelper.getShadowMap(this), this.coords, pb.sub(this.z, this.bias)), 0, 1));
135
- } else {
136
- this.$l.shadowTex = pb.textureSampleLevel(ShaderHelper.getShadowMap(this), this.coords, 0);
137
- if (!floatDepthTexture) {
138
- this.shadowTex.x = decodeNormalizedFloatFromRGBA(this, this.shadowTex);
139
- }
140
- this.$l.distance = pb.sub(this.z, this.bias);
141
- this.$return(pb.step(this.distance, this.shadowTex.x));
142
- }
143
- });
144
- return pb.getGlobalScope()[funcNameSampleShadowMap](coords, z, bias);
145
- }
146
- /** @internal */ sampleShadowMapCSM(shadowMapParams, scope, coords, split, z, bias) {
147
- const funcNameSampleShadowMapCSM = 'lib_sampleShadowMapCSM';
148
- const pb = scope.$builder;
149
- const that = this;
150
- pb.func(funcNameSampleShadowMapCSM, [
151
- pb.vec4('coords'),
152
- pb.int('split'),
153
- pb.float('z'),
154
- pb.float('bias')
155
- ], function() {
156
- const floatDepthTexture = shadowMapParams.shadowMap.format !== 'rgba8unorm';
157
- this.$l.distance = pb.sub(this.z, this.bias);
158
- if (that.useNativeShadowMap(shadowMapParams)) {
159
- if (shadowMapParams.shadowMap.isTexture2DArray()) {
160
- this.$return(pb.clamp(pb.textureArraySampleCompareLevel(ShaderHelper.getShadowMap(this), this.coords.xy, this.split, this.distance), 0, 1));
161
- } else {
162
- this.$return(pb.clamp(pb.textureSampleCompareLevel(ShaderHelper.getShadowMap(this), this.coords.xy, this.distance), 0, 1));
163
- }
164
- } else {
165
- if (shadowMapParams.shadowMap.isTexture2DArray()) {
166
- this.$l.shadowTex = pb.textureArraySampleLevel(ShaderHelper.getShadowMap(this), this.coords.xy, this.split, 0);
167
- } else {
168
- this.$l.shadowTex = pb.textureSampleLevel(ShaderHelper.getShadowMap(this), this.coords.xy, 0);
169
- }
170
- if (!floatDepthTexture) {
171
- this.shadowTex.x = decodeNormalizedFloatFromRGBA(this, this.shadowTex);
172
- }
173
- this.$return(pb.step(this.distance, this.shadowTex.x));
174
- }
175
- });
176
- return pb.getGlobalScope()[funcNameSampleShadowMapCSM](coords, split, z, bias);
177
- }
178
- }
179
-
180
- export { PCFOPT };
181
- //# sourceMappingURL=pcf_opt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pcf_opt.js","sources":["../../../src/shadow/pcf_opt.ts"],"sourcesContent":["import type { PBInsideFunctionScope, PBShaderExp, TextureFormat, TextureSampler } from '@zephyr3d/device';\r\nimport { ShadowImpl } from './shadow_impl';\r\nimport { decodeNormalizedFloatFromRGBA } from '../shaders/misc';\r\nimport { computeShadowMapDepth, computeReceiverPlaneDepthBias, filterShadowPCF } from '../shaders/shadow';\r\nimport type { ShadowMapParams, ShadowMapType, ShadowMode } from './shadowmapper';\r\nimport { Application } from '../app';\r\nimport { LIGHT_TYPE_POINT } from '../values';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { computeShadowBias, computeShadowBiasCSM } from './shader';\r\n\r\n/** @internal */\r\nexport class PCFOPT extends ShadowImpl {\r\n protected _kernelSize: number;\r\n protected _shadowSampler: TextureSampler;\r\n constructor(kernelSize?: number) {\r\n super();\r\n this._kernelSize = kernelSize ?? 5;\r\n this._shadowSampler = null;\r\n }\r\n get kernelSize(): number {\r\n return this._kernelSize;\r\n }\r\n set kernelSize(val: number) {\r\n val = val !== 3 && val !== 5 && val !== 7 ? 5 : val;\r\n this._kernelSize = val;\r\n }\r\n getType(): ShadowMode {\r\n return 'pcf-opt';\r\n }\r\n dispose(): void {\r\n this._shadowSampler = null;\r\n }\r\n resourceDirty(): boolean {\r\n return false;\r\n }\r\n getShadowMapBorder(_shadowMapParams: ShadowMapParams): number {\r\n return this._kernelSize;\r\n }\r\n getShadowMap(shadowMapParams: ShadowMapParams): ShadowMapType {\r\n return (\r\n this.useNativeShadowMap(shadowMapParams)\r\n ? shadowMapParams.shadowMapFramebuffer.getDepthAttachment()\r\n : shadowMapParams.shadowMapFramebuffer.getColorAttachments()[0]\r\n ) as ShadowMapType;\r\n }\r\n doUpdateResources(shadowMapParams: ShadowMapParams) {\r\n shadowMapParams.shadowMap = this.getShadowMap(shadowMapParams);\r\n shadowMapParams.shadowMapSampler =\r\n shadowMapParams.shadowMap?.getDefaultSampler(this.useNativeShadowMap(shadowMapParams)) || null;\r\n }\r\n postRenderShadowMap() {}\r\n getDepthScale(): number {\r\n return 1;\r\n }\r\n setDepthScale(_val: number) {}\r\n getShaderHash(): string {\r\n return `${this._kernelSize}`;\r\n }\r\n getShadowMapColorFormat(shadowMapParams: ShadowMapParams): TextureFormat {\r\n return this.useNativeShadowMap(shadowMapParams) ? null : 'rgba8unorm';\r\n }\r\n getShadowMapDepthFormat(_shadowMapParams: ShadowMapParams): TextureFormat {\r\n return Application.instance.device.type === 'webgl' ? 'd24s8' : 'd32f';\r\n }\r\n computeShadowMapDepth(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp\r\n ): PBShaderExp {\r\n return computeShadowMapDepth(scope, worldPos, shadowMapParams.shadowMap.format);\r\n }\r\n computeShadowCSM(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp,\r\n split: PBShaderExp\r\n ): PBShaderExp {\r\n const funcNameComputeShadowCSM = 'lib_computeShadowCSM';\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(\r\n funcNameComputeShadowCSM,\r\n [pb.vec4('shadowVertex'), pb.float('NdotL'), pb.int('split')],\r\n function () {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$l.receiverPlaneDepthBias = computeReceiverPlaneDepthBias(this, this.shadowCoord);\r\n this.$if(this.inShadow, function () {\r\n this.$l.shadowBias = computeShadowBiasCSM(this, this.NdotL, this.split);\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowPCF(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap.format,\r\n that._kernelSize,\r\n this.shadowCoord,\r\n this.receiverPlaneDepthBias,\r\n this.split\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n );\r\n return pb.getGlobalScope()[funcNameComputeShadowCSM](shadowVertex, NdotL, split);\r\n }\r\n computeShadow(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp\r\n ): PBShaderExp {\r\n const funcNameComputeShadow = 'lib_computeShadow';\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(funcNameComputeShadow, [pb.vec4('shadowVertex'), pb.float('NdotL')], function () {\r\n if (shadowMapParams.lightType === LIGHT_TYPE_POINT) {\r\n this.$l.dir = pb.sub(this.shadowVertex.xyz, ShaderHelper.getLightPositionAndRangeForShadow(this).xyz);\r\n if (that.useNativeShadowMap(shadowMapParams)) {\r\n this.$l.nearFar = ShaderHelper.getShadowCameraParams(this).xy;\r\n this.$l.maxZ = pb.max(pb.max(pb.abs(this.dir.x), pb.abs(this.dir.y)), pb.abs(this.dir.z));\r\n this.$l.distance = ShaderHelper.linearDepthToNonLinear(this, this.maxZ, this.nearFar);\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n pb.div(this.maxZ, ShaderHelper.getLightPositionAndRangeForShadow(this).w),\r\n this.NdotL,\r\n true\r\n );\r\n this.$return(that.sampleShadowMap(shadowMapParams, this, this.dir, this.distance, this.shadowBias));\r\n } else {\r\n this.$l.distance = pb.div(\r\n pb.length(this.dir),\r\n ShaderHelper.getLightPositionAndRangeForShadow(this).w\r\n );\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.distance,\r\n this.NdotL,\r\n true\r\n );\r\n this.$return(that.sampleShadowMap(shadowMapParams, this, this.dir, this.distance, this.shadowBias));\r\n }\r\n } else {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$l.receiverPlaneDepthBias = computeReceiverPlaneDepthBias(this, this.shadowCoord);\r\n this.$if(this.inShadow, function () {\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.shadowCoord.z,\r\n this.NdotL,\r\n false\r\n );\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowPCF(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap.format,\r\n that._kernelSize,\r\n this.shadowCoord,\r\n this.receiverPlaneDepthBias\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n });\r\n return pb.getGlobalScope()[funcNameComputeShadow](shadowVertex, NdotL);\r\n }\r\n useNativeShadowMap(_shadowMapParams: ShadowMapParams): boolean {\r\n return Application.instance.device.type !== 'webgl';\r\n }\r\n /** @internal */\r\n sampleShadowMap(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n coords: PBShaderExp,\r\n z: PBShaderExp,\r\n bias: PBShaderExp\r\n ): PBShaderExp {\r\n const funcNameSampleShadowMap = `lib_sampleShadowMap`;\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(funcNameSampleShadowMap, [pb.vec3('coords'), pb.float('z'), pb.float('bias')], function () {\r\n const floatDepthTexture = shadowMapParams.shadowMap.format !== 'rgba8unorm';\r\n if (that.useNativeShadowMap(shadowMapParams)) {\r\n this.$return(\r\n pb.clamp(\r\n pb.textureSampleCompareLevel(\r\n ShaderHelper.getShadowMap(this),\r\n this.coords,\r\n pb.sub(this.z, this.bias)\r\n ),\r\n 0,\r\n 1\r\n )\r\n );\r\n } else {\r\n this.$l.shadowTex = pb.textureSampleLevel(ShaderHelper.getShadowMap(this), this.coords, 0);\r\n if (!floatDepthTexture) {\r\n this.shadowTex.x = decodeNormalizedFloatFromRGBA(this, this.shadowTex);\r\n }\r\n this.$l.distance = pb.sub(this.z, this.bias);\r\n this.$return(pb.step(this.distance, this.shadowTex.x));\r\n }\r\n });\r\n return pb.getGlobalScope()[funcNameSampleShadowMap](coords, z, bias);\r\n }\r\n /** @internal */\r\n sampleShadowMapCSM(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n coords: PBShaderExp,\r\n split: PBShaderExp,\r\n z: PBShaderExp,\r\n bias: PBShaderExp\r\n ): PBShaderExp {\r\n const funcNameSampleShadowMapCSM = 'lib_sampleShadowMapCSM';\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(\r\n funcNameSampleShadowMapCSM,\r\n [pb.vec4('coords'), pb.int('split'), pb.float('z'), pb.float('bias')],\r\n function () {\r\n const floatDepthTexture = shadowMapParams.shadowMap.format !== 'rgba8unorm';\r\n this.$l.distance = pb.sub(this.z, this.bias);\r\n if (that.useNativeShadowMap(shadowMapParams)) {\r\n if (shadowMapParams.shadowMap.isTexture2DArray()) {\r\n this.$return(\r\n pb.clamp(\r\n pb.textureArraySampleCompareLevel(\r\n ShaderHelper.getShadowMap(this),\r\n this.coords.xy,\r\n this.split,\r\n this.distance\r\n ),\r\n 0,\r\n 1\r\n )\r\n );\r\n } else {\r\n this.$return(\r\n pb.clamp(\r\n pb.textureSampleCompareLevel(ShaderHelper.getShadowMap(this), this.coords.xy, this.distance),\r\n 0,\r\n 1\r\n )\r\n );\r\n }\r\n } else {\r\n if (shadowMapParams.shadowMap.isTexture2DArray()) {\r\n this.$l.shadowTex = pb.textureArraySampleLevel(\r\n ShaderHelper.getShadowMap(this),\r\n this.coords.xy,\r\n this.split,\r\n 0\r\n );\r\n } else {\r\n this.$l.shadowTex = pb.textureSampleLevel(ShaderHelper.getShadowMap(this), this.coords.xy, 0);\r\n }\r\n if (!floatDepthTexture) {\r\n this.shadowTex.x = decodeNormalizedFloatFromRGBA(this, this.shadowTex);\r\n }\r\n this.$return(pb.step(this.distance, this.shadowTex.x));\r\n }\r\n }\r\n );\r\n return pb.getGlobalScope()[funcNameSampleShadowMapCSM](coords, split, z, bias);\r\n }\r\n}\r\n"],"names":["PCFOPT","ShadowImpl","_kernelSize","_shadowSampler","kernelSize","val","getType","dispose","resourceDirty","getShadowMapBorder","_shadowMapParams","getShadowMap","shadowMapParams","useNativeShadowMap","shadowMapFramebuffer","getDepthAttachment","getColorAttachments","doUpdateResources","shadowMap","shadowMapSampler","getDefaultSampler","postRenderShadowMap","getDepthScale","setDepthScale","_val","getShaderHash","getShadowMapColorFormat","getShadowMapDepthFormat","Application","instance","device","type","computeShadowMapDepth","scope","worldPos","format","computeShadowCSM","shadowVertex","NdotL","split","funcNameComputeShadowCSM","pb","$builder","that","func","vec4","float","int","$l","shadowCoord","div","w","add","mul","inShadow","all","bvec2","bvec4","greaterThanEqual","x","lessThanEqual","y","z","shadow","receiverPlaneDepthBias","computeReceiverPlaneDepthBias","$if","shadowBias","computeShadowBiasCSM","sub","filterShadowPCF","lightType","$return","getGlobalScope","computeShadow","funcNameComputeShadow","LIGHT_TYPE_POINT","dir","xyz","ShaderHelper","getLightPositionAndRangeForShadow","nearFar","getShadowCameraParams","xy","maxZ","max","abs","distance","linearDepthToNonLinear","computeShadowBias","sampleShadowMap","length","coords","bias","funcNameSampleShadowMap","vec3","floatDepthTexture","clamp","textureSampleCompareLevel","shadowTex","textureSampleLevel","decodeNormalizedFloatFromRGBA","step","sampleShadowMapCSM","funcNameSampleShadowMapCSM","isTexture2DArray","textureArraySampleCompareLevel","textureArraySampleLevel"],"mappings":"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"}
@@ -1,189 +0,0 @@
1
- import { ShadowImpl } from './shadow_impl.js';
2
- import { computeShadowMapDepth, computeReceiverPlaneDepthBias, filterShadowPoissonDisc } from '../shaders/shadow.js';
3
- import { decodeNormalizedFloatFromRGBA } from '../shaders/misc.js';
4
- import { Application } from '../app/app.js';
5
- import { LIGHT_TYPE_POINT } from '../values.js';
6
- import { ShaderHelper } from '../material/shader/helper.js';
7
- import { computeShadowBiasCSM, computeShadowBias } from './shader.js';
8
-
9
- /** @internal */ class PCFPD extends ShadowImpl {
10
- _tapCount;
11
- _sampleRadius;
12
- _shadowSampler;
13
- constructor(tapCount, sampleRadius){
14
- super();
15
- this._tapCount = tapCount ?? 3;
16
- this._sampleRadius = sampleRadius ?? 1;
17
- this._shadowSampler = null;
18
- }
19
- get tapCount() {
20
- return this._tapCount;
21
- }
22
- set tapCount(val) {
23
- this._tapCount = val;
24
- }
25
- getType() {
26
- return 'pcf-pd';
27
- }
28
- dispose() {
29
- this._shadowSampler = null;
30
- }
31
- resourceDirty() {
32
- return false;
33
- }
34
- getShadowMapBorder(_shadowMapParams) {
35
- return this._sampleRadius + 1;
36
- }
37
- getShadowMap(shadowMapParams) {
38
- return this.useNativeShadowMap(shadowMapParams) ? shadowMapParams.shadowMapFramebuffer.getDepthAttachment() : shadowMapParams.shadowMapFramebuffer.getColorAttachments()[0];
39
- }
40
- doUpdateResources(shadowMapParams) {
41
- shadowMapParams.shadowMap = this.getShadowMap(shadowMapParams);
42
- shadowMapParams.shadowMapSampler = shadowMapParams.shadowMap?.getDefaultSampler(this.useNativeShadowMap(shadowMapParams)) || null;
43
- }
44
- postRenderShadowMap() {}
45
- getDepthScale() {
46
- return this._sampleRadius;
47
- }
48
- setDepthScale(val) {
49
- this._sampleRadius = val;
50
- }
51
- getShaderHash() {
52
- return `${this._tapCount}`;
53
- }
54
- getShadowMapColorFormat(shadowMapParams) {
55
- if (this.useNativeShadowMap(shadowMapParams)) {
56
- return null;
57
- } else {
58
- const device = Application.instance.device;
59
- return device.getDeviceCaps().textureCaps.supportHalfFloatColorBuffer ? device.type === 'webgl' ? 'rgba16f' : 'r16f' : device.getDeviceCaps().textureCaps.supportFloatColorBuffer ? device.type === 'webgl' ? 'rgba32f' : 'r32f' : 'rgba8unorm';
60
- }
61
- }
62
- getShadowMapDepthFormat(_shadowMapParams) {
63
- return Application.instance.device.type === 'webgl' ? 'd24s8' : 'd32f';
64
- }
65
- computeShadowMapDepth(shadowMapParams, scope, worldPos) {
66
- return computeShadowMapDepth(scope, worldPos, shadowMapParams.shadowMap.format);
67
- }
68
- computeShadowCSM(shadowMapParams, scope, shadowVertex, NdotL, split) {
69
- const funcNameComputeShadowCSM = 'lib_computeShadowCSM';
70
- const pb = scope.$builder;
71
- const that = this;
72
- pb.func(funcNameComputeShadowCSM, [
73
- pb.vec4('shadowVertex'),
74
- pb.float('NdotL'),
75
- pb.int('split')
76
- ], function() {
77
- this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);
78
- this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);
79
- this.$l.inShadow = pb.all(pb.bvec2(pb.all(pb.bvec4(pb.greaterThanEqual(this.shadowCoord.x, 0), pb.lessThanEqual(this.shadowCoord.x, 1), pb.greaterThanEqual(this.shadowCoord.y, 0), pb.lessThanEqual(this.shadowCoord.y, 1))), pb.lessThanEqual(this.shadowCoord.z, 1)));
80
- this.$l.shadow = pb.float(1);
81
- this.$l.receiverPlaneDepthBias = computeReceiverPlaneDepthBias(this, this.shadowCoord);
82
- this.$if(this.inShadow, function() {
83
- this.$l.shadowBias = computeShadowBiasCSM(this, this.NdotL, this.split);
84
- this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);
85
- this.shadow = filterShadowPoissonDisc(this, shadowMapParams.lightType, shadowMapParams.shadowMap.format, that._tapCount, this.shadowCoord, this.receiverPlaneDepthBias, this.split);
86
- });
87
- this.$return(this.shadow);
88
- });
89
- return pb.getGlobalScope()[funcNameComputeShadowCSM](shadowVertex, NdotL, split);
90
- }
91
- computeShadow(shadowMapParams, scope, shadowVertex, NdotL) {
92
- const funcNameComputeShadow = 'lib_computeShadow';
93
- const pb = scope.$builder;
94
- const that = this;
95
- pb.func(funcNameComputeShadow, [
96
- pb.vec4('shadowVertex'),
97
- pb.float('NdotL')
98
- ], function() {
99
- if (shadowMapParams.lightType === LIGHT_TYPE_POINT) {
100
- this.$l.dir = pb.sub(this.shadowVertex.xyz, ShaderHelper.getLightPositionAndRangeForShadow(this).xyz);
101
- if (that.useNativeShadowMap(shadowMapParams)) {
102
- this.$l.nearFar = ShaderHelper.getShadowCameraParams(this).xy;
103
- this.$l.maxZ = pb.max(pb.max(pb.abs(this.dir.x), pb.abs(this.dir.y)), pb.abs(this.dir.z));
104
- this.$l.distance = ShaderHelper.linearDepthToNonLinear(this, this.maxZ, this.nearFar);
105
- this.$l.shadowBias = computeShadowBias(shadowMapParams.lightType, this, pb.div(this.maxZ, ShaderHelper.getLightPositionAndRangeForShadow(this).w), this.NdotL, true);
106
- this.$return(that.sampleShadowMap(shadowMapParams, this, this.dir, this.distance, this.shadowBias));
107
- } else {
108
- this.$l.distance = pb.div(pb.length(this.dir), ShaderHelper.getLightPositionAndRangeForShadow(this).w);
109
- this.$l.shadowBias = computeShadowBias(shadowMapParams.lightType, this, this.distance, this.NdotL, true);
110
- this.$return(that.sampleShadowMap(shadowMapParams, this, this.dir, this.distance, this.shadowBias));
111
- }
112
- } else {
113
- this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);
114
- this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);
115
- this.$l.inShadow = pb.all(pb.bvec2(pb.all(pb.bvec4(pb.greaterThanEqual(this.shadowCoord.x, 0), pb.lessThanEqual(this.shadowCoord.x, 1), pb.greaterThanEqual(this.shadowCoord.y, 0), pb.lessThanEqual(this.shadowCoord.y, 1))), pb.lessThanEqual(this.shadowCoord.z, 1)));
116
- this.$l.shadow = pb.float(1);
117
- this.$l.receiverPlaneDepthBias = computeReceiverPlaneDepthBias(this, this.shadowCoord);
118
- this.$if(this.inShadow, function() {
119
- this.$l.shadowBias = computeShadowBias(shadowMapParams.lightType, this, this.shadowCoord.z, this.NdotL, false);
120
- this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);
121
- this.shadow = filterShadowPoissonDisc(this, shadowMapParams.lightType, shadowMapParams.shadowMap.format, that._tapCount, this.shadowCoord, this.receiverPlaneDepthBias);
122
- });
123
- this.$return(this.shadow);
124
- }
125
- });
126
- return pb.getGlobalScope()[funcNameComputeShadow](shadowVertex, NdotL);
127
- }
128
- useNativeShadowMap(_shadowMapParams) {
129
- return Application.instance.device.type !== 'webgl';
130
- }
131
- /** @internal */ sampleShadowMap(shadowMapParams, scope, coords, z, bias) {
132
- const funcNameSampleShadowMap = 'lib_sampleShadowMap';
133
- const pb = scope.$builder;
134
- const that = this;
135
- pb.func(funcNameSampleShadowMap, [
136
- pb.vec3('coords'),
137
- pb.float('z'),
138
- pb.float('bias')
139
- ], function() {
140
- const floatDepthTexture = shadowMapParams.shadowMap.format !== 'rgba8unorm';
141
- if (that.useNativeShadowMap(shadowMapParams)) {
142
- this.$return(pb.clamp(pb.textureSampleCompareLevel(ShaderHelper.getShadowMap(this), this.coords, pb.sub(this.z, this.bias)), 0, 1));
143
- } else {
144
- this.$l.shadowTex = pb.textureSampleLevel(ShaderHelper.getShadowMap(this), this.coords, 0);
145
- if (!floatDepthTexture) {
146
- this.shadowTex.x = decodeNormalizedFloatFromRGBA(this, this.shadowTex);
147
- }
148
- this.$l.distance = pb.sub(this.z, this.bias);
149
- this.$return(pb.step(this.distance, this.shadowTex.x));
150
- }
151
- });
152
- return pb.getGlobalScope()[funcNameSampleShadowMap](coords, z, bias);
153
- }
154
- /** @internal */ sampleShadowMapCSM(shadowMapParams, scope, coords, split, z, bias) {
155
- const funcNameSampleShadowMapCSM = 'lib_sampleShadowMapCSM';
156
- const pb = scope.$builder;
157
- const that = this;
158
- pb.func(funcNameSampleShadowMapCSM, [
159
- pb.vec4('coords'),
160
- pb.int('split'),
161
- pb.float('z'),
162
- pb.float('bias')
163
- ], function() {
164
- const floatDepthTexture = shadowMapParams.shadowMap.format !== 'rgba8unorm';
165
- this.$l.distance = pb.sub(this.z, this.bias);
166
- if (that.useNativeShadowMap(shadowMapParams)) {
167
- if (shadowMapParams.shadowMap.isTexture2DArray()) {
168
- this.$return(pb.clamp(pb.textureArraySampleCompareLevel(ShaderHelper.getShadowMap(this), this.coords.xy, this.split, this.distance), 0, 1));
169
- } else {
170
- this.$return(pb.clamp(pb.textureSampleCompareLevel(ShaderHelper.getShadowMap(this), this.coords.xy, this.distance), 0, 1));
171
- }
172
- } else {
173
- if (shadowMapParams.shadowMap.isTexture2DArray()) {
174
- this.$l.shadowTex = pb.textureArraySampleLevel(ShaderHelper.getShadowMap(this), this.coords.xy, this.split, 0);
175
- } else {
176
- this.$l.shadowTex = pb.textureSampleLevel(ShaderHelper.getShadowMap(this), this.coords.xy, 0);
177
- }
178
- if (!floatDepthTexture) {
179
- this.shadowTex.x = decodeNormalizedFloatFromRGBA(this, this.shadowTex);
180
- }
181
- this.$return(pb.step(this.distance, this.shadowTex.x));
182
- }
183
- });
184
- return pb.getGlobalScope()[funcNameSampleShadowMapCSM](coords, split, z, bias);
185
- }
186
- }
187
-
188
- export { PCFPD };
189
- //# sourceMappingURL=pcf_pd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pcf_pd.js","sources":["../../../src/shadow/pcf_pd.ts"],"sourcesContent":["import type { PBInsideFunctionScope, PBShaderExp, TextureFormat, TextureSampler } from '@zephyr3d/device';\r\nimport { ShadowImpl } from './shadow_impl';\r\nimport {\r\n computeShadowMapDepth,\r\n computeReceiverPlaneDepthBias,\r\n filterShadowPoissonDisc\r\n} from '../shaders/shadow';\r\nimport type { ShadowMapParams, ShadowMapType, ShadowMode } from './shadowmapper';\r\nimport { decodeNormalizedFloatFromRGBA } from '../shaders/misc';\r\nimport { Application } from '../app';\r\nimport { LIGHT_TYPE_POINT } from '../values';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { computeShadowBias, computeShadowBiasCSM } from './shader';\r\n\r\n/** @internal */\r\nexport class PCFPD extends ShadowImpl {\r\n protected _tapCount: number;\r\n protected _sampleRadius: number;\r\n protected _shadowSampler: TextureSampler;\r\n constructor(tapCount?: number, sampleRadius?: number) {\r\n super();\r\n this._tapCount = tapCount ?? 3;\r\n this._sampleRadius = sampleRadius ?? 1;\r\n this._shadowSampler = null;\r\n }\r\n get tapCount(): number {\r\n return this._tapCount;\r\n }\r\n set tapCount(val: number) {\r\n this._tapCount = val;\r\n }\r\n getType(): ShadowMode {\r\n return 'pcf-pd';\r\n }\r\n dispose(): void {\r\n this._shadowSampler = null;\r\n }\r\n resourceDirty(): boolean {\r\n return false;\r\n }\r\n getShadowMapBorder(_shadowMapParams: ShadowMapParams): number {\r\n return this._sampleRadius + 1;\r\n }\r\n getShadowMap(shadowMapParams: ShadowMapParams): ShadowMapType {\r\n return (\r\n this.useNativeShadowMap(shadowMapParams)\r\n ? shadowMapParams.shadowMapFramebuffer.getDepthAttachment()\r\n : shadowMapParams.shadowMapFramebuffer.getColorAttachments()[0]\r\n ) as ShadowMapType;\r\n }\r\n doUpdateResources(shadowMapParams: ShadowMapParams) {\r\n shadowMapParams.shadowMap = this.getShadowMap(shadowMapParams);\r\n shadowMapParams.shadowMapSampler =\r\n shadowMapParams.shadowMap?.getDefaultSampler(this.useNativeShadowMap(shadowMapParams)) || null;\r\n }\r\n postRenderShadowMap() {}\r\n getDepthScale(): number {\r\n return this._sampleRadius;\r\n }\r\n setDepthScale(val: number) {\r\n this._sampleRadius = val;\r\n }\r\n getShaderHash(): string {\r\n return `${this._tapCount}`;\r\n }\r\n getShadowMapColorFormat(shadowMapParams: ShadowMapParams): TextureFormat {\r\n if (this.useNativeShadowMap(shadowMapParams)) {\r\n return null;\r\n } else {\r\n const device = Application.instance.device;\r\n return device.getDeviceCaps().textureCaps.supportHalfFloatColorBuffer\r\n ? device.type === 'webgl'\r\n ? 'rgba16f'\r\n : 'r16f'\r\n : device.getDeviceCaps().textureCaps.supportFloatColorBuffer\r\n ? device.type === 'webgl'\r\n ? 'rgba32f'\r\n : 'r32f'\r\n : 'rgba8unorm';\r\n }\r\n }\r\n getShadowMapDepthFormat(_shadowMapParams: ShadowMapParams): TextureFormat {\r\n return Application.instance.device.type === 'webgl' ? 'd24s8' : 'd32f';\r\n }\r\n computeShadowMapDepth(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp\r\n ): PBShaderExp {\r\n return computeShadowMapDepth(scope, worldPos, shadowMapParams.shadowMap.format);\r\n }\r\n computeShadowCSM(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp,\r\n split: PBShaderExp\r\n ): PBShaderExp {\r\n const funcNameComputeShadowCSM = 'lib_computeShadowCSM';\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(\r\n funcNameComputeShadowCSM,\r\n [pb.vec4('shadowVertex'), pb.float('NdotL'), pb.int('split')],\r\n function () {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$l.receiverPlaneDepthBias = computeReceiverPlaneDepthBias(this, this.shadowCoord);\r\n this.$if(this.inShadow, function () {\r\n this.$l.shadowBias = computeShadowBiasCSM(this, this.NdotL, this.split);\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowPoissonDisc(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap.format,\r\n that._tapCount,\r\n this.shadowCoord,\r\n this.receiverPlaneDepthBias,\r\n this.split\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n );\r\n return pb.getGlobalScope()[funcNameComputeShadowCSM](shadowVertex, NdotL, split);\r\n }\r\n computeShadow(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp\r\n ): PBShaderExp {\r\n const funcNameComputeShadow = 'lib_computeShadow';\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(funcNameComputeShadow, [pb.vec4('shadowVertex'), pb.float('NdotL')], function () {\r\n if (shadowMapParams.lightType === LIGHT_TYPE_POINT) {\r\n this.$l.dir = pb.sub(this.shadowVertex.xyz, ShaderHelper.getLightPositionAndRangeForShadow(this).xyz);\r\n if (that.useNativeShadowMap(shadowMapParams)) {\r\n this.$l.nearFar = ShaderHelper.getShadowCameraParams(this).xy;\r\n this.$l.maxZ = pb.max(pb.max(pb.abs(this.dir.x), pb.abs(this.dir.y)), pb.abs(this.dir.z));\r\n this.$l.distance = ShaderHelper.linearDepthToNonLinear(this, this.maxZ, this.nearFar);\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n pb.div(this.maxZ, ShaderHelper.getLightPositionAndRangeForShadow(this).w),\r\n this.NdotL,\r\n true\r\n );\r\n this.$return(that.sampleShadowMap(shadowMapParams, this, this.dir, this.distance, this.shadowBias));\r\n } else {\r\n this.$l.distance = pb.div(\r\n pb.length(this.dir),\r\n ShaderHelper.getLightPositionAndRangeForShadow(this).w\r\n );\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.distance,\r\n this.NdotL,\r\n true\r\n );\r\n this.$return(that.sampleShadowMap(shadowMapParams, this, this.dir, this.distance, this.shadowBias));\r\n }\r\n } else {\r\n this.$l.shadowCoord = pb.div(this.shadowVertex, this.shadowVertex.w);\r\n this.$l.shadowCoord = pb.add(pb.mul(this.shadowCoord, 0.5), 0.5);\r\n this.$l.inShadow = pb.all(\r\n pb.bvec2(\r\n pb.all(\r\n pb.bvec4(\r\n pb.greaterThanEqual(this.shadowCoord.x, 0),\r\n pb.lessThanEqual(this.shadowCoord.x, 1),\r\n pb.greaterThanEqual(this.shadowCoord.y, 0),\r\n pb.lessThanEqual(this.shadowCoord.y, 1)\r\n )\r\n ),\r\n pb.lessThanEqual(this.shadowCoord.z, 1)\r\n )\r\n );\r\n this.$l.shadow = pb.float(1);\r\n this.$l.receiverPlaneDepthBias = computeReceiverPlaneDepthBias(this, this.shadowCoord);\r\n this.$if(this.inShadow, function () {\r\n this.$l.shadowBias = computeShadowBias(\r\n shadowMapParams.lightType,\r\n this,\r\n this.shadowCoord.z,\r\n this.NdotL,\r\n false\r\n );\r\n this.shadowCoord.z = pb.sub(this.shadowCoord.z, this.shadowBias);\r\n this.shadow = filterShadowPoissonDisc(\r\n this,\r\n shadowMapParams.lightType,\r\n shadowMapParams.shadowMap.format,\r\n that._tapCount,\r\n this.shadowCoord,\r\n this.receiverPlaneDepthBias\r\n );\r\n });\r\n this.$return(this.shadow);\r\n }\r\n });\r\n return pb.getGlobalScope()[funcNameComputeShadow](shadowVertex, NdotL);\r\n }\r\n useNativeShadowMap(_shadowMapParams: ShadowMapParams): boolean {\r\n return Application.instance.device.type !== 'webgl';\r\n }\r\n /** @internal */\r\n sampleShadowMap(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n coords: PBShaderExp,\r\n z: PBShaderExp,\r\n bias: PBShaderExp\r\n ): PBShaderExp {\r\n const funcNameSampleShadowMap = 'lib_sampleShadowMap';\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(funcNameSampleShadowMap, [pb.vec3('coords'), pb.float('z'), pb.float('bias')], function () {\r\n const floatDepthTexture = shadowMapParams.shadowMap.format !== 'rgba8unorm';\r\n if (that.useNativeShadowMap(shadowMapParams)) {\r\n this.$return(\r\n pb.clamp(\r\n pb.textureSampleCompareLevel(\r\n ShaderHelper.getShadowMap(this),\r\n this.coords,\r\n pb.sub(this.z, this.bias)\r\n ),\r\n 0,\r\n 1\r\n )\r\n );\r\n } else {\r\n this.$l.shadowTex = pb.textureSampleLevel(ShaderHelper.getShadowMap(this), this.coords, 0);\r\n if (!floatDepthTexture) {\r\n this.shadowTex.x = decodeNormalizedFloatFromRGBA(this, this.shadowTex);\r\n }\r\n this.$l.distance = pb.sub(this.z, this.bias);\r\n this.$return(pb.step(this.distance, this.shadowTex.x));\r\n }\r\n });\r\n return pb.getGlobalScope()[funcNameSampleShadowMap](coords, z, bias);\r\n }\r\n /** @internal */\r\n sampleShadowMapCSM(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n coords: PBShaderExp,\r\n split: PBShaderExp,\r\n z: PBShaderExp,\r\n bias: PBShaderExp\r\n ): PBShaderExp {\r\n const funcNameSampleShadowMapCSM = 'lib_sampleShadowMapCSM';\r\n const pb = scope.$builder;\r\n const that = this;\r\n pb.func(\r\n funcNameSampleShadowMapCSM,\r\n [pb.vec4('coords'), pb.int('split'), pb.float('z'), pb.float('bias')],\r\n function () {\r\n const floatDepthTexture = shadowMapParams.shadowMap.format !== 'rgba8unorm';\r\n this.$l.distance = pb.sub(this.z, this.bias);\r\n if (that.useNativeShadowMap(shadowMapParams)) {\r\n if (shadowMapParams.shadowMap.isTexture2DArray()) {\r\n this.$return(\r\n pb.clamp(\r\n pb.textureArraySampleCompareLevel(\r\n ShaderHelper.getShadowMap(this),\r\n this.coords.xy,\r\n this.split,\r\n this.distance\r\n ),\r\n 0,\r\n 1\r\n )\r\n );\r\n } else {\r\n this.$return(\r\n pb.clamp(\r\n pb.textureSampleCompareLevel(ShaderHelper.getShadowMap(this), this.coords.xy, this.distance),\r\n 0,\r\n 1\r\n )\r\n );\r\n }\r\n } else {\r\n if (shadowMapParams.shadowMap.isTexture2DArray()) {\r\n this.$l.shadowTex = pb.textureArraySampleLevel(\r\n ShaderHelper.getShadowMap(this),\r\n this.coords.xy,\r\n this.split,\r\n 0\r\n );\r\n } else {\r\n this.$l.shadowTex = pb.textureSampleLevel(ShaderHelper.getShadowMap(this), this.coords.xy, 0);\r\n }\r\n if (!floatDepthTexture) {\r\n this.shadowTex.x = decodeNormalizedFloatFromRGBA(this, this.shadowTex);\r\n }\r\n this.$return(pb.step(this.distance, this.shadowTex.x));\r\n }\r\n }\r\n );\r\n return pb.getGlobalScope()[funcNameSampleShadowMapCSM](coords, split, z, bias);\r\n }\r\n}\r\n"],"names":["PCFPD","ShadowImpl","_tapCount","_sampleRadius","_shadowSampler","tapCount","sampleRadius","val","getType","dispose","resourceDirty","getShadowMapBorder","_shadowMapParams","getShadowMap","shadowMapParams","useNativeShadowMap","shadowMapFramebuffer","getDepthAttachment","getColorAttachments","doUpdateResources","shadowMap","shadowMapSampler","getDefaultSampler","postRenderShadowMap","getDepthScale","setDepthScale","getShaderHash","getShadowMapColorFormat","device","Application","instance","getDeviceCaps","textureCaps","supportHalfFloatColorBuffer","type","supportFloatColorBuffer","getShadowMapDepthFormat","computeShadowMapDepth","scope","worldPos","format","computeShadowCSM","shadowVertex","NdotL","split","funcNameComputeShadowCSM","pb","$builder","that","func","vec4","float","int","$l","shadowCoord","div","w","add","mul","inShadow","all","bvec2","bvec4","greaterThanEqual","x","lessThanEqual","y","z","shadow","receiverPlaneDepthBias","computeReceiverPlaneDepthBias","$if","shadowBias","computeShadowBiasCSM","sub","filterShadowPoissonDisc","lightType","$return","getGlobalScope","computeShadow","funcNameComputeShadow","LIGHT_TYPE_POINT","dir","xyz","ShaderHelper","getLightPositionAndRangeForShadow","nearFar","getShadowCameraParams","xy","maxZ","max","abs","distance","linearDepthToNonLinear","computeShadowBias","sampleShadowMap","length","coords","bias","funcNameSampleShadowMap","vec3","floatDepthTexture","clamp","textureSampleCompareLevel","shadowTex","textureSampleLevel","decodeNormalizedFloatFromRGBA","step","sampleShadowMapCSM","funcNameSampleShadowMapCSM","isTexture2DArray","textureArraySampleCompareLevel","textureArraySampleLevel"],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import { ShaderHelper } from '../material/shader/helper.js';
2
- import '../material/lambert.js';
3
- import '../material/blinn.js';
4
- import '../material/unlit.js';
5
- import '../material/particle.js';
6
- import '@zephyr3d/device';
7
- import '../values.js';
8
- import '@zephyr3d/base';
9
- import '../material/meshmaterial.js';
10
- import '../material/grassmaterial.js';
11
- import '../material/terrainmaterial.js';
12
- import '../material/terrain-cm.js';
13
- import '../material/pbrmr.js';
14
- import '../material/pbrsg.js';
15
-
16
- function computeShadowBiasCSM(scope, NdotL, split) {
17
- const pb = scope.$builder;
18
- const depthBiasParam = ShaderHelper.getDepthBiasValues(scope);
19
- const splitFlags = pb.vec4(pb.float(pb.equal(split, 0)), pb.float(pb.equal(split, 1)), pb.float(pb.equal(split, 2)), pb.float(pb.equal(split, 3)));
20
- const depthBiasScale = pb.dot(ShaderHelper.getDepthBiasScales(scope), splitFlags);
21
- return pb.dot(pb.mul(depthBiasParam.xy, pb.vec2(1, pb.sub(1, NdotL)), depthBiasScale), pb.vec2(1, 1));
22
- }
23
- function computeShadowBias(lightType, scope, z, NdotL, linear) {
24
- const pb = scope.$builder;
25
- const depthBiasParam = ShaderHelper.getDepthBiasValues(scope);
26
- if (lightType) {
27
- return pb.dot(pb.mul(depthBiasParam.xy, pb.vec2(1, pb.sub(1, NdotL))), pb.vec2(1, 1));
28
- } else {
29
- const nearFar = ShaderHelper.getShadowCameraParams(scope).xy;
30
- const linearDepth = linear ? z : ShaderHelper.nonLinearDepthToLinearNormalized(scope, z, nearFar);
31
- const biasScaleFactor = pb.mix(1, depthBiasParam.w, linearDepth);
32
- return pb.dot(pb.mul(depthBiasParam.xy, pb.vec2(1, pb.sub(1, NdotL)), biasScaleFactor), pb.vec2(1, 1));
33
- }
34
- }
35
-
36
- export { computeShadowBias, computeShadowBiasCSM };
37
- //# sourceMappingURL=shader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shader.js","sources":["../../../src/shadow/shader.ts"],"sourcesContent":["import type { PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\nimport { ShaderHelper } from '../material';\r\n\r\nexport function computeShadowBiasCSM(\r\n scope: PBInsideFunctionScope,\r\n NdotL: PBShaderExp,\r\n split: PBShaderExp\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const depthBiasParam = ShaderHelper.getDepthBiasValues(scope);\r\n const splitFlags = pb.vec4(\r\n pb.float(pb.equal(split, 0)),\r\n pb.float(pb.equal(split, 1)),\r\n pb.float(pb.equal(split, 2)),\r\n pb.float(pb.equal(split, 3))\r\n );\r\n const depthBiasScale = pb.dot(ShaderHelper.getDepthBiasScales(scope), splitFlags);\r\n return pb.dot(pb.mul(depthBiasParam.xy, pb.vec2(1, pb.sub(1, NdotL)), depthBiasScale), pb.vec2(1, 1));\r\n}\r\n\r\nexport function computeShadowBias(\r\n lightType: number,\r\n scope: PBInsideFunctionScope,\r\n z: PBShaderExp,\r\n NdotL: PBShaderExp,\r\n linear: boolean\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const depthBiasParam = ShaderHelper.getDepthBiasValues(scope);\r\n if (lightType) {\r\n return pb.dot(pb.mul(depthBiasParam.xy, pb.vec2(1, pb.sub(1, NdotL))), pb.vec2(1, 1));\r\n } else {\r\n const nearFar = ShaderHelper.getShadowCameraParams(scope).xy;\r\n const linearDepth = linear ? z : ShaderHelper.nonLinearDepthToLinearNormalized(scope, z, nearFar);\r\n const biasScaleFactor = pb.mix(1, depthBiasParam.w, linearDepth);\r\n return pb.dot(pb.mul(depthBiasParam.xy, pb.vec2(1, pb.sub(1, NdotL)), biasScaleFactor), pb.vec2(1, 1));\r\n }\r\n}\r\n"],"names":["computeShadowBiasCSM","scope","NdotL","split","pb","$builder","depthBiasParam","ShaderHelper","getDepthBiasValues","splitFlags","vec4","float","equal","depthBiasScale","dot","getDepthBiasScales","mul","xy","vec2","sub","computeShadowBias","lightType","z","linear","nearFar","getShadowCameraParams","linearDepth","nonLinearDepthToLinearNormalized","biasScaleFactor","mix","w"],"mappings":";;;;;;;;;;;;;;;AAGO,SAASA,oBACdC,CAAAA,KAA4B,EAC5BC,KAAkB,EAClBC,KAAkB,EAAA;IAElB,MAAMC,EAAAA,GAAKH,MAAMI,QAAQ;IACzB,MAAMC,cAAAA,GAAiBC,YAAaC,CAAAA,kBAAkB,CAACP,KAAAA,CAAAA;AACvD,IAAA,MAAMQ,UAAaL,GAAAA,EAAAA,CAAGM,IAAI,CACxBN,GAAGO,KAAK,CAACP,EAAGQ,CAAAA,KAAK,CAACT,KAAO,EAAA,CAAA,CAAA,CAAA,EACzBC,EAAGO,CAAAA,KAAK,CAACP,EAAGQ,CAAAA,KAAK,CAACT,KAAAA,EAAO,CACzBC,CAAAA,CAAAA,EAAAA,EAAAA,CAAGO,KAAK,CAACP,GAAGQ,KAAK,CAACT,KAAO,EAAA,CAAA,CAAA,CAAA,EACzBC,GAAGO,KAAK,CAACP,EAAGQ,CAAAA,KAAK,CAACT,KAAO,EAAA,CAAA,CAAA,CAAA,CAAA;AAE3B,IAAA,MAAMU,iBAAiBT,EAAGU,CAAAA,GAAG,CAACP,YAAaQ,CAAAA,kBAAkB,CAACd,KAAQQ,CAAAA,EAAAA,UAAAA,CAAAA;IACtE,OAAOL,EAAAA,CAAGU,GAAG,CAACV,EAAAA,CAAGY,GAAG,CAACV,cAAAA,CAAeW,EAAE,EAAEb,EAAGc,CAAAA,IAAI,CAAC,CAAGd,EAAAA,EAAAA,CAAGe,GAAG,CAAC,CAAA,EAAGjB,SAASW,cAAiBT,CAAAA,EAAAA,EAAAA,CAAGc,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;AACpG;AAEO,SAASE,iBACdC,CAAAA,SAAiB,EACjBpB,KAA4B,EAC5BqB,CAAc,EACdpB,KAAkB,EAClBqB,MAAe,EAAA;IAEf,MAAMnB,EAAAA,GAAKH,MAAMI,QAAQ;IACzB,MAAMC,cAAAA,GAAiBC,YAAaC,CAAAA,kBAAkB,CAACP,KAAAA,CAAAA;AACvD,IAAA,IAAIoB,SAAW,EAAA;QACb,OAAOjB,EAAAA,CAAGU,GAAG,CAACV,EAAAA,CAAGY,GAAG,CAACV,cAAAA,CAAeW,EAAE,EAAEb,EAAAA,CAAGc,IAAI,CAAC,CAAA,EAAGd,GAAGe,GAAG,CAAC,GAAGjB,KAAUE,CAAAA,CAAAA,CAAAA,EAAAA,EAAAA,CAAGc,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;KAC7E,MAAA;AACL,QAAA,MAAMM,OAAUjB,GAAAA,YAAAA,CAAakB,qBAAqB,CAACxB,OAAOgB,EAAE;AAC5D,QAAA,MAAMS,cAAcH,MAASD,GAAAA,CAAAA,GAAIf,aAAaoB,gCAAgC,CAAC1B,OAAOqB,CAAGE,EAAAA,OAAAA,CAAAA;AACzF,QAAA,MAAMI,kBAAkBxB,EAAGyB,CAAAA,GAAG,CAAC,CAAGvB,EAAAA,cAAAA,CAAewB,CAAC,EAAEJ,WAAAA,CAAAA;QACpD,OAAOtB,EAAAA,CAAGU,GAAG,CAACV,EAAAA,CAAGY,GAAG,CAACV,cAAAA,CAAeW,EAAE,EAAEb,EAAGc,CAAAA,IAAI,CAAC,CAAGd,EAAAA,EAAAA,CAAGe,GAAG,CAAC,CAAA,EAAGjB,SAAS0B,eAAkBxB,CAAAA,EAAAA,EAAAA,CAAGc,IAAI,CAAC,CAAG,EAAA,CAAA,CAAA,CAAA;AACrG;AACF;;;;"}
@@ -1,15 +0,0 @@
1
- /** @internal */ class ShadowImpl {
2
- _resourceDirty;
3
- constructor(){
4
- this._resourceDirty = true;
5
- }
6
- invalidateResource() {
7
- this._resourceDirty = true;
8
- }
9
- updateResources(shadowMapParams) {
10
- this.doUpdateResources(shadowMapParams);
11
- }
12
- }
13
-
14
- export { ShadowImpl };
15
- //# sourceMappingURL=shadow_impl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shadow_impl.js","sources":["../../../src/shadow/shadow_impl.ts"],"sourcesContent":["import type { PBInsideFunctionScope, PBShaderExp, TextureFormat } from '@zephyr3d/device';\r\nimport type { ShadowMapParams, ShadowMapType, ShadowMode } from './shadowmapper';\r\n\r\n/** @internal */\r\nexport abstract class ShadowImpl {\r\n protected _resourceDirty: boolean;\r\n constructor() {\r\n this._resourceDirty = true;\r\n }\r\n invalidateResource() {\r\n this._resourceDirty = true;\r\n }\r\n updateResources(shadowMapParams: ShadowMapParams) {\r\n this.doUpdateResources(shadowMapParams);\r\n }\r\n abstract getType(): ShadowMode;\r\n abstract getShadowMapBorder(shadowMapParams: ShadowMapParams): number;\r\n abstract getShadowMap(shadowMapParams: ShadowMapParams): ShadowMapType;\r\n abstract postRenderShadowMap(shadowMapParams: ShadowMapParams);\r\n abstract getDepthScale(): number;\r\n abstract setDepthScale(val: number);\r\n abstract resourceDirty(): boolean;\r\n abstract doUpdateResources(shadowMapParams: ShadowMapParams);\r\n abstract getShaderHash(): string;\r\n abstract computeShadowMapDepth(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n worldPos: PBShaderExp\r\n ): PBShaderExp;\r\n abstract computeShadow(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp\r\n ): PBShaderExp;\r\n abstract computeShadowCSM(\r\n shadowMapParams: ShadowMapParams,\r\n scope: PBInsideFunctionScope,\r\n shadowVertex: PBShaderExp,\r\n NdotL: PBShaderExp,\r\n split: PBShaderExp\r\n ): PBShaderExp;\r\n abstract getShadowMapColorFormat(shadowMapParams: ShadowMapParams): TextureFormat;\r\n abstract getShadowMapDepthFormat(shadowMapParams: ShadowMapParams): TextureFormat;\r\n abstract useNativeShadowMap(shadowMapParams: ShadowMapParams): boolean;\r\n}\r\n"],"names":["ShadowImpl","_resourceDirty","invalidateResource","updateResources","shadowMapParams","doUpdateResources"],"mappings":"AAGA,iBACO,MAAeA,UAAAA,CAAAA;IACVC,cAAwB;IAClC,WAAc,EAAA;QACZ,IAAI,CAACA,cAAc,GAAG,IAAA;AACxB;IACAC,kBAAqB,GAAA;QACnB,IAAI,CAACD,cAAc,GAAG,IAAA;AACxB;AACAE,IAAAA,eAAAA,CAAgBC,eAAgC,EAAE;QAChD,IAAI,CAACC,iBAAiB,CAACD,eAAAA,CAAAA;AACzB;AA+BF;;;;"}