@zephyr3d/scene 0.5.0 → 0.6.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 (198) hide show
  1. package/dist/animation/animationset.js +37 -37
  2. package/dist/animation/morphtrack.js +7 -5
  3. package/dist/animation/morphtrack.js.map +1 -1
  4. package/dist/animation/skeleton.js +11 -9
  5. package/dist/animation/skeleton.js.map +1 -1
  6. package/dist/asset/assetmanager.js +2 -2
  7. package/dist/asset/loaders/gltf/gltf_loader.js +7 -3
  8. package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
  9. package/dist/asset/loaders/image/webimage_loader.js +16 -0
  10. package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
  11. package/dist/asset/model.js +3 -9
  12. package/dist/asset/model.js.map +1 -1
  13. package/dist/blitter/bilateralblur.js +222 -0
  14. package/dist/{render/temporalcache.js.map → blitter/bilateralblur.js.map} +1 -1
  15. package/dist/blitter/blitter.js +7 -1
  16. package/dist/blitter/blitter.js.map +1 -1
  17. package/dist/blitter/depthlimitedgaussion.js +96 -39
  18. package/dist/blitter/depthlimitedgaussion.js.map +1 -1
  19. package/dist/blitter/gaussianblur.js +21 -21
  20. package/dist/camera/camera.js +142 -1
  21. package/dist/camera/camera.js.map +1 -1
  22. package/dist/index.d.ts +1178 -745
  23. package/dist/index.js +11 -6
  24. package/dist/index.js.map +1 -1
  25. package/dist/material/blinn.js +9 -3
  26. package/dist/material/blinn.js.map +1 -1
  27. package/dist/material/lambert.js +6 -2
  28. package/dist/material/lambert.js.map +1 -1
  29. package/dist/material/material.js +3 -1
  30. package/dist/material/material.js.map +1 -1
  31. package/dist/material/meshmaterial.js +73 -33
  32. package/dist/material/meshmaterial.js.map +1 -1
  33. package/dist/material/mixins/albedocolor.js +5 -4
  34. package/dist/material/mixins/albedocolor.js.map +1 -1
  35. package/dist/material/mixins/lightmodel/blinnphong.js +17 -7
  36. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  37. package/dist/material/mixins/lightmodel/lambert.js +5 -5
  38. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +13 -4
  39. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  40. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +13 -4
  41. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  42. package/dist/material/mixins/pbr/common.js +27 -15
  43. package/dist/material/mixins/pbr/common.js.map +1 -1
  44. package/dist/material/pbrmr.js +14 -3
  45. package/dist/material/pbrmr.js.map +1 -1
  46. package/dist/material/pbrsg.js +14 -3
  47. package/dist/material/pbrsg.js.map +1 -1
  48. package/dist/material/shader/helper.js +36 -21
  49. package/dist/material/shader/helper.js.map +1 -1
  50. package/dist/posteffect/bloom.js +1 -10
  51. package/dist/posteffect/bloom.js.map +1 -1
  52. package/dist/posteffect/compositor.js +43 -24
  53. package/dist/posteffect/compositor.js.map +1 -1
  54. package/dist/posteffect/fxaa.js +3 -11
  55. package/dist/posteffect/fxaa.js.map +1 -1
  56. package/dist/posteffect/grayscale.js +3 -11
  57. package/dist/posteffect/grayscale.js.map +1 -1
  58. package/dist/posteffect/posteffect.js +4 -0
  59. package/dist/posteffect/posteffect.js.map +1 -1
  60. package/dist/posteffect/sao.js +44 -24
  61. package/dist/posteffect/sao.js.map +1 -1
  62. package/dist/posteffect/ssr.js +536 -0
  63. package/dist/{material/lit.js.map → posteffect/ssr.js.map} +1 -1
  64. package/dist/posteffect/tonemap.js +3 -11
  65. package/dist/posteffect/tonemap.js.map +1 -1
  66. package/dist/posteffect/water.js +305 -337
  67. package/dist/posteffect/water.js.map +1 -1
  68. package/dist/render/abuffer_oit.js +2 -2
  69. package/dist/render/clipmap.js +16 -19
  70. package/dist/render/clipmap.js.map +1 -1
  71. package/dist/render/cull_visitor.js +5 -3
  72. package/dist/render/cull_visitor.js.map +1 -1
  73. package/dist/render/depthpass.js +17 -1
  74. package/dist/render/depthpass.js.map +1 -1
  75. package/dist/render/drawable_mixin.js +25 -19
  76. package/dist/render/drawable_mixin.js.map +1 -1
  77. package/dist/render/envlight.js +4 -2
  78. package/dist/render/envlight.js.map +1 -1
  79. package/dist/render/fft_wavegenerator.js +989 -0
  80. package/dist/{shaders/framework.js.map → render/fft_wavegenerator.js.map} +1 -1
  81. package/dist/render/gerstner_wavegenerator.js +265 -0
  82. package/dist/{material/standard.js.map → render/gerstner_wavegenerator.js.map} +1 -1
  83. package/dist/render/globalbindgroup_allocator.js +2 -1
  84. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  85. package/dist/render/hzb.js +273 -0
  86. package/dist/{material/terrainlightmodel.js.map → render/hzb.js.map} +1 -1
  87. package/dist/render/lightpass.js +35 -3
  88. package/dist/render/lightpass.js.map +1 -1
  89. package/dist/render/objectcolorpass.js +2 -1
  90. package/dist/render/objectcolorpass.js.map +1 -1
  91. package/dist/render/render_queue.js +72 -52
  92. package/dist/render/render_queue.js.map +1 -1
  93. package/dist/render/renderbundle_wrapper.js +79 -0
  94. package/dist/render/renderbundle_wrapper.js.map +1 -1
  95. package/dist/render/renderer.js +75 -36
  96. package/dist/render/renderer.js.map +1 -1
  97. package/dist/render/renderpass.js +16 -13
  98. package/dist/render/renderpass.js.map +1 -1
  99. package/dist/render/shadowmap_pass.js +6 -0
  100. package/dist/render/shadowmap_pass.js.map +1 -1
  101. package/dist/render/sky.js +12 -13
  102. package/dist/render/sky.js.map +1 -1
  103. package/dist/render/watermesh.js +94 -828
  104. package/dist/render/watermesh.js.map +1 -1
  105. package/dist/render/wavegenerator.js +8 -0
  106. package/dist/render/wavegenerator.js.map +1 -0
  107. package/dist/scene/batchgroup.js +60 -14
  108. package/dist/scene/batchgroup.js.map +1 -1
  109. package/dist/scene/environment.js +2 -2
  110. package/dist/scene/graph_node.js +0 -5
  111. package/dist/scene/graph_node.js.map +1 -1
  112. package/dist/scene/light.js +5 -5
  113. package/dist/scene/mesh.js +34 -18
  114. package/dist/scene/mesh.js.map +1 -1
  115. package/dist/scene/octree.js +5 -2
  116. package/dist/scene/octree.js.map +1 -1
  117. package/dist/scene/raycast_visitor.js +4 -2
  118. package/dist/scene/raycast_visitor.js.map +1 -1
  119. package/dist/scene/scene.js +1 -1
  120. package/dist/scene/scene_node.js +9 -5
  121. package/dist/scene/scene_node.js.map +1 -1
  122. package/dist/scene/terrain/grass.js +3 -4
  123. package/dist/scene/terrain/grass.js.map +1 -1
  124. package/dist/scene/terrain/heightfield.js +135 -53
  125. package/dist/scene/terrain/heightfield.js.map +1 -1
  126. package/dist/scene/terrain/patch.js +3 -4
  127. package/dist/scene/terrain/patch.js.map +1 -1
  128. package/dist/scene/terrain/terrain.js +1 -1
  129. package/dist/scene/xform.js +7 -9
  130. package/dist/scene/xform.js.map +1 -1
  131. package/dist/shaders/misc.js +10 -1
  132. package/dist/shaders/misc.js.map +1 -1
  133. package/dist/shaders/noise.js +81 -16
  134. package/dist/shaders/noise.js.map +1 -1
  135. package/dist/shaders/shadow.js +1 -9
  136. package/dist/shaders/shadow.js.map +1 -1
  137. package/dist/shaders/ssr.js +442 -0
  138. package/dist/{material/terrainmat.js.map → shaders/ssr.js.map} +1 -1
  139. package/dist/shaders/water.js +377 -250
  140. package/dist/shaders/water.js.map +1 -1
  141. package/dist/shadow/shadowmapper.js +11 -11
  142. package/dist/shapes/cylinder.js +6 -5
  143. package/dist/shapes/cylinder.js.map +1 -1
  144. package/dist/utility/bounding_volume.js +1 -53
  145. package/dist/utility/bounding_volume.js.map +1 -1
  146. package/dist/utility/misc.js +93 -0
  147. package/dist/utility/misc.js.map +1 -0
  148. package/dist/utility/shprojection.js +2 -7
  149. package/dist/utility/shprojection.js.map +1 -1
  150. package/dist/utility/textures/ggxlut.js +213 -0
  151. package/dist/utility/textures/ggxlut.js.map +1 -0
  152. package/dist/utility/textures/gradientnoise.js +61 -0
  153. package/dist/utility/textures/gradientnoise.js.map +1 -0
  154. package/dist/utility/textures/randomnoise.js +41 -0
  155. package/dist/utility/textures/randomnoise.js.map +1 -0
  156. package/dist/values.js +8 -1
  157. package/dist/values.js.map +1 -1
  158. package/package.json +4 -8
  159. package/dist/animation/usertrack.js +0 -47
  160. package/dist/animation/usertrack.js.map +0 -1
  161. package/dist/material/grassmat.js +0 -127
  162. package/dist/material/grassmat.js.map +0 -1
  163. package/dist/material/lightmodel.js +0 -2074
  164. package/dist/material/lightmodel.js.map +0 -1
  165. package/dist/material/lit.js +0 -578
  166. package/dist/material/mixins/pbr/metallicroughness.js +0 -126
  167. package/dist/material/mixins/pbr/metallicroughness.js.map +0 -1
  168. package/dist/material/mixins/pbr/specularglossness.js +0 -104
  169. package/dist/material/mixins/pbr/specularglossness.js.map +0 -1
  170. package/dist/material/pbr.js +0 -27
  171. package/dist/material/pbr.js.map +0 -1
  172. package/dist/material/standard.js +0 -282
  173. package/dist/material/terrainlightmodel.js +0 -259
  174. package/dist/material/terrainmat.js +0 -357
  175. package/dist/render/depth_pass.js +0 -47
  176. package/dist/render/depth_pass.js.map +0 -1
  177. package/dist/render/forward.js +0 -186
  178. package/dist/render/forward.js.map +0 -1
  179. package/dist/render/forward_pass.js +0 -137
  180. package/dist/render/forward_pass.js.map +0 -1
  181. package/dist/render/helper.js +0 -38
  182. package/dist/render/helper.js.map +0 -1
  183. package/dist/render/objectpool.js +0 -295
  184. package/dist/render/objectpool.js.map +0 -1
  185. package/dist/render/renderscheme.js +0 -61
  186. package/dist/render/renderscheme.js.map +0 -1
  187. package/dist/render/temporalcache.js +0 -222
  188. package/dist/scene/model.js +0 -111
  189. package/dist/scene/model.js.map +0 -1
  190. package/dist/scene/octree_update_visitor.js +0 -20
  191. package/dist/scene/octree_update_visitor.js.map +0 -1
  192. package/dist/shaders/builtins.js +0 -110
  193. package/dist/shaders/builtins.js.map +0 -1
  194. package/dist/shaders/framework.js +0 -723
  195. package/dist/shaders/lighting.js +0 -335
  196. package/dist/shaders/lighting.js.map +0 -1
  197. package/dist/utility/sheenlut.js +0 -196
  198. package/dist/utility/sheenlut.js.map +0 -1
