@zephyr3d/scene 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. package/dist/animation/animation.js +4 -33
  2. package/dist/animation/animation.js.map +1 -1
  3. package/dist/animation/animationset.js +24 -11
  4. package/dist/animation/animationset.js.map +1 -1
  5. package/dist/animation/animationtrack.js +1 -0
  6. package/dist/animation/animationtrack.js.map +1 -1
  7. package/dist/animation/eulerrotationtrack.js +0 -1
  8. package/dist/animation/eulerrotationtrack.js.map +1 -1
  9. package/dist/animation/ik/ccd_solver.js +372 -0
  10. package/dist/animation/ik/ccd_solver.js.map +1 -0
  11. package/dist/animation/ik/fabrik_solver.js +399 -0
  12. package/dist/animation/ik/fabrik_solver.js.map +1 -0
  13. package/dist/animation/ik/ik_angle_constraint.js +181 -0
  14. package/dist/animation/ik/ik_angle_constraint.js.map +1 -0
  15. package/dist/animation/ik/ik_chain.js +163 -0
  16. package/dist/animation/ik/ik_chain.js.map +1 -0
  17. package/dist/animation/ik/ik_chain_builder.js +68 -0
  18. package/dist/animation/ik/ik_chain_builder.js.map +1 -0
  19. package/dist/animation/ik/ik_constraint.js +25 -0
  20. package/dist/animation/ik/ik_constraint.js.map +1 -0
  21. package/dist/animation/ik/ik_pole_constraint.js +123 -0
  22. package/dist/animation/ik/ik_pole_constraint.js.map +1 -0
  23. package/dist/animation/ik/ik_solver.js +48 -0
  24. package/dist/animation/ik/ik_solver.js.map +1 -0
  25. package/dist/animation/ik/ik_track.js +96 -0
  26. package/dist/animation/ik/ik_track.js.map +1 -0
  27. package/dist/animation/ik/ik_utils.js +270 -0
  28. package/dist/animation/ik/ik_utils.js.map +1 -0
  29. package/dist/animation/ik/two_bone_ik_solver.js +332 -0
  30. package/dist/animation/ik/two_bone_ik_solver.js.map +1 -0
  31. package/dist/animation/ik_modifier.js +61 -0
  32. package/dist/animation/ik_modifier.js.map +1 -0
  33. package/dist/animation/ik_postprocessor.js +71 -0
  34. package/dist/animation/ik_postprocessor.js.map +1 -0
  35. package/dist/animation/manual_transform_processor.js +156 -0
  36. package/dist/animation/manual_transform_processor.js.map +1 -0
  37. package/dist/animation/morphtarget.js +7 -1
  38. package/dist/animation/morphtarget.js.map +1 -1
  39. package/dist/animation/morphtrack.js +3 -3
  40. package/dist/animation/morphtrack.js.map +1 -1
  41. package/dist/animation/proptrack.js +37 -41
  42. package/dist/animation/proptrack.js.map +1 -1
  43. package/dist/animation/rotationtrack.js +0 -1
  44. package/dist/animation/rotationtrack.js.map +1 -1
  45. package/dist/animation/scaletrack.js +0 -1
  46. package/dist/animation/scaletrack.js.map +1 -1
  47. package/dist/animation/skeleton.js +57 -60
  48. package/dist/animation/skeleton.js.map +1 -1
  49. package/dist/animation/skeleton_modifier.js +38 -0
  50. package/dist/animation/skeleton_modifier.js.map +1 -0
  51. package/dist/animation/skeleton_postprocessor.js +50 -0
  52. package/dist/animation/skeleton_postprocessor.js.map +1 -0
  53. package/dist/animation/spring/multi_chain_spring_system.js +503 -0
  54. package/dist/animation/spring/multi_chain_spring_system.js.map +1 -0
  55. package/dist/animation/spring/spring_chain.js +103 -0
  56. package/dist/animation/spring/spring_chain.js.map +1 -0
  57. package/dist/animation/spring/spring_collider.js +247 -0
  58. package/dist/animation/spring/spring_collider.js.map +1 -0
  59. package/dist/animation/spring/spring_constraint.js +21 -0
  60. package/dist/animation/spring/spring_constraint.js.map +1 -0
  61. package/dist/animation/spring/spring_particle.js +20 -0
  62. package/dist/animation/spring/spring_particle.js.map +1 -0
  63. package/dist/animation/spring/spring_system.js +526 -0
  64. package/dist/animation/spring/spring_system.js.map +1 -0
  65. package/dist/animation/spring_modifier.js +45 -0
  66. package/dist/animation/spring_modifier.js.map +1 -0
  67. package/dist/animation/spring_postprocessor.js +54 -0
  68. package/dist/animation/spring_postprocessor.js.map +1 -0
  69. package/dist/animation/translationtrack.js +0 -1
  70. package/dist/animation/translationtrack.js.map +1 -1
  71. package/dist/app/api.js +13 -4
  72. package/dist/app/api.js.map +1 -1
  73. package/dist/app/app.js +13 -1
  74. package/dist/app/app.js.map +1 -1
  75. package/dist/app/engine.js +33 -45
  76. package/dist/app/engine.js.map +1 -1
  77. package/dist/app/inputmgr.js.map +1 -1
  78. package/dist/app/runtimescript.js.map +1 -1
  79. package/dist/app/screen.js +318 -0
  80. package/dist/app/screen.js.map +1 -0
  81. package/dist/app/scriptingsystem.js +10 -6
  82. package/dist/app/scriptingsystem.js.map +1 -1
  83. package/dist/app/scriptregistry.js +11 -22
  84. package/dist/app/scriptregistry.js.map +1 -1
  85. package/dist/asset/assetmanager.js +79 -58
  86. package/dist/asset/assetmanager.js.map +1 -1
  87. package/dist/asset/builtin.js +5 -5
  88. package/dist/asset/builtin.js.map +1 -1
  89. package/dist/asset/loaders/dds/dds.js +6 -2
  90. package/dist/asset/loaders/dds/dds.js.map +1 -1
  91. package/dist/asset/loaders/dds/dds_loader.js +1 -1
  92. package/dist/asset/loaders/dds/dds_loader.js.map +1 -1
  93. package/dist/asset/loaders/gltf/gltf_loader.js +14 -6
  94. package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
  95. package/dist/asset/loaders/gltf/helpers.js +6 -2
  96. package/dist/asset/loaders/gltf/helpers.js.map +1 -1
  97. package/dist/asset/loaders/hdr/hdr.js +22 -15
  98. package/dist/asset/loaders/hdr/hdr.js.map +1 -1
  99. package/dist/asset/loaders/image/tga_Loader.js +2 -1
  100. package/dist/asset/loaders/image/tga_Loader.js.map +1 -1
  101. package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
  102. package/dist/asset/loaders/loader.js +2 -2
  103. package/dist/asset/loaders/loader.js.map +1 -1
  104. package/dist/asset/model.js +9 -5
  105. package/dist/asset/model.js.map +1 -1
  106. package/dist/blitter/bilateralblur.js.map +1 -1
  107. package/dist/blitter/blitter.js +9 -11
  108. package/dist/blitter/blitter.js.map +1 -1
  109. package/dist/blitter/box.js +0 -1
  110. package/dist/blitter/box.js.map +1 -1
  111. package/dist/blitter/copy.js.map +1 -1
  112. package/dist/blitter/gaussianblur.js.map +1 -1
  113. package/dist/camera/base.js +1 -3
  114. package/dist/camera/base.js.map +1 -1
  115. package/dist/camera/camera.js +121 -37
  116. package/dist/camera/camera.js.map +1 -1
  117. package/dist/camera/fps.js +19 -17
  118. package/dist/camera/fps.js.map +1 -1
  119. package/dist/camera/orbit.js +45 -43
  120. package/dist/camera/orbit.js.map +1 -1
  121. package/dist/camera/orthocamera.js +27 -21
  122. package/dist/camera/orthocamera.js.map +1 -1
  123. package/dist/camera/perspectivecamera.js +28 -19
  124. package/dist/camera/perspectivecamera.js.map +1 -1
  125. package/dist/index.d.ts +15802 -15577
  126. package/dist/index.js +33 -11
  127. package/dist/index.js.map +1 -1
  128. package/dist/material/blinn.js.map +1 -1
  129. package/dist/material/grassmaterial.js.map +1 -1
  130. package/dist/material/lambert.js.map +1 -1
  131. package/dist/material/material.js +11 -5
  132. package/dist/material/material.js.map +1 -1
  133. package/dist/material/meshmaterial.js +10 -9
  134. package/dist/material/meshmaterial.js.map +1 -1
  135. package/dist/material/mixins/albedocolor.js.map +1 -1
  136. package/dist/material/mixins/foliage.js.map +1 -1
  137. package/dist/material/mixins/lightmodel/blinnphong.js +66 -4
  138. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  139. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  140. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +7 -0
  141. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  142. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  143. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  144. package/dist/material/mixins/lit.js +3 -3
  145. package/dist/material/mixins/lit.js.map +1 -1
  146. package/dist/material/mixins/pbr/brdf.js.map +1 -1
  147. package/dist/material/mixins/pbr/common.js.map +1 -1
  148. package/dist/material/mixins/texture.js +3 -0
  149. package/dist/material/mixins/texture.js.map +1 -1
  150. package/dist/material/mixins/vertexcolor.js.map +1 -1
  151. package/dist/material/particle.js.map +1 -1
  152. package/dist/material/pbrblueprint.js +180 -22
  153. package/dist/material/pbrblueprint.js.map +1 -1
  154. package/dist/material/pbrmr.js.map +1 -1
  155. package/dist/material/pbrsg.js.map +1 -1
  156. package/dist/material/shader/helper.js +41 -56
  157. package/dist/material/shader/helper.js.map +1 -1
  158. package/dist/material/sprite.js +301 -0
  159. package/dist/material/sprite.js.map +1 -0
  160. package/dist/material/sprite3d.js +301 -0
  161. package/dist/material/sprite3d.js.map +1 -0
  162. package/dist/material/sprite3d_std.js +116 -0
  163. package/dist/material/sprite3d_std.js.map +1 -0
  164. package/dist/material/sprite3dblueprint.js +235 -0
  165. package/dist/material/sprite3dblueprint.js.map +1 -0
  166. package/dist/material/sprite_std.js +116 -0
  167. package/dist/material/sprite_std.js.map +1 -0
  168. package/dist/material/spriteblueprint.js +235 -0
  169. package/dist/material/spriteblueprint.js.map +1 -0
  170. package/dist/material/terrain-cm.js +0 -1
  171. package/dist/material/terrain-cm.js.map +1 -1
  172. package/dist/material/unlit.js.map +1 -1
  173. package/dist/material/water.js.map +1 -1
  174. package/dist/posteffect/bloom.js.map +1 -1
  175. package/dist/posteffect/compositor.js.map +1 -1
  176. package/dist/posteffect/fxaa.js.map +1 -1
  177. package/dist/posteffect/grayscale.js.map +1 -1
  178. package/dist/posteffect/motionblur.js.map +1 -1
  179. package/dist/posteffect/posteffect.js.map +1 -1
  180. package/dist/posteffect/sao.js.map +1 -1
  181. package/dist/posteffect/ssr.js +7 -5
  182. package/dist/posteffect/ssr.js.map +1 -1
  183. package/dist/posteffect/taa.js.map +1 -1
  184. package/dist/posteffect/tonemap.js.map +1 -1
  185. package/dist/render/abuffer_oit.js +8 -6
  186. package/dist/render/abuffer_oit.js.map +1 -1
  187. package/dist/render/clipmap.js +0 -10
  188. package/dist/render/clipmap.js.map +1 -1
  189. package/dist/render/cluster_light.js +4 -4
  190. package/dist/render/cluster_light.js.map +1 -1
  191. package/dist/render/cull_visitor.js +15 -17
  192. package/dist/render/cull_visitor.js.map +1 -1
  193. package/dist/render/depthpass.js +3 -4
  194. package/dist/render/depthpass.js.map +1 -1
  195. package/dist/render/drawable.js +15 -0
  196. package/dist/render/drawable.js.map +1 -0
  197. package/dist/render/drawable_mixin.js +8 -4
  198. package/dist/render/drawable_mixin.js.map +1 -1
  199. package/dist/render/envlight.js.map +1 -1
  200. package/dist/render/fbm_wavegenerator.js +3 -1
  201. package/dist/render/fbm_wavegenerator.js.map +1 -1
  202. package/dist/render/fft_wavegenerator.js +67 -64
  203. package/dist/render/fft_wavegenerator.js.map +1 -1
  204. package/dist/render/fullscreenquad.js.map +1 -1
  205. package/dist/render/gerstner_wavegenerator.js +3 -1
  206. package/dist/render/gerstner_wavegenerator.js.map +1 -1
  207. package/dist/render/globalbindgroup_allocator.js +3 -1
  208. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  209. package/dist/render/hzb.js +1 -2
  210. package/dist/render/hzb.js.map +1 -1
  211. package/dist/render/lightpass.js +13 -13
  212. package/dist/render/lightpass.js.map +1 -1
  213. package/dist/render/objectcolorpass.js +4 -7
  214. package/dist/render/objectcolorpass.js.map +1 -1
  215. package/dist/render/primitive.js +4 -5
  216. package/dist/render/primitive.js.map +1 -1
  217. package/dist/render/render_queue.js +10 -5
  218. package/dist/render/render_queue.js.map +1 -1
  219. package/dist/render/renderer.js +16 -22
  220. package/dist/render/renderer.js.map +1 -1
  221. package/dist/render/renderpass.js +27 -52
  222. package/dist/render/renderpass.js.map +1 -1
  223. package/dist/render/rendertarget.js +5 -0
  224. package/dist/render/rendertarget.js.map +1 -0
  225. package/dist/render/screenrendertarget.js +56 -0
  226. package/dist/render/screenrendertarget.js.map +1 -0
  227. package/dist/render/shadowmap_pass.js +4 -5
  228. package/dist/render/shadowmap_pass.js.map +1 -1
  229. package/dist/render/sky.js +16 -14
  230. package/dist/render/sky.js.map +1 -1
  231. package/dist/render/weightedblended_oit.js.map +1 -1
  232. package/dist/scene/basesprite.js +296 -0
  233. package/dist/scene/basesprite.js.map +1 -0
  234. package/dist/scene/batchgroup.js +4 -2
  235. package/dist/scene/batchgroup.js.map +1 -1
  236. package/dist/scene/environment.js +9 -10
  237. package/dist/scene/environment.js.map +1 -1
  238. package/dist/scene/graph_node.js.map +1 -1
  239. package/dist/scene/light.js +22 -4
  240. package/dist/scene/light.js.map +1 -1
  241. package/dist/scene/mesh.js +96 -26
  242. package/dist/scene/mesh.js.map +1 -1
  243. package/dist/scene/octree.js.map +1 -1
  244. package/dist/scene/particlesys.js +25 -22
  245. package/dist/scene/particlesys.js.map +1 -1
  246. package/dist/scene/raycast_visitor.js +0 -16
  247. package/dist/scene/raycast_visitor.js.map +1 -1
  248. package/dist/scene/scene.js +7 -4
  249. package/dist/scene/scene.js.map +1 -1
  250. package/dist/scene/scene_node.js +20 -35
  251. package/dist/scene/scene_node.js.map +1 -1
  252. package/dist/scene/sprite.js +18 -0
  253. package/dist/scene/sprite.js.map +1 -0
  254. package/dist/scene/sprite3d.js +18 -0
  255. package/dist/scene/sprite3d.js.map +1 -0
  256. package/dist/scene/terrain-cm/grass.js +5 -4
  257. package/dist/scene/terrain-cm/grass.js.map +1 -1
  258. package/dist/scene/terrain-cm/grassmaterial.js +3 -1
  259. package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
  260. package/dist/scene/terrain-cm/terrain-cm.js +65 -48
  261. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  262. package/dist/scene/water.js +35 -30
  263. package/dist/scene/water.js.map +1 -1
  264. package/dist/shaders/atmosphere.js +17 -29
  265. package/dist/shaders/atmosphere.js.map +1 -1
  266. package/dist/shaders/fog.js.map +1 -1
  267. package/dist/shaders/misc.js.map +1 -1
  268. package/dist/shaders/noise.js.map +1 -1
  269. package/dist/shaders/pbr.js.map +1 -1
  270. package/dist/shaders/shadow.js.map +1 -1
  271. package/dist/shaders/ssr.js.map +1 -1
  272. package/dist/shaders/temporal.js.map +1 -1
  273. package/dist/shaders/water.js.map +1 -1
  274. package/dist/shadow/esm.js +1 -1
  275. package/dist/shadow/esm.js.map +1 -1
  276. package/dist/shadow/pcf_opt.js.map +1 -1
  277. package/dist/shadow/pcf_pd.js.map +1 -1
  278. package/dist/shadow/shader.js +3 -1
  279. package/dist/shadow/shader.js.map +1 -1
  280. package/dist/shadow/shadow_impl.js.map +1 -1
  281. package/dist/shadow/shadowmapper.js +6 -18
  282. package/dist/shadow/shadowmapper.js.map +1 -1
  283. package/dist/shadow/ssm.js.map +1 -1
  284. package/dist/shadow/vsm.js.map +1 -1
  285. package/dist/shapes/box.js +9 -3
  286. package/dist/shapes/box.js.map +1 -1
  287. package/dist/shapes/cylinder.js +2 -2
  288. package/dist/shapes/cylinder.js.map +1 -1
  289. package/dist/shapes/plane.js +2 -2
  290. package/dist/shapes/plane.js.map +1 -1
  291. package/dist/shapes/shape.js +2 -1
  292. package/dist/shapes/shape.js.map +1 -1
  293. package/dist/shapes/sphere.js +2 -2
  294. package/dist/shapes/sphere.js.map +1 -1
  295. package/dist/shapes/tetrahedron.js +5 -6
  296. package/dist/shapes/tetrahedron.js.map +1 -1
  297. package/dist/shapes/torus.js +2 -2
  298. package/dist/shapes/torus.js.map +1 -1
  299. package/dist/utility/aabbtree.js +1 -1
  300. package/dist/utility/aabbtree.js.map +1 -1
  301. package/dist/utility/blueprint/common/constants.js +578 -104
  302. package/dist/utility/blueprint/common/constants.js.map +1 -1
  303. package/dist/utility/blueprint/common/math.js +471 -9
  304. package/dist/utility/blueprint/common/math.js.map +1 -1
  305. package/dist/utility/blueprint/common.js +1 -1
  306. package/dist/utility/blueprint/common.js.map +1 -1
  307. package/dist/utility/blueprint/material/func.js +9 -5
  308. package/dist/utility/blueprint/material/func.js.map +1 -1
  309. package/dist/utility/blueprint/material/inputs.js.map +1 -1
  310. package/dist/utility/blueprint/material/ir.js +288 -80
  311. package/dist/utility/blueprint/material/ir.js.map +1 -1
  312. package/dist/utility/blueprint/material/pbr.js +92 -4
  313. package/dist/utility/blueprint/material/pbr.js.map +1 -1
  314. package/dist/utility/blueprint/material/texture.js +62 -45
  315. package/dist/utility/blueprint/material/texture.js.map +1 -1
  316. package/dist/utility/blueprint/node.js +28 -1
  317. package/dist/utility/blueprint/node.js.map +1 -1
  318. package/dist/utility/bounding_volume.js.map +1 -1
  319. package/dist/utility/debug.js.map +1 -1
  320. package/dist/utility/draco/decoder.js.map +1 -1
  321. package/dist/utility/misc.js +1 -1
  322. package/dist/utility/misc.js.map +1 -1
  323. package/dist/utility/panorama.js.map +1 -1
  324. package/dist/utility/pmrem.js.map +1 -1
  325. package/dist/utility/rendermipmap.js.map +1 -1
  326. package/dist/utility/serialization/json.js +19 -15
  327. package/dist/utility/serialization/json.js.map +1 -1
  328. package/dist/utility/serialization/manager.js +89 -22
  329. package/dist/utility/serialization/manager.js.map +1 -1
  330. package/dist/utility/serialization/scene/animation.js +44 -41
  331. package/dist/utility/serialization/scene/animation.js.map +1 -1
  332. package/dist/utility/serialization/scene/batch.js +4 -3
  333. package/dist/utility/serialization/scene/batch.js.map +1 -1
  334. package/dist/utility/serialization/scene/camera.js +97 -9
  335. package/dist/utility/serialization/scene/camera.js.map +1 -1
  336. package/dist/utility/serialization/scene/common.js +102 -28
  337. package/dist/utility/serialization/scene/common.js.map +1 -1
  338. package/dist/utility/serialization/scene/light.js +14 -12
  339. package/dist/utility/serialization/scene/light.js.map +1 -1
  340. package/dist/utility/serialization/scene/material.js +216 -26
  341. package/dist/utility/serialization/scene/material.js.map +1 -1
  342. package/dist/utility/serialization/scene/mesh.js +71 -100
  343. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  344. package/dist/utility/serialization/scene/misc.js +3 -2
  345. package/dist/utility/serialization/scene/misc.js.map +1 -1
  346. package/dist/utility/serialization/scene/node.js +42 -9
  347. package/dist/utility/serialization/scene/node.js.map +1 -1
  348. package/dist/utility/serialization/scene/particle.js +7 -5
  349. package/dist/utility/serialization/scene/particle.js.map +1 -1
  350. package/dist/utility/serialization/scene/primitive.js +18 -15
  351. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  352. package/dist/utility/serialization/scene/scene.js +3 -2
  353. package/dist/utility/serialization/scene/scene.js.map +1 -1
  354. package/dist/utility/serialization/scene/sprite.js +164 -0
  355. package/dist/utility/serialization/scene/sprite.js.map +1 -0
  356. package/dist/utility/serialization/scene/terrain.js +8 -6
  357. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  358. package/dist/utility/serialization/scene/water.js +11 -9
  359. package/dist/utility/serialization/scene/water.js.map +1 -1
  360. package/dist/utility/serialization/types.js +6 -0
  361. package/dist/utility/serialization/types.js.map +1 -0
  362. package/dist/utility/shprojector.js.map +1 -1
  363. package/dist/utility/textures/ggxlut.js.map +1 -1
  364. package/dist/utility/textures/gradientnoise.js.map +1 -1
  365. package/dist/utility/textures/randomnoise.js.map +1 -1
  366. package/dist/values.js +14 -14
  367. package/dist/values.js.map +1 -1
  368. package/package.json +80 -80
