@zephyr3d/scene 0.9.25 → 0.9.26
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.
- package/dist/animation/hair/gpu_hair_simulation.js +1090 -0
- package/dist/animation/hair/gpu_hair_simulation.js.map +1 -0
- package/dist/animation/joint_dynamics/controller.js +7 -5
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/joint_dynamics_system.js +81 -5
- package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
- package/dist/animation/morphtrack.js +3 -4
- package/dist/animation/morphtrack.js.map +1 -1
- package/dist/animation/skeleton.js +58 -24
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/spring/multi_chain_spring_system.js +577 -179
- package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
- package/dist/animation/spring/spring_collider.js +4 -3
- package/dist/animation/spring/spring_collider.js.map +1 -1
- package/dist/animation/spring/spring_node_pose_tracker.js +40 -0
- package/dist/animation/spring/spring_node_pose_tracker.js.map +1 -0
- package/dist/animation/spring/spring_particle.js +2 -0
- package/dist/animation/spring/spring_particle.js.map +1 -1
- package/dist/animation/spring/spring_system.js +11 -3
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/animation/spring_modifier.js +10 -0
- package/dist/animation/spring_modifier.js.map +1 -1
- package/dist/app/engine.js +53 -43
- package/dist/app/engine.js.map +1 -1
- package/dist/app/scriptingsystem.js +119 -6
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +3 -2
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +284 -67
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/zhair/zhair_format.js +288 -0
- package/dist/asset/loaders/zhair/zhair_format.js.map +1 -0
- package/dist/asset/loaders/zhair/zhair_loader.js +221 -0
- package/dist/asset/loaders/zhair/zhair_loader.js.map +1 -0
- package/dist/asset/model.js +178 -67
- package/dist/asset/model.js.map +1 -1
- package/dist/camera/camera.js +193 -21
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/perspectivecamera.js +3 -1
- package/dist/camera/perspectivecamera.js.map +1 -1
- package/dist/index.d.ts +4019 -1278
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/material/eye.js +932 -0
- package/dist/material/eye.js.map +1 -0
- package/dist/material/hair.js +917 -0
- package/dist/material/hair.js.map +1 -0
- package/dist/material/hairstrand.js +842 -0
- package/dist/material/hairstrand.js.map +1 -0
- package/dist/material/hairstrand_data.js +162 -0
- package/dist/material/hairstrand_data.js.map +1 -0
- package/dist/material/lambert.js +5 -2
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +338 -300
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +120 -19
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +1 -1
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +5 -3
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +5 -4
- package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +3 -3
- package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +5 -5
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +3 -3
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +73 -18
- package/dist/material/mixins/lit.js.map +1 -1
- package/dist/material/mixins/pbr/common.js +4 -4
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/mixins/texture.js +48 -11
- package/dist/material/mixins/texture.js.map +1 -1
- package/dist/material/mtoon.js +6 -5
- package/dist/material/mtoon.js.map +1 -1
- package/dist/material/pbrblueprint.js +146 -28
- package/dist/material/pbrblueprint.js.map +1 -1
- package/dist/material/pbrblueprint_instance.js +501 -0
- package/dist/material/pbrblueprint_instance.js.map +1 -0
- package/dist/material/pbrmr.js +15 -16
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/shader/helper.js +330 -20
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/shader/terrain_blend.js +55 -0
- package/dist/material/shader/terrain_blend.js.map +1 -0
- package/dist/material/skin.js +192 -32
- package/dist/material/skin.js.map +1 -1
- package/dist/material/spriteblueprint.js +16 -1
- package/dist/material/spriteblueprint.js.map +1 -1
- package/dist/material/subsurfaceprofile.js +86 -23
- package/dist/material/subsurfaceprofile.js.map +1 -1
- package/dist/material/water.js +3 -1
- package/dist/material/water.js.map +1 -1
- package/dist/posteffect/bloom.js +167 -7
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/coloradjust.js +2 -1
- package/dist/posteffect/coloradjust.js.map +1 -1
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/fxaa.js +2 -1
- package/dist/posteffect/fxaa.js.map +1 -1
- package/dist/posteffect/grayscale.js +3 -1
- package/dist/posteffect/grayscale.js.map +1 -1
- package/dist/posteffect/motionblur.js +4 -1
- package/dist/posteffect/motionblur.js.map +1 -1
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/skinsss.js +368 -69
- package/dist/posteffect/skinsss.js.map +1 -1
- package/dist/posteffect/ssgi.js +16 -9
- package/dist/posteffect/ssgi.js.map +1 -1
- package/dist/posteffect/ssr.js +3 -0
- package/dist/posteffect/ssr.js.map +1 -1
- package/dist/posteffect/sss.js +91 -34
- package/dist/posteffect/sss.js.map +1 -1
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/posteffect/tonemap.js +44 -1
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/render/abuffer_oit.js +45 -39
- package/dist/render/abuffer_oit.js.map +1 -1
- package/dist/render/cull_visitor.js +19 -0
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/depthpass.js +36 -2
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +26 -1
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/dualdepthpeeling_oit.js +52 -51
- package/dist/render/dualdepthpeeling_oit.js.map +1 -1
- package/dist/render/envlight.js +1 -1
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fbm_wavegenerator.js +3 -0
- package/dist/render/fbm_wavegenerator.js.map +1 -1
- package/dist/render/gerstner_wavegenerator.js +3 -0
- package/dist/render/gerstner_wavegenerator.js.map +1 -1
- package/dist/render/globalbindgroup_allocator.js +3 -0
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/oit.js +29 -0
- package/dist/render/oit.js.map +1 -0
- package/dist/render/render_queue.js +3 -0
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/executor.js +2 -0
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +61 -1
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/rendergraph.js.map +1 -1
- package/dist/render/rendergraph/texture_affinity_cache.js +1 -1
- package/dist/render/rendergraph/texture_affinity_cache.js.map +1 -1
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/shadow_mask_pass.js +73 -8
- package/dist/render/shadow_mask_pass.js.map +1 -1
- package/dist/render/sky.js +166 -126
- package/dist/render/sky.js.map +1 -1
- package/dist/render/weightedblended_oit.js +36 -35
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/basesprite.js +8 -0
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/batchgroup.js +3 -0
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +4 -1
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/hair.js +963 -0
- package/dist/scene/hair.js.map +1 -0
- package/dist/scene/light.js +5 -1
- package/dist/scene/light.js.map +1 -1
- package/dist/scene/mesh.js +481 -47
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/meshdrawable.js +6 -0
- package/dist/scene/meshdrawable.js.map +1 -1
- package/dist/scene/msdftext.js +3 -0
- package/dist/scene/msdftext.js.map +1 -1
- package/dist/scene/msdftextsprite.js +3 -0
- package/dist/scene/msdftextsprite.js.map +1 -1
- package/dist/scene/particlesys.js +6 -0
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene.js +3 -0
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +6 -1
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain-cm/grass.js +3 -0
- package/dist/scene/terrain-cm/grass.js.map +1 -1
- package/dist/scene/terrain-cm/grassmaterial.js +3 -0
- package/dist/scene/terrain-cm/grassmaterial.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +6 -0
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/scene/terrain-cm/texture_cache.js +309 -0
- package/dist/scene/terrain-cm/texture_cache.js.map +1 -0
- package/dist/scene/water.js +6 -0
- package/dist/scene/water.js.map +1 -1
- package/dist/shaders/atmosphere.js.map +1 -1
- package/dist/shaders/diffusion.js +54 -0
- package/dist/shaders/diffusion.js.map +1 -0
- package/dist/shaders/shadow.js +33 -21
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/temporal.js +71 -33
- package/dist/shaders/temporal.js.map +1 -1
- package/dist/shadow/dom.js +546 -0
- package/dist/shadow/dom.js.map +1 -0
- package/dist/shadow/pcf_opt.js +3 -5
- package/dist/shadow/pcf_opt.js.map +1 -1
- package/dist/shadow/pcf_pd.js +1 -1
- package/dist/shadow/pcf_pd.js.map +1 -1
- package/dist/shadow/receiver_bias.js +41 -0
- package/dist/shadow/receiver_bias.js.map +1 -0
- package/dist/shadow/shader.js +20 -60
- package/dist/shadow/shader.js.map +1 -1
- package/dist/shadow/shadow_impl.js +89 -0
- package/dist/shadow/shadow_impl.js.map +1 -1
- package/dist/shadow/shadow_region.js +50 -50
- package/dist/shadow/shadow_region.js.map +1 -1
- package/dist/shadow/shadowmapper.js +150 -37
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shapes/shape.js +11 -2
- package/dist/shapes/shape.js.map +1 -1
- package/dist/shapes/sphere.js +50 -9
- package/dist/shapes/sphere.js.map +1 -1
- package/dist/utility/blueprint/common/constants.js +112 -2
- package/dist/utility/blueprint/common/constants.js.map +1 -1
- package/dist/utility/blueprint/material/func.js +142 -49
- package/dist/utility/blueprint/material/func.js.map +1 -1
- package/dist/utility/blueprint/material/ir.js +490 -25
- package/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/utility/blueprint/material/texture.js +898 -4
- package/dist/utility/blueprint/material/texture.js.map +1 -1
- package/dist/utility/serialization/manager.js +431 -100
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +370 -3
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/batch.js +4 -0
- package/dist/utility/serialization/scene/batch.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +133 -1
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +26 -5
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/hair.js +1141 -0
- package/dist/utility/serialization/scene/hair.js.map +1 -0
- package/dist/utility/serialization/scene/light.js +84 -4
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +1867 -166
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +231 -14
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +141 -7
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +4 -0
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +18 -0
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +4 -0
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +4 -0
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/text.js +4 -0
- package/dist/utility/serialization/scene/text.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +4 -0
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/dist/utility/shprojector.js +96 -95
- package/dist/utility/shprojector.js.map +1 -1
- package/dist/values.js +49 -2
- package/dist/values.js.map +1 -1
- package/package.json +3 -3
|
@@ -3,23 +3,23 @@ import { Disposable, DRef, Vector4 } from '@zephyr3d/base';
|
|
|
3
3
|
import { fetchSampler } from './misc.js';
|
|
4
4
|
import { getDevice } from '../app/api.js';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* CubemapSHProjector is responsible for projecting a cubemap texture into spherical harmonics (SH) coefficients.
|
|
8
|
-
* This is commonly used for efficient environment lighting approximation in real-time rendering.
|
|
9
|
-
*
|
|
10
|
-
* The class uses Monte Carlo sampling to compute the first 9 spherical harmonics coefficients (up to order 2)
|
|
11
|
-
* from a cubemap texture, which can then be used for ambient lighting calculations.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* const projector = new CubemapSHProjector(10000);
|
|
16
|
-
* const shBuffer = device.createBuffer(4 * 4 * 9, { usage: 'uniform' });
|
|
17
|
-
* projector.projectCubemap(environmentCubemap, shBuffer);
|
|
18
|
-
* // shBuffer now contains the 9 SH coefficients as RGB values
|
|
19
|
-
* projector.dispose();
|
|
20
|
-
* ```
|
|
21
|
-
*
|
|
22
|
-
* @public
|
|
6
|
+
/**
|
|
7
|
+
* CubemapSHProjector is responsible for projecting a cubemap texture into spherical harmonics (SH) coefficients.
|
|
8
|
+
* This is commonly used for efficient environment lighting approximation in real-time rendering.
|
|
9
|
+
*
|
|
10
|
+
* The class uses Monte Carlo sampling to compute the first 9 spherical harmonics coefficients (up to order 2)
|
|
11
|
+
* from a cubemap texture, which can then be used for ambient lighting calculations.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const projector = new CubemapSHProjector(10000);
|
|
16
|
+
* const shBuffer = device.createBuffer(4 * 4 * 9, { usage: 'uniform' });
|
|
17
|
+
* projector.projectCubemap(environmentCubemap, shBuffer);
|
|
18
|
+
* // shBuffer now contains the 9 SH coefficients as RGB values
|
|
19
|
+
* projector.dispose();
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @public
|
|
23
23
|
*/ class CubemapSHProjector extends Disposable {
|
|
24
24
|
static _programInst = null;
|
|
25
25
|
static _bindGroupInst = null;
|
|
@@ -27,60 +27,69 @@ import { getDevice } from '../app/api.js';
|
|
|
27
27
|
_primitive;
|
|
28
28
|
_renderTarget;
|
|
29
29
|
_numSamples;
|
|
30
|
-
/**
|
|
31
|
-
* Creates a new CubemapSHProjector instance.
|
|
32
|
-
*
|
|
33
|
-
* @param numSamples - Number of Monte Carlo samples to use for SH projection.
|
|
34
|
-
* Higher values provide better accuracy but slower computation.
|
|
35
|
-
* Default is 10000.
|
|
30
|
+
/**
|
|
31
|
+
* Creates a new CubemapSHProjector instance.
|
|
32
|
+
*
|
|
33
|
+
* @param numSamples - Number of Monte Carlo samples to use for SH projection.
|
|
34
|
+
* Higher values provide better accuracy but slower computation.
|
|
35
|
+
* Default is 10000.
|
|
36
36
|
*/ constructor(numSamples = 10000){
|
|
37
37
|
super();
|
|
38
38
|
this._numSamples = numSamples;
|
|
39
39
|
this._primitive = new DRef();
|
|
40
40
|
this._renderTarget = new DRef();
|
|
41
41
|
}
|
|
42
|
-
/**
|
|
43
|
-
* Projects a cubemap texture into spherical harmonics coefficients and stores them in a GPUBuffer.
|
|
44
|
-
*
|
|
45
|
-
* The method performs Monte Carlo integration over the sphere to compute the first 9 SH coefficients.
|
|
46
|
-
* The results are written to a 3x3 render target where each pixel contains RGB values for one SH coefficient.
|
|
47
|
-
* The layout is:
|
|
48
|
-
* - (0,0): Y₀₀ (0,1): Y₁₋₁ (0,2): Y₁₀
|
|
49
|
-
* - (1,0): Y₁₁ (1,1): Y₂₋₂ (1,2): Y₂₋₁
|
|
50
|
-
* - (2,0): Y₂₀ (2,1): Y₂₁ (2,2): Y₂₂
|
|
51
|
-
*
|
|
52
|
-
* @param cubemap - The input cubemap texture to project
|
|
53
|
-
* @param outBuffer - GPU data buffer to receive the computed SH coefficients.
|
|
54
|
-
* Must be large enough to hold 9 RGB values (36 floats for RGBA32F format).
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* ```typescript
|
|
58
|
-
* const shBuffer = device.createDataBuffer(9 * 4 * 4); // 9 coefficients * 4 components * 4 bytes
|
|
59
|
-
* projector.projectCubemap(environmentMap, shBuffer);
|
|
60
|
-
* ```
|
|
42
|
+
/**
|
|
43
|
+
* Projects a cubemap texture into spherical harmonics coefficients and stores them in a GPUBuffer.
|
|
44
|
+
*
|
|
45
|
+
* The method performs Monte Carlo integration over the sphere to compute the first 9 SH coefficients.
|
|
46
|
+
* The results are written to a 3x3 render target where each pixel contains RGB values for one SH coefficient.
|
|
47
|
+
* The layout is:
|
|
48
|
+
* - (0,0): Y₀₀ (0,1): Y₁₋₁ (0,2): Y₁₀
|
|
49
|
+
* - (1,0): Y₁₁ (1,1): Y₂₋₂ (1,2): Y₂₋₁
|
|
50
|
+
* - (2,0): Y₂₀ (2,1): Y₂₁ (2,2): Y₂₂
|
|
51
|
+
*
|
|
52
|
+
* @param cubemap - The input cubemap texture to project
|
|
53
|
+
* @param outBuffer - GPU data buffer to receive the computed SH coefficients.
|
|
54
|
+
* Must be large enough to hold 9 RGB values (36 floats for RGBA32F format).
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const shBuffer = device.createDataBuffer(9 * 4 * 4); // 9 coefficients * 4 components * 4 bytes
|
|
59
|
+
* projector.projectCubemap(environmentMap, shBuffer);
|
|
60
|
+
* ```
|
|
61
61
|
*/ projectCubemap(cubemap, outBuffer, radianceSource = true) {
|
|
62
|
+
const device = getDevice();
|
|
63
|
+
if (!this._renderTarget.get()) {
|
|
64
|
+
const texture = device.createTexture2D('rgba32f', 3, 3, {
|
|
65
|
+
mipmapping: false
|
|
66
|
+
});
|
|
67
|
+
this._renderTarget.set(device.createFrameBuffer([
|
|
68
|
+
texture
|
|
69
|
+
], null));
|
|
70
|
+
}
|
|
62
71
|
this.projectCubemapToTexture(cubemap, this._renderTarget.get(), radianceSource);
|
|
63
72
|
this._renderTarget.get().getColorAttachments()[0].readPixelsToBuffer(0, 0, 3, 3, 0, 0, outBuffer);
|
|
64
73
|
}
|
|
65
|
-
/**
|
|
66
|
-
* Projects a cubemap texture into spherical harmonics coefficients and stores them in a 3x3 texture.
|
|
67
|
-
*
|
|
68
|
-
* The method performs Monte Carlo integration over the sphere to compute the first 9 SH coefficients.
|
|
69
|
-
* The results are written to a 3x3 render target where each pixel contains RGB values for one SH coefficient.
|
|
70
|
-
* The layout is:
|
|
71
|
-
* - (0,0): Y₀₀ (0,1): Y₁₋₁ (0,2): Y₁₀
|
|
72
|
-
* - (1,0): Y₁₁ (1,1): Y₂₋₂ (1,2): Y₂₋₁
|
|
73
|
-
* - (2,0): Y₂₀ (2,1): Y₂₁ (2,2): Y₂₂
|
|
74
|
-
*
|
|
75
|
-
* @param cubemap - The input cubemap texture to project
|
|
76
|
-
* @param outFramebuffer - Framebuffer that contains the 3x3 texture to receive the computed SH coefficients in color attachment slot 0.
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* ```typescript
|
|
80
|
-
* const shTexture = device.createTexture2D('rgba32f', 3, 3); // 9 coefficients * 4 components * 4 bytes
|
|
81
|
-
* const shFramebuffer = device.createFrameBuffer([shTexture], null);
|
|
82
|
-
* projector.projectCubemapToTexture(environmentMap, shFramebuffer);
|
|
83
|
-
* ```
|
|
74
|
+
/**
|
|
75
|
+
* Projects a cubemap texture into spherical harmonics coefficients and stores them in a 3x3 texture.
|
|
76
|
+
*
|
|
77
|
+
* The method performs Monte Carlo integration over the sphere to compute the first 9 SH coefficients.
|
|
78
|
+
* The results are written to a 3x3 render target where each pixel contains RGB values for one SH coefficient.
|
|
79
|
+
* The layout is:
|
|
80
|
+
* - (0,0): Y₀₀ (0,1): Y₁₋₁ (0,2): Y₁₀
|
|
81
|
+
* - (1,0): Y₁₁ (1,1): Y₂₋₂ (1,2): Y₂₋₁
|
|
82
|
+
* - (2,0): Y₂₀ (2,1): Y₂₁ (2,2): Y₂₂
|
|
83
|
+
*
|
|
84
|
+
* @param cubemap - The input cubemap texture to project
|
|
85
|
+
* @param outFramebuffer - Framebuffer that contains the 3x3 texture to receive the computed SH coefficients in color attachment slot 0.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const shTexture = device.createTexture2D('rgba32f', 3, 3); // 9 coefficients * 4 components * 4 bytes
|
|
90
|
+
* const shFramebuffer = device.createFrameBuffer([shTexture], null);
|
|
91
|
+
* projector.projectCubemapToTexture(environmentMap, shFramebuffer);
|
|
92
|
+
* ```
|
|
84
93
|
*/ projectCubemapToTexture(cubemap, framebuffer, radianceSource = true) {
|
|
85
94
|
const device = getDevice();
|
|
86
95
|
const clearColor = new Vector4(0, 0, 0, 1);
|
|
@@ -97,9 +106,9 @@ import { getDevice } from '../app/api.js';
|
|
|
97
106
|
this._primitive.get().drawInstanced(9);
|
|
98
107
|
device.popDeviceStates();
|
|
99
108
|
}
|
|
100
|
-
/**
|
|
101
|
-
* Disposes of all resources allocated by this projector instance.
|
|
102
|
-
* Should be called when the projector is no longer needed to prevent memory leaks.
|
|
109
|
+
/**
|
|
110
|
+
* Disposes of all resources allocated by this projector instance.
|
|
111
|
+
* Should be called when the projector is no longer needed to prevent memory leaks.
|
|
103
112
|
*/ onDispose() {
|
|
104
113
|
super.onDispose();
|
|
105
114
|
this._primitive.dispose();
|
|
@@ -108,16 +117,16 @@ import { getDevice } from '../app/api.js';
|
|
|
108
117
|
this._renderTarget.dispose();
|
|
109
118
|
}
|
|
110
119
|
}
|
|
111
|
-
/**
|
|
112
|
-
* Initializes the GPU resources needed for SH projection.
|
|
113
|
-
* This method is called automatically by projectCubemap() and sets up:
|
|
114
|
-
* - Sample directions primitive (Monte Carlo samples on unit sphere)
|
|
115
|
-
* - Render target (3x3 RGBA32F texture)
|
|
116
|
-
* - Render states (additive blending, no depth test)
|
|
117
|
-
* - GPU program for SH evaluation
|
|
118
|
-
*
|
|
119
|
-
* @param device - The graphics device to create resources with
|
|
120
|
-
* @internal
|
|
120
|
+
/**
|
|
121
|
+
* Initializes the GPU resources needed for SH projection.
|
|
122
|
+
* This method is called automatically by projectCubemap() and sets up:
|
|
123
|
+
* - Sample directions primitive (Monte Carlo samples on unit sphere)
|
|
124
|
+
* - Render target (3x3 RGBA32F texture)
|
|
125
|
+
* - Render states (additive blending, no depth test)
|
|
126
|
+
* - GPU program for SH evaluation
|
|
127
|
+
*
|
|
128
|
+
* @param device - The graphics device to create resources with
|
|
129
|
+
* @internal
|
|
121
130
|
*/ init(device) {
|
|
122
131
|
if (!this._primitive.get()) {
|
|
123
132
|
const samples = new Float32Array(this._numSamples * 4);
|
|
@@ -154,14 +163,6 @@ import { getDevice } from '../app/api.js';
|
|
|
154
163
|
primitive.primitiveType = 'point-list';
|
|
155
164
|
this._primitive.set(primitive);
|
|
156
165
|
}
|
|
157
|
-
if (!this._renderTarget.get()) {
|
|
158
|
-
const texture = device.createTexture2D('rgba32f', 3, 3, {
|
|
159
|
-
mipmapping: false
|
|
160
|
-
});
|
|
161
|
-
this._renderTarget.set(device.createFrameBuffer([
|
|
162
|
-
texture
|
|
163
|
-
], null));
|
|
164
|
-
}
|
|
165
166
|
if (!CubemapSHProjector._renderStats) {
|
|
166
167
|
CubemapSHProjector._renderStats = device.createRenderStateSet();
|
|
167
168
|
CubemapSHProjector._renderStats.useDepthState().enableTest(false).enableWrite(false);
|
|
@@ -173,19 +174,19 @@ import { getDevice } from '../app/api.js';
|
|
|
173
174
|
CubemapSHProjector._bindGroupInst = device.createBindGroup(CubemapSHProjector._programInst.bindGroupLayouts[0]);
|
|
174
175
|
}
|
|
175
176
|
}
|
|
176
|
-
/**
|
|
177
|
-
* Creates the GPU program for spherical harmonics evaluation.
|
|
178
|
-
*
|
|
179
|
-
* The vertex shader uses instanced rendering to generate 9 instances (one per SH coefficient).
|
|
180
|
-
* Each instance renders all sample points, but the vertex shader maps them to different
|
|
181
|
-
* pixels in the 3x3 output texture based on the instance ID.
|
|
182
|
-
*
|
|
183
|
-
* The fragment shader evaluates the appropriate SH basis function based on the pixel location,
|
|
184
|
-
* samples the cubemap in the sample direction, and multiplies by the integration weight.
|
|
185
|
-
*
|
|
186
|
-
* @param device - The graphics device to create the program with
|
|
187
|
-
* @returns The compiled GPU program
|
|
188
|
-
* @internal
|
|
177
|
+
/**
|
|
178
|
+
* Creates the GPU program for spherical harmonics evaluation.
|
|
179
|
+
*
|
|
180
|
+
* The vertex shader uses instanced rendering to generate 9 instances (one per SH coefficient).
|
|
181
|
+
* Each instance renders all sample points, but the vertex shader maps them to different
|
|
182
|
+
* pixels in the 3x3 output texture based on the instance ID.
|
|
183
|
+
*
|
|
184
|
+
* The fragment shader evaluates the appropriate SH basis function based on the pixel location,
|
|
185
|
+
* samples the cubemap in the sample direction, and multiplies by the integration weight.
|
|
186
|
+
*
|
|
187
|
+
* @param device - The graphics device to create the program with
|
|
188
|
+
* @returns The compiled GPU program
|
|
189
|
+
* @internal
|
|
189
190
|
*/ static _createProgram(device) {
|
|
190
191
|
const program = device.buildRenderProgram({
|
|
191
192
|
vertex (pb) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shprojector.js","sources":["../../src/utility/shprojector.ts"],"sourcesContent":["import type {\r\n AbstractDevice,\r\n BindGroup,\r\n FrameBuffer,\r\n GPUDataBuffer,\r\n GPUProgram,\r\n RenderStateSet,\r\n TextureCube\r\n} from '@zephyr3d/device';\r\nimport { Primitive } from '../render/primitive';\r\nimport type { Nullable } from '@zephyr3d/base';\r\nimport { Disposable, DRef, Vector4 } from '@zephyr3d/base';\r\nimport { fetchSampler } from './misc';\r\nimport { getDevice } from '../app/api';\r\n\r\n/**\r\n * CubemapSHProjector is responsible for projecting a cubemap texture into spherical harmonics (SH) coefficients.\r\n * This is commonly used for efficient environment lighting approximation in real-time rendering.\r\n *\r\n * The class uses Monte Carlo sampling to compute the first 9 spherical harmonics coefficients (up to order 2)\r\n * from a cubemap texture, which can then be used for ambient lighting calculations.\r\n *\r\n * @example\r\n * ```typescript\r\n * const projector = new CubemapSHProjector(10000);\r\n * const shBuffer = device.createBuffer(4 * 4 * 9, { usage: 'uniform' });\r\n * projector.projectCubemap(environmentCubemap, shBuffer);\r\n * // shBuffer now contains the 9 SH coefficients as RGB values\r\n * projector.dispose();\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class CubemapSHProjector extends Disposable {\r\n private static _programInst: Nullable<GPUProgram> = null;\r\n private static _bindGroupInst: Nullable<BindGroup> = null;\r\n private static _renderStats: Nullable<RenderStateSet> = null;\r\n private readonly _primitive: DRef<Primitive>;\r\n private readonly _renderTarget: DRef<FrameBuffer>;\r\n private readonly _numSamples: number;\r\n /**\r\n * Creates a new CubemapSHProjector instance.\r\n *\r\n * @param numSamples - Number of Monte Carlo samples to use for SH projection.\r\n * Higher values provide better accuracy but slower computation.\r\n * Default is 10000.\r\n */\r\n constructor(numSamples = 10000) {\r\n super();\r\n this._numSamples = numSamples;\r\n this._primitive = new DRef();\r\n this._renderTarget = new DRef();\r\n }\r\n /**\r\n * Projects a cubemap texture into spherical harmonics coefficients and stores them in a GPUBuffer.\r\n *\r\n * The method performs Monte Carlo integration over the sphere to compute the first 9 SH coefficients.\r\n * The results are written to a 3x3 render target where each pixel contains RGB values for one SH coefficient.\r\n * The layout is:\r\n * - (0,0): Y₀₀ (0,1): Y₁₋₁ (0,2): Y₁₀\r\n * - (1,0): Y₁₁ (1,1): Y₂₋₂ (1,2): Y₂₋₁\r\n * - (2,0): Y₂₀ (2,1): Y₂₁ (2,2): Y₂₂\r\n *\r\n * @param cubemap - The input cubemap texture to project\r\n * @param outBuffer - GPU data buffer to receive the computed SH coefficients.\r\n * Must be large enough to hold 9 RGB values (36 floats for RGBA32F format).\r\n *\r\n * @example\r\n * ```typescript\r\n * const shBuffer = device.createDataBuffer(9 * 4 * 4); // 9 coefficients * 4 components * 4 bytes\r\n * projector.projectCubemap(environmentMap, shBuffer);\r\n * ```\r\n */\r\n projectCubemap(cubemap: TextureCube, outBuffer: GPUDataBuffer, radianceSource = true) {\r\n this.projectCubemapToTexture(cubemap, this._renderTarget.get()!, radianceSource);\r\n this._renderTarget.get()!.getColorAttachments()[0].readPixelsToBuffer(0, 0, 3, 3, 0, 0, outBuffer);\r\n }\r\n /**\r\n * Projects a cubemap texture into spherical harmonics coefficients and stores them in a 3x3 texture.\r\n *\r\n * The method performs Monte Carlo integration over the sphere to compute the first 9 SH coefficients.\r\n * The results are written to a 3x3 render target where each pixel contains RGB values for one SH coefficient.\r\n * The layout is:\r\n * - (0,0): Y₀₀ (0,1): Y₁₋₁ (0,2): Y₁₀\r\n * - (1,0): Y₁₁ (1,1): Y₂₋₂ (1,2): Y₂₋₁\r\n * - (2,0): Y₂₀ (2,1): Y₂₁ (2,2): Y₂₂\r\n *\r\n * @param cubemap - The input cubemap texture to project\r\n * @param outFramebuffer - Framebuffer that contains the 3x3 texture to receive the computed SH coefficients in color attachment slot 0.\r\n *\r\n * @example\r\n * ```typescript\r\n * const shTexture = device.createTexture2D('rgba32f', 3, 3); // 9 coefficients * 4 components * 4 bytes\r\n * const shFramebuffer = device.createFrameBuffer([shTexture], null);\r\n * projector.projectCubemapToTexture(environmentMap, shFramebuffer);\r\n * ```\r\n */\r\n projectCubemapToTexture(cubemap: TextureCube, framebuffer: FrameBuffer, radianceSource = true) {\r\n const device = getDevice();\r\n const clearColor = new Vector4(0, 0, 0, 1);\r\n this.init(device);\r\n device.pushDeviceStates();\r\n device.setRenderStates(CubemapSHProjector._renderStats);\r\n device.setProgram(CubemapSHProjector._programInst);\r\n device.setFramebuffer(framebuffer);\r\n device.clearFrameBuffer(clearColor, null, null);\r\n const bindGroup = CubemapSHProjector._bindGroupInst!;\r\n bindGroup.setTexture('cubemap', cubemap, fetchSampler('clamp_linear_nomip'));\r\n bindGroup.setValue('scale', radianceSource ? 1.0 : Math.PI);\r\n device.setBindGroup(0, bindGroup);\r\n this._primitive.get()!.drawInstanced(9);\r\n device.popDeviceStates();\r\n }\r\n /**\r\n * Disposes of all resources allocated by this projector instance.\r\n * Should be called when the projector is no longer needed to prevent memory leaks.\r\n */\r\n protected onDispose() {\r\n super.onDispose();\r\n this._primitive.dispose();\r\n if (this._renderTarget.get()) {\r\n this._renderTarget.get()!.getColorAttachments()[0].dispose();\r\n this._renderTarget.dispose();\r\n }\r\n }\r\n /**\r\n * Initializes the GPU resources needed for SH projection.\r\n * This method is called automatically by projectCubemap() and sets up:\r\n * - Sample directions primitive (Monte Carlo samples on unit sphere)\r\n * - Render target (3x3 RGBA32F texture)\r\n * - Render states (additive blending, no depth test)\r\n * - GPU program for SH evaluation\r\n *\r\n * @param device - The graphics device to create resources with\r\n * @internal\r\n */\r\n private init(device: AbstractDevice) {\r\n if (!this._primitive.get()) {\r\n const samples = new Float32Array(this._numSamples * 4);\r\n for (let i = 0; i < this._numSamples; i++) {\r\n let x1: number, x2: number, s: number;\r\n do {\r\n x1 = Math.random() * 2 - 1;\r\n x2 = Math.random() * 2 - 1;\r\n s = x1 * x1 + x2 * x2;\r\n } while (s >= 1);\r\n const sqrtS = Math.sqrt(1 - s);\r\n samples[i * 4 + 0] = 2 * x1 * sqrtS;\r\n samples[i * 4 + 1] = 2 * x2 * sqrtS;\r\n samples[i * 4 + 2] = 1 - 2 * s;\r\n samples[i * 4 + 3] = (4 * Math.PI) / this._numSamples;\r\n }\r\n const primitive = new Primitive();\r\n primitive.createAndSetVertexBuffer('position_f32x4', samples);\r\n if (device.type === 'webgl') {\r\n primitive.createAndSetVertexBuffer(\r\n 'tex0_f32',\r\n new Float32Array([0, 1, 2, 3, 4, 5, 6, 7, 8]),\r\n 'instance'\r\n );\r\n }\r\n primitive.indexCount = this._numSamples;\r\n primitive.indexStart = 0;\r\n primitive.primitiveType = 'point-list';\r\n this._primitive.set(primitive);\r\n }\r\n\r\n if (!this._renderTarget.get()) {\r\n const texture = device.createTexture2D('rgba32f', 3, 3, {\r\n mipmapping: false\r\n })!;\r\n this._renderTarget.set(device.createFrameBuffer([texture], null));\r\n }\r\n\r\n if (!CubemapSHProjector._renderStats) {\r\n CubemapSHProjector._renderStats = device.createRenderStateSet();\r\n CubemapSHProjector._renderStats.useDepthState().enableTest(false).enableWrite(false);\r\n CubemapSHProjector._renderStats\r\n .useBlendingState()\r\n .enable(true)\r\n .setBlendEquation('add', 'add')\r\n .setBlendFuncRGB('one', 'one')\r\n .setBlendFuncAlpha('zero', 'one');\r\n CubemapSHProjector._renderStats.useRasterizerState().setCullMode('none');\r\n }\r\n\r\n if (!CubemapSHProjector._programInst) {\r\n CubemapSHProjector._programInst = CubemapSHProjector._createProgram(device)!;\r\n CubemapSHProjector._bindGroupInst = device.createBindGroup(\r\n CubemapSHProjector._programInst.bindGroupLayouts[0]\r\n );\r\n }\r\n }\r\n /**\r\n * Creates the GPU program for spherical harmonics evaluation.\r\n *\r\n * The vertex shader uses instanced rendering to generate 9 instances (one per SH coefficient).\r\n * Each instance renders all sample points, but the vertex shader maps them to different\r\n * pixels in the 3x3 output texture based on the instance ID.\r\n *\r\n * The fragment shader evaluates the appropriate SH basis function based on the pixel location,\r\n * samples the cubemap in the sample direction, and multiplies by the integration weight.\r\n *\r\n * @param device - The graphics device to create the program with\r\n * @returns The compiled GPU program\r\n * @internal\r\n */\r\n private static _createProgram(device: AbstractDevice) {\r\n const program = device.buildRenderProgram({\r\n vertex(pb) {\r\n this.$inputs.directionWeight = pb.vec4().attrib('position');\r\n if (device.type === 'webgl') {\r\n this.$inputs.instanceId = pb.float().attrib('texCoord0');\r\n }\r\n pb.main(function () {\r\n this.$outputs.direction = this.$inputs.directionWeight.xyz;\r\n this.$outputs.weight = this.$inputs.directionWeight.w;\r\n if (pb.getDevice().type !== 'webgpu') {\r\n this.$builtins.pointSize = 1;\r\n }\r\n this.$outputs.shIndex =\r\n device.type === 'webgl' ? this.$inputs.instanceId : pb.int(this.$builtins.instanceIndex);\r\n this.$l.x = pb.mod(this.$outputs.shIndex, 3);\r\n this.$l.y = pb.div(this.$outputs.shIndex, 3);\r\n this.$l.ndcX = pb.sub(pb.div(pb.add(pb.float(this.x), 0.5), 1.5), 1);\r\n this.$l.ndcY = pb.sub(pb.div(pb.add(pb.float(this.y), 0.5), 1.5), 1);\r\n this.$l.$builtins.position = pb.vec4(this.ndcX, this.ndcY, 0, 1);\r\n if (pb.getDevice().type === 'webgpu') {\r\n this.$builtins.position = pb.mul(this.$builtins.position, pb.vec4(1, -1, 1, 1));\r\n }\r\n });\r\n },\r\n fragment(pb) {\r\n this.$outputs.color = pb.vec4();\r\n this.cubemap = pb.texCube().uniform(0);\r\n this.scale = pb.float().uniform(0);\r\n pb.func('cosineLobeBandFactor', [pb.int('l')], function () {\r\n this.$if(pb.equal(this.l, 0), function () {\r\n this.$return(pb.float(1));\r\n });\r\n this.$if(pb.lessThanEqual(this.l, 3), function () {\r\n this.$return(2 / 3);\r\n });\r\n this.$return(1 / 4);\r\n });\r\n pb.func('Y0', [pb.vec3('v')], function () {\r\n this.$return(0.282094791773878);\r\n });\r\n pb.func('Y1', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.y, -0.4886025119));\r\n });\r\n pb.func('Y2', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.z, 0.4886025119));\r\n });\r\n pb.func('Y3', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.x, -0.4886025119));\r\n });\r\n pb.func('Y4', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.x, this.v.y, 1.0925484306));\r\n });\r\n pb.func('Y5', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.y, this.v.z, -1.0925484306));\r\n });\r\n pb.func('Y6', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(pb.sub(pb.mul(this.v.z, this.v.z, 3), 1), 0.3153915652));\r\n });\r\n pb.func('Y7', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(this.v.x, this.v.z, -1.0925484306));\r\n });\r\n pb.func('Y8', [pb.vec3('v')], function () {\r\n this.$return(pb.mul(pb.sub(pb.mul(this.v.x, this.v.x), pb.mul(this.v.y, this.v.y)), 0.5462742153));\r\n });\r\n pb.func('evalBasis', [pb.vec3('dir'), pb.int('c')], function () {\r\n this.$if(pb.equal(this.c, 0), function () {\r\n this.$return(this.Y0(this.dir));\r\n })\r\n .$elseif(pb.equal(this.c, 1), function () {\r\n this.$return(this.Y1(this.dir));\r\n })\r\n .$elseif(pb.equal(this.c, 2), function () {\r\n this.$return(this.Y2(this.dir));\r\n })\r\n .$elseif(pb.equal(this.c, 3), function () {\r\n this.$return(this.Y3(this.dir));\r\n })\r\n .$elseif(pb.equal(this.c, 4), function () {\r\n this.$return(this.Y4(this.dir));\r\n })\r\n .$elseif(pb.equal(this.c, 5), function () {\r\n this.$return(this.Y5(this.dir));\r\n })\r\n .$elseif(pb.equal(this.c, 6), function () {\r\n this.$return(this.Y6(this.dir));\r\n })\r\n .$elseif(pb.equal(this.c, 7), function () {\r\n this.$return(this.Y7(this.dir));\r\n })\r\n .$elseif(pb.equal(this.c, 8), function () {\r\n this.$return(this.Y8(this.dir));\r\n })\r\n .$else(function () {\r\n this.$return(0);\r\n });\r\n });\r\n pb.main(function () {\r\n this.$l.radiance = pb.textureSampleLevel(this.cubemap, this.$inputs.direction, 0).rgb;\r\n this.$l.bandFactor = this.cosineLobeBandFactor(\r\n pb.getDevice().type === 'webgl' ? pb.int(this.$inputs.shIndex) : this.$inputs.shIndex\r\n );\r\n this.$l.sh = this.evalBasis(\r\n this.$inputs.direction,\r\n pb.getDevice().type === 'webgl' ? pb.int(this.$inputs.shIndex) : this.$inputs.shIndex\r\n );\r\n this.$outputs.color = pb.vec4(\r\n pb.mul(this.radiance, this.sh, this.$inputs.weight, this.bandFactor, this.scale),\r\n 1\r\n );\r\n });\r\n }\r\n })!;\r\n program.name = '@CubemapSHProjector_SHProject';\r\n return program;\r\n }\r\n}\r\n"],"names":["CubemapSHProjector","Disposable","_programInst","_bindGroupInst","_renderStats","_primitive","_renderTarget","_numSamples","numSamples","DRef","projectCubemap","cubemap","outBuffer","radianceSource","projectCubemapToTexture","get","getColorAttachments","readPixelsToBuffer","framebuffer","device","getDevice","clearColor","Vector4","init","pushDeviceStates","setRenderStates","setProgram","setFramebuffer","clearFrameBuffer","bindGroup","setTexture","fetchSampler","setValue","Math","PI","setBindGroup","drawInstanced","popDeviceStates","onDispose","dispose","samples","Float32Array","i","x1","x2","s","random","sqrtS","sqrt","primitive","Primitive","createAndSetVertexBuffer","type","indexCount","indexStart","primitiveType","set","texture","createTexture2D","mipmapping","createFrameBuffer","createRenderStateSet","useDepthState","enableTest","enableWrite","useBlendingState","enable","setBlendEquation","setBlendFuncRGB","setBlendFuncAlpha","useRasterizerState","setCullMode","_createProgram","createBindGroup","bindGroupLayouts","program","buildRenderProgram","vertex","pb","$inputs","directionWeight","vec4","attrib","instanceId","float","main","$outputs","direction","xyz","weight","w","$builtins","pointSize","shIndex","int","instanceIndex","$l","x","mod","y","div","ndcX","sub","add","ndcY","position","mul","fragment","color","texCube","uniform","scale","func","$if","equal","l","$return","lessThanEqual","vec3","v","z","c","Y0","dir","$elseif","Y1","Y2","Y3","Y4","Y5","Y6","Y7","Y8","$else","radiance","textureSampleLevel","rgb","bandFactor","cosineLobeBandFactor","sh","evalBasis","name"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shprojector.js","sources":["../../src/utility/shprojector.ts"],"sourcesContent":["import type {\n AbstractDevice,\n BindGroup,\n FrameBuffer,\n GPUDataBuffer,\n GPUProgram,\n RenderStateSet,\n TextureCube\n} from '@zephyr3d/device';\nimport { Primitive } from '../render/primitive';\nimport type { Nullable } from '@zephyr3d/base';\nimport { Disposable, DRef, Vector4 } from '@zephyr3d/base';\nimport { fetchSampler } from './misc';\nimport { getDevice } from '../app/api';\n\n/**\n * CubemapSHProjector is responsible for projecting a cubemap texture into spherical harmonics (SH) coefficients.\n * This is commonly used for efficient environment lighting approximation in real-time rendering.\n *\n * The class uses Monte Carlo sampling to compute the first 9 spherical harmonics coefficients (up to order 2)\n * from a cubemap texture, which can then be used for ambient lighting calculations.\n *\n * @example\n * ```typescript\n * const projector = new CubemapSHProjector(10000);\n * const shBuffer = device.createBuffer(4 * 4 * 9, { usage: 'uniform' });\n * projector.projectCubemap(environmentCubemap, shBuffer);\n * // shBuffer now contains the 9 SH coefficients as RGB values\n * projector.dispose();\n * ```\n *\n * @public\n */\nexport class CubemapSHProjector extends Disposable {\n private static _programInst: Nullable<GPUProgram> = null;\n private static _bindGroupInst: Nullable<BindGroup> = null;\n private static _renderStats: Nullable<RenderStateSet> = null;\n private readonly _primitive: DRef<Primitive>;\n private readonly _renderTarget: DRef<FrameBuffer>;\n private readonly _numSamples: number;\n /**\n * Creates a new CubemapSHProjector instance.\n *\n * @param numSamples - Number of Monte Carlo samples to use for SH projection.\n * Higher values provide better accuracy but slower computation.\n * Default is 10000.\n */\n constructor(numSamples = 10000) {\n super();\n this._numSamples = numSamples;\n this._primitive = new DRef();\n this._renderTarget = new DRef();\n }\n /**\n * Projects a cubemap texture into spherical harmonics coefficients and stores them in a GPUBuffer.\n *\n * The method performs Monte Carlo integration over the sphere to compute the first 9 SH coefficients.\n * The results are written to a 3x3 render target where each pixel contains RGB values for one SH coefficient.\n * The layout is:\n * - (0,0): Y₀₀ (0,1): Y₁₋₁ (0,2): Y₁₀\n * - (1,0): Y₁₁ (1,1): Y₂₋₂ (1,2): Y₂₋₁\n * - (2,0): Y₂₀ (2,1): Y₂₁ (2,2): Y₂₂\n *\n * @param cubemap - The input cubemap texture to project\n * @param outBuffer - GPU data buffer to receive the computed SH coefficients.\n * Must be large enough to hold 9 RGB values (36 floats for RGBA32F format).\n *\n * @example\n * ```typescript\n * const shBuffer = device.createDataBuffer(9 * 4 * 4); // 9 coefficients * 4 components * 4 bytes\n * projector.projectCubemap(environmentMap, shBuffer);\n * ```\n */\n projectCubemap(cubemap: TextureCube, outBuffer: GPUDataBuffer, radianceSource = true) {\n const device = getDevice();\n if (!this._renderTarget.get()) {\n const texture = device.createTexture2D('rgba32f', 3, 3, {\n mipmapping: false\n })!;\n this._renderTarget.set(device.createFrameBuffer([texture], null));\n }\n this.projectCubemapToTexture(cubemap, this._renderTarget.get()!, radianceSource);\n this._renderTarget.get()!.getColorAttachments()[0].readPixelsToBuffer(0, 0, 3, 3, 0, 0, outBuffer);\n }\n /**\n * Projects a cubemap texture into spherical harmonics coefficients and stores them in a 3x3 texture.\n *\n * The method performs Monte Carlo integration over the sphere to compute the first 9 SH coefficients.\n * The results are written to a 3x3 render target where each pixel contains RGB values for one SH coefficient.\n * The layout is:\n * - (0,0): Y₀₀ (0,1): Y₁₋₁ (0,2): Y₁₀\n * - (1,0): Y₁₁ (1,1): Y₂₋₂ (1,2): Y₂₋₁\n * - (2,0): Y₂₀ (2,1): Y₂₁ (2,2): Y₂₂\n *\n * @param cubemap - The input cubemap texture to project\n * @param outFramebuffer - Framebuffer that contains the 3x3 texture to receive the computed SH coefficients in color attachment slot 0.\n *\n * @example\n * ```typescript\n * const shTexture = device.createTexture2D('rgba32f', 3, 3); // 9 coefficients * 4 components * 4 bytes\n * const shFramebuffer = device.createFrameBuffer([shTexture], null);\n * projector.projectCubemapToTexture(environmentMap, shFramebuffer);\n * ```\n */\n projectCubemapToTexture(cubemap: TextureCube, framebuffer: FrameBuffer, radianceSource = true) {\n const device = getDevice();\n const clearColor = new Vector4(0, 0, 0, 1);\n this.init(device);\n device.pushDeviceStates();\n device.setRenderStates(CubemapSHProjector._renderStats);\n device.setProgram(CubemapSHProjector._programInst);\n device.setFramebuffer(framebuffer);\n device.clearFrameBuffer(clearColor, null, null);\n const bindGroup = CubemapSHProjector._bindGroupInst!;\n bindGroup.setTexture('cubemap', cubemap, fetchSampler('clamp_linear_nomip'));\n bindGroup.setValue('scale', radianceSource ? 1.0 : Math.PI);\n device.setBindGroup(0, bindGroup);\n this._primitive.get()!.drawInstanced(9);\n device.popDeviceStates();\n }\n /**\n * Disposes of all resources allocated by this projector instance.\n * Should be called when the projector is no longer needed to prevent memory leaks.\n */\n protected onDispose() {\n super.onDispose();\n this._primitive.dispose();\n if (this._renderTarget.get()) {\n this._renderTarget.get()!.getColorAttachments()[0].dispose();\n this._renderTarget.dispose();\n }\n }\n /**\n * Initializes the GPU resources needed for SH projection.\n * This method is called automatically by projectCubemap() and sets up:\n * - Sample directions primitive (Monte Carlo samples on unit sphere)\n * - Render target (3x3 RGBA32F texture)\n * - Render states (additive blending, no depth test)\n * - GPU program for SH evaluation\n *\n * @param device - The graphics device to create resources with\n * @internal\n */\n private init(device: AbstractDevice) {\n if (!this._primitive.get()) {\n const samples = new Float32Array(this._numSamples * 4);\n for (let i = 0; i < this._numSamples; i++) {\n let x1: number, x2: number, s: number;\n do {\n x1 = Math.random() * 2 - 1;\n x2 = Math.random() * 2 - 1;\n s = x1 * x1 + x2 * x2;\n } while (s >= 1);\n const sqrtS = Math.sqrt(1 - s);\n samples[i * 4 + 0] = 2 * x1 * sqrtS;\n samples[i * 4 + 1] = 2 * x2 * sqrtS;\n samples[i * 4 + 2] = 1 - 2 * s;\n samples[i * 4 + 3] = (4 * Math.PI) / this._numSamples;\n }\n const primitive = new Primitive();\n primitive.createAndSetVertexBuffer('position_f32x4', samples);\n if (device.type === 'webgl') {\n primitive.createAndSetVertexBuffer(\n 'tex0_f32',\n new Float32Array([0, 1, 2, 3, 4, 5, 6, 7, 8]),\n 'instance'\n );\n }\n primitive.indexCount = this._numSamples;\n primitive.indexStart = 0;\n primitive.primitiveType = 'point-list';\n this._primitive.set(primitive);\n }\n\n if (!CubemapSHProjector._renderStats) {\n CubemapSHProjector._renderStats = device.createRenderStateSet();\n CubemapSHProjector._renderStats.useDepthState().enableTest(false).enableWrite(false);\n CubemapSHProjector._renderStats\n .useBlendingState()\n .enable(true)\n .setBlendEquation('add', 'add')\n .setBlendFuncRGB('one', 'one')\n .setBlendFuncAlpha('zero', 'one');\n CubemapSHProjector._renderStats.useRasterizerState().setCullMode('none');\n }\n\n if (!CubemapSHProjector._programInst) {\n CubemapSHProjector._programInst = CubemapSHProjector._createProgram(device)!;\n CubemapSHProjector._bindGroupInst = device.createBindGroup(\n CubemapSHProjector._programInst.bindGroupLayouts[0]\n );\n }\n }\n /**\n * Creates the GPU program for spherical harmonics evaluation.\n *\n * The vertex shader uses instanced rendering to generate 9 instances (one per SH coefficient).\n * Each instance renders all sample points, but the vertex shader maps them to different\n * pixels in the 3x3 output texture based on the instance ID.\n *\n * The fragment shader evaluates the appropriate SH basis function based on the pixel location,\n * samples the cubemap in the sample direction, and multiplies by the integration weight.\n *\n * @param device - The graphics device to create the program with\n * @returns The compiled GPU program\n * @internal\n */\n private static _createProgram(device: AbstractDevice) {\n const program = device.buildRenderProgram({\n vertex(pb) {\n this.$inputs.directionWeight = pb.vec4().attrib('position');\n if (device.type === 'webgl') {\n this.$inputs.instanceId = pb.float().attrib('texCoord0');\n }\n pb.main(function () {\n this.$outputs.direction = this.$inputs.directionWeight.xyz;\n this.$outputs.weight = this.$inputs.directionWeight.w;\n if (pb.getDevice().type !== 'webgpu') {\n this.$builtins.pointSize = 1;\n }\n this.$outputs.shIndex =\n device.type === 'webgl' ? this.$inputs.instanceId : pb.int(this.$builtins.instanceIndex);\n this.$l.x = pb.mod(this.$outputs.shIndex, 3);\n this.$l.y = pb.div(this.$outputs.shIndex, 3);\n this.$l.ndcX = pb.sub(pb.div(pb.add(pb.float(this.x), 0.5), 1.5), 1);\n this.$l.ndcY = pb.sub(pb.div(pb.add(pb.float(this.y), 0.5), 1.5), 1);\n this.$l.$builtins.position = pb.vec4(this.ndcX, this.ndcY, 0, 1);\n if (pb.getDevice().type === 'webgpu') {\n this.$builtins.position = pb.mul(this.$builtins.position, pb.vec4(1, -1, 1, 1));\n }\n });\n },\n fragment(pb) {\n this.$outputs.color = pb.vec4();\n this.cubemap = pb.texCube().uniform(0);\n this.scale = pb.float().uniform(0);\n pb.func('cosineLobeBandFactor', [pb.int('l')], function () {\n this.$if(pb.equal(this.l, 0), function () {\n this.$return(pb.float(1));\n });\n this.$if(pb.lessThanEqual(this.l, 3), function () {\n this.$return(2 / 3);\n });\n this.$return(1 / 4);\n });\n pb.func('Y0', [pb.vec3('v')], function () {\n this.$return(0.282094791773878);\n });\n pb.func('Y1', [pb.vec3('v')], function () {\n this.$return(pb.mul(this.v.y, -0.4886025119));\n });\n pb.func('Y2', [pb.vec3('v')], function () {\n this.$return(pb.mul(this.v.z, 0.4886025119));\n });\n pb.func('Y3', [pb.vec3('v')], function () {\n this.$return(pb.mul(this.v.x, -0.4886025119));\n });\n pb.func('Y4', [pb.vec3('v')], function () {\n this.$return(pb.mul(this.v.x, this.v.y, 1.0925484306));\n });\n pb.func('Y5', [pb.vec3('v')], function () {\n this.$return(pb.mul(this.v.y, this.v.z, -1.0925484306));\n });\n pb.func('Y6', [pb.vec3('v')], function () {\n this.$return(pb.mul(pb.sub(pb.mul(this.v.z, this.v.z, 3), 1), 0.3153915652));\n });\n pb.func('Y7', [pb.vec3('v')], function () {\n this.$return(pb.mul(this.v.x, this.v.z, -1.0925484306));\n });\n pb.func('Y8', [pb.vec3('v')], function () {\n this.$return(pb.mul(pb.sub(pb.mul(this.v.x, this.v.x), pb.mul(this.v.y, this.v.y)), 0.5462742153));\n });\n pb.func('evalBasis', [pb.vec3('dir'), pb.int('c')], function () {\n this.$if(pb.equal(this.c, 0), function () {\n this.$return(this.Y0(this.dir));\n })\n .$elseif(pb.equal(this.c, 1), function () {\n this.$return(this.Y1(this.dir));\n })\n .$elseif(pb.equal(this.c, 2), function () {\n this.$return(this.Y2(this.dir));\n })\n .$elseif(pb.equal(this.c, 3), function () {\n this.$return(this.Y3(this.dir));\n })\n .$elseif(pb.equal(this.c, 4), function () {\n this.$return(this.Y4(this.dir));\n })\n .$elseif(pb.equal(this.c, 5), function () {\n this.$return(this.Y5(this.dir));\n })\n .$elseif(pb.equal(this.c, 6), function () {\n this.$return(this.Y6(this.dir));\n })\n .$elseif(pb.equal(this.c, 7), function () {\n this.$return(this.Y7(this.dir));\n })\n .$elseif(pb.equal(this.c, 8), function () {\n this.$return(this.Y8(this.dir));\n })\n .$else(function () {\n this.$return(0);\n });\n });\n pb.main(function () {\n this.$l.radiance = pb.textureSampleLevel(this.cubemap, this.$inputs.direction, 0).rgb;\n this.$l.bandFactor = this.cosineLobeBandFactor(\n pb.getDevice().type === 'webgl' ? pb.int(this.$inputs.shIndex) : this.$inputs.shIndex\n );\n this.$l.sh = this.evalBasis(\n this.$inputs.direction,\n pb.getDevice().type === 'webgl' ? pb.int(this.$inputs.shIndex) : this.$inputs.shIndex\n );\n this.$outputs.color = pb.vec4(\n pb.mul(this.radiance, this.sh, this.$inputs.weight, this.bandFactor, this.scale),\n 1\n );\n });\n }\n })!;\n program.name = '@CubemapSHProjector_SHProject';\n return program;\n }\n}\n"],"names":["CubemapSHProjector","Disposable","_programInst","_bindGroupInst","_renderStats","_primitive","_renderTarget","_numSamples","numSamples","DRef","projectCubemap","cubemap","outBuffer","radianceSource","device","getDevice","get","texture","createTexture2D","mipmapping","set","createFrameBuffer","projectCubemapToTexture","getColorAttachments","readPixelsToBuffer","framebuffer","clearColor","Vector4","init","pushDeviceStates","setRenderStates","setProgram","setFramebuffer","clearFrameBuffer","bindGroup","setTexture","fetchSampler","setValue","Math","PI","setBindGroup","drawInstanced","popDeviceStates","onDispose","dispose","samples","Float32Array","i","x1","x2","s","random","sqrtS","sqrt","primitive","Primitive","createAndSetVertexBuffer","type","indexCount","indexStart","primitiveType","createRenderStateSet","useDepthState","enableTest","enableWrite","useBlendingState","enable","setBlendEquation","setBlendFuncRGB","setBlendFuncAlpha","useRasterizerState","setCullMode","_createProgram","createBindGroup","bindGroupLayouts","program","buildRenderProgram","vertex","pb","$inputs","directionWeight","vec4","attrib","instanceId","float","main","$outputs","direction","xyz","weight","w","$builtins","pointSize","shIndex","int","instanceIndex","$l","x","mod","y","div","ndcX","sub","add","ndcY","position","mul","fragment","color","texCube","uniform","scale","func","$if","equal","l","$return","lessThanEqual","vec3","v","z","c","Y0","dir","$elseif","Y1","Y2","Y3","Y4","Y5","Y6","Y7","Y8","$else","radiance","textureSampleLevel","rgb","bandFactor","cosineLobeBandFactor","sh","evalBasis","name"],"mappings":"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"}
|
package/dist/values.js
CHANGED
|
@@ -70,9 +70,56 @@ import { Vector3 } from '@zephyr3d/base';
|
|
|
70
70
|
/** @public */ const MORPH_TARGET_TEX2 = 6;
|
|
71
71
|
/** @public */ const MORPH_TARGET_TEX3 = 7;
|
|
72
72
|
/** @public */ const MAX_MORPH_ATTRIBUTES = 8;
|
|
73
|
-
/** @public */ const
|
|
73
|
+
/** @public */ const DEFAULT_MORPH_TARGET_LIMIT = 256;
|
|
74
|
+
/** @public */ const DEFAULT_ACTIVE_MORPH_TARGET_LIMIT = 64;
|
|
75
|
+
/** @public */ const MAX_MORPH_TARGETS = 1024;
|
|
76
|
+
/** @public */ const DEFAULT_SKIN_INFLUENCE_LIMIT = 4;
|
|
77
|
+
/** @public */ const MAX_SKIN_INFLUENCES = 12;
|
|
78
|
+
/** @public */ const MAX_SKIN_EXTRA_INFLUENCE_PAIRS = Math.ceil(Math.max(0, MAX_SKIN_INFLUENCES - 4) / 2);
|
|
74
79
|
/** @public */ const MORPH_WEIGHTS_VECTOR_COUNT = MAX_MORPH_TARGETS + 3 >> 2;
|
|
75
80
|
/** @public */ const MORPH_ATTRIBUTE_VECTOR_COUNT = MAX_MORPH_ATTRIBUTES + 3 >> 2;
|
|
81
|
+
let morphTargetLimit = DEFAULT_MORPH_TARGET_LIMIT;
|
|
82
|
+
let activeMorphTargetLimit = DEFAULT_ACTIVE_MORPH_TARGET_LIMIT;
|
|
83
|
+
let skinInfluenceLimit = DEFAULT_SKIN_INFLUENCE_LIMIT;
|
|
84
|
+
/** @public */ function normalizeMorphTargetLimit(value) {
|
|
85
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
86
|
+
return DEFAULT_MORPH_TARGET_LIMIT;
|
|
87
|
+
}
|
|
88
|
+
return Math.min(MAX_MORPH_TARGETS, Math.max(1, Math.trunc(value)));
|
|
89
|
+
}
|
|
90
|
+
/** @public */ function getMorphTargetLimit() {
|
|
91
|
+
return morphTargetLimit;
|
|
92
|
+
}
|
|
93
|
+
/** @public */ function setMorphTargetLimit(value) {
|
|
94
|
+
morphTargetLimit = normalizeMorphTargetLimit(value);
|
|
95
|
+
return morphTargetLimit;
|
|
96
|
+
}
|
|
97
|
+
/** @public */ function normalizeActiveMorphTargetLimit(value) {
|
|
98
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
99
|
+
return DEFAULT_ACTIVE_MORPH_TARGET_LIMIT;
|
|
100
|
+
}
|
|
101
|
+
return Math.min(MAX_MORPH_TARGETS, Math.max(1, Math.trunc(value)));
|
|
102
|
+
}
|
|
103
|
+
/** @public */ function getActiveMorphTargetLimit() {
|
|
104
|
+
return activeMorphTargetLimit;
|
|
105
|
+
}
|
|
106
|
+
/** @public */ function setActiveMorphTargetLimit(value) {
|
|
107
|
+
activeMorphTargetLimit = normalizeActiveMorphTargetLimit(value);
|
|
108
|
+
return activeMorphTargetLimit;
|
|
109
|
+
}
|
|
110
|
+
/** @public */ function normalizeSkinInfluenceLimit(value) {
|
|
111
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
112
|
+
return DEFAULT_SKIN_INFLUENCE_LIMIT;
|
|
113
|
+
}
|
|
114
|
+
return Math.min(MAX_SKIN_INFLUENCES, Math.max(1, Math.trunc(value)));
|
|
115
|
+
}
|
|
116
|
+
/** @public */ function getSkinInfluenceLimit() {
|
|
117
|
+
return skinInfluenceLimit;
|
|
118
|
+
}
|
|
119
|
+
/** @public */ function setSkinInfluenceLimit(value) {
|
|
120
|
+
skinInfluenceLimit = normalizeSkinInfluenceLimit(value);
|
|
121
|
+
return skinInfluenceLimit;
|
|
122
|
+
}
|
|
76
123
|
/** @public */ const MAX_TERRAIN_MIPMAP_LEVELS = 64;
|
|
77
124
|
/** @public */ const MAX_GERSTNER_WAVE_COUNT = 16;
|
|
78
125
|
/**
|
|
@@ -171,5 +218,5 @@ import { Vector3 } from '@zephyr3d/base';
|
|
|
171
218
|
return Fog;
|
|
172
219
|
}({});
|
|
173
220
|
|
|
174
|
-
export { ATMOSPHERIC_FOG_BIT, BUILTIN_ASSET_TEST_CUBEMAP, BUILTIN_ASSET_TEXTURE_SHEEN_LUT, Fog, HEIGHT_FOG_BIT, LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_NONE, LIGHT_TYPE_POINT, LIGHT_TYPE_RECT, LIGHT_TYPE_SPOT, MAX_GERSTNER_WAVE_COUNT, MAX_MORPH_ATTRIBUTES, MAX_MORPH_TARGETS, MAX_SHADOW_MASK_LIGHTS, MAX_TERRAIN_MIPMAP_LEVELS, MORPH_ATTRIBUTE_VECTOR_COUNT, MORPH_TARGET_COLOR, MORPH_TARGET_NORMAL, MORPH_TARGET_POSITION, MORPH_TARGET_TANGENT, MORPH_TARGET_TEX0, MORPH_TARGET_TEX1, MORPH_TARGET_TEX2, MORPH_TARGET_TEX3, MORPH_WEIGHTS_VECTOR_COUNT, MaterialVaryingFlags, QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_DEPTH, RENDER_PASS_TYPE_LIGHT, RENDER_PASS_TYPE_OBJECT_COLOR, RENDER_PASS_TYPE_SHADOWMAP, uniformSphereSamples };
|
|
221
|
+
export { ATMOSPHERIC_FOG_BIT, BUILTIN_ASSET_TEST_CUBEMAP, BUILTIN_ASSET_TEXTURE_SHEEN_LUT, DEFAULT_ACTIVE_MORPH_TARGET_LIMIT, DEFAULT_MORPH_TARGET_LIMIT, DEFAULT_SKIN_INFLUENCE_LIMIT, Fog, HEIGHT_FOG_BIT, LIGHT_TYPE_DIRECTIONAL, LIGHT_TYPE_NONE, LIGHT_TYPE_POINT, LIGHT_TYPE_RECT, LIGHT_TYPE_SPOT, MAX_GERSTNER_WAVE_COUNT, MAX_MORPH_ATTRIBUTES, MAX_MORPH_TARGETS, MAX_SHADOW_MASK_LIGHTS, MAX_SKIN_EXTRA_INFLUENCE_PAIRS, MAX_SKIN_INFLUENCES, MAX_TERRAIN_MIPMAP_LEVELS, MORPH_ATTRIBUTE_VECTOR_COUNT, MORPH_TARGET_COLOR, MORPH_TARGET_NORMAL, MORPH_TARGET_POSITION, MORPH_TARGET_TANGENT, MORPH_TARGET_TEX0, MORPH_TARGET_TEX1, MORPH_TARGET_TEX2, MORPH_TARGET_TEX3, MORPH_WEIGHTS_VECTOR_COUNT, MaterialVaryingFlags, QUEUE_OPAQUE, QUEUE_TRANSPARENT, RENDER_PASS_TYPE_DEPTH, RENDER_PASS_TYPE_LIGHT, RENDER_PASS_TYPE_OBJECT_COLOR, RENDER_PASS_TYPE_SHADOWMAP, getActiveMorphTargetLimit, getMorphTargetLimit, getSkinInfluenceLimit, normalizeActiveMorphTargetLimit, normalizeMorphTargetLimit, normalizeSkinInfluenceLimit, setActiveMorphTargetLimit, setMorphTargetLimit, setSkinInfluenceLimit, uniformSphereSamples };
|
|
175
222
|
//# sourceMappingURL=values.js.map
|
package/dist/values.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"values.js","sources":["../src/values.ts"],"sourcesContent":["import { Vector3 } from '@zephyr3d/base';\r\n\r\n/**\r\n * Forward render pass type\r\n * @public\r\n */\r\nexport const RENDER_PASS_TYPE_LIGHT = 0;\r\n/**\r\n * Shadow map render pass type\r\n * @public\r\n */\r\nexport const RENDER_PASS_TYPE_SHADOWMAP = 1;\r\n/**\r\n * Depth only render pass type\r\n * @public\r\n */\r\nexport const RENDER_PASS_TYPE_DEPTH = 2;\r\n/**\r\n * Object color render pass type\r\n * @public\r\n */\r\nexport const RENDER_PASS_TYPE_OBJECT_COLOR = 3;\r\n\r\n/**\r\n * Builtin texture name for sheen LUT\r\n * @public\r\n */\r\nexport const BUILTIN_ASSET_TEXTURE_SHEEN_LUT = 'LUT_Sheen';\r\n\r\n/**\r\n * Builtin cube texture for test\r\n * @public\r\n */\r\nexport const BUILTIN_ASSET_TEST_CUBEMAP = 'TEST_Cubemap';\r\n\r\n/**\r\n * No light\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_NONE = 0;\r\n\r\n/**\r\n * Directional light type\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_DIRECTIONAL = 1;\r\n\r\n/**\r\n * Point light type\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_POINT = 2;\r\n\r\n/**\r\n * Spot light type\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_SPOT = 3;\r\n/**\r\n * Rectangular area light type\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_RECT = 4;\r\n\r\n/**\r\n * Max number of shadow-casting lights backed by the screen-space shadow mask.\r\n *\r\n * Each mask layer packs 4 lights (one per RGBA8 channel), so this maps to\r\n * `MAX_SHADOW_MASK_LIGHTS / 4` texture array layers. Shadow-casting lights are\r\n * placed at the head of the clustered light buffer. Shadow lights beyond this\r\n * cap fall back to being lit without a mask-backed shadow.\r\n * @public\r\n */\r\nexport const MAX_SHADOW_MASK_LIGHTS = 32;\r\n\r\n/**\r\n * Opaque render queue type\r\n * @public\r\n */\r\nexport const QUEUE_OPAQUE = 1;\r\n\r\n/**\r\n * Transparent render queue type\r\n * @public\r\n */\r\nexport const QUEUE_TRANSPARENT = 2;\r\n\r\n/** @public */\r\nexport const MORPH_TARGET_POSITION = 0;\r\n/** @public */\r\nexport const MORPH_TARGET_NORMAL = 1;\r\n/** @public */\r\nexport const MORPH_TARGET_TANGENT = 2;\r\n/** @public */\r\nexport const MORPH_TARGET_COLOR = 3;\r\n/** @public */\r\nexport const MORPH_TARGET_TEX0 = 4;\r\n/** @public */\r\nexport const MORPH_TARGET_TEX1 = 5;\r\n/** @public */\r\nexport const MORPH_TARGET_TEX2 = 6;\r\n/** @public */\r\nexport const MORPH_TARGET_TEX3 = 7;\r\n/** @public */\r\nexport const MAX_MORPH_ATTRIBUTES = 8;\r\n/** @public */\r\nexport const MAX_MORPH_TARGETS = 256;\r\n/** @public */\r\nexport const MORPH_WEIGHTS_VECTOR_COUNT = (MAX_MORPH_TARGETS + 3) >> 2;\r\n/** @public */\r\nexport const MORPH_ATTRIBUTE_VECTOR_COUNT = (MAX_MORPH_ATTRIBUTES + 3) >> 2;\r\n\r\n/** @public */\r\nexport const MAX_TERRAIN_MIPMAP_LEVELS = 64;\r\n\r\n/** @public */\r\nexport const MAX_GERSTNER_WAVE_COUNT = 16;\r\n\r\n/**\r\n * Material varying flags\r\n * @public\r\n */\r\nexport const enum MaterialVaryingFlags {\r\n MORPH_ANIMATION = 1 << 0,\r\n SKIN_ANIMATION = 1 << 1,\r\n INSTANCING = 1 << 2,\r\n SCENE_STORE_ROUGHNESS = 1 << 3,\r\n APPLY_FOG = 1 << 4,\r\n SSS_STORE_PROFILE = 1 << 5,\r\n SSS_STORE_DIFFUSE = 1 << 6,\r\n SCENE_STORE_NORMAL = 1 << 7,\r\n SSS_STORE_TRANSMISSION = 1 << 8,\r\n SKIN_SSS_STORE = 1 << 9\r\n}\r\n\r\n/**\r\n * Atmospheric Fog flag\r\n * @public\r\n */\r\nexport const ATMOSPHERIC_FOG_BIT = 1 << 0;\r\n/**\r\n * Exponential Fog flag\r\n * @public\r\n */\r\nexport const HEIGHT_FOG_BIT = 1 << 1;\r\n\r\n/** @internal */\r\nexport const uniformSphereSamples = [\r\n new Vector3(-0.7838, -0.620933, 0.00996137),\r\n new Vector3(0.106751, 0.965982, 0.235549),\r\n new Vector3(-0.215177, -0.687115, -0.693954),\r\n new Vector3(0.318002, 0.0640084, -0.945927),\r\n new Vector3(0.357396, 0.555673, 0.750664),\r\n new Vector3(0.866397, -0.19756, 0.458613),\r\n new Vector3(0.130216, 0.232736, -0.963783),\r\n new Vector3(-0.00174431, 0.376657, 0.926351),\r\n new Vector3(0.663478, 0.704806, -0.251089),\r\n new Vector3(0.0327851, 0.110534, -0.993331),\r\n new Vector3(0.0561973, 0.0234288, 0.998145),\r\n new Vector3(0.0905264, -0.169771, 0.981317),\r\n new Vector3(0.26694, 0.95222, -0.148393),\r\n new Vector3(-0.812874, -0.559051, -0.163393),\r\n new Vector3(-0.323378, -0.25855, -0.910263),\r\n new Vector3(-0.1333, 0.591356, -0.795317),\r\n new Vector3(0.480876, 0.408711, 0.775702),\r\n new Vector3(-0.332263, -0.533895, -0.777533),\r\n new Vector3(-0.0392473, -0.704457, -0.708661),\r\n new Vector3(0.427015, 0.239811, 0.871865),\r\n new Vector3(-0.416624, -0.563856, 0.713085),\r\n new Vector3(0.12793, 0.334479, -0.933679),\r\n new Vector3(-0.0343373, -0.160593, -0.986423),\r\n new Vector3(0.580614, 0.0692947, 0.811225),\r\n new Vector3(-0.459187, 0.43944, 0.772036),\r\n new Vector3(0.215474, -0.539436, -0.81399),\r\n new Vector3(-0.378969, -0.31988, -0.868366),\r\n new Vector3(-0.279978, -0.0109692, 0.959944),\r\n new Vector3(0.692547, 0.690058, 0.210234),\r\n new Vector3(0.53227, -0.123044, -0.837585),\r\n new Vector3(-0.772313, -0.283334, -0.568555),\r\n new Vector3(-0.0311218, 0.995988, -0.0838977),\r\n new Vector3(-0.366931, -0.276531, -0.888196),\r\n new Vector3(0.488778, 0.367878, -0.791051),\r\n new Vector3(-0.885561, -0.453445, 0.100842),\r\n new Vector3(0.71656, 0.443635, 0.538265),\r\n new Vector3(0.645383, -0.152576, -0.748466),\r\n new Vector3(-0.171259, 0.91907, 0.354939),\r\n new Vector3(-0.0031122, 0.9457, 0.325026),\r\n new Vector3(0.731503, 0.623089, -0.276881),\r\n new Vector3(-0.91466, 0.186904, 0.358419),\r\n new Vector3(0.15595, 0.828193, -0.538309),\r\n new Vector3(0.175396, 0.584732, 0.792038),\r\n new Vector3(-0.0838381, -0.943461, 0.320707),\r\n new Vector3(0.305876, 0.727604, 0.614029),\r\n new Vector3(0.754642, -0.197903, -0.62558),\r\n new Vector3(0.217255, -0.0177771, -0.975953),\r\n new Vector3(0.140412, -0.844826, 0.516287),\r\n new Vector3(-0.549042, 0.574859, -0.606705),\r\n new Vector3(0.570057, 0.17459, 0.802841),\r\n new Vector3(-0.0330304, 0.775077, 0.631003),\r\n new Vector3(-0.938091, 0.138937, 0.317304),\r\n new Vector3(0.483197, -0.726405, -0.48873),\r\n new Vector3(0.485263, 0.52926, 0.695991),\r\n new Vector3(0.224189, 0.742282, -0.631472),\r\n new Vector3(-0.322429, 0.662214, -0.676396),\r\n new Vector3(0.625577, -0.12711, 0.769738),\r\n new Vector3(-0.714032, -0.584461, -0.385439),\r\n new Vector3(-0.0652053, -0.892579, -0.446151),\r\n new Vector3(0.408421, -0.912487, 0.0236566),\r\n new Vector3(0.0900381, 0.319983, 0.943135),\r\n new Vector3(-0.708553, 0.483646, 0.513847),\r\n new Vector3(0.803855, -0.0902273, 0.587942),\r\n new Vector3(-0.0555802, -0.374602, -0.925519)\r\n];\r\n\r\n/** @internal */\r\nexport enum Fog {\r\n FOG_TYPE_NONE = 0,\r\n FOG_TYPE_HEIGHT = 4\r\n}\r\n"],"names":["RENDER_PASS_TYPE_LIGHT","RENDER_PASS_TYPE_SHADOWMAP","RENDER_PASS_TYPE_DEPTH","RENDER_PASS_TYPE_OBJECT_COLOR","BUILTIN_ASSET_TEXTURE_SHEEN_LUT","BUILTIN_ASSET_TEST_CUBEMAP","LIGHT_TYPE_NONE","LIGHT_TYPE_DIRECTIONAL","LIGHT_TYPE_POINT","LIGHT_TYPE_SPOT","LIGHT_TYPE_RECT","MAX_SHADOW_MASK_LIGHTS","QUEUE_OPAQUE","QUEUE_TRANSPARENT","MORPH_TARGET_POSITION","MORPH_TARGET_NORMAL","MORPH_TARGET_TANGENT","MORPH_TARGET_COLOR","MORPH_TARGET_TEX0","MORPH_TARGET_TEX1","MORPH_TARGET_TEX2","MORPH_TARGET_TEX3","MAX_MORPH_ATTRIBUTES","MAX_MORPH_TARGETS","MORPH_WEIGHTS_VECTOR_COUNT","MORPH_ATTRIBUTE_VECTOR_COUNT","MAX_TERRAIN_MIPMAP_LEVELS","MAX_GERSTNER_WAVE_COUNT","MaterialVaryingFlags","ATMOSPHERIC_FOG_BIT","HEIGHT_FOG_BIT","uniformSphereSamples","Vector3","Fog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"values.js","sources":["../src/values.ts"],"sourcesContent":["import { Vector3 } from '@zephyr3d/base';\r\n\r\n/**\r\n * Forward render pass type\r\n * @public\r\n */\r\nexport const RENDER_PASS_TYPE_LIGHT = 0;\r\n/**\r\n * Shadow map render pass type\r\n * @public\r\n */\r\nexport const RENDER_PASS_TYPE_SHADOWMAP = 1;\r\n/**\r\n * Depth only render pass type\r\n * @public\r\n */\r\nexport const RENDER_PASS_TYPE_DEPTH = 2;\r\n/**\r\n * Object color render pass type\r\n * @public\r\n */\r\nexport const RENDER_PASS_TYPE_OBJECT_COLOR = 3;\r\n\r\n/**\r\n * Builtin texture name for sheen LUT\r\n * @public\r\n */\r\nexport const BUILTIN_ASSET_TEXTURE_SHEEN_LUT = 'LUT_Sheen';\r\n\r\n/**\r\n * Builtin cube texture for test\r\n * @public\r\n */\r\nexport const BUILTIN_ASSET_TEST_CUBEMAP = 'TEST_Cubemap';\r\n\r\n/**\r\n * No light\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_NONE = 0;\r\n\r\n/**\r\n * Directional light type\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_DIRECTIONAL = 1;\r\n\r\n/**\r\n * Point light type\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_POINT = 2;\r\n\r\n/**\r\n * Spot light type\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_SPOT = 3;\r\n/**\r\n * Rectangular area light type\r\n * @public\r\n */\r\nexport const LIGHT_TYPE_RECT = 4;\r\n\r\n/**\r\n * Max number of shadow-casting lights backed by the screen-space shadow mask.\r\n *\r\n * Each mask layer packs 4 lights (one per RGBA8 channel), so this maps to\r\n * `MAX_SHADOW_MASK_LIGHTS / 4` texture array layers. Shadow-casting lights are\r\n * placed at the head of the clustered light buffer. Shadow lights beyond this\r\n * cap fall back to being lit without a mask-backed shadow.\r\n * @public\r\n */\r\nexport const MAX_SHADOW_MASK_LIGHTS = 32;\r\n\r\n/**\r\n * Opaque render queue type\r\n * @public\r\n */\r\nexport const QUEUE_OPAQUE = 1;\r\n\r\n/**\r\n * Transparent render queue type\r\n * @public\r\n */\r\nexport const QUEUE_TRANSPARENT = 2;\r\n\r\n/** @public */\r\nexport const MORPH_TARGET_POSITION = 0;\r\n/** @public */\r\nexport const MORPH_TARGET_NORMAL = 1;\r\n/** @public */\r\nexport const MORPH_TARGET_TANGENT = 2;\r\n/** @public */\r\nexport const MORPH_TARGET_COLOR = 3;\r\n/** @public */\r\nexport const MORPH_TARGET_TEX0 = 4;\r\n/** @public */\r\nexport const MORPH_TARGET_TEX1 = 5;\r\n/** @public */\r\nexport const MORPH_TARGET_TEX2 = 6;\r\n/** @public */\r\nexport const MORPH_TARGET_TEX3 = 7;\r\n/** @public */\r\nexport const MAX_MORPH_ATTRIBUTES = 8;\r\n/** @public */\r\nexport const DEFAULT_MORPH_TARGET_LIMIT = 256;\r\n/** @public */\r\nexport const DEFAULT_ACTIVE_MORPH_TARGET_LIMIT = 64;\r\n/** @public */\r\nexport const MAX_MORPH_TARGETS = 1024;\r\n/** @public */\r\nexport const DEFAULT_SKIN_INFLUENCE_LIMIT = 4;\r\n/** @public */\r\nexport const MAX_SKIN_INFLUENCES = 12;\r\n/** @public */\r\nexport const MAX_SKIN_EXTRA_INFLUENCE_PAIRS = Math.ceil(Math.max(0, MAX_SKIN_INFLUENCES - 4) / 2);\r\n/** @public */\r\nexport const MORPH_WEIGHTS_VECTOR_COUNT = (MAX_MORPH_TARGETS + 3) >> 2;\r\n/** @public */\r\nexport const MORPH_ATTRIBUTE_VECTOR_COUNT = (MAX_MORPH_ATTRIBUTES + 3) >> 2;\r\n\r\nlet morphTargetLimit = DEFAULT_MORPH_TARGET_LIMIT;\r\nlet activeMorphTargetLimit = DEFAULT_ACTIVE_MORPH_TARGET_LIMIT;\r\nlet skinInfluenceLimit = DEFAULT_SKIN_INFLUENCE_LIMIT;\r\n\r\n/** @public */\r\nexport function normalizeMorphTargetLimit(value: number | null | undefined): number {\r\n if (typeof value !== 'number' || !Number.isFinite(value)) {\r\n return DEFAULT_MORPH_TARGET_LIMIT;\r\n }\r\n return Math.min(MAX_MORPH_TARGETS, Math.max(1, Math.trunc(value)));\r\n}\r\n\r\n/** @public */\r\nexport function getMorphTargetLimit(): number {\r\n return morphTargetLimit;\r\n}\r\n\r\n/** @public */\r\nexport function setMorphTargetLimit(value: number | null | undefined): number {\r\n morphTargetLimit = normalizeMorphTargetLimit(value);\r\n return morphTargetLimit;\r\n}\r\n\r\n/** @public */\r\nexport function normalizeActiveMorphTargetLimit(value: number | null | undefined): number {\r\n if (typeof value !== 'number' || !Number.isFinite(value)) {\r\n return DEFAULT_ACTIVE_MORPH_TARGET_LIMIT;\r\n }\r\n return Math.min(MAX_MORPH_TARGETS, Math.max(1, Math.trunc(value)));\r\n}\r\n\r\n/** @public */\r\nexport function getActiveMorphTargetLimit(): number {\r\n return activeMorphTargetLimit;\r\n}\r\n\r\n/** @public */\r\nexport function setActiveMorphTargetLimit(value: number | null | undefined): number {\r\n activeMorphTargetLimit = normalizeActiveMorphTargetLimit(value);\r\n return activeMorphTargetLimit;\r\n}\r\n\r\n/** @public */\r\nexport function normalizeSkinInfluenceLimit(value: number | null | undefined): number {\r\n if (typeof value !== 'number' || !Number.isFinite(value)) {\r\n return DEFAULT_SKIN_INFLUENCE_LIMIT;\r\n }\r\n return Math.min(MAX_SKIN_INFLUENCES, Math.max(1, Math.trunc(value)));\r\n}\r\n\r\n/** @public */\r\nexport function getSkinInfluenceLimit(): number {\r\n return skinInfluenceLimit;\r\n}\r\n\r\n/** @public */\r\nexport function setSkinInfluenceLimit(value: number | null | undefined): number {\r\n skinInfluenceLimit = normalizeSkinInfluenceLimit(value);\r\n return skinInfluenceLimit;\r\n}\r\n\r\n/** @public */\r\nexport const MAX_TERRAIN_MIPMAP_LEVELS = 64;\r\n\r\n/** @public */\r\nexport const MAX_GERSTNER_WAVE_COUNT = 16;\r\n\r\n/**\r\n * Material varying flags\r\n * @public\r\n */\r\nexport const enum MaterialVaryingFlags {\r\n MORPH_ANIMATION = 1 << 0,\r\n SKIN_ANIMATION = 1 << 1,\r\n INSTANCING = 1 << 2,\r\n SCENE_STORE_ROUGHNESS = 1 << 3,\r\n APPLY_FOG = 1 << 4,\r\n SSS_STORE_PROFILE = 1 << 5,\r\n SSS_STORE_DIFFUSE = 1 << 6,\r\n SCENE_STORE_NORMAL = 1 << 7,\r\n SSS_STORE_TRANSMISSION = 1 << 8,\r\n SKIN_SSS_STORE = 1 << 9\r\n}\r\n\r\n/**\r\n * Atmospheric Fog flag\r\n * @public\r\n */\r\nexport const ATMOSPHERIC_FOG_BIT = 1 << 0;\r\n/**\r\n * Exponential Fog flag\r\n * @public\r\n */\r\nexport const HEIGHT_FOG_BIT = 1 << 1;\r\n\r\n/** @internal */\r\nexport const uniformSphereSamples = [\r\n new Vector3(-0.7838, -0.620933, 0.00996137),\r\n new Vector3(0.106751, 0.965982, 0.235549),\r\n new Vector3(-0.215177, -0.687115, -0.693954),\r\n new Vector3(0.318002, 0.0640084, -0.945927),\r\n new Vector3(0.357396, 0.555673, 0.750664),\r\n new Vector3(0.866397, -0.19756, 0.458613),\r\n new Vector3(0.130216, 0.232736, -0.963783),\r\n new Vector3(-0.00174431, 0.376657, 0.926351),\r\n new Vector3(0.663478, 0.704806, -0.251089),\r\n new Vector3(0.0327851, 0.110534, -0.993331),\r\n new Vector3(0.0561973, 0.0234288, 0.998145),\r\n new Vector3(0.0905264, -0.169771, 0.981317),\r\n new Vector3(0.26694, 0.95222, -0.148393),\r\n new Vector3(-0.812874, -0.559051, -0.163393),\r\n new Vector3(-0.323378, -0.25855, -0.910263),\r\n new Vector3(-0.1333, 0.591356, -0.795317),\r\n new Vector3(0.480876, 0.408711, 0.775702),\r\n new Vector3(-0.332263, -0.533895, -0.777533),\r\n new Vector3(-0.0392473, -0.704457, -0.708661),\r\n new Vector3(0.427015, 0.239811, 0.871865),\r\n new Vector3(-0.416624, -0.563856, 0.713085),\r\n new Vector3(0.12793, 0.334479, -0.933679),\r\n new Vector3(-0.0343373, -0.160593, -0.986423),\r\n new Vector3(0.580614, 0.0692947, 0.811225),\r\n new Vector3(-0.459187, 0.43944, 0.772036),\r\n new Vector3(0.215474, -0.539436, -0.81399),\r\n new Vector3(-0.378969, -0.31988, -0.868366),\r\n new Vector3(-0.279978, -0.0109692, 0.959944),\r\n new Vector3(0.692547, 0.690058, 0.210234),\r\n new Vector3(0.53227, -0.123044, -0.837585),\r\n new Vector3(-0.772313, -0.283334, -0.568555),\r\n new Vector3(-0.0311218, 0.995988, -0.0838977),\r\n new Vector3(-0.366931, -0.276531, -0.888196),\r\n new Vector3(0.488778, 0.367878, -0.791051),\r\n new Vector3(-0.885561, -0.453445, 0.100842),\r\n new Vector3(0.71656, 0.443635, 0.538265),\r\n new Vector3(0.645383, -0.152576, -0.748466),\r\n new Vector3(-0.171259, 0.91907, 0.354939),\r\n new Vector3(-0.0031122, 0.9457, 0.325026),\r\n new Vector3(0.731503, 0.623089, -0.276881),\r\n new Vector3(-0.91466, 0.186904, 0.358419),\r\n new Vector3(0.15595, 0.828193, -0.538309),\r\n new Vector3(0.175396, 0.584732, 0.792038),\r\n new Vector3(-0.0838381, -0.943461, 0.320707),\r\n new Vector3(0.305876, 0.727604, 0.614029),\r\n new Vector3(0.754642, -0.197903, -0.62558),\r\n new Vector3(0.217255, -0.0177771, -0.975953),\r\n new Vector3(0.140412, -0.844826, 0.516287),\r\n new Vector3(-0.549042, 0.574859, -0.606705),\r\n new Vector3(0.570057, 0.17459, 0.802841),\r\n new Vector3(-0.0330304, 0.775077, 0.631003),\r\n new Vector3(-0.938091, 0.138937, 0.317304),\r\n new Vector3(0.483197, -0.726405, -0.48873),\r\n new Vector3(0.485263, 0.52926, 0.695991),\r\n new Vector3(0.224189, 0.742282, -0.631472),\r\n new Vector3(-0.322429, 0.662214, -0.676396),\r\n new Vector3(0.625577, -0.12711, 0.769738),\r\n new Vector3(-0.714032, -0.584461, -0.385439),\r\n new Vector3(-0.0652053, -0.892579, -0.446151),\r\n new Vector3(0.408421, -0.912487, 0.0236566),\r\n new Vector3(0.0900381, 0.319983, 0.943135),\r\n new Vector3(-0.708553, 0.483646, 0.513847),\r\n new Vector3(0.803855, -0.0902273, 0.587942),\r\n new Vector3(-0.0555802, -0.374602, -0.925519)\r\n];\r\n\r\n/** @internal */\r\nexport enum Fog {\r\n FOG_TYPE_NONE = 0,\r\n FOG_TYPE_HEIGHT = 4\r\n}\r\n"],"names":["RENDER_PASS_TYPE_LIGHT","RENDER_PASS_TYPE_SHADOWMAP","RENDER_PASS_TYPE_DEPTH","RENDER_PASS_TYPE_OBJECT_COLOR","BUILTIN_ASSET_TEXTURE_SHEEN_LUT","BUILTIN_ASSET_TEST_CUBEMAP","LIGHT_TYPE_NONE","LIGHT_TYPE_DIRECTIONAL","LIGHT_TYPE_POINT","LIGHT_TYPE_SPOT","LIGHT_TYPE_RECT","MAX_SHADOW_MASK_LIGHTS","QUEUE_OPAQUE","QUEUE_TRANSPARENT","MORPH_TARGET_POSITION","MORPH_TARGET_NORMAL","MORPH_TARGET_TANGENT","MORPH_TARGET_COLOR","MORPH_TARGET_TEX0","MORPH_TARGET_TEX1","MORPH_TARGET_TEX2","MORPH_TARGET_TEX3","MAX_MORPH_ATTRIBUTES","DEFAULT_MORPH_TARGET_LIMIT","DEFAULT_ACTIVE_MORPH_TARGET_LIMIT","MAX_MORPH_TARGETS","DEFAULT_SKIN_INFLUENCE_LIMIT","MAX_SKIN_INFLUENCES","MAX_SKIN_EXTRA_INFLUENCE_PAIRS","Math","ceil","max","MORPH_WEIGHTS_VECTOR_COUNT","MORPH_ATTRIBUTE_VECTOR_COUNT","morphTargetLimit","activeMorphTargetLimit","skinInfluenceLimit","normalizeMorphTargetLimit","value","Number","isFinite","min","trunc","getMorphTargetLimit","setMorphTargetLimit","normalizeActiveMorphTargetLimit","getActiveMorphTargetLimit","setActiveMorphTargetLimit","normalizeSkinInfluenceLimit","getSkinInfluenceLimit","setSkinInfluenceLimit","MAX_TERRAIN_MIPMAP_LEVELS","MAX_GERSTNER_WAVE_COUNT","MaterialVaryingFlags","ATMOSPHERIC_FOG_BIT","HEIGHT_FOG_BIT","uniformSphereSamples","Vector3","Fog"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zephyr3d/scene",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.26",
|
|
4
4
|
"description": "Scene API for zephyr3d",
|
|
5
5
|
"homepage": "https://github.com/gavinyork/zephyr3d#readme",
|
|
6
6
|
"type": "module",
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"@types/draco3d": "^1.4.9",
|
|
69
69
|
"@webgpu/types": "^0.1.65",
|
|
70
|
-
"@zephyr3d/base": "^0.2.
|
|
71
|
-
"@zephyr3d/device": "^0.2.
|
|
70
|
+
"@zephyr3d/base": "^0.2.10",
|
|
71
|
+
"@zephyr3d/device": "^0.2.19",
|
|
72
72
|
"es-module-lexer": "^1.7.0"
|
|
73
73
|
},
|
|
74
74
|
"scripts": {
|