@zephyr3d/scene 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/README.md +1 -1
  2. package/dist/animation/animationset.js +37 -37
  3. package/dist/animation/morphtrack.js +7 -5
  4. package/dist/animation/morphtrack.js.map +1 -1
  5. package/dist/animation/skeleton.js +11 -9
  6. package/dist/animation/skeleton.js.map +1 -1
  7. package/dist/asset/assetmanager.js +2 -2
  8. package/dist/asset/loaders/gltf/gltf_loader.js +7 -3
  9. package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
  10. package/dist/asset/loaders/image/webimage_loader.js +16 -0
  11. package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
  12. package/dist/asset/model.js +3 -9
  13. package/dist/asset/model.js.map +1 -1
  14. package/dist/blitter/bilateralblur.js +222 -0
  15. package/dist/{render/temporalcache.js.map → blitter/bilateralblur.js.map} +1 -1
  16. package/dist/blitter/blitter.js +7 -1
  17. package/dist/blitter/blitter.js.map +1 -1
  18. package/dist/blitter/depthlimitedgaussion.js +96 -39
  19. package/dist/blitter/depthlimitedgaussion.js.map +1 -1
  20. package/dist/blitter/gaussianblur.js +21 -21
  21. package/dist/camera/camera.js +142 -1
  22. package/dist/camera/camera.js.map +1 -1
  23. package/dist/index.d.ts +1178 -745
  24. package/dist/index.js +11 -6
  25. package/dist/index.js.map +1 -1
  26. package/dist/material/blinn.js +9 -3
  27. package/dist/material/blinn.js.map +1 -1
  28. package/dist/material/lambert.js +6 -2
  29. package/dist/material/lambert.js.map +1 -1
  30. package/dist/material/material.js +3 -1
  31. package/dist/material/material.js.map +1 -1
  32. package/dist/material/meshmaterial.js +73 -33
  33. package/dist/material/meshmaterial.js.map +1 -1
  34. package/dist/material/mixins/albedocolor.js +5 -4
  35. package/dist/material/mixins/albedocolor.js.map +1 -1
  36. package/dist/material/mixins/lightmodel/blinnphong.js +17 -7
  37. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  38. package/dist/material/mixins/lightmodel/lambert.js +5 -5
  39. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +13 -4
  40. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  41. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +13 -4
  42. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  43. package/dist/material/mixins/pbr/common.js +27 -15
  44. package/dist/material/mixins/pbr/common.js.map +1 -1
  45. package/dist/material/pbrmr.js +14 -3
  46. package/dist/material/pbrmr.js.map +1 -1
  47. package/dist/material/pbrsg.js +14 -3
  48. package/dist/material/pbrsg.js.map +1 -1
  49. package/dist/material/shader/helper.js +36 -21
  50. package/dist/material/shader/helper.js.map +1 -1
  51. package/dist/posteffect/bloom.js +1 -10
  52. package/dist/posteffect/bloom.js.map +1 -1
  53. package/dist/posteffect/compositor.js +43 -24
  54. package/dist/posteffect/compositor.js.map +1 -1
  55. package/dist/posteffect/fxaa.js +3 -11
  56. package/dist/posteffect/fxaa.js.map +1 -1
  57. package/dist/posteffect/grayscale.js +3 -11
  58. package/dist/posteffect/grayscale.js.map +1 -1
  59. package/dist/posteffect/posteffect.js +4 -0
  60. package/dist/posteffect/posteffect.js.map +1 -1
  61. package/dist/posteffect/sao.js +44 -24
  62. package/dist/posteffect/sao.js.map +1 -1
  63. package/dist/posteffect/ssr.js +536 -0
  64. package/dist/{material/lit.js.map → posteffect/ssr.js.map} +1 -1
  65. package/dist/posteffect/tonemap.js +3 -11
  66. package/dist/posteffect/tonemap.js.map +1 -1
  67. package/dist/posteffect/water.js +305 -337
  68. package/dist/posteffect/water.js.map +1 -1
  69. package/dist/render/abuffer_oit.js +2 -2
  70. package/dist/render/clipmap.js +16 -19
  71. package/dist/render/clipmap.js.map +1 -1
  72. package/dist/render/cull_visitor.js +5 -3
  73. package/dist/render/cull_visitor.js.map +1 -1
  74. package/dist/render/depthpass.js +17 -1
  75. package/dist/render/depthpass.js.map +1 -1
  76. package/dist/render/drawable_mixin.js +25 -19
  77. package/dist/render/drawable_mixin.js.map +1 -1
  78. package/dist/render/envlight.js +4 -2
  79. package/dist/render/envlight.js.map +1 -1
  80. package/dist/render/fft_wavegenerator.js +989 -0
  81. package/dist/{shaders/framework.js.map → render/fft_wavegenerator.js.map} +1 -1
  82. package/dist/render/gerstner_wavegenerator.js +265 -0
  83. package/dist/{material/standard.js.map → render/gerstner_wavegenerator.js.map} +1 -1
  84. package/dist/render/globalbindgroup_allocator.js +2 -1
  85. package/dist/render/globalbindgroup_allocator.js.map +1 -1
  86. package/dist/render/hzb.js +273 -0
  87. package/dist/{material/terrainlightmodel.js.map → render/hzb.js.map} +1 -1
  88. package/dist/render/lightpass.js +35 -3
  89. package/dist/render/lightpass.js.map +1 -1
  90. package/dist/render/objectcolorpass.js +2 -1
  91. package/dist/render/objectcolorpass.js.map +1 -1
  92. package/dist/render/render_queue.js +72 -52
  93. package/dist/render/render_queue.js.map +1 -1
  94. package/dist/render/renderbundle_wrapper.js +79 -0
  95. package/dist/render/renderbundle_wrapper.js.map +1 -1
  96. package/dist/render/renderer.js +75 -36
  97. package/dist/render/renderer.js.map +1 -1
  98. package/dist/render/renderpass.js +16 -13
  99. package/dist/render/renderpass.js.map +1 -1
  100. package/dist/render/shadowmap_pass.js +6 -0
  101. package/dist/render/shadowmap_pass.js.map +1 -1
  102. package/dist/render/sky.js +12 -13
  103. package/dist/render/sky.js.map +1 -1
  104. package/dist/render/watermesh.js +94 -828
  105. package/dist/render/watermesh.js.map +1 -1
  106. package/dist/render/wavegenerator.js +8 -0
  107. package/dist/render/wavegenerator.js.map +1 -0
  108. package/dist/scene/batchgroup.js +60 -14
  109. package/dist/scene/batchgroup.js.map +1 -1
  110. package/dist/scene/environment.js +2 -2
  111. package/dist/scene/graph_node.js +0 -5
  112. package/dist/scene/graph_node.js.map +1 -1
  113. package/dist/scene/light.js +5 -5
  114. package/dist/scene/mesh.js +34 -18
  115. package/dist/scene/mesh.js.map +1 -1
  116. package/dist/scene/octree.js +5 -2
  117. package/dist/scene/octree.js.map +1 -1
  118. package/dist/scene/raycast_visitor.js +4 -2
  119. package/dist/scene/raycast_visitor.js.map +1 -1
  120. package/dist/scene/scene.js +1 -1
  121. package/dist/scene/scene_node.js +9 -5
  122. package/dist/scene/scene_node.js.map +1 -1
  123. package/dist/scene/terrain/grass.js +3 -4
  124. package/dist/scene/terrain/grass.js.map +1 -1
  125. package/dist/scene/terrain/heightfield.js +135 -53
  126. package/dist/scene/terrain/heightfield.js.map +1 -1
  127. package/dist/scene/terrain/patch.js +3 -4
  128. package/dist/scene/terrain/patch.js.map +1 -1
  129. package/dist/scene/terrain/terrain.js +1 -1
  130. package/dist/scene/xform.js +7 -9
  131. package/dist/scene/xform.js.map +1 -1
  132. package/dist/shaders/misc.js +10 -1
  133. package/dist/shaders/misc.js.map +1 -1
  134. package/dist/shaders/noise.js +81 -16
  135. package/dist/shaders/noise.js.map +1 -1
  136. package/dist/shaders/shadow.js +1 -9
  137. package/dist/shaders/shadow.js.map +1 -1
  138. package/dist/shaders/ssr.js +442 -0
  139. package/dist/{material/terrainmat.js.map → shaders/ssr.js.map} +1 -1
  140. package/dist/shaders/water.js +377 -250
  141. package/dist/shaders/water.js.map +1 -1
  142. package/dist/shadow/shadowmapper.js +11 -11
  143. package/dist/shapes/cylinder.js +6 -5
  144. package/dist/shapes/cylinder.js.map +1 -1
  145. package/dist/utility/bounding_volume.js +1 -53
  146. package/dist/utility/bounding_volume.js.map +1 -1
  147. package/dist/utility/misc.js +93 -0
  148. package/dist/utility/misc.js.map +1 -0
  149. package/dist/utility/shprojection.js +2 -7
  150. package/dist/utility/shprojection.js.map +1 -1
  151. package/dist/utility/textures/ggxlut.js +213 -0
  152. package/dist/utility/textures/ggxlut.js.map +1 -0
  153. package/dist/utility/textures/gradientnoise.js +61 -0
  154. package/dist/utility/textures/gradientnoise.js.map +1 -0
  155. package/dist/utility/textures/randomnoise.js +41 -0
  156. package/dist/utility/textures/randomnoise.js.map +1 -0
  157. package/dist/values.js +8 -1
  158. package/dist/values.js.map +1 -1
  159. package/package.json +4 -8
  160. package/dist/animation/usertrack.js +0 -47
  161. package/dist/animation/usertrack.js.map +0 -1
  162. package/dist/material/grassmat.js +0 -127
  163. package/dist/material/grassmat.js.map +0 -1
  164. package/dist/material/lightmodel.js +0 -2074
  165. package/dist/material/lightmodel.js.map +0 -1
  166. package/dist/material/lit.js +0 -578
  167. package/dist/material/mixins/pbr/metallicroughness.js +0 -126
  168. package/dist/material/mixins/pbr/metallicroughness.js.map +0 -1
  169. package/dist/material/mixins/pbr/specularglossness.js +0 -104
  170. package/dist/material/mixins/pbr/specularglossness.js.map +0 -1
  171. package/dist/material/pbr.js +0 -27
  172. package/dist/material/pbr.js.map +0 -1
  173. package/dist/material/standard.js +0 -282
  174. package/dist/material/terrainlightmodel.js +0 -259
  175. package/dist/material/terrainmat.js +0 -357
  176. package/dist/render/depth_pass.js +0 -47
  177. package/dist/render/depth_pass.js.map +0 -1
  178. package/dist/render/forward.js +0 -186
  179. package/dist/render/forward.js.map +0 -1
  180. package/dist/render/forward_pass.js +0 -137
  181. package/dist/render/forward_pass.js.map +0 -1
  182. package/dist/render/helper.js +0 -38
  183. package/dist/render/helper.js.map +0 -1
  184. package/dist/render/objectpool.js +0 -295
  185. package/dist/render/objectpool.js.map +0 -1
  186. package/dist/render/renderscheme.js +0 -61
  187. package/dist/render/renderscheme.js.map +0 -1
  188. package/dist/render/temporalcache.js +0 -222
  189. package/dist/scene/model.js +0 -111
  190. package/dist/scene/model.js.map +0 -1
  191. package/dist/scene/octree_update_visitor.js +0 -20
  192. package/dist/scene/octree_update_visitor.js.map +0 -1
  193. package/dist/shaders/builtins.js +0 -110
  194. package/dist/shaders/builtins.js.map +0 -1
  195. package/dist/shaders/framework.js +0 -723
  196. package/dist/shaders/lighting.js +0 -335
  197. package/dist/shaders/lighting.js.map +0 -1
  198. package/dist/utility/sheenlut.js +0 -196
  199. package/dist/utility/sheenlut.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"values.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"values.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zephyr3d/scene",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