@@ -1 +1 @@
1
- {"version":3,"file":"fog.js","sources":["../../src/shaders/fog.ts"],"sourcesContent":["import { Vector3, Vector4 } from '@zephyr3d/base';\r\nimport type { PBInsideFunctionScope, PBShaderExp, ProgramBuilder } from '@zephyr3d/device';\r\nimport { aerialPerspective, getAtmosphereParamsStruct } from './atmosphere';\r\nimport { Fog } from '../values';\r\n\r\n/** @internal */\r\nexport const MAX_FOG_HEIGHT = 100;\r\n\r\n/** @internal */\r\nexport type HeightFogParams = {\r\n parameter1: Vector4; // [rgb=fogColor a=heightFalloff]\r\n parameter2: Vector4; // [r=density g=startHeight b=startDistance a=maxHeight]\r\n parameter3: Vector4; // [r=maxOpacity g=atmosphereStrength b=rayOriginTerm a=dirInscatteringExponent]\r\n parameter4: Vector4; // [rgb=directionalInscatteringColor a=UNUSED]\r\n lightDir: Vector3;\r\n lightColor: Vector3;\r\n};\r\n\r\n/** @internal */\r\nexport function getDefaultHeightFogParams(): HeightFogParams {\r\n return {\r\n parameter1: new Vector4(0, 0, 0, 0.1),\r\n parameter2: new Vector4(0.01, 0, 0, 10000),\r\n parameter3: new Vector4(0.8, 1, 0, 4),\r\n parameter4: new Vector4(0, 0, 0, 0),\r\n lightDir: new Vector3(0, 1, 0),\r\n lightColor: new Vector3(0, 0, 0)\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport function getHeightFogParamsStruct(pb: ProgramBuilder) {\r\n return pb.defineStruct([\r\n pb.vec4('parameter1'),\r\n pb.vec4('parameter2'),\r\n pb.vec4('parameter3'),\r\n pb.vec4('parameter4'),\r\n pb.float('dirInscatteringStartDistance'),\r\n pb.vec3('dirInscatteringColor'),\r\n pb.vec3('lightDir'),\r\n pb.vec3('lightColor')\r\n ]);\r\n}\r\n\r\nexport function calculateFog(\r\n scope: PBInsideFunctionScope,\r\n aerialperspective: PBShaderExp,\r\n fogType: PBShaderExp,\r\n atmosphereParams: PBShaderExp,\r\n heightFogParams: PBShaderExp,\r\n uv: PBShaderExp,\r\n isSky: PBShaderExp | boolean,\r\n cameraPos: PBShaderExp,\r\n worldPos: PBShaderExp,\r\n additive: PBShaderExp | number,\r\n apLut: PBShaderExp,\r\n distantLightLut: PBShaderExp\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_calculateFog';\r\n const AtmosphereParams = getAtmosphereParamsStruct(pb);\r\n const HeightFogParams = getHeightFogParamsStruct(pb);\r\n pb.func(\r\n funcName,\r\n [\r\n pb.int('withAerialPerspective'),\r\n pb.int('fogType'),\r\n AtmosphereParams('atmosphereParams'),\r\n HeightFogParams('heightFogParams'),\r\n pb.bool('isSky'),\r\n pb.vec2('uv'),\r\n pb.vec3('cameraPos'),\r\n pb.vec3('worldPos'),\r\n pb.int('additive')\r\n ],\r\n function () {\r\n this.$l.fogging = pb.vec4(0, 0, 0, 1);\r\n this.$if(pb.equal(this.fogType, Fog.FOG_TYPE_HEIGHT), function () {\r\n this.fogging = calculateHeightFog(\r\n this,\r\n this.heightFogParams,\r\n this.cameraPos,\r\n this.worldPos,\r\n this.isSky,\r\n distantLightLut\r\n );\r\n });\r\n this.$if(pb.and(pb.notEqual(this.withAerialPerspective, 0), pb.not(this.isSky)), function () {\r\n this.$l.atmosphericFogging = aerialPerspective(\r\n this,\r\n this.uv,\r\n this.atmosphereParams,\r\n this.cameraPos,\r\n this.worldPos,\r\n pb.vec3(32),\r\n apLut\r\n );\r\n this.$if(pb.notEqual(this.fogType, Fog.FOG_TYPE_NONE), function () {\r\n this.fogging = combineAerialPerspectiveFog(this, this.fogging, this.atmosphericFogging);\r\n }).$else(function () {\r\n this.fogging = this.atmosphericFogging;\r\n });\r\n });\r\n this.$if(pb.notEqual(this.additive, 0), function () {\r\n this.fogging = pb.vec4(pb.vec3(0), this.fogging.a);\r\n });\r\n this.$return(this.fogging);\r\n }\r\n );\r\n return scope[funcName](\r\n aerialperspective,\r\n fogType,\r\n atmosphereParams,\r\n heightFogParams,\r\n isSky,\r\n uv,\r\n cameraPos,\r\n worldPos,\r\n additive\r\n );\r\n}\r\n\r\nexport function combineAerialPerspectiveFog(\r\n scope: PBInsideFunctionScope,\r\n fogging: PBShaderExp,\r\n aerialPerspectiveFog: PBShaderExp\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_combineAerialPerspectiveFog';\r\n pb.func(funcName, [pb.vec4('fogging'), pb.vec4('aerialPerspectiveFog')], function () {\r\n this.$l.rgb = pb.add(this.fogging.rgb, pb.mul(this.aerialPerspectiveFog.rgb, this.fogging.a));\r\n this.$l.a = pb.mul(this.fogging.a, this.aerialPerspectiveFog.a);\r\n this.$return(pb.vec4(this.rgb, this.a));\r\n });\r\n return scope[funcName](fogging, aerialPerspectiveFog);\r\n}\r\n\r\nexport function calculateHeightFog(\r\n scope: PBInsideFunctionScope,\r\n params: PBShaderExp,\r\n cameraPos: PBShaderExp,\r\n worldPos: PBShaderExp,\r\n isSky: PBShaderExp | boolean,\r\n skyDistantColorLut: PBShaderExp\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_calcHeightFog';\r\n const Params = getHeightFogParamsStruct(pb);\r\n pb.func(\r\n funcName,\r\n [Params('params'), pb.vec3('cameraPosition'), pb.vec3('worldPosition'), pb.bool('isSky')],\r\n function () {\r\n this.$l.cameraPos = this.$choice(\r\n this.isSky,\r\n this.cameraPosition,\r\n pb.vec3(\r\n this.cameraPosition.x,\r\n pb.min(this.cameraPosition.y, pb.add(this.params.parameter2.y, MAX_FOG_HEIGHT)),\r\n this.cameraPosition.z\r\n )\r\n );\r\n this.$l.ray = pb.sub(this.worldPosition, this.cameraPos);\r\n this.$l.d = pb.length(this.ray);\r\n this.$l.rayNorm = pb.div(this.ray, this.d);\r\n this.$l.origin = pb.add(this.cameraPos, pb.mul(this.rayNorm, this.params.parameter2.z));\r\n this.$l.term = this.params.parameter3.z;\r\n this.$l.worldPos = this.$choice(\r\n this.isSky,\r\n pb.add(this.cameraPosition, pb.mul(this.rayNorm, 1e8)),\r\n this.worldPosition\r\n );\r\n this.$l.falloff = pb.clamp(\r\n pb.mul(this.params.parameter1.w, pb.sub(this.worldPos.y, this.origin.y)),\r\n -125,\r\n 126\r\n );\r\n this.$l.fading = this.$choice(this.isSky, pb.smoothStep(5e6, 0, this.worldPos.y), 0);\r\n this.$l.factor = this.$choice(\r\n pb.greaterThan(pb.abs(this.falloff), 0.01),\r\n pb.div(pb.sub(1, pb.exp2(pb.neg(this.falloff))), this.falloff),\r\n pb.sub(Math.log(2), pb.mul(0.5 * Math.log(2) * Math.log(2), this.falloff))\r\n );\r\n this.$l.worldDistance = pb.dot(pb.sub(this.worldPos, this.origin), this.rayNorm);\r\n this.$l.lineIntegral = pb.mul(\r\n this.term,\r\n this.factor,\r\n pb.max(0, this.worldDistance) /*pb.distance(this.origin, this.worldPos)*/\r\n );\r\n\r\n this.$l.directionalInscattering = pb.mul(\r\n pb.add(this.params.parameter4.rgb, pb.mul(this.params.lightColor, this.params.parameter3.y)),\r\n pb.pow(pb.clamp(pb.dot(this.rayNorm, this.params.lightDir), 0, 1), this.params.parameter3.w)\r\n );\r\n this.$l.fogFactor = pb.sub(1, pb.clamp(pb.exp2(pb.neg(this.lineIntegral)), 0, 1));\r\n this.$l.distanceFactor = pb.clamp(pb.div(this.worldDistance, this.params.parameter2.w), 0, 1);\r\n this.fogFactor = pb.mul(this.fogFactor, pb.sub(1, this.distanceFactor));\r\n this.$l.directionalInscattering = pb.mul(\r\n this.$l.directionalInscattering,\r\n pb.max(this.fogFactor, this.fading)\r\n );\r\n\r\n this.$l.fogColor = this.params.parameter1.rgb;\r\n this.$if(pb.greaterThan(this.params.parameter3.y, 0), function () {\r\n this.$l.skyContrib = pb.textureSampleLevel(skyDistantColorLut, pb.vec2(0.5), 0).rgb;\r\n this.fogColor = pb.add(this.fogColor, pb.mul(this.skyContrib, this.params.parameter3.y));\r\n });\r\n this.$l.fogFactor = pb.max(pb.min(this.fogFactor, this.params.parameter3.x), this.fading);\r\n this.$l.fogColor = pb.add(pb.mul(this.fogColor, this.fogFactor), this.directionalInscattering);\r\n this.$return(pb.vec4(this.fogColor, pb.sub(1, this.fogFactor)));\r\n }\r\n );\r\n return scope[funcName](params, cameraPos, worldPos, isSky);\r\n}\r\n"],"names":["MAX_FOG_HEIGHT","getDefaultHeightFogParams","parameter1","Vector4","parameter2","parameter3","parameter4","lightDir","Vector3","lightColor","getHeightFogParamsStruct","pb","defineStruct","vec4","float","vec3","calculateFog","scope","aerialperspective","fogType","atmosphereParams","heightFogParams","uv","isSky","cameraPos","worldPos","additive","apLut","distantLightLut","$builder","funcName","AtmosphereParams","getAtmosphereParamsStruct","HeightFogParams","func","int","bool","vec2","$l","fogging","$if","equal","Fog","FOG_TYPE_HEIGHT","calculateHeightFog","and","notEqual","withAerialPerspective","not","atmosphericFogging","aerialPerspective","FOG_TYPE_NONE","combineAerialPerspectiveFog","$else","a","$return","aerialPerspectiveFog","rgb","add","mul","params","skyDistantColorLut","Params","$choice","cameraPosition","x","min","y","z","ray","sub","worldPosition","d","length","rayNorm","div","origin","term","falloff","clamp","w","fading","smoothStep","factor","greaterThan","abs","exp2","neg","Math","log","worldDistance","dot","lineIntegral","max","directionalInscattering","pow","fogFactor","distanceFactor","fogColor","skyContrib","textureSampleLevel"],"mappings":"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"}
1
+ {"version":3,"file":"fog.js","sources":["../../src/shaders/fog.ts"],"sourcesContent":["import { Vector3, Vector4 } from '@zephyr3d/base';\r\nimport type { PBInsideFunctionScope, PBShaderExp, ProgramBuilder } from '@zephyr3d/device';\r\nimport { aerialPerspective, getAtmosphereParamsStruct } from './atmosphere';\r\nimport { Fog } from '../values';\r\n\r\n/** @internal */\r\nexport const MAX_FOG_HEIGHT = 100;\r\n\r\n/** @internal */\r\nexport type HeightFogParams = {\r\n parameter1: Vector4; // [rgb=fogColor a=heightFalloff]\r\n parameter2: Vector4; // [r=density g=startHeight b=startDistance a=maxHeight]\r\n parameter3: Vector4; // [r=maxOpacity g=atmosphereStrength b=rayOriginTerm a=dirInscatteringExponent]\r\n parameter4: Vector4; // [rgb=directionalInscatteringColor a=UNUSED]\r\n lightDir: Vector3;\r\n lightColor: Vector3;\r\n};\r\n\r\n/** @internal */\r\nexport function getDefaultHeightFogParams() {\r\n return {\r\n parameter1: new Vector4(0, 0, 0, 0.1),\r\n parameter2: new Vector4(0.01, 0, 0, 10000),\r\n parameter3: new Vector4(0.8, 1, 0, 4),\r\n parameter4: new Vector4(0, 0, 0, 0),\r\n lightDir: new Vector3(0, 1, 0),\r\n lightColor: new Vector3(0, 0, 0)\r\n } as HeightFogParams;\r\n}\r\n\r\n/** @internal */\r\nexport function getHeightFogParamsStruct(pb: ProgramBuilder) {\r\n return pb.defineStruct([\r\n pb.vec4('parameter1'),\r\n pb.vec4('parameter2'),\r\n pb.vec4('parameter3'),\r\n pb.vec4('parameter4'),\r\n pb.float('dirInscatteringStartDistance'),\r\n pb.vec3('dirInscatteringColor'),\r\n pb.vec3('lightDir'),\r\n pb.vec3('lightColor')\r\n ]);\r\n}\r\n\r\nexport function calculateFog(\r\n scope: PBInsideFunctionScope,\r\n aerialperspective: PBShaderExp,\r\n fogType: PBShaderExp,\r\n atmosphereParams: PBShaderExp,\r\n heightFogParams: PBShaderExp,\r\n uv: PBShaderExp,\r\n isSky: PBShaderExp | boolean,\r\n cameraPos: PBShaderExp,\r\n worldPos: PBShaderExp,\r\n additive: PBShaderExp | number,\r\n apLut: PBShaderExp,\r\n distantLightLut: PBShaderExp\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_calculateFog';\r\n const AtmosphereParams = getAtmosphereParamsStruct(pb);\r\n const HeightFogParams = getHeightFogParamsStruct(pb);\r\n pb.func(\r\n funcName,\r\n [\r\n pb.int('withAerialPerspective'),\r\n pb.int('fogType'),\r\n AtmosphereParams('atmosphereParams'),\r\n HeightFogParams('heightFogParams'),\r\n pb.bool('isSky'),\r\n pb.vec2('uv'),\r\n pb.vec3('cameraPos'),\r\n pb.vec3('worldPos'),\r\n pb.int('additive')\r\n ],\r\n function () {\r\n this.$l.fogging = pb.vec4(0, 0, 0, 1);\r\n this.$if(pb.equal(this.fogType, Fog.FOG_TYPE_HEIGHT), function () {\r\n this.fogging = calculateHeightFog(\r\n this,\r\n this.heightFogParams,\r\n this.cameraPos,\r\n this.worldPos,\r\n this.isSky,\r\n distantLightLut\r\n );\r\n });\r\n this.$if(pb.and(pb.notEqual(this.withAerialPerspective, 0), pb.not(this.isSky)), function () {\r\n this.$l.atmosphericFogging = aerialPerspective(\r\n this,\r\n this.uv,\r\n this.atmosphereParams,\r\n this.cameraPos,\r\n this.worldPos,\r\n pb.vec3(32),\r\n apLut\r\n );\r\n this.$if(pb.notEqual(this.fogType, Fog.FOG_TYPE_NONE), function () {\r\n this.fogging = combineAerialPerspectiveFog(this, this.fogging, this.atmosphericFogging);\r\n }).$else(function () {\r\n this.fogging = this.atmosphericFogging;\r\n });\r\n });\r\n this.$if(pb.notEqual(this.additive, 0), function () {\r\n this.fogging = pb.vec4(pb.vec3(0), this.fogging.a);\r\n });\r\n this.$return(this.fogging);\r\n }\r\n );\r\n return scope[funcName](\r\n aerialperspective,\r\n fogType,\r\n atmosphereParams,\r\n heightFogParams,\r\n isSky,\r\n uv,\r\n cameraPos,\r\n worldPos,\r\n additive\r\n );\r\n}\r\n\r\nexport function combineAerialPerspectiveFog(\r\n scope: PBInsideFunctionScope,\r\n fogging: PBShaderExp,\r\n aerialPerspectiveFog: PBShaderExp\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_combineAerialPerspectiveFog';\r\n pb.func(funcName, [pb.vec4('fogging'), pb.vec4('aerialPerspectiveFog')], function () {\r\n this.$l.rgb = pb.add(this.fogging.rgb, pb.mul(this.aerialPerspectiveFog.rgb, this.fogging.a));\r\n this.$l.a = pb.mul(this.fogging.a, this.aerialPerspectiveFog.a);\r\n this.$return(pb.vec4(this.rgb, this.a));\r\n });\r\n return scope[funcName](fogging, aerialPerspectiveFog);\r\n}\r\n\r\nexport function calculateHeightFog(\r\n scope: PBInsideFunctionScope,\r\n params: PBShaderExp,\r\n cameraPos: PBShaderExp,\r\n worldPos: PBShaderExp,\r\n isSky: PBShaderExp | boolean,\r\n skyDistantColorLut: PBShaderExp\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_calcHeightFog';\r\n const Params = getHeightFogParamsStruct(pb);\r\n pb.func(\r\n funcName,\r\n [Params('params'), pb.vec3('cameraPosition'), pb.vec3('worldPosition'), pb.bool('isSky')],\r\n function () {\r\n this.$l.cameraPos = this.$choice(\r\n this.isSky,\r\n this.cameraPosition,\r\n pb.vec3(\r\n this.cameraPosition.x,\r\n pb.min(this.cameraPosition.y, pb.add(this.params.parameter2.y, MAX_FOG_HEIGHT)),\r\n this.cameraPosition.z\r\n )\r\n );\r\n this.$l.ray = pb.sub(this.worldPosition, this.cameraPos);\r\n this.$l.d = pb.length(this.ray);\r\n this.$l.rayNorm = pb.div(this.ray, this.d);\r\n this.$l.origin = pb.add(this.cameraPos, pb.mul(this.rayNorm, this.params.parameter2.z));\r\n this.$l.term = this.params.parameter3.z;\r\n this.$l.worldPos = this.$choice(\r\n this.isSky,\r\n pb.add(this.cameraPosition, pb.mul(this.rayNorm, 1e8)),\r\n this.worldPosition\r\n );\r\n this.$l.falloff = pb.clamp(\r\n pb.mul(this.params.parameter1.w, pb.sub(this.worldPos.y, this.origin.y)),\r\n -125,\r\n 126\r\n );\r\n this.$l.fading = this.$choice(this.isSky, pb.smoothStep(5e6, 0, this.worldPos.y), 0);\r\n this.$l.factor = this.$choice(\r\n pb.greaterThan(pb.abs(this.falloff), 0.01),\r\n pb.div(pb.sub(1, pb.exp2(pb.neg(this.falloff))), this.falloff),\r\n pb.sub(Math.log(2), pb.mul(0.5 * Math.log(2) * Math.log(2), this.falloff))\r\n );\r\n this.$l.worldDistance = pb.dot(pb.sub(this.worldPos, this.origin), this.rayNorm);\r\n this.$l.lineIntegral = pb.mul(\r\n this.term,\r\n this.factor,\r\n pb.max(0, this.worldDistance) /*pb.distance(this.origin, this.worldPos)*/\r\n );\r\n\r\n this.$l.directionalInscattering = pb.mul(\r\n pb.add(this.params.parameter4.rgb, pb.mul(this.params.lightColor, this.params.parameter3.y)),\r\n pb.pow(pb.clamp(pb.dot(this.rayNorm, this.params.lightDir), 0, 1), this.params.parameter3.w)\r\n );\r\n this.$l.fogFactor = pb.sub(1, pb.clamp(pb.exp2(pb.neg(this.lineIntegral)), 0, 1));\r\n this.$l.distanceFactor = pb.clamp(pb.div(this.worldDistance, this.params.parameter2.w), 0, 1);\r\n this.fogFactor = pb.mul(this.fogFactor, pb.sub(1, this.distanceFactor));\r\n this.$l.directionalInscattering = pb.mul(\r\n this.$l.directionalInscattering,\r\n pb.max(this.fogFactor, this.fading)\r\n );\r\n\r\n this.$l.fogColor = this.params.parameter1.rgb;\r\n this.$if(pb.greaterThan(this.params.parameter3.y, 0), function () {\r\n this.$l.skyContrib = pb.textureSampleLevel(skyDistantColorLut, pb.vec2(0.5), 0).rgb;\r\n this.fogColor = pb.add(this.fogColor, pb.mul(this.skyContrib, this.params.parameter3.y));\r\n });\r\n this.$l.fogFactor = pb.max(pb.min(this.fogFactor, this.params.parameter3.x), this.fading);\r\n this.$l.fogColor = pb.add(pb.mul(this.fogColor, this.fogFactor), this.directionalInscattering);\r\n this.$return(pb.vec4(this.fogColor, pb.sub(1, this.fogFactor)));\r\n }\r\n );\r\n return scope[funcName](params, cameraPos, worldPos, isSky);\r\n}\r\n"],"names":["MAX_FOG_HEIGHT","getDefaultHeightFogParams","parameter1","Vector4","parameter2","parameter3","parameter4","lightDir","Vector3","lightColor","getHeightFogParamsStruct","pb","defineStruct","vec4","float","vec3","calculateFog","scope","aerialperspective","fogType","atmosphereParams","heightFogParams","uv","isSky","cameraPos","worldPos","additive","apLut","distantLightLut","$builder","funcName","AtmosphereParams","getAtmosphereParamsStruct","HeightFogParams","func","int","bool","vec2","$l","fogging","$if","equal","Fog","FOG_TYPE_HEIGHT","calculateHeightFog","and","notEqual","withAerialPerspective","not","atmosphericFogging","aerialPerspective","FOG_TYPE_NONE","combineAerialPerspectiveFog","$else","a","$return","aerialPerspectiveFog","rgb","add","mul","params","skyDistantColorLut","Params","$choice","cameraPosition","x","min","y","z","ray","sub","worldPosition","d","length","rayNorm","div","origin","term","falloff","clamp","w","fading","smoothStep","factor","greaterThan","abs","exp2","neg","Math","log","worldDistance","dot","lineIntegral","max","directionalInscattering","pow","fogFactor","distanceFactor","fogColor","skyContrib","textureSampleLevel"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"misc.js","sources":["../../src/shaders/misc.ts"],"sourcesContent":["import type { PBShaderExp } from '@zephyr3d/device';\r\nimport { PBInsideFunctionScope, PBPrimitiveType } from '@zephyr3d/device';\r\n\r\n/**\r\n * Decodes a float that was encoded into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The rgba8unorm to be decoded\r\n * @returns The decoded float value\r\n *\r\n * @public\r\n */\r\nexport function decodeFloatFromRGBA(scope: PBInsideFunctionScope, value: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n if (\r\n !value ||\r\n !value.$typeinfo.isPrimitiveType() ||\r\n value.$typeinfo.primitiveType !== PBPrimitiveType.F32VEC4\r\n ) {\r\n throw new Error('decodeFloatFromRGBA() failed: parameter type must be vec4');\r\n }\r\n if (!scope || !(scope instanceof PBInsideFunctionScope)) {\r\n throw new Error(\r\n 'decodeFloatFromRGBA() failed: decodeNormalizedFloatFromRGBA() must be called inside a function'\r\n );\r\n }\r\n const funcName = 'Z_DecodeFloatFromRGBA';\r\n pb.func(funcName, [pb.vec4('value')], function () {\r\n this.$l.pack = pb.floor(pb.add(pb.mul(this.value, 255), 0.5));\r\n\r\n // Extract bits\r\n this.$l.bitSign = pb.float(pb.greaterThan(this.pack.x, 127.0));\r\n this.$l.bitExpn = pb.float(pb.greaterThan(this.pack.y, 127.0));\r\n this.pack.x = pb.sub(this.pack.x, pb.mul(this.bitSign, 128));\r\n this.pack.y = pb.sub(this.pack.y, pb.mul(this.bitExpn, 128));\r\n\r\n // Compute parts of number\r\n this.$l.exponent = pb.add(pb.mul(this.pack.x, 2.0), this.bitExpn);\r\n this.exponent = pb.pow(2.0, pb.sub(this.exponent, 127.0));\r\n this.$l.mantissa = pb.float(1.0);\r\n this.mantissa = pb.add(this.mantissa, pb.div(this.pack.y, 128.0));\r\n this.mantissa = pb.add(this.mantissa, pb.div(this.pack.z, 32768.0));\r\n this.mantissa = pb.add(this.mantissa, pb.div(this.pack.w, 8388608.0));\r\n\r\n // Return result\r\n this.$return(pb.mul(pb.sub(1.0, pb.mul(this.bitSign, 2)), this.exponent, this.mantissa));\r\n });\r\n return scope[funcName](value);\r\n}\r\n\r\n/**\r\n * Encodes a float into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The float value to be encode\r\n * @returns The encoded rgba8unorm\r\n *\r\n * @public\r\n */\r\nexport function encodeFloatToRGBA(scope: PBInsideFunctionScope, value: PBShaderExp | number): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_EncodeFloatToRGBA';\r\n pb.func(funcName, [pb.float('value')], function () {\r\n this.$l.floatMax = pb.mul(1.70141184, pb.pow(10, 38));\r\n this.$l.floatMin = pb.mul(1.17549435, pb.pow(10, -38));\r\n this.$l.absvalue = pb.abs(this.value);\r\n this.$if(pb.lessThanEqual(this.absvalue, this.floatMin), function () {\r\n this.$return(pb.vec4(0));\r\n });\r\n this.$if(pb.greaterThanEqual(this.value, this.floatMax), function () {\r\n this.$return(pb.vec4(127 / 255, 128 / 255, 0, 0));\r\n });\r\n this.$if(pb.lessThanEqual(this.value, pb.neg(this.floatMax)), function () {\r\n this.$return(pb.vec4(1, 128 / 255, 0, 0));\r\n });\r\n this.$l.pack = pb.vec4(0);\r\n\r\n // Compute Exponent and Mantissa\r\n this.$l.exponent = pb.floor(pb.log2(this.absvalue));\r\n this.$l.mantissa = pb.sub(pb.mul(this.absvalue, pb.pow(2.0, pb.neg(this.exponent))), 1.0);\r\n\r\n // Pack Mantissa into bytes\r\n this.pack.y = pb.floor(pb.mul(this.mantissa, 128.0));\r\n this.mantissa = pb.sub(this.mantissa, pb.div(this.pack.y, 128.0));\r\n this.pack.z = pb.floor(pb.mul(this.mantissa, 32768.0));\r\n this.mantissa = pb.sub(this.mantissa, pb.div(this.pack.z, 32768.0));\r\n this.pack.w = pb.floor(pb.mul(this.mantissa, 8388608.0));\r\n\r\n // Pack Sing and Exponent into bytes\r\n this.$l.expbias = pb.add(this.exponent, 127.0);\r\n this.pack.x = pb.add(this.pack.x, pb.floor(pb.div(this.expbias, 2.0)));\r\n this.expbias = pb.sub(this.expbias, pb.mul(this.pack.x, 2.0));\r\n this.pack.y = pb.add(this.pack.y, pb.mul(pb.floor(this.expbias), 128.0));\r\n this.pack.x = pb.add(this.pack.x, pb.mul(128.0, pb.float(pb.lessThan(this.value, 0)))); // Sign\r\n this.$return(pb.div(pb.floor(pb.add(this.pack, pb.vec4(0.5))), 255.0));\r\n });\r\n return pb.getGlobalScope()[funcName](value);\r\n}\r\n\r\n/**\r\n * Decodes a float that was encoded into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The rgba8unorm to be decoded\r\n * @returns The decoded float value\r\n *\r\n * @public\r\n */\r\nexport function decodeNormalizedFloatFromRGBA(scope: PBInsideFunctionScope, value: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n if (\r\n !value ||\r\n !value.$typeinfo.isPrimitiveType() ||\r\n value.$typeinfo.primitiveType !== PBPrimitiveType.F32VEC4\r\n ) {\r\n throw new Error('decodeNormalizedFloatFromRGBA() failed: parameter type must be vec4');\r\n }\r\n if (!scope || !(scope instanceof PBInsideFunctionScope)) {\r\n throw new Error(\r\n 'decodeNormalizedFloatFromRGBA() failed: decodeNormalizedFloatFromRGBA() must be called inside a function'\r\n );\r\n }\r\n const funcName = 'Z_decodeNormalizedFloatFromRGBA';\r\n pb.func(funcName, [pb.vec4('value')], function () {\r\n this.$l.bitShift = pb.vec4(1 / (256 * 256 * 256), 1 / (256 * 256), 1 / 256, 1);\r\n this.$return(pb.dot(this.value, this.bitShift));\r\n });\r\n return scope[funcName](value);\r\n}\r\n\r\n/**\r\n * Encodes a float into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The float value to be encode\r\n * @returns The encoded rgba8unorm\r\n *\r\n * @public\r\n */\r\nexport function encodeNormalizedFloatToRGBA(\r\n scope: PBInsideFunctionScope,\r\n value: PBShaderExp | number\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_encodeNormalizedFloatToRGBA';\r\n pb.func(funcName, [pb.float('value')], function () {\r\n this.$l.bitShift = pb.vec4(256 * 256 * 256, 256 * 256, 256, 1);\r\n this.$l.bitMask = pb.vec4(0, 1 / 256, 1 / 256, 1 / 256);\r\n this.$l.t = pb.fract(pb.mul(this.value, this.bitShift));\r\n this.$return(pb.sub(this.t, pb.mul(this.t.xxyz, this.bitMask)));\r\n });\r\n return pb.getGlobalScope()[funcName](value);\r\n}\r\n\r\n/**\r\n * Encodes two half floats into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param a - The first half float to be encode\r\n * @param b - The second half float to be encode\r\n * @returns The encoded rgba8unorm\r\n *\r\n * @public\r\n */\r\nexport function encode2HalfToRGBA(\r\n scope: PBInsideFunctionScope,\r\n a: PBShaderExp | number,\r\n b: PBShaderExp | number\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_encode2HalfToRGBA';\r\n pb.func(funcName, [pb.float('a'), pb.float('b')], function () {\r\n this.$l.t = pb.vec4(this.a, pb.fract(pb.mul(this.a, 255)), this.b, pb.fract(pb.mul(this.b, 255)));\r\n this.$return(\r\n pb.vec4(\r\n pb.sub(this.t.x, pb.div(this.t.y, 255)),\r\n this.t.y,\r\n pb.sub(this.t.z, pb.div(this.t.w, 255)),\r\n this.t.w\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](a, b);\r\n}\r\n/**\r\n * Decodes two half floats that was encoded into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The rgba8unorm to be decoded\r\n * @returns A vec2 that contains the two half floats\r\n *\r\n * @public\r\n */\r\nexport function decode2HalfFromRGBA(scope: PBInsideFunctionScope, value: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_decode2HalfFromRGBA';\r\n pb.func(funcName, [pb.vec4('value')], function () {\r\n this.$return(\r\n pb.vec2(\r\n pb.add(this.value.x, pb.div(this.value.y, 255)),\r\n pb.add(this.value.z, pb.div(this.value.w, 255))\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](value);\r\n}\r\n\r\n/**\r\n * Encodes a color value into RGBM format\r\n *\r\n * @param scope - Current shader scope\r\n * @param rgb - The color value to be encoded\r\n * @param maxRange - The max range of color components\r\n * @returns The encoded RGBA value\r\n *\r\n * @public\r\n */\r\nexport function encodeRGBM(\r\n scope: PBInsideFunctionScope,\r\n rgb: PBShaderExp,\r\n maxRange: PBShaderExp | number\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_encodeRGBM';\r\n pb.func(funcName, [pb.vec3('rgb'), pb.float('range')], function () {\r\n this.$l.maxRGB = pb.max(this.rgb.r, pb.max(this.rgb.g, this.rgb.b));\r\n this.$l.M = pb.div(this.maxRGB, this.range);\r\n this.M = pb.div(pb.ceil(pb.mul(this.M, 255)), 255);\r\n this.$return(pb.vec4(pb.div(this.rgb, pb.mul(this.M, this.range)), this.M));\r\n });\r\n return pb.getGlobalScope()[funcName](rgb, maxRange);\r\n}\r\n\r\n/**\r\n * Decodes color value that was encoded into RGBM format\r\n *\r\n * @param scope - Current shader scope\r\n * @param rgbm - The RGBM to be decoded\r\n * @param maxRange - The max range of color components\r\n * @returns The decoded RGB color value\r\n *\r\n * @public\r\n */\r\nexport function decodeRGBM(\r\n scope: PBInsideFunctionScope,\r\n rgbm: PBShaderExp,\r\n maxRange: PBShaderExp | number\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_decodeRGBM';\r\n pb.func(funcName, [pb.vec4('rgbm'), pb.float('range')], function () {\r\n this.$return(pb.mul(this.rgbm.rgb, this.rgbm.a, this.range));\r\n });\r\n return pb.getGlobalScope()[funcName](rgbm, maxRange);\r\n}\r\n\r\n/**\r\n * Converts a vec3 color from gamma space to linear space\r\n *\r\n * @param scope - Current shader scope\r\n * @param color - The vec3 color to be converted\r\n * @returns The linear space vec3 color\r\n *\r\n * @public\r\n */\r\nexport function gammaToLinear(scope: PBInsideFunctionScope, color: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_gammaToLinear';\r\n pb.func(funcName, [pb.vec3('color')], function () {\r\n // Approximate version from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1\r\n // float3 RGB = sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878);\r\n this.$return(\r\n pb.mul(\r\n this.color,\r\n pb.add(\r\n pb.mul(this.color, pb.add(pb.mul(this.color, 0.305306011), pb.vec3(0.682171111))),\r\n pb.vec3(0.012522878)\r\n )\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](color);\r\n}\r\n\r\n/**\r\n * Converts a vec3 color from linear space to gamma space\r\n *\r\n * @param scope - Current shader scope\r\n * @param color - The vec3 color to be converted\r\n * @returns The gamma space vec3 color\r\n *\r\n * @public\r\n */\r\nexport function linearToGamma(scope: PBInsideFunctionScope, color: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_linearToGamma';\r\n pb.func(funcName, [pb.vec3('color')], function () {\r\n // Almost perfect version from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1\r\n // C_srgb_2 = max(1.055 * pow(C_lin, 0.416666667) - 0.055, 0);\r\n this.$return(\r\n pb.max(pb.sub(pb.mul(pb.pow(this.color, pb.vec3(0.416666667)), 1.055), pb.vec3(0.055)), pb.vec3(0))\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](color);\r\n}\r\n\r\n/** @internal */\r\nexport function fetchNormalizedFloatForDevice(\r\n scope: PBInsideFunctionScope,\r\n tex: PBShaderExp,\r\n uv: PBShaderExp,\r\n level?: PBShaderExp | number\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const texel =\r\n level === undefined || level === null ? pb.textureSample(tex, uv) : pb.textureSampleLevel(tex, uv, level);\r\n if (pb.getDevice().type === 'webgl') {\r\n return decodeNormalizedFloatFromRGBA(scope, texel);\r\n } else {\r\n return texel;\r\n }\r\n}\r\n"],"names":["decodeFloatFromRGBA","scope","value","pb","$builder","$typeinfo","isPrimitiveType","primitiveType","PBPrimitiveType","F32VEC4","Error","PBInsideFunctionScope","funcName","func","vec4","$l","pack","floor","add","mul","bitSign","float","greaterThan","x","bitExpn","y","sub","exponent","pow","mantissa","div","z","w","$return","encodeFloatToRGBA","floatMax","floatMin","absvalue","abs","$if","lessThanEqual","greaterThanEqual","neg","log2","expbias","lessThan","getGlobalScope","decodeNormalizedFloatFromRGBA","bitShift","dot","encodeNormalizedFloatToRGBA","bitMask","t","fract","xxyz","encode2HalfToRGBA","a","b","decode2HalfFromRGBA","vec2","encodeRGBM","rgb","maxRange","vec3","maxRGB","max","r","g","M","range","ceil","decodeRGBM","rgbm","gammaToLinear","color","linearToGamma","fetchNormalizedFloatForDevice","tex","uv","level","texel","undefined","textureSample","textureSampleLevel","getDevice","type"],"mappings":"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"}
1
+ {"version":3,"file":"misc.js","sources":["../../src/shaders/misc.ts"],"sourcesContent":["import type { PBShaderExp } from '@zephyr3d/device';\r\nimport { PBInsideFunctionScope, PBPrimitiveType } from '@zephyr3d/device';\r\n\r\n/**\r\n * Decodes a float that was encoded into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The rgba8unorm to be decoded\r\n * @returns The decoded float value\r\n *\r\n * @public\r\n */\r\nexport function decodeFloatFromRGBA(scope: PBInsideFunctionScope, value: PBShaderExp) {\r\n const pb = scope.$builder;\r\n if (\r\n !value ||\r\n !value.$typeinfo.isPrimitiveType() ||\r\n value.$typeinfo.primitiveType !== PBPrimitiveType.F32VEC4\r\n ) {\r\n throw new Error('decodeFloatFromRGBA() failed: parameter type must be vec4');\r\n }\r\n if (!scope || !(scope instanceof PBInsideFunctionScope)) {\r\n throw new Error(\r\n 'decodeFloatFromRGBA() failed: decodeNormalizedFloatFromRGBA() must be called inside a function'\r\n );\r\n }\r\n const funcName = 'Z_DecodeFloatFromRGBA';\r\n pb.func(funcName, [pb.vec4('value')], function () {\r\n this.$l.pack = pb.floor(pb.add(pb.mul(this.value, 255), 0.5));\r\n\r\n // Extract bits\r\n this.$l.bitSign = pb.float(pb.greaterThan(this.pack.x, 127.0));\r\n this.$l.bitExpn = pb.float(pb.greaterThan(this.pack.y, 127.0));\r\n this.pack.x = pb.sub(this.pack.x, pb.mul(this.bitSign, 128));\r\n this.pack.y = pb.sub(this.pack.y, pb.mul(this.bitExpn, 128));\r\n\r\n // Compute parts of number\r\n this.$l.exponent = pb.add(pb.mul(this.pack.x, 2.0), this.bitExpn);\r\n this.exponent = pb.pow(2.0, pb.sub(this.exponent, 127.0));\r\n this.$l.mantissa = pb.float(1.0);\r\n this.mantissa = pb.add(this.mantissa, pb.div(this.pack.y, 128.0));\r\n this.mantissa = pb.add(this.mantissa, pb.div(this.pack.z, 32768.0));\r\n this.mantissa = pb.add(this.mantissa, pb.div(this.pack.w, 8388608.0));\r\n\r\n // Return result\r\n this.$return(pb.mul(pb.sub(1.0, pb.mul(this.bitSign, 2)), this.exponent, this.mantissa));\r\n });\r\n return scope[funcName](value) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Encodes a float into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The float value to be encode\r\n * @returns The encoded rgba8unorm\r\n *\r\n * @public\r\n */\r\nexport function encodeFloatToRGBA(scope: PBInsideFunctionScope, value: PBShaderExp | number) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_EncodeFloatToRGBA';\r\n pb.func(funcName, [pb.float('value')], function () {\r\n this.$l.floatMax = pb.mul(1.70141184, pb.pow(10, 38));\r\n this.$l.floatMin = pb.mul(1.17549435, pb.pow(10, -38));\r\n this.$l.absvalue = pb.abs(this.value);\r\n this.$if(pb.lessThanEqual(this.absvalue, this.floatMin), function () {\r\n this.$return(pb.vec4(0));\r\n });\r\n this.$if(pb.greaterThanEqual(this.value, this.floatMax), function () {\r\n this.$return(pb.vec4(127 / 255, 128 / 255, 0, 0));\r\n });\r\n this.$if(pb.lessThanEqual(this.value, pb.neg(this.floatMax)), function () {\r\n this.$return(pb.vec4(1, 128 / 255, 0, 0));\r\n });\r\n this.$l.pack = pb.vec4(0);\r\n\r\n // Compute Exponent and Mantissa\r\n this.$l.exponent = pb.floor(pb.log2(this.absvalue));\r\n this.$l.mantissa = pb.sub(pb.mul(this.absvalue, pb.pow(2.0, pb.neg(this.exponent))), 1.0);\r\n\r\n // Pack Mantissa into bytes\r\n this.pack.y = pb.floor(pb.mul(this.mantissa, 128.0));\r\n this.mantissa = pb.sub(this.mantissa, pb.div(this.pack.y, 128.0));\r\n this.pack.z = pb.floor(pb.mul(this.mantissa, 32768.0));\r\n this.mantissa = pb.sub(this.mantissa, pb.div(this.pack.z, 32768.0));\r\n this.pack.w = pb.floor(pb.mul(this.mantissa, 8388608.0));\r\n\r\n // Pack Sing and Exponent into bytes\r\n this.$l.expbias = pb.add(this.exponent, 127.0);\r\n this.pack.x = pb.add(this.pack.x, pb.floor(pb.div(this.expbias, 2.0)));\r\n this.expbias = pb.sub(this.expbias, pb.mul(this.pack.x, 2.0));\r\n this.pack.y = pb.add(this.pack.y, pb.mul(pb.floor(this.expbias), 128.0));\r\n this.pack.x = pb.add(this.pack.x, pb.mul(128.0, pb.float(pb.lessThan(this.value, 0)))); // Sign\r\n this.$return(pb.div(pb.floor(pb.add(this.pack, pb.vec4(0.5))), 255.0));\r\n });\r\n return pb.getGlobalScope()[funcName](value) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Decodes a float that was encoded into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The rgba8unorm to be decoded\r\n * @returns The decoded float value\r\n *\r\n * @public\r\n */\r\nexport function decodeNormalizedFloatFromRGBA(scope: PBInsideFunctionScope, value: PBShaderExp) {\r\n const pb = scope.$builder;\r\n if (\r\n !value ||\r\n !value.$typeinfo.isPrimitiveType() ||\r\n value.$typeinfo.primitiveType !== PBPrimitiveType.F32VEC4\r\n ) {\r\n throw new Error('decodeNormalizedFloatFromRGBA() failed: parameter type must be vec4');\r\n }\r\n if (!scope || !(scope instanceof PBInsideFunctionScope)) {\r\n throw new Error(\r\n 'decodeNormalizedFloatFromRGBA() failed: decodeNormalizedFloatFromRGBA() must be called inside a function'\r\n );\r\n }\r\n const funcName = 'Z_decodeNormalizedFloatFromRGBA';\r\n pb.func(funcName, [pb.vec4('value')], function () {\r\n this.$l.bitShift = pb.vec4(1 / (256 * 256 * 256), 1 / (256 * 256), 1 / 256, 1);\r\n this.$return(pb.dot(this.value, this.bitShift));\r\n });\r\n return scope[funcName](value) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Encodes a float into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The float value to be encode\r\n * @returns The encoded rgba8unorm\r\n *\r\n * @public\r\n */\r\nexport function encodeNormalizedFloatToRGBA(scope: PBInsideFunctionScope, value: PBShaderExp | number) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_encodeNormalizedFloatToRGBA';\r\n pb.func(funcName, [pb.float('value')], function () {\r\n this.$l.bitShift = pb.vec4(256 * 256 * 256, 256 * 256, 256, 1);\r\n this.$l.bitMask = pb.vec4(0, 1 / 256, 1 / 256, 1 / 256);\r\n this.$l.t = pb.fract(pb.mul(this.value, this.bitShift));\r\n this.$return(pb.sub(this.t, pb.mul(this.t.xxyz, this.bitMask)));\r\n });\r\n return pb.getGlobalScope()[funcName](value) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Encodes two half floats into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param a - The first half float to be encode\r\n * @param b - The second half float to be encode\r\n * @returns The encoded rgba8unorm\r\n *\r\n * @public\r\n */\r\nexport function encode2HalfToRGBA(\r\n scope: PBInsideFunctionScope,\r\n a: PBShaderExp | number,\r\n b: PBShaderExp | number\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_encode2HalfToRGBA';\r\n pb.func(funcName, [pb.float('a'), pb.float('b')], function () {\r\n this.$l.t = pb.vec4(this.a, pb.fract(pb.mul(this.a, 255)), this.b, pb.fract(pb.mul(this.b, 255)));\r\n this.$return(\r\n pb.vec4(\r\n pb.sub(this.t.x, pb.div(this.t.y, 255)),\r\n this.t.y,\r\n pb.sub(this.t.z, pb.div(this.t.w, 255)),\r\n this.t.w\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](a, b) as PBShaderExp;\r\n}\r\n/**\r\n * Decodes two half floats that was encoded into a rgba8unorm\r\n *\r\n * @param scope - Current shader scope\r\n * @param value - The rgba8unorm to be decoded\r\n * @returns A vec2 that contains the two half floats\r\n *\r\n * @public\r\n */\r\nexport function decode2HalfFromRGBA(scope: PBInsideFunctionScope, value: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_decode2HalfFromRGBA';\r\n pb.func(funcName, [pb.vec4('value')], function () {\r\n this.$return(\r\n pb.vec2(\r\n pb.add(this.value.x, pb.div(this.value.y, 255)),\r\n pb.add(this.value.z, pb.div(this.value.w, 255))\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](value) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Encodes a color value into RGBM format\r\n *\r\n * @param scope - Current shader scope\r\n * @param rgb - The color value to be encoded\r\n * @param maxRange - The max range of color components\r\n * @returns The encoded RGBA value\r\n *\r\n * @public\r\n */\r\nexport function encodeRGBM(scope: PBInsideFunctionScope, rgb: PBShaderExp, maxRange: PBShaderExp | number) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_encodeRGBM';\r\n pb.func(funcName, [pb.vec3('rgb'), pb.float('range')], function () {\r\n this.$l.maxRGB = pb.max(this.rgb.r, pb.max(this.rgb.g, this.rgb.b));\r\n this.$l.M = pb.div(this.maxRGB, this.range);\r\n this.M = pb.div(pb.ceil(pb.mul(this.M, 255)), 255);\r\n this.$return(pb.vec4(pb.div(this.rgb, pb.mul(this.M, this.range)), this.M));\r\n });\r\n return pb.getGlobalScope()[funcName](rgb, maxRange) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Decodes color value that was encoded into RGBM format\r\n *\r\n * @param scope - Current shader scope\r\n * @param rgbm - The RGBM to be decoded\r\n * @param maxRange - The max range of color components\r\n * @returns The decoded RGB color value\r\n *\r\n * @public\r\n */\r\nexport function decodeRGBM(scope: PBInsideFunctionScope, rgbm: PBShaderExp, maxRange: PBShaderExp | number) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_decodeRGBM';\r\n pb.func(funcName, [pb.vec4('rgbm'), pb.float('range')], function () {\r\n this.$return(pb.mul(this.rgbm.rgb, this.rgbm.a, this.range));\r\n });\r\n return pb.getGlobalScope()[funcName](rgbm, maxRange) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Converts a vec3 color from gamma space to linear space\r\n *\r\n * @param scope - Current shader scope\r\n * @param color - The vec3 color to be converted\r\n * @returns The linear space vec3 color\r\n *\r\n * @public\r\n */\r\nexport function gammaToLinear(scope: PBInsideFunctionScope, color: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_gammaToLinear';\r\n pb.func(funcName, [pb.vec3('color')], function () {\r\n // Approximate version from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1\r\n // float3 RGB = sRGB * (sRGB * (sRGB * 0.305306011 + 0.682171111) + 0.012522878);\r\n this.$return(\r\n pb.mul(\r\n this.color,\r\n pb.add(\r\n pb.mul(this.color, pb.add(pb.mul(this.color, 0.305306011), pb.vec3(0.682171111))),\r\n pb.vec3(0.012522878)\r\n )\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](color) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Converts a vec3 color from linear space to gamma space\r\n *\r\n * @param scope - Current shader scope\r\n * @param color - The vec3 color to be converted\r\n * @returns The gamma space vec3 color\r\n *\r\n * @public\r\n */\r\nexport function linearToGamma(scope: PBInsideFunctionScope, color: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_linearToGamma';\r\n pb.func(funcName, [pb.vec3('color')], function () {\r\n // Almost perfect version from http://chilliant.blogspot.com.au/2012/08/srgb-approximations-for-hlsl.html?m=1\r\n // C_srgb_2 = max(1.055 * pow(C_lin, 0.416666667) - 0.055, 0);\r\n this.$return(\r\n pb.max(pb.sub(pb.mul(pb.pow(this.color, pb.vec3(0.416666667)), 1.055), pb.vec3(0.055)), pb.vec3(0))\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](color) as PBShaderExp;\r\n}\r\n\r\n/** @internal */\r\nexport function fetchNormalizedFloatForDevice(\r\n scope: PBInsideFunctionScope,\r\n tex: PBShaderExp,\r\n uv: PBShaderExp,\r\n level?: PBShaderExp | number\r\n) {\r\n const pb = scope.$builder;\r\n const texel =\r\n level === undefined || level === null ? pb.textureSample(tex, uv) : pb.textureSampleLevel(tex, uv, level);\r\n if (pb.getDevice().type === 'webgl') {\r\n return decodeNormalizedFloatFromRGBA(scope, texel);\r\n } else {\r\n return texel;\r\n }\r\n}\r\n"],"names":["decodeFloatFromRGBA","scope","value","pb","$builder","$typeinfo","isPrimitiveType","primitiveType","PBPrimitiveType","F32VEC4","Error","PBInsideFunctionScope","funcName","func","vec4","$l","pack","floor","add","mul","bitSign","float","greaterThan","x","bitExpn","y","sub","exponent","pow","mantissa","div","z","w","$return","encodeFloatToRGBA","floatMax","floatMin","absvalue","abs","$if","lessThanEqual","greaterThanEqual","neg","log2","expbias","lessThan","getGlobalScope","decodeNormalizedFloatFromRGBA","bitShift","dot","encodeNormalizedFloatToRGBA","bitMask","t","fract","xxyz","encode2HalfToRGBA","a","b","decode2HalfFromRGBA","vec2","encodeRGBM","rgb","maxRange","vec3","maxRGB","max","r","g","M","range","ceil","decodeRGBM","rgbm","gammaToLinear","color","linearToGamma","fetchNormalizedFloatForDevice","tex","uv","level","texel","undefined","textureSample","textureSampleLevel","getDevice","type"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"noise.js","sources":["../../src/shaders/noise.ts"],"sourcesContent":["import type { PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\n\r\n/**\r\n * Generate random float value from a float\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function hash11(scope: PBInsideFunctionScope, p: number | PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash11';\r\n pb.func(funcName, [pb.float('p')], function () {\r\n this.$l.x = pb.fract(pb.mul(this.p, 0.1031));\r\n this.x = pb.mul(this.x, pb.add(this.x, 33.33));\r\n this.x = pb.mul(this.x, pb.add(this.x, this.x));\r\n this.$return(pb.fract(this.x));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate random float value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function hash21(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash21';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p.xyx, 0.1031));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.x, this.p3.y), this.p3.z)));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate random float value from a vec3\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function hash31(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash31';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p, 0.1031));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.zyx, pb.vec3(31.32))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.x, this.p3.y), this.p3.z)));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate random vec2 value from a float\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec2 value\r\n *\r\n * @public\r\n */\r\nexport function hash12(scope: PBInsideFunctionScope, p: number | PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash12';\r\n pb.func(funcName, [pb.float('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(pb.vec3(0.1031, 0.103, 0.0973), this.p));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xx, this.p3.yz), this.p3.zy)));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate random vec2 value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec2 value\r\n *\r\n * @public\r\n */\r\nexport function hash22(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash22';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p.xyx, pb.vec3(0.1031, 0.103, 0.0973)));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xx, this.p3.yz), this.p3.zy)));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate random vec2 value from a vec3\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec2 value\r\n *\r\n * @public\r\n */\r\nexport function hash32(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash32';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p, pb.vec3(0.1031, 0.103, 0.0973)));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xx, this.p3.yz), this.p3.zy)));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate random vec3 value from a float\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec3 value\r\n *\r\n * @public\r\n */\r\nexport function hash13(scope: PBInsideFunctionScope, p: number | PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash13';\r\n pb.func(funcName, [pb.float('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(pb.vec3(0.1031, 0.103, 0.0973), this.p));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xxy, this.p3.yzz), this.p3.zyx)));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate random vec3 value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec3 value\r\n *\r\n * @public\r\n */\r\nexport function hash23(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash23';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(pb.vec3(0.1031, 0.103, 0.0973), this.p.xyx));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xxy, this.p3.yzz), this.p3.zyx)));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate random vec3 value from a vec3\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec3 value\r\n *\r\n * @public\r\n */\r\nexport function hash33(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash33';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(pb.vec3(0.1031, 0.103, 0.0973), this.p));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xxy, this.p3.yzz), this.p3.zyx)));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate uniform distributed white noise from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function whiteNoise(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_whiteNoise';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$return(pb.fract(pb.mul(pb.sin(pb.dot(this.p, pb.vec2(12.9898, 78.233))), 43758.5453)));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate value noise from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function valueNoise(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_valueNoise';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$l.i = pb.floor(this.p);\r\n this.$l.f = pb.fract(this.p);\r\n this.f = pb.mul(this.f, this.f, pb.sub(pb.vec2(3), pb.mul(this.f, 2)));\r\n this.$l.c0 = this.i;\r\n this.$l.c1 = pb.add(this.i, pb.vec2(1, 0));\r\n this.$l.c2 = pb.add(this.i, pb.vec2(0, 1));\r\n this.$l.c3 = pb.add(this.i, pb.vec2(1));\r\n this.$l.r0 = whiteNoise(this, this.c0);\r\n this.$l.r1 = whiteNoise(this, this.c1);\r\n this.$l.r2 = whiteNoise(this, this.c2);\r\n this.$l.r3 = whiteNoise(this, this.c3);\r\n this.$return(pb.mix(pb.mix(this.r0, this.r1, this.f.x), pb.mix(this.r2, this.r3, this.f.x), this.f.y));\r\n });\r\n return scope[funcName](p);\r\n}\r\n\r\n/**\r\n * Generate random float value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function gradient(scope: PBInsideFunctionScope, p: PBShaderExp, t: PBShaderExp | number) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_gradient2f';\r\n pb.func(funcName, [pb.vec2('p'), pb.float('t')], function () {\r\n this.$l.rand = hash21(this, this.p);\r\n this.$l.angle = pb.mul(pb.add(this.t, Math.PI * 2), this.rand);\r\n this.$return(pb.vec2(pb.cos(this.angle), pb.sin(this.angle)));\r\n });\r\n return scope[funcName](p, t);\r\n}\r\n\r\n/**\r\n * Generate a float perlin noise value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - 2d vector\r\n * @returns a float noise value\r\n *\r\n * @public\r\n */\r\nexport function perlinNoise2D(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n return perlinNoise3D(scope, scope.$builder.vec3(p, 0));\r\n}\r\n\r\n/**\r\n * Generate a float perlin noise value from a vec3\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - 3d vector\r\n * @returns a float noise value\r\n *\r\n * @public\r\n */\r\nexport function perlinNoise3D(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcNameNoise = 'Z_perlinNoise3D';\r\n pb.func(funcNameNoise, [pb.vec3('p')], function () {\r\n this.i = pb.floor(this.p.xy);\r\n this.f = pb.sub(this.p.xy, this.i);\r\n this.u = pb.mul(this.f, this.f, pb.sub(3, pb.mul(this.f, 2)));\r\n this.h1 = gradient(this, this.i, this.p.z);\r\n this.h2 = gradient(this, pb.add(this.i, pb.vec2(1, 0)), this.p.z);\r\n this.h3 = gradient(this, pb.add(this.i, pb.vec2(0, 1)), this.p.z);\r\n this.h4 = gradient(this, pb.add(this.i, pb.vec2(1, 1)), this.p.z);\r\n this.$l.tl = pb.dot(this.h1, this.f);\r\n this.$l.tr = pb.dot(this.h2, pb.sub(this.f, pb.vec2(1, 0)));\r\n this.$l.bl = pb.dot(this.h3, pb.sub(this.f, pb.vec2(0, 1)));\r\n this.$l.br = pb.dot(this.h4, pb.sub(this.f, pb.vec2(1, 1)));\r\n this.$l.noise = pb.mix(pb.mix(this.tl, this.tr, this.u.x), pb.mix(this.bl, this.br, this.u.x), this.u.y);\r\n this.noise = pb.add(pb.mul(this.noise, 0.5), 0.5);\r\n this.$return(this.noise);\r\n });\r\n return scope[funcNameNoise](p);\r\n}\r\n\r\n/**\r\n * worley 3d noise\r\n *\r\n * @param scope - current shader scope\r\n * @param uv - uv coordinate\r\n * @param freq - frequency\r\n *\r\n * @returns worley noise value\r\n *\r\n * @public\r\n */\r\nexport function worleyNoise(\r\n scope: PBInsideFunctionScope,\r\n uv: PBShaderExp,\r\n freq: PBShaderExp | number\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcNameHash = 'Z_worleyHash';\r\n // https://www.shadertoy.com/view/4sc3z2\r\n pb.func(funcNameHash, [pb.vec3('p')], function () {\r\n if (1) {\r\n this.$l.mod3 = pb.vec3(0.1031, 0.11369, 0.13787);\r\n this.$l.p3 = pb.fract(pb.mul(this.p, this.mod3));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yxz, pb.vec3(19.19))));\r\n this.$return(\r\n pb.sub(\r\n pb.mul(\r\n pb.fract(\r\n pb.vec3(\r\n pb.mul(pb.add(this.p3.x, this.p3.y), this.p3.z),\r\n pb.mul(pb.add(this.p3.x, this.p3.z), this.p3.y),\r\n pb.mul(pb.add(this.p3.y, this.p3.z), this.p3.x)\r\n )\r\n ),\r\n 2\r\n ),\r\n 1\r\n )\r\n );\r\n } else {\r\n this.$l.UI0 = pb.uint(1597334673);\r\n this.$l.UI1 = pb.uint(3812015801);\r\n this.$l.UI2 = pb.uvec2(this.UI0, this.UI1);\r\n this.$l.UI3 = pb.uvec3(this.UI0, this.UI1, pb.uint(2798796415));\r\n this.$l.UIF = pb.div(1, pb.float(pb.uint(0xffffffff)));\r\n this.$l.q = pb.mul(pb.uvec3(pb.ivec3(this.p)), this.UI3);\r\n this.q = pb.mul(pb.compXor(pb.compXor(this.q.x, this.q.y), this.q.z), this.UI3);\r\n this.$return(pb.sub(pb.mul(pb.vec3(this.q), this.UIF, 2), pb.vec3(1)));\r\n }\r\n });\r\n const funcNameNoise = 'Z_worleyNoise';\r\n pb.func(funcNameNoise, [pb.vec3('uv'), pb.float('freq')], function () {\r\n this.$l.id = pb.floor(this.uv);\r\n this.$l.p = pb.fract(this.uv);\r\n this.$l.minDist = pb.float(10000);\r\n this.$for(pb.int('x'), -1, 2, function () {\r\n this.$for(pb.int('y'), -1, 2, function () {\r\n this.$for(pb.int('z'), -1, 2, function () {\r\n this.$l.offset = pb.vec3(pb.float(this.x), pb.float(this.y), pb.float(this.z));\r\n\r\n if (1 /* tilable */) {\r\n this.$l.h = pb.add(\r\n pb.mul(this[funcNameHash](pb.mod(pb.add(this.id, this.offset), pb.vec3(this.freq))), 0.4),\r\n pb.vec3(0.3)\r\n );\r\n } else {\r\n this.$l.h = pb.add(pb.mul(this[funcNameHash](pb.add(this.id, this.offset)), 0.4), pb.vec3(0.3));\r\n }\r\n this.h = pb.add(this.h, this.offset);\r\n this.$l.d = pb.sub(this.p, this.h);\r\n this.minDist = pb.min(this.minDist, pb.dot(this.d, this.d));\r\n });\r\n });\r\n });\r\n this.$return(pb.sub(1, this.minDist));\r\n });\r\n return pb.getGlobalScope()[funcNameNoise](uv, freq);\r\n}\r\n/**\r\n * Calculate worley FBM\r\n *\r\n * @param scope - current shader scope\r\n * @param p - noise coordinate\r\n * @param freq - frequency\r\n * @returns worley FBM value\r\n *\r\n * @public\r\n */\r\nexport function worleyFBM(\r\n scope: PBInsideFunctionScope,\r\n p: PBShaderExp,\r\n freq: PBShaderExp | number\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_worleyFBM';\r\n pb.func(funcName, [pb.vec3('p'), pb.float('freq')], function () {\r\n this.$l.n1 = worleyNoise(this, pb.mul(this.p, this.freq), this.freq);\r\n this.$l.n2 = worleyNoise(this, pb.mul(this.p, this.freq, 2), pb.mul(this.freq, 2));\r\n this.$l.n3 = worleyNoise(this, pb.mul(this.p, this.freq, 4), pb.mul(this.freq, 4));\r\n this.$l.fbm = pb.add(pb.mul(this.n1, 0.625), pb.mul(this.n2, 0.25), pb.mul(this.n3, 0.125));\r\n this.$return(pb.max(pb.sub(pb.mul(this.fbm, 1.1), pb.vec3(0.1)), pb.vec3(0)));\r\n });\r\n return pb.getGlobalScope()[funcName](p, freq);\r\n}\r\n/**\r\n * Calculate 3d noise by a 3d position\r\n *\r\n * @param scope - current shader scope\r\n * @param p - 3d position at where to calculate noise\r\n * @returns noise value between 0 and 1\r\n *\r\n * @public\r\n */\r\nexport function noise3D(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_noise3d';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p, 0.1031));\r\n this.$l.p3 = pb.add(this.p3, pb.vec3(pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33)))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.x, this.p3.y), this.p3.z)));\r\n });\r\n return pb.getGlobalScope()[funcName](p);\r\n}\r\n/**\r\n * Calculate smooth 3d noise by a 3d position\r\n *\r\n * @param scope - current shader scope\r\n * @param p - 3d position at where to calculate noise\r\n * @returns noise value between 0 and 1\r\n *\r\n * @public\r\n */\r\nexport function smoothNoise3D(scope: PBInsideFunctionScope, p: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_smoothNoise3D';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.cell = pb.floor(this.p);\r\n this.$l.local = pb.fract(this.p);\r\n this.$l.local = pb.mul(this.local, pb.mul(this.local, pb.sub(pb.vec3(3), pb.mul(this.local, 2))));\r\n this.$l.ldb = noise3D(this, this.cell);\r\n this.$l.rdb = noise3D(this, pb.add(this.cell, pb.vec3(1, 0, 0)));\r\n this.$l.ldf = noise3D(this, pb.add(this.cell, pb.vec3(0, 0, 1)));\r\n this.$l.rdf = noise3D(this, pb.add(this.cell, pb.vec3(1, 0, 1)));\r\n this.$l.lub = noise3D(this, pb.add(this.cell, pb.vec3(0, 1, 0)));\r\n this.$l.rub = noise3D(this, pb.add(this.cell, pb.vec3(1, 1, 0)));\r\n this.$l.luf = noise3D(this, pb.add(this.cell, pb.vec3(0, 1, 1)));\r\n this.$l.ruf = noise3D(this, pb.add(this.cell, pb.vec3(1, 1, 1)));\r\n this.$return(\r\n pb.mix(\r\n pb.mix(\r\n pb.mix(this.ldb, this.rdb, this.local.x),\r\n pb.mix(this.ldf, this.rdf, this.local.x),\r\n this.local.z\r\n ),\r\n pb.mix(\r\n pb.mix(this.lub, this.rub, this.local.x),\r\n pb.mix(this.luf, this.ruf, this.local.x),\r\n this.local.z\r\n ),\r\n this.local.y\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](p);\r\n}\r\n\r\n/**\r\n * Calculate interleaved gradient noise\r\n *\r\n * @param scope - current shader scope\r\n * @param c - 2d position at where to calculate noise\r\n * @returns noise value\r\n *\r\n * @public\r\n */\r\nexport function interleavedGradientNoise(scope: PBInsideFunctionScope, c: PBShaderExp): PBShaderExp {\r\n const pb = scope.$builder;\r\n const x = 0.06711056;\r\n const y = 0.00583715;\r\n const z = 52.9829189;\r\n return pb.fract(pb.mul(z, pb.fract(pb.dot(c, pb.vec2(x, y)))));\r\n}\r\n"],"names":["hash11","scope","p","pb","$builder","funcName","func","float","$l","x","fract","mul","add","$return","hash21","vec2","p3","xyx","dot","yzx","vec3","y","z","hash31","zyx","hash12","xx","yz","zy","hash22","hash32","hash13","xxy","yzz","hash23","hash33","whiteNoise","sin","valueNoise","i","floor","f","sub","c0","c1","c2","c3","r0","r1","r2","r3","mix","gradient","t","rand","angle","Math","PI","cos","perlinNoise2D","perlinNoise3D","funcNameNoise","xy","u","h1","h2","h3","h4","tl","tr","bl","br","noise","worleyNoise","uv","freq","funcNameHash","mod3","yxz","id","minDist","$for","int","offset","h","mod","d","min","getGlobalScope","worleyFBM","n1","n2","n3","fbm","max","noise3D","smoothNoise3D","cell","local","ldb","rdb","ldf","rdf","lub","rub","luf","ruf","interleavedGradientNoise","c"],"mappings":"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"}
1
+ {"version":3,"file":"noise.js","sources":["../../src/shaders/noise.ts"],"sourcesContent":["import type { PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\n\r\n/**\r\n * Generate random float value from a float\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function hash11(scope: PBInsideFunctionScope, p: number | PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash11';\r\n pb.func(funcName, [pb.float('p')], function () {\r\n this.$l.x = pb.fract(pb.mul(this.p, 0.1031));\r\n this.x = pb.mul(this.x, pb.add(this.x, 33.33));\r\n this.x = pb.mul(this.x, pb.add(this.x, this.x));\r\n this.$return(pb.fract(this.x));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate random float value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function hash21(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash21';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p.xyx, 0.1031));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.x, this.p3.y), this.p3.z)));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate random float value from a vec3\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function hash31(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash31';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p, 0.1031));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.zyx, pb.vec3(31.32))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.x, this.p3.y), this.p3.z)));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate random vec2 value from a float\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec2 value\r\n *\r\n * @public\r\n */\r\nexport function hash12(scope: PBInsideFunctionScope, p: number | PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash12';\r\n pb.func(funcName, [pb.float('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(pb.vec3(0.1031, 0.103, 0.0973), this.p));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xx, this.p3.yz), this.p3.zy)));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate random vec2 value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec2 value\r\n *\r\n * @public\r\n */\r\nexport function hash22(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash22';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p.xyx, pb.vec3(0.1031, 0.103, 0.0973)));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xx, this.p3.yz), this.p3.zy)));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate random vec2 value from a vec3\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec2 value\r\n *\r\n * @public\r\n */\r\nexport function hash32(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash32';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p, pb.vec3(0.1031, 0.103, 0.0973)));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xx, this.p3.yz), this.p3.zy)));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate random vec3 value from a float\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec3 value\r\n *\r\n * @public\r\n */\r\nexport function hash13(scope: PBInsideFunctionScope, p: number | PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash13';\r\n pb.func(funcName, [pb.float('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(pb.vec3(0.1031, 0.103, 0.0973), this.p));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xxy, this.p3.yzz), this.p3.zyx)));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate random vec3 value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec3 value\r\n *\r\n * @public\r\n */\r\nexport function hash23(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash23';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(pb.vec3(0.1031, 0.103, 0.0973), this.p.xyx));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xxy, this.p3.yzz), this.p3.zyx)));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate random vec3 value from a vec3\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random vec3 value\r\n *\r\n * @public\r\n */\r\nexport function hash33(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_hash33';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(pb.vec3(0.1031, 0.103, 0.0973), this.p));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.xxy, this.p3.yzz), this.p3.zyx)));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate uniform distributed white noise from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function whiteNoise(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_whiteNoise';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$return(pb.fract(pb.mul(pb.sin(pb.dot(this.p, pb.vec2(12.9898, 78.233))), 43758.5453)));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate value noise from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function valueNoise(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_valueNoise';\r\n pb.func(funcName, [pb.vec2('p')], function () {\r\n this.$l.i = pb.floor(this.p);\r\n this.$l.f = pb.fract(this.p);\r\n this.f = pb.mul(this.f, this.f, pb.sub(pb.vec2(3), pb.mul(this.f, 2)));\r\n this.$l.c0 = this.i;\r\n this.$l.c1 = pb.add(this.i, pb.vec2(1, 0));\r\n this.$l.c2 = pb.add(this.i, pb.vec2(0, 1));\r\n this.$l.c3 = pb.add(this.i, pb.vec2(1));\r\n this.$l.r0 = whiteNoise(this, this.c0);\r\n this.$l.r1 = whiteNoise(this, this.c1);\r\n this.$l.r2 = whiteNoise(this, this.c2);\r\n this.$l.r3 = whiteNoise(this, this.c3);\r\n this.$return(pb.mix(pb.mix(this.r0, this.r1, this.f.x), pb.mix(this.r2, this.r3, this.f.x), this.f.y));\r\n });\r\n return scope[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate random float value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - random seed\r\n * @returns random float value\r\n *\r\n * @public\r\n */\r\nexport function gradient(scope: PBInsideFunctionScope, p: PBShaderExp, t: PBShaderExp | number) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_gradient2f';\r\n pb.func(funcName, [pb.vec2('p'), pb.float('t')], function () {\r\n this.$l.rand = hash21(this, this.p);\r\n this.$l.angle = pb.mul(pb.add(this.t, Math.PI * 2), this.rand);\r\n this.$return(pb.vec2(pb.cos(this.angle), pb.sin(this.angle)));\r\n });\r\n return scope[funcName](p, t) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Generate a float perlin noise value from a vec2\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - 2d vector\r\n * @returns a float noise value\r\n *\r\n * @public\r\n */\r\nexport function perlinNoise2D(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n return perlinNoise3D(scope, scope.$builder.vec3(p, 0));\r\n}\r\n\r\n/**\r\n * Generate a float perlin noise value from a vec3\r\n *\r\n * @param scope - Current shader scope\r\n * @param p - 3d vector\r\n * @returns a float noise value\r\n *\r\n * @public\r\n */\r\nexport function perlinNoise3D(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcNameNoise = 'Z_perlinNoise3D';\r\n pb.func(funcNameNoise, [pb.vec3('p')], function () {\r\n this.i = pb.floor(this.p.xy);\r\n this.f = pb.sub(this.p.xy, this.i);\r\n this.u = pb.mul(this.f, this.f, pb.sub(3, pb.mul(this.f, 2)));\r\n this.h1 = gradient(this, this.i, this.p.z);\r\n this.h2 = gradient(this, pb.add(this.i, pb.vec2(1, 0)), this.p.z);\r\n this.h3 = gradient(this, pb.add(this.i, pb.vec2(0, 1)), this.p.z);\r\n this.h4 = gradient(this, pb.add(this.i, pb.vec2(1, 1)), this.p.z);\r\n this.$l.tl = pb.dot(this.h1, this.f);\r\n this.$l.tr = pb.dot(this.h2, pb.sub(this.f, pb.vec2(1, 0)));\r\n this.$l.bl = pb.dot(this.h3, pb.sub(this.f, pb.vec2(0, 1)));\r\n this.$l.br = pb.dot(this.h4, pb.sub(this.f, pb.vec2(1, 1)));\r\n this.$l.noise = pb.mix(pb.mix(this.tl, this.tr, this.u.x), pb.mix(this.bl, this.br, this.u.x), this.u.y);\r\n this.noise = pb.add(pb.mul(this.noise, 0.5), 0.5);\r\n this.$return(this.noise);\r\n });\r\n return scope[funcNameNoise](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * worley 3d noise\r\n *\r\n * @param scope - current shader scope\r\n * @param uv - uv coordinate\r\n * @param freq - frequency\r\n *\r\n * @returns worley noise value\r\n *\r\n * @public\r\n */\r\nexport function worleyNoise(scope: PBInsideFunctionScope, uv: PBShaderExp, freq: PBShaderExp | number) {\r\n const pb = scope.$builder;\r\n const funcNameHash = 'Z_worleyHash';\r\n // https://www.shadertoy.com/view/4sc3z2\r\n pb.func(funcNameHash, [pb.vec3('p')], function () {\r\n if (1) {\r\n this.$l.mod3 = pb.vec3(0.1031, 0.11369, 0.13787);\r\n this.$l.p3 = pb.fract(pb.mul(this.p, this.mod3));\r\n this.p3 = pb.add(this.p3, pb.dot(this.p3, pb.add(this.p3.yxz, pb.vec3(19.19))));\r\n this.$return(\r\n pb.sub(\r\n pb.mul(\r\n pb.fract(\r\n pb.vec3(\r\n pb.mul(pb.add(this.p3.x, this.p3.y), this.p3.z),\r\n pb.mul(pb.add(this.p3.x, this.p3.z), this.p3.y),\r\n pb.mul(pb.add(this.p3.y, this.p3.z), this.p3.x)\r\n )\r\n ),\r\n 2\r\n ),\r\n 1\r\n )\r\n );\r\n } else {\r\n this.$l.UI0 = pb.uint(1597334673);\r\n this.$l.UI1 = pb.uint(3812015801);\r\n this.$l.UI2 = pb.uvec2(this.UI0, this.UI1);\r\n this.$l.UI3 = pb.uvec3(this.UI0, this.UI1, pb.uint(2798796415));\r\n this.$l.UIF = pb.div(1, pb.float(pb.uint(0xffffffff)));\r\n this.$l.q = pb.mul(pb.uvec3(pb.ivec3(this.p)), this.UI3);\r\n this.q = pb.mul(pb.compXor(pb.compXor(this.q.x, this.q.y), this.q.z), this.UI3);\r\n this.$return(pb.sub(pb.mul(pb.vec3(this.q), this.UIF, 2), pb.vec3(1)));\r\n }\r\n });\r\n const funcNameNoise = 'Z_worleyNoise';\r\n pb.func(funcNameNoise, [pb.vec3('uv'), pb.float('freq')], function () {\r\n this.$l.id = pb.floor(this.uv);\r\n this.$l.p = pb.fract(this.uv);\r\n this.$l.minDist = pb.float(10000);\r\n this.$for(pb.int('x'), -1, 2, function () {\r\n this.$for(pb.int('y'), -1, 2, function () {\r\n this.$for(pb.int('z'), -1, 2, function () {\r\n this.$l.offset = pb.vec3(pb.float(this.x), pb.float(this.y), pb.float(this.z));\r\n\r\n if (1 /* tilable */) {\r\n this.$l.h = pb.add(\r\n pb.mul(this[funcNameHash](pb.mod(pb.add(this.id, this.offset), pb.vec3(this.freq))), 0.4),\r\n pb.vec3(0.3)\r\n );\r\n } else {\r\n this.$l.h = pb.add(pb.mul(this[funcNameHash](pb.add(this.id, this.offset)), 0.4), pb.vec3(0.3));\r\n }\r\n this.h = pb.add(this.h, this.offset);\r\n this.$l.d = pb.sub(this.p, this.h);\r\n this.minDist = pb.min(this.minDist, pb.dot(this.d, this.d));\r\n });\r\n });\r\n });\r\n this.$return(pb.sub(1, this.minDist));\r\n });\r\n return pb.getGlobalScope()[funcNameNoise](uv, freq) as PBShaderExp;\r\n}\r\n/**\r\n * Calculate worley FBM\r\n *\r\n * @param scope - current shader scope\r\n * @param p - noise coordinate\r\n * @param freq - frequency\r\n * @returns worley FBM value\r\n *\r\n * @public\r\n */\r\nexport function worleyFBM(scope: PBInsideFunctionScope, p: PBShaderExp, freq: PBShaderExp | number) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_worleyFBM';\r\n pb.func(funcName, [pb.vec3('p'), pb.float('freq')], function () {\r\n this.$l.n1 = worleyNoise(this, pb.mul(this.p, this.freq), this.freq);\r\n this.$l.n2 = worleyNoise(this, pb.mul(this.p, this.freq, 2), pb.mul(this.freq, 2));\r\n this.$l.n3 = worleyNoise(this, pb.mul(this.p, this.freq, 4), pb.mul(this.freq, 4));\r\n this.$l.fbm = pb.add(pb.mul(this.n1, 0.625), pb.mul(this.n2, 0.25), pb.mul(this.n3, 0.125));\r\n this.$return(pb.max(pb.sub(pb.mul(this.fbm, 1.1), pb.vec3(0.1)), pb.vec3(0)));\r\n });\r\n return pb.getGlobalScope()[funcName](p, freq) as PBShaderExp;\r\n}\r\n/**\r\n * Calculate 3d noise by a 3d position\r\n *\r\n * @param scope - current shader scope\r\n * @param p - 3d position at where to calculate noise\r\n * @returns noise value between 0 and 1\r\n *\r\n * @public\r\n */\r\nexport function noise3D(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_noise3d';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.p3 = pb.fract(pb.mul(this.p, 0.1031));\r\n this.$l.p3 = pb.add(this.p3, pb.vec3(pb.dot(this.p3, pb.add(this.p3.yzx, pb.vec3(33.33)))));\r\n this.$return(pb.fract(pb.mul(pb.add(this.p3.x, this.p3.y), this.p3.z)));\r\n });\r\n return pb.getGlobalScope()[funcName](p) as PBShaderExp;\r\n}\r\n/**\r\n * Calculate smooth 3d noise by a 3d position\r\n *\r\n * @param scope - current shader scope\r\n * @param p - 3d position at where to calculate noise\r\n * @returns noise value between 0 and 1\r\n *\r\n * @public\r\n */\r\nexport function smoothNoise3D(scope: PBInsideFunctionScope, p: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const funcName = 'Z_smoothNoise3D';\r\n pb.func(funcName, [pb.vec3('p')], function () {\r\n this.$l.cell = pb.floor(this.p);\r\n this.$l.local = pb.fract(this.p);\r\n this.$l.local = pb.mul(this.local, pb.mul(this.local, pb.sub(pb.vec3(3), pb.mul(this.local, 2))));\r\n this.$l.ldb = noise3D(this, this.cell);\r\n this.$l.rdb = noise3D(this, pb.add(this.cell, pb.vec3(1, 0, 0)));\r\n this.$l.ldf = noise3D(this, pb.add(this.cell, pb.vec3(0, 0, 1)));\r\n this.$l.rdf = noise3D(this, pb.add(this.cell, pb.vec3(1, 0, 1)));\r\n this.$l.lub = noise3D(this, pb.add(this.cell, pb.vec3(0, 1, 0)));\r\n this.$l.rub = noise3D(this, pb.add(this.cell, pb.vec3(1, 1, 0)));\r\n this.$l.luf = noise3D(this, pb.add(this.cell, pb.vec3(0, 1, 1)));\r\n this.$l.ruf = noise3D(this, pb.add(this.cell, pb.vec3(1, 1, 1)));\r\n this.$return(\r\n pb.mix(\r\n pb.mix(\r\n pb.mix(this.ldb, this.rdb, this.local.x),\r\n pb.mix(this.ldf, this.rdf, this.local.x),\r\n this.local.z\r\n ),\r\n pb.mix(\r\n pb.mix(this.lub, this.rub, this.local.x),\r\n pb.mix(this.luf, this.ruf, this.local.x),\r\n this.local.z\r\n ),\r\n this.local.y\r\n )\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](p) as PBShaderExp;\r\n}\r\n\r\n/**\r\n * Calculate interleaved gradient noise\r\n *\r\n * @param scope - current shader scope\r\n * @param c - 2d position at where to calculate noise\r\n * @returns noise value\r\n *\r\n * @public\r\n */\r\nexport function interleavedGradientNoise(scope: PBInsideFunctionScope, c: PBShaderExp) {\r\n const pb = scope.$builder;\r\n const x = 0.06711056;\r\n const y = 0.00583715;\r\n const z = 52.9829189;\r\n return pb.fract(pb.mul(z, pb.fract(pb.dot(c, pb.vec2(x, y))))) as PBShaderExp;\r\n}\r\n"],"names":["hash11","scope","p","pb","$builder","funcName","func","float","$l","x","fract","mul","add","$return","hash21","vec2","p3","xyx","dot","yzx","vec3","y","z","hash31","zyx","hash12","xx","yz","zy","hash22","hash32","hash13","xxy","yzz","hash23","hash33","whiteNoise","sin","valueNoise","i","floor","f","sub","c0","c1","c2","c3","r0","r1","r2","r3","mix","gradient","t","rand","angle","Math","PI","cos","perlinNoise2D","perlinNoise3D","funcNameNoise","xy","u","h1","h2","h3","h4","tl","tr","bl","br","noise","worleyNoise","uv","freq","funcNameHash","mod3","yxz","id","minDist","$for","int","offset","h","mod","d","min","getGlobalScope","worleyFBM","n1","n2","n3","fbm","max","noise3D","smoothNoise3D","cell","local","ldb","rdb","ldf","rdf","lub","rub","luf","ruf","interleavedGradientNoise","c"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pbr.js","sources":["../../src/shaders/pbr.ts"],"sourcesContent":["import type { PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\n\r\n/** @internal */\r\nexport function fresnelSchlick(\r\n scope: PBInsideFunctionScope,\r\n VdotH: PBShaderExp,\r\n f0: PBShaderExp,\r\n f90: PBShaderExp\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'fresnelSchlick';\r\n pb.func(funcName, [pb.float('VdotH'), pb.vec3('F0'), pb.vec3('F90')], function () {\r\n this.$return(\r\n pb.add(this.F0, pb.mul(pb.sub(this.F90, this.F0), pb.pow(pb.clamp(pb.sub(1, this.VdotH), 0, 1), 5)))\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](VdotH, f0, f90);\r\n}\r\n\r\n/** @internal */\r\nexport function distributionGGX(\r\n scope: PBInsideFunctionScope,\r\n NdotH: PBShaderExp,\r\n alphaRoughness: PBShaderExp\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'distributionGGX';\r\n pb.func(funcName, [pb.float('NdotH'), pb.float('roughness')], function () {\r\n this.$l.a2 = pb.mul(this.roughness, this.roughness);\r\n this.$l.NdotH2 = pb.mul(this.NdotH, this.NdotH);\r\n this.$l.num = this.a2;\r\n this.$l.denom = pb.add(pb.mul(this.NdotH2, pb.sub(this.a2, 1)), 1);\r\n this.denom = pb.mul(pb.mul(3.14159265, this.denom), this.denom);\r\n this.$return(pb.div(this.num, this.denom));\r\n });\r\n return pb.getGlobalScope()[funcName](NdotH, alphaRoughness);\r\n}\r\n\r\n/** @internal */\r\nexport function visGGX(\r\n scope: PBInsideFunctionScope,\r\n NdotV: PBShaderExp,\r\n NdotL: PBShaderExp,\r\n alphaRoughness: PBShaderExp\r\n): PBShaderExp {\r\n const pb = scope.$builder;\r\n const funcName = 'visGGX';\r\n pb.func(funcName, [pb.float('NdotV'), pb.float('NdotL'), pb.float('roughness')], function () {\r\n this.$l.a2 = pb.mul(this.roughness, this.roughness);\r\n this.$l.ggxV = pb.mul(\r\n this.NdotL,\r\n pb.sqrt(pb.add(pb.mul(this.NdotV, this.NdotV, pb.sub(1, this.a2)), this.a2))\r\n );\r\n this.$l.ggxL = pb.mul(\r\n this.NdotV,\r\n pb.sqrt(pb.add(pb.mul(this.NdotL, this.NdotL, pb.sub(1, this.a2)), this.a2))\r\n );\r\n this.$l.ggx = pb.add(this.ggxV, this.ggxL);\r\n this.$if(pb.greaterThan(this.ggx, 0), function () {\r\n this.$return(pb.div(0.5, this.ggx));\r\n }).$else(function () {\r\n this.$return(pb.float(0));\r\n });\r\n });\r\n return pb.getGlobalScope()[funcName](NdotV, NdotL, alphaRoughness);\r\n}\r\n"],"names":["fresnelSchlick","scope","VdotH","f0","f90","pb","$builder","funcName","func","float","vec3","$return","add","F0","mul","sub","F90","pow","clamp","getGlobalScope","distributionGGX","NdotH","alphaRoughness","$l","a2","roughness","NdotH2","num","denom","div","visGGX","NdotV","NdotL","ggxV","sqrt","ggxL","ggx","$if","greaterThan","$else"],"mappings":"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"}
1
+ {"version":3,"file":"pbr.js","sources":["../../src/shaders/pbr.ts"],"sourcesContent":["import type { PBInsideFunctionScope, PBShaderExp } from '@zephyr3d/device';\r\n\r\n/** @internal */\r\nexport function fresnelSchlick(\r\n scope: PBInsideFunctionScope,\r\n VdotH: PBShaderExp,\r\n f0: PBShaderExp,\r\n f90: PBShaderExp\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'fresnelSchlick';\r\n pb.func(funcName, [pb.float('VdotH'), pb.vec3('F0'), pb.vec3('F90')], function () {\r\n this.$return(\r\n pb.add(this.F0, pb.mul(pb.sub(this.F90, this.F0), pb.pow(pb.clamp(pb.sub(1, this.VdotH), 0, 1), 5)))\r\n );\r\n });\r\n return pb.getGlobalScope()[funcName](VdotH, f0, f90) as PBShaderExp;\r\n}\r\n\r\n/** @internal */\r\nexport function distributionGGX(\r\n scope: PBInsideFunctionScope,\r\n NdotH: PBShaderExp,\r\n alphaRoughness: PBShaderExp\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'distributionGGX';\r\n pb.func(funcName, [pb.float('NdotH'), pb.float('roughness')], function () {\r\n this.$l.a2 = pb.mul(this.roughness, this.roughness);\r\n this.$l.NdotH2 = pb.mul(this.NdotH, this.NdotH);\r\n this.$l.num = this.a2;\r\n this.$l.denom = pb.add(pb.mul(this.NdotH2, pb.sub(this.a2, 1)), 1);\r\n this.denom = pb.mul(pb.mul(3.14159265, this.denom), this.denom);\r\n this.$return(pb.div(this.num, this.denom));\r\n });\r\n return pb.getGlobalScope()[funcName](NdotH, alphaRoughness) as PBShaderExp;\r\n}\r\n\r\n/** @internal */\r\nexport function visGGX(\r\n scope: PBInsideFunctionScope,\r\n NdotV: PBShaderExp,\r\n NdotL: PBShaderExp,\r\n alphaRoughness: PBShaderExp\r\n) {\r\n const pb = scope.$builder;\r\n const funcName = 'visGGX';\r\n pb.func(funcName, [pb.float('NdotV'), pb.float('NdotL'), pb.float('roughness')], function () {\r\n this.$l.a2 = pb.mul(this.roughness, this.roughness);\r\n this.$l.ggxV = pb.mul(\r\n this.NdotL,\r\n pb.sqrt(pb.add(pb.mul(this.NdotV, this.NdotV, pb.sub(1, this.a2)), this.a2))\r\n );\r\n this.$l.ggxL = pb.mul(\r\n this.NdotV,\r\n pb.sqrt(pb.add(pb.mul(this.NdotL, this.NdotL, pb.sub(1, this.a2)), this.a2))\r\n );\r\n this.$l.ggx = pb.add(this.ggxV, this.ggxL);\r\n this.$if(pb.greaterThan(this.ggx, 0), function () {\r\n this.$return(pb.div(0.5, this.ggx));\r\n }).$else(function () {\r\n this.$return(pb.float(0));\r\n });\r\n });\r\n return pb.getGlobalScope()[funcName](NdotV, NdotL, alphaRoughness) as PBShaderExp;\r\n}\r\n"],"names":["fresnelSchlick","scope","VdotH","f0","f90","pb","$builder","funcName","func","float","vec3","$return","add","F0","mul","sub","F90","pow","clamp","getGlobalScope","distributionGGX","NdotH","alphaRoughness","$l","a2","roughness","NdotH2","num","denom","div","visGGX","NdotV","NdotL","ggxV","sqrt","ggxL","ggx","$if","greaterThan","$else"],"mappings":"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"}