@@ -10,6 +10,7 @@ import { prefilterCubemap } from '../utility/pmrem.js';
10
10
  import '../utility/panorama.js';
11
11
  import '../utility/shprojection.js';
12
12
  import { ShaderHelper } from '../material/shader/helper.js';
13
+ import { fetchSampler } from '../utility/misc.js';
13
14
 
14
15
  const fogTypeMap = {
15
16
  linear: ShaderHelper.FOG_TYPE_LINEAR,
@@ -41,7 +42,6 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
41
42
  _cloudy;
42
43
  _cloudIntensity;
43
44
  _wind;
44
- _nearestSampler;
45
45
  _programSky;
46
46
  _bindgroupSky;
47
47
  _programFog;
@@ -79,7 +79,6 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
79
79
  this._cloudIntensity = 40;
80
80
  this._wind = Vector2.zero();
81
81
  this._drawGround = false;
82
- this._nearestSampler = null;
83
82
  this._programSky = {};
84
83
  this._bindgroupSky = {};
85
84
  this._programFog = null;
@@ -113,6 +112,15 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
113
112
  set drawGround(val) {
114
113
  this._drawGround = !!val;
115
114
  }
115
+ /** Baked sky texture */ get bakedSkyTexture() {
116
+ if (this._skyType === 'skybox' && this._skyboxTexture) {
117
+ return this._skyboxTexture;
118
+ }
119
+ if (!this._scatterSkyboxFramebuffer) {
120
+ this.updateIBLMaps(this._lastSunDir);
121
+ }
122
+ return this._scatterSkyboxFramebuffer.getColorAttachments()[0];
123
+ }
116
124
  /**
117
125
  * Wether the IBL maps should be updated automatically.
118
126
  *
@@ -351,7 +359,7 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
351
359
  const renderStates = this._fogType === 'scatter' ? this._renderStatesFogScatter : this._renderStatesFog;
352
360
  if (fogProgram && sceneDepthTexture) {
353
361
  const bindgroup = this._fogType === 'scatter' ? this._bindgroupFogScatter : this._bindgroupFog;
354
- bindgroup.setTexture('depthTex', sceneDepthTexture, this._nearestSampler);
362
+ bindgroup.setTexture('depthTex', sceneDepthTexture, fetchSampler('clamp_nearest_nomip'));
355
363
  bindgroup.setValue('rt', device.getFramebuffer() ? 1 : 0);
356
364
  bindgroup.setValue('invProjViewMatrix', camera.invViewProjectionMatrix);
357
365
  bindgroup.setValue('cameraNearFar', new Vector2(camera.getNearPlane(), camera.getFarPlane()));
@@ -383,12 +391,12 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
383
391
  const sunDir = SkyRenderer._getSunDir(ctx.sunLight);
384
392
  if (!sunDir.equalsTo(this._lastSunDir)) {
385
393
  this._radianceMapDirty = true;
394
+ this._lastSunDir.set(sunDir);
386
395
  }
387
396
  this._renderSky(ctx.camera, true, sunDir, this._drawGround, this._skyType === 'scatter' && this._cloudy > 0);
388
397
  if (this._radianceMapDirty && ctx.env.light.type === 'ibl') {
389
398
  if (ctx.env.light.radianceMap && (ctx.env.light.radianceMap === this._radianceMap || ctx.env.light.irradianceMap === this._irradianceMap)) {
390
399
  this._radianceMapDirty = false;
391
- this._lastSunDir.set(sunDir);
392
400
  this.updateIBLMaps(sunDir);
393
401
  }
394
402
  }
@@ -670,15 +678,6 @@ const defaultSkyWorldMatrix = Matrix4x4.identity();
670
678
  this._renderStatesFogScatter.useBlendingState().enable(true).setBlendFunc('one', 'inv-src-alpha');
671
679
  this._renderStatesFogScatter.useDepthState().enableTest(true).enableWrite(false).setCompareFunc('gt');
672
680
  }
673
- if (!this._nearestSampler) {
674
- this._nearestSampler = device.createSampler({
675
- magFilter: 'nearest',
676
- minFilter: 'nearest',
677
- mipFilter: 'none',
678
- addressU: 'clamp',
679
- addressV: 'clamp'
680
- });
681
- }
682
681
  if (!this._vertexLayout) {
683
682
  this._vertexLayout = device.createVertexLayout({
684
683
  vertexBuffers: [
@@ -1 +1 @@
1
- {"version":3,"file":"sky.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"sky.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}