4
  "description": "Scene API for zephyr3d",
5
5
  "homepage": "https://github.com/gavinyork/zephyr3d#readme",
6
6
  "type": "module",
@@ -44,8 +44,6 @@
44
44
  "@rollup/plugin-terser": "^0.4.0",
45
45
  "@rollup/pluginutils": "^5.0.2",
46
46
  "@swc/core": "^1.3.62",
47
- "@zephyr3d/base": "^0.1.4",
48
- "@zephyr3d/device": "^0.2.3",
49
47
  "cross-env": "^7.0.3",
50
48
  "rollup": "^3.15.0",
51
49
  "rollup-plugin-copy": "^3.4.0",
@@ -55,13 +53,11 @@
55
53
  "shx": "^0.3.4",
56
54
  "typescript": "^5.1.3"
57
55
  },
58
- "peerDependencies": {
59
- "@zephyr3d/base": "^0.1.4",
60
- "@zephyr3d/device": "^0.2.3"
61
- },
62
56
  "dependencies": {
57
+ "@types/draco3d": "^1.4.9",
63
58
  "@webgpu/types": "^0.1.40",
64
- "@types/draco3d": "^1.4.9"
59
+ "@zephyr3d/base": "^0.1.5",
60
+ "@zephyr3d/device": "^0.2.4"
65
61
  },
66
62
  "scripts": {
67
63
  "clean": "shx rm -rf ./dist .tsbuildinfo",
@@ -1,47 +0,0 @@
1
- import { Interpolator } from '@zephyr3d/base';
2
- import { AnimationTrack } from './animationtrack.js';
3
-
4
- const tmpValue = new Float32Array(4);
5
- /**
6
- * User-defined animation track
7
- * @public
8
- */ class UserTrack extends AnimationTrack {
9
- _handler;
10
- /**
11
- * Create an instance of UserTrack
12
- * @param mode - Interpolation mode for keyframe values
13
- * @param target - Type of keyframe values
14
- * @param keyFrames - Keyframe values
15
- * @param handler - Handler to apply the keyframe values
16
- */ constructor(mode, target, keyFrames, handler){
17
- const stride = Interpolator.getTargetStride(target);
18
- if (!stride) {
19
- throw new Error(`UserTrack(): invalid target: ${target}`);
20
- }
21
- const inputs = new Float32Array(keyFrames.map((val)=>val.time));
22
- const outputs = new Float32Array(keyFrames.length * stride);
23
- for(let i = 0; i < keyFrames.length; i++){
24
- for(let j = 0; j < stride; j++){
25
- const value = keyFrames[i].value;
26
- if (typeof value === 'number') {
27
- outputs[i * stride + j] = value;
28
- } else if (value instanceof Float32Array) {
29
- outputs[i * stride + j] = value[j] ?? 0;
30
- } else {
31
- throw new Error(`UserTrack(): invalid keyframe value: ${value}`);
32
- }
33
- }
34
- }
35
- const interpolator = new Interpolator(mode, target, inputs, outputs);
36
- super(interpolator);
37
- this._handler = handler;
38
- }
39
- /** {@inheritDoc AnimationTrack.apply} */ apply(node, currentTime) {
40
- this._interpolator.interpolate(currentTime, tmpValue);
41
- this._handler && this._handler(node, tmpValue);
42
- return true;
43
- }
44
- }
45
-
46
- export { UserTrack };
47
- //# sourceMappingURL=usertrack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usertrack.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,127 +0,0 @@
1
- import { Vector4, Vector2 } from '@zephyr3d/base';
2
- import { applyMaterialMixins, MeshMaterial } from './meshmaterial.js';
3
- import { mixinLight } from './mixins/lit.js';
4
- import { mixinPBRMetallicRoughness } from './mixins/pbr/metallicroughness.js';
5
-
6
- class NewGrassMaterial extends applyMaterialMixins(MeshMaterial, mixinLight, mixinPBRMetallicRoughness) {
7
- /** @internal */ _terrainSize;
8
- /** @internal */ _terrainNormalMap;
9
- /** @internal */ _textureSize;
10
- constructor(terrainSize, normalMap, grassTexture){
11
- super();
12
- this.metallic = 0;
13
- this.roughness = 1;
14
- this.specularFactor = new Vector4(1, 1, 1, 0.2);
15
- this.doubleSidedLighting = false;
16
- this.vertexNormal = false;
17
- this._terrainSize = terrainSize;
18
- this._terrainNormalMap = normalMap;
19
- this._textureSize = Vector2.one();
20
- if (grassTexture) {
21
- this.albedoTexture = grassTexture;
22
- this._textureSize.setXY(grassTexture.width, grassTexture.height);
23
- }
24
- }
25
- /**
26
- * {@inheritDoc Material.isTransparent}
27
- * @override
28
- */ isTransparent() {
29
- return false;
30
- }
31
- /**
32
- * {@inheritDoc Material.supportLighting}
33
- * @override
34
- */ supportLighting() {
35
- return true;
36
- }
37
- calculateObjectSpacePosition(scope, pos, skinMatrix) {
38
- const pb = scope.$builder;
39
- const funcName = 'kkGetDisplacedPosition';
40
- pb.func(funcName, [
41
- pb.vec3('pos'),
42
- pb.vec4('placement'),
43
- pb.vec3('normal')
44
- ], function() {
45
- this.$l.axisX = pb.vec3(1, 0, 0);
46
- this.$l.axisZ = pb.cross(this.axisX, this.normal);
47
- this.$l.axisX = pb.cross(this.normal, this.axisZ);
48
- this.$l.rotPos = pb.mul(pb.mat3(this.axisX, this.normal, this.axisZ), this.pos);
49
- this.$return(pb.add(this.rotPos, this.placement.xyz));
50
- });
51
- return scope.$g[funcName](scope.$inputs.pos, scope.$inputs.placement, scope.kkNormal);
52
- }
53
- calculateObjectSpaceNormal(scope, normal, skinMatrix) {
54
- return scope.kkNormal;
55
- }
56
- applyUniformValues(bindGroup, ctx) {
57
- super.applyUniformValues(bindGroup, ctx);
58
- bindGroup.setTexture('kkTerrainNormalMap', this._terrainNormalMap);
59
- bindGroup.setValue('kkTerrainSize', this._terrainSize);
60
- if (this.needFragmentColor(ctx)) {
61
- bindGroup.setValue('albedoTextureSize', this._textureSize);
62
- }
63
- }
64
- vertexShader(scope) {
65
- super.vertexShader(scope);
66
- const pb = scope.$builder;
67
- scope.$inputs.pos = pb.vec3().attrib('position');
68
- scope.$inputs.placement = pb.vec4().attrib('texCoord1');
69
- scope.$g.kkTerrainNormalMap = pb.tex2D().uniform(2);
70
- scope.$g.kkTerrainSize = pb.vec2().uniform(2);
71
- scope.$g.kkNormal = pb.vec3();
72
- const normalSample = pb.textureSampleLevel(scope.kkTerrainNormalMap, pb.div(scope.$inputs.placement.xz, scope.kkTerrainSize), 0).rgb;
73
- scope.kkNormal = pb.normalize(pb.sub(pb.mul(normalSample, 2), pb.vec3(1)));
74
- this.transformVertexAndNormal(scope);
75
- }
76
- fragmentShader(scope) {
77
- super.fragmentShader(scope);
78
- const pb = scope.$builder;
79
- const that = this;
80
- if (this.needFragmentColor()) {
81
- scope.$g.albedoTextureSize = pb.vec2().uniform(2);
82
- pb.func('calcMipLevel', [
83
- pb.vec2('coord')
84
- ], function() {
85
- this.$l.dx = pb.dpdx(this.coord);
86
- this.$l.dy = pb.dpdy(this.coord);
87
- this.$l.deltaMaxSqr = pb.max(pb.dot(this.dx, this.dx), pb.dot(this.dy, this.dy));
88
- this.$return(pb.max(0, pb.mul(pb.log2(this.deltaMaxSqr), 0.5)));
89
- });
90
- scope.$l.albedo = this.calculateAlbedoColor(scope);
91
- scope.$l.normalInfo = this.calculateNormalAndTBN(scope);
92
- scope.$l.normal = scope.normalInfo.normal;
93
- scope.$l.viewVec = this.calculateViewVector(scope);
94
- scope.$l.pbrData = this.getCommonData(scope, scope.albedo, scope.viewVec, scope.normalInfo.TBN);
95
- scope.$l.lightingColor = pb.vec3(0);
96
- scope.$l.emissiveColor = this.calculateEmissiveColor(scope);
97
- this.indirectLighting(scope, scope.normal, scope.viewVec, scope.pbrData, scope.lightingColor);
98
- this.forEachLight(scope, function(type, posRange, dirCutoff, colorIntensity, shadow) {
99
- this.$l.diffuse = pb.vec3();
100
- this.$l.specular = pb.vec3();
101
- this.$l.lightAtten = that.calculateLightAttenuation(this, type, posRange, dirCutoff);
102
- this.$l.lightDir = that.calculateLightDirection(this, type, posRange, dirCutoff);
103
- this.$l.NoL = pb.clamp(pb.dot(this.normal, this.lightDir), 0, 1);
104
- this.$l.lightColor = pb.mul(colorIntensity.rgb, colorIntensity.a, this.lightAtten, this.NoL);
105
- if (shadow) {
106
- this.lightColor = pb.mul(this.lightColor, that.calculateShadow(this, this.NoL));
107
- }
108
- that.directLighting(this, this.lightDir, this.lightColor, this.normal, this.viewVec, this.pbrData, this.lightingColor);
109
- });
110
- scope.$l.litColor = pb.add(scope.lightingColor, scope.emissiveColor);
111
- scope.albedo.a = pb.mul(scope.albedo.a, pb.add(1, pb.mul(pb.max(0, scope.$g.calcMipLevel(pb.mul(that.getAlbedoTexCoord(scope), scope.albedoTextureSize))), 0.25)));
112
- if (that.alphaToCoverage) {
113
- scope.albedo.a = pb.add(pb.div(pb.sub(scope.albedo.a, 0.4), pb.max(pb.fwidth(scope.albedo.a), 0.0001)), 0.5);
114
- } else {
115
- scope.$if(pb.lessThan(scope.albedo.a, 0.8), function() {
116
- pb.discard();
117
- });
118
- }
119
- this.outputFragmentColor(scope, pb.vec4(scope.litColor, scope.albedo.a));
120
- } else {
121
- this.outputFragmentColor(scope, null);
122
- }
123
- }
124
- }
125
-
126
- export { NewGrassMaterial };
127
- //# sourceMappingURL=grassmat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"grassmat.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}