@zephyr3d/scene 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/animation.js +25 -117
- package/dist/animation/animation.js.map +1 -1
- package/dist/animation/animationset.js +191 -51
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/animationtrack.js +6 -18
- package/dist/animation/animationtrack.js.map +1 -1
- package/dist/animation/eulerrotationtrack.js +16 -6
- package/dist/animation/eulerrotationtrack.js.map +1 -1
- package/dist/animation/morphtarget.js +104 -0
- package/dist/animation/morphtarget.js.map +1 -0
- package/dist/animation/morphtrack.js +70 -0
- package/dist/animation/morphtrack.js.map +1 -0
- package/dist/animation/rotationtrack.js +15 -7
- package/dist/animation/rotationtrack.js.map +1 -1
- package/dist/animation/scaletrack.js +15 -7
- package/dist/animation/scaletrack.js.map +1 -1
- package/dist/animation/skeleton.js +107 -5
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/translationtrack.js +15 -7
- package/dist/animation/translationtrack.js.map +1 -1
- package/dist/app.js +4 -26
- package/dist/app.js.map +1 -1
- package/dist/asset/assetmanager.js +60 -109
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/loaders/dds/dds.js +77 -3
- package/dist/asset/loaders/dds/dds.js.map +1 -1
- package/dist/asset/loaders/dds/dds_loader.js +1 -1
- package/dist/asset/loaders/gltf/gltf_loader.js +287 -40
- package/dist/asset/loaders/gltf/gltf_loader.js.map +1 -1
- package/dist/asset/loaders/image/tga_Loader.js +1 -1
- package/dist/asset/loaders/image/webimage_loader.js +16 -0
- package/dist/asset/loaders/image/webimage_loader.js.map +1 -1
- package/dist/asset/model.js +16 -9
- package/dist/asset/model.js.map +1 -1
- package/dist/blitter/bilateralblur.js +222 -0
- package/dist/{render/temporalcache.js.map → blitter/bilateralblur.js.map} +1 -1
- package/dist/blitter/blitter.js +9 -3
- package/dist/blitter/blitter.js.map +1 -1
- package/dist/blitter/depthlimitedgaussion.js +96 -39
- package/dist/blitter/depthlimitedgaussion.js.map +1 -1
- package/dist/blitter/gaussianblur.js +21 -21
- package/dist/camera/camera.js +200 -4
- package/dist/camera/camera.js.map +1 -1
- package/dist/index.d.ts +6406 -5786
- package/dist/index.js +12 -10
- package/dist/index.js.map +1 -1
- package/dist/material/blinn.js +15 -4
- package/dist/material/blinn.js.map +1 -1
- package/dist/material/lambert.js +26 -17
- package/dist/material/lambert.js.map +1 -1
- package/dist/material/material.js +13 -2
- package/dist/material/material.js.map +1 -1
- package/dist/material/meshmaterial.js +103 -31
- package/dist/material/meshmaterial.js.map +1 -1
- package/dist/material/mixins/albedocolor.js +5 -4
- package/dist/material/mixins/albedocolor.js.map +1 -1
- package/dist/material/mixins/lightmodel/blinnphong.js +17 -7
- package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
- package/dist/material/mixins/lightmodel/lambert.js +5 -5
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +16 -7
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js +16 -7
- package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
- package/dist/material/mixins/lit.js +2 -2
- package/dist/material/mixins/pbr/common.js +454 -19
- package/dist/material/mixins/pbr/common.js.map +1 -1
- package/dist/material/pbrmr.js +28 -6
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/pbrsg.js +27 -9
- package/dist/material/pbrsg.js.map +1 -1
- package/dist/material/shader/helper.js +128 -23
- package/dist/material/shader/helper.js.map +1 -1
- package/dist/material/unlit.js +8 -4
- package/dist/material/unlit.js.map +1 -1
- package/dist/posteffect/bloom.js +34 -53
- package/dist/posteffect/bloom.js.map +1 -1
- package/dist/posteffect/compositor.js +48 -58
- package/dist/posteffect/compositor.js.map +1 -1
- package/dist/posteffect/fxaa.js +3 -11
- package/dist/posteffect/fxaa.js.map +1 -1
- package/dist/posteffect/grayscale.js +3 -11
- package/dist/posteffect/grayscale.js.map +1 -1
- package/dist/posteffect/posteffect.js +4 -0
- package/dist/posteffect/posteffect.js.map +1 -1
- package/dist/posteffect/sao.js +55 -48
- package/dist/posteffect/sao.js.map +1 -1
- package/dist/posteffect/ssr.js +536 -0
- package/dist/{material/lit.js.map → posteffect/ssr.js.map} +1 -1
- package/dist/posteffect/tonemap.js +3 -11
- package/dist/posteffect/tonemap.js.map +1 -1
- package/dist/posteffect/water.js +306 -340
- package/dist/posteffect/water.js.map +1 -1
- package/dist/render/abuffer_oit.js +2 -2
- package/dist/render/clipmap.js +16 -19
- package/dist/render/clipmap.js.map +1 -1
- package/dist/render/cull_visitor.js +8 -6
- package/dist/render/cull_visitor.js.map +1 -1
- package/dist/render/depthpass.js +30 -14
- package/dist/render/depthpass.js.map +1 -1
- package/dist/render/drawable_mixin.js +70 -22
- package/dist/render/drawable_mixin.js.map +1 -1
- package/dist/render/envlight.js +169 -33
- package/dist/render/envlight.js.map +1 -1
- package/dist/render/fft_wavegenerator.js +989 -0
- package/dist/{shaders/framework.js.map → render/fft_wavegenerator.js.map} +1 -1
- package/dist/render/gerstner_wavegenerator.js +265 -0
- package/dist/{material/standard.js.map → render/gerstner_wavegenerator.js.map} +1 -1
- package/dist/render/globalbindgroup_allocator.js +2 -1
- package/dist/render/globalbindgroup_allocator.js.map +1 -1
- package/dist/render/hzb.js +273 -0
- package/dist/{material/terrainlightmodel.js.map → render/hzb.js.map} +1 -1
- package/dist/render/lightpass.js +68 -28
- package/dist/render/lightpass.js.map +1 -1
- package/dist/render/objectcolorpass.js +51 -0
- package/dist/render/objectcolorpass.js.map +1 -0
- package/dist/render/render_queue.js +211 -158
- package/dist/render/render_queue.js.map +1 -1
- package/dist/render/renderbundle_wrapper.js +79 -0
- package/dist/render/renderbundle_wrapper.js.map +1 -1
- package/dist/render/renderer.js +151 -35
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/renderpass.js +27 -20
- package/dist/render/renderpass.js.map +1 -1
- package/dist/render/shadowmap_pass.js +20 -14
- package/dist/render/shadowmap_pass.js.map +1 -1
- package/dist/render/sky.js +12 -13
- package/dist/render/sky.js.map +1 -1
- package/dist/render/watermesh.js +94 -828
- package/dist/render/watermesh.js.map +1 -1
- package/dist/render/wavegenerator.js +8 -0
- package/dist/render/wavegenerator.js.map +1 -0
- package/dist/render/weightedblended_oit.js +11 -28
- package/dist/render/weightedblended_oit.js.map +1 -1
- package/dist/scene/batchgroup.js +60 -14
- package/dist/scene/batchgroup.js.map +1 -1
- package/dist/scene/environment.js +24 -3
- package/dist/scene/environment.js.map +1 -1
- package/dist/scene/graph_node.js +0 -14
- package/dist/scene/graph_node.js.map +1 -1
- package/dist/scene/light.js +5 -5
- package/dist/scene/mesh.js +62 -15
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/octree.js +5 -2
- package/dist/scene/octree.js.map +1 -1
- package/dist/scene/raycast_visitor.js +4 -2
- package/dist/scene/raycast_visitor.js.map +1 -1
- package/dist/scene/scene.js +6 -9
- package/dist/scene/scene.js.map +1 -1
- package/dist/scene/scene_node.js +11 -8
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/terrain/grass.js +10 -2
- package/dist/scene/terrain/grass.js.map +1 -1
- package/dist/scene/terrain/heightfield.js +135 -53
- package/dist/scene/terrain/heightfield.js.map +1 -1
- package/dist/scene/terrain/patch.js +10 -2
- package/dist/scene/terrain/patch.js.map +1 -1
- package/dist/scene/terrain/quadtree.js +2 -2
- package/dist/scene/terrain/terrain.js +1 -1
- package/dist/scene/xform.js +7 -9
- package/dist/scene/xform.js.map +1 -1
- package/dist/shaders/misc.js +10 -1
- package/dist/shaders/misc.js.map +1 -1
- package/dist/shaders/noise.js +81 -16
- package/dist/shaders/noise.js.map +1 -1
- package/dist/shaders/shadow.js +1 -9
- package/dist/shaders/shadow.js.map +1 -1
- package/dist/shaders/ssr.js +442 -0
- package/dist/{material/terrainmat.js.map → shaders/ssr.js.map} +1 -1
- package/dist/shaders/water.js +377 -250
- package/dist/shaders/water.js.map +1 -1
- package/dist/shadow/esm.js +4 -22
- package/dist/shadow/esm.js.map +1 -1
- package/dist/shadow/shadowmapper.js +56 -31
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shadow/vsm.js +4 -24
- package/dist/shadow/vsm.js.map +1 -1
- package/dist/shapes/cylinder.js +6 -5
- package/dist/shapes/cylinder.js.map +1 -1
- package/dist/utility/bounding_volume.js +1 -53
- package/dist/utility/bounding_volume.js.map +1 -1
- package/dist/utility/draco/decoder.js +116 -0
- package/dist/utility/draco/decoder.js.map +1 -0
- package/dist/utility/misc.js +93 -0
- package/dist/utility/misc.js.map +1 -0
- package/dist/utility/shprojection.js +2 -7
- package/dist/utility/shprojection.js.map +1 -1
- package/dist/utility/textures/ggxlut.js +213 -0
- package/dist/utility/textures/ggxlut.js.map +1 -0
- package/dist/utility/textures/gradientnoise.js +61 -0
- package/dist/utility/textures/gradientnoise.js.map +1 -0
- package/dist/utility/textures/randomnoise.js +41 -0
- package/dist/utility/textures/randomnoise.js.map +1 -0
- package/dist/values.js +25 -1
- package/dist/values.js.map +1 -1
- package/package.json +5 -8
- package/dist/animation/usertrack.js +0 -47
- package/dist/animation/usertrack.js.map +0 -1
- package/dist/material/grassmat.js +0 -127
- package/dist/material/grassmat.js.map +0 -1
- package/dist/material/lightmodel.js +0 -2074
- package/dist/material/lightmodel.js.map +0 -1
- package/dist/material/lit.js +0 -578
- package/dist/material/mixins/pbr/metallicroughness.js +0 -126
- package/dist/material/mixins/pbr/metallicroughness.js.map +0 -1
- package/dist/material/mixins/pbr/specularglossness.js +0 -104
- package/dist/material/mixins/pbr/specularglossness.js.map +0 -1
- package/dist/material/pbr.js +0 -27
- package/dist/material/pbr.js.map +0 -1
- package/dist/material/standard.js +0 -282
- package/dist/material/terrainlightmodel.js +0 -259
- package/dist/material/terrainmat.js +0 -357
- package/dist/render/depth_pass.js +0 -47
- package/dist/render/depth_pass.js.map +0 -1
- package/dist/render/forward.js +0 -186
- package/dist/render/forward.js.map +0 -1
- package/dist/render/forward_pass.js +0 -137
- package/dist/render/forward_pass.js.map +0 -1
- package/dist/render/helper.js +0 -38
- package/dist/render/helper.js.map +0 -1
- package/dist/render/renderscheme.js +0 -61
- package/dist/render/renderscheme.js.map +0 -1
- package/dist/render/temporalcache.js +0 -222
- package/dist/scene/model.js +0 -111
- package/dist/scene/model.js.map +0 -1
- package/dist/scene/octree_update_visitor.js +0 -20
- package/dist/scene/octree_update_visitor.js.map +0 -1
- package/dist/shaders/builtins.js +0 -110
- package/dist/shaders/builtins.js.map +0 -1
- package/dist/shaders/framework.js +0 -723
- package/dist/shaders/lighting.js +0 -335
- package/dist/shaders/lighting.js.map +0 -1
- package/dist/utility/sheenlut.js +0 -196
- package/dist/utility/sheenlut.js.map +0 -1
package/dist/camera/camera.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Matrix4x4, Vector4, Frustum } from '@zephyr3d/base';
|
|
1
|
+
import { Matrix4x4, Vector4, Vector3, Ray, Frustum } from '@zephyr3d/base';
|
|
2
2
|
import { SceneNode } from '../scene/scene_node.js';
|
|
3
3
|
import { Application } from '../app.js';
|
|
4
4
|
import '../scene/octree.js';
|
|
5
|
+
import '../values.js';
|
|
5
6
|
import '@zephyr3d/device';
|
|
6
7
|
import '../material/shader/helper.js';
|
|
7
8
|
import '../material/lambert.js';
|
|
@@ -15,7 +16,6 @@ import '../material/pbrsg.js';
|
|
|
15
16
|
import { SceneRenderer } from '../render/renderer.js';
|
|
16
17
|
import '../render/sky.js';
|
|
17
18
|
import '../render/clipmap.js';
|
|
18
|
-
import '../render/watermesh.js';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* The camera node class
|
|
@@ -40,8 +40,25 @@ import '../render/watermesh.js';
|
|
|
40
40
|
/** @internal */ _oit;
|
|
41
41
|
/** @internal */ _depthPrePass;
|
|
42
42
|
/** @internal */ _commandBufferReuse;
|
|
43
|
+
/** @internal */ _HiZ;
|
|
44
|
+
/** @internal */ _SSR;
|
|
45
|
+
/** @internal */ _ssrParams;
|
|
46
|
+
/** @internal */ _ssrMaxRoughness;
|
|
47
|
+
/** @internal */ _ssrRoughnessFactor;
|
|
48
|
+
/** @internal */ _ssrStride;
|
|
49
|
+
/** @internal */ _ssrCalcThickness;
|
|
50
|
+
/** @internal */ _ssrBlurriness;
|
|
51
|
+
/** @internal */ _ssrBlurDepthCutoff;
|
|
52
|
+
/** @internal */ _ssrBlurKernelSize;
|
|
53
|
+
/** @internal */ _ssrBlurStdDev;
|
|
54
|
+
/** @internal */ _picking;
|
|
55
|
+
/** @internal */ _pickPosX;
|
|
56
|
+
/** @internal */ _pickPosY;
|
|
57
|
+
/** @internal */ _pickResultPromise;
|
|
58
|
+
/** @internal */ _pickResult;
|
|
43
59
|
/**
|
|
44
60
|
* Creates a new camera node
|
|
61
|
+
*
|
|
45
62
|
* @param scene - The scene that the camera belongs to
|
|
46
63
|
* @param projectionMatrix - Projection matrix for this camera
|
|
47
64
|
*/ constructor(scene, projectionMatrix){
|
|
@@ -63,6 +80,20 @@ import '../render/watermesh.js';
|
|
|
63
80
|
this._frustumV = null;
|
|
64
81
|
this._oit = null;
|
|
65
82
|
this._depthPrePass = false;
|
|
83
|
+
this._pickPosX = 0;
|
|
84
|
+
this._pickPosY = 0;
|
|
85
|
+
this._HiZ = false;
|
|
86
|
+
this._SSR = false;
|
|
87
|
+
this._ssrParams = new Vector4(100, 120, 0.5, 0);
|
|
88
|
+
this._ssrMaxRoughness = 0.8;
|
|
89
|
+
this._ssrRoughnessFactor = 1;
|
|
90
|
+
this._ssrStride = 2;
|
|
91
|
+
this._ssrCalcThickness = false;
|
|
92
|
+
this._ssrBlurriness = 0.05;
|
|
93
|
+
this._ssrBlurDepthCutoff = 2;
|
|
94
|
+
this._ssrBlurKernelSize = 17;
|
|
95
|
+
this._ssrBlurStdDev = 10;
|
|
96
|
+
this._pickResult = null;
|
|
66
97
|
this._commandBufferReuse = true;
|
|
67
98
|
}
|
|
68
99
|
/** Clip plane in camera space */ get clipPlane() {
|
|
@@ -72,6 +103,125 @@ import '../render/watermesh.js';
|
|
|
72
103
|
this._clipPlane = plane;
|
|
73
104
|
this._invalidate(false);
|
|
74
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Gets whether Hi-Z acceleration is enabled.
|
|
108
|
+
* When enabled, it can significantly improve SSR performance with minimal quality impact.
|
|
109
|
+
*/ get HiZ() {
|
|
110
|
+
return this._HiZ;
|
|
111
|
+
}
|
|
112
|
+
set HiZ(val) {
|
|
113
|
+
this._HiZ = !!val;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Gets whether Screen Space Reflections (SSR) is enabled.
|
|
117
|
+
*/ get SSR() {
|
|
118
|
+
return this._SSR;
|
|
119
|
+
}
|
|
120
|
+
set SSR(val) {
|
|
121
|
+
this._SSR = !!val;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Gets the maximum roughness value for screen space reflections.
|
|
125
|
+
* Controls the cutoff point where surfaces are considered too rough for SSR.
|
|
126
|
+
*/ get ssrMaxRoughness() {
|
|
127
|
+
return this._ssrMaxRoughness;
|
|
128
|
+
}
|
|
129
|
+
set ssrMaxRoughness(val) {
|
|
130
|
+
this._ssrMaxRoughness = val;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Gets the roughness factor for SSR calculations.
|
|
134
|
+
* Affects how surface roughness influences reflection clarity.
|
|
135
|
+
*/ get ssrRoughnessFactor() {
|
|
136
|
+
return this._ssrRoughnessFactor;
|
|
137
|
+
}
|
|
138
|
+
set ssrRoughnessFactor(val) {
|
|
139
|
+
this._ssrRoughnessFactor = val;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Gets the stride value for SSR ray marching.
|
|
143
|
+
* Controls the step size during ray marching. Larger values improve performance but may miss details.
|
|
144
|
+
*/ get ssrStride() {
|
|
145
|
+
return this._ssrStride;
|
|
146
|
+
}
|
|
147
|
+
set ssrStride(val) {
|
|
148
|
+
this._ssrStride = val;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Gets the maximum distance for SSR ray marching.
|
|
152
|
+
* Defines how far rays will travel when searching for reflection intersections.
|
|
153
|
+
*/ get ssrMaxDistance() {
|
|
154
|
+
return this._ssrParams.x;
|
|
155
|
+
}
|
|
156
|
+
set ssrMaxDistance(val) {
|
|
157
|
+
this._ssrParams.x = val;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Gets the number of iterations for SSR ray marching.
|
|
161
|
+
* Higher values provide more accurate reflections but impact performance.
|
|
162
|
+
*/ get ssrIterations() {
|
|
163
|
+
return this._ssrParams.y;
|
|
164
|
+
}
|
|
165
|
+
set ssrIterations(val) {
|
|
166
|
+
this._ssrParams.y = val;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Gets the thickness value for SSR calculations.
|
|
170
|
+
* Determines the thickness threshold for surfaces when calculating reflections.
|
|
171
|
+
*/ get ssrThickness() {
|
|
172
|
+
return this._ssrParams.z;
|
|
173
|
+
}
|
|
174
|
+
set ssrThickness(val) {
|
|
175
|
+
this._ssrParams.z = val;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Gets whether SSR should calculate thickness automatically.
|
|
179
|
+
* When enabled, the system will dynamically compute surface thickness for reflections.
|
|
180
|
+
*/ get ssrCalcThickness() {
|
|
181
|
+
return this._ssrCalcThickness;
|
|
182
|
+
}
|
|
183
|
+
set ssrCalcThickness(val) {
|
|
184
|
+
this._ssrCalcThickness = !!val;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Gets the blur scale factor for SSR.
|
|
188
|
+
* Controls the overall intensity of the blur effect applied to reflections.
|
|
189
|
+
*/ get ssrBlurScale() {
|
|
190
|
+
return this._ssrBlurriness;
|
|
191
|
+
}
|
|
192
|
+
set ssrBlurScale(val) {
|
|
193
|
+
this._ssrBlurriness = val;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Gets the depth cutoff value for SSR blur.
|
|
197
|
+
* Determines at what depth difference the blur effect should be reduced or eliminated.
|
|
198
|
+
*/ get ssrBlurDepthCutoff() {
|
|
199
|
+
return this._ssrBlurDepthCutoff;
|
|
200
|
+
}
|
|
201
|
+
set ssrBlurDepthCutoff(val) {
|
|
202
|
+
this._ssrBlurDepthCutoff = val;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Gets the kernel size for the SSR blur effect.
|
|
206
|
+
* Defines the size of the blur kernel. Larger values create softer, more spread-out blur.
|
|
207
|
+
*/ get ssrBlurKernelSize() {
|
|
208
|
+
return this._ssrBlurKernelSize;
|
|
209
|
+
}
|
|
210
|
+
set ssrBlurKernelSize(val) {
|
|
211
|
+
this._ssrBlurKernelSize = val;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Gets the standard deviation for the SSR Gaussian blur.
|
|
215
|
+
* Controls the distribution of the blur effect. Higher values create more pronounced blur.
|
|
216
|
+
*/ get ssrBlurStdDev() {
|
|
217
|
+
return this._ssrBlurStdDev;
|
|
218
|
+
}
|
|
219
|
+
set ssrBlurStdDev(val) {
|
|
220
|
+
this._ssrBlurStdDev = val;
|
|
221
|
+
}
|
|
222
|
+
/** @internal */ get ssrParams() {
|
|
223
|
+
return this._ssrParams;
|
|
224
|
+
}
|
|
75
225
|
/** Whether to perform a depth pass */ get depthPrePass() {
|
|
76
226
|
return this._depthPrePass;
|
|
77
227
|
}
|
|
@@ -84,6 +234,36 @@ import '../render/watermesh.js';
|
|
|
84
234
|
set commandBufferReuse(val) {
|
|
85
235
|
this._commandBufferReuse = !!val;
|
|
86
236
|
}
|
|
237
|
+
/** Whether GPU picking is enabled for this camera */ get enablePicking() {
|
|
238
|
+
return this._picking;
|
|
239
|
+
}
|
|
240
|
+
set enablePicking(enable) {
|
|
241
|
+
this._picking = !!enable;
|
|
242
|
+
}
|
|
243
|
+
/** X coordinate for picking related to viewport */ get pickPosX() {
|
|
244
|
+
return this._pickPosX;
|
|
245
|
+
}
|
|
246
|
+
set pickPosX(val) {
|
|
247
|
+
this._pickPosX = val;
|
|
248
|
+
}
|
|
249
|
+
/** Y coordinate for picking related to viewport */ get pickPosY() {
|
|
250
|
+
return this._pickPosY;
|
|
251
|
+
}
|
|
252
|
+
set pickPosY(val) {
|
|
253
|
+
this._pickPosY = val;
|
|
254
|
+
}
|
|
255
|
+
/** Pick result */ get pickResult() {
|
|
256
|
+
return this._pickResult;
|
|
257
|
+
}
|
|
258
|
+
set pickResult(val) {
|
|
259
|
+
this._pickResult = val;
|
|
260
|
+
}
|
|
261
|
+
/** @internal */ get pickResultAsync() {
|
|
262
|
+
return this._pickResultPromise;
|
|
263
|
+
}
|
|
264
|
+
set pickResultAsync(val) {
|
|
265
|
+
this._pickResultPromise = val;
|
|
266
|
+
}
|
|
87
267
|
/**
|
|
88
268
|
* Sample count for MSAA
|
|
89
269
|
*
|
|
@@ -172,6 +352,22 @@ import '../render/watermesh.js';
|
|
|
172
352
|
return handled;
|
|
173
353
|
}
|
|
174
354
|
/**
|
|
355
|
+
* Constructs a ray based on the given screen coordinates.
|
|
356
|
+
*
|
|
357
|
+
* @param x - The x-component of the screen coordinates, relative to the top-left corner of the viewport.
|
|
358
|
+
* @param y - The y-component of the screen coordinates, relative to the top-left corner of the viewport.
|
|
359
|
+
* @returns The ray originating from the camera position and passing through the given screen coordinates.
|
|
360
|
+
*/ constructRay(x, y) {
|
|
361
|
+
const width = this.viewport ? this.viewport[2] : Application.instance.device.getViewport().width;
|
|
362
|
+
const height = this.viewport ? this.viewport[3] : Application.instance.device.getViewport().height;
|
|
363
|
+
const vClip = new Vector4(2 * x / width - 1, 1 - 2 * y / height, 1, 1);
|
|
364
|
+
const vWorld = this.invViewProjectionMatrix.transform(vClip);
|
|
365
|
+
vWorld.scaleBy(1 / vWorld.w);
|
|
366
|
+
const vEye = this.getWorldPosition();
|
|
367
|
+
const vDir = Vector3.sub(vWorld.xyz(), vEye).inplaceNormalize();
|
|
368
|
+
return new Ray(vEye, vDir);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
175
371
|
* Place the camera by specifying the camera position and the target point
|
|
176
372
|
* @param eye - The camera position
|
|
177
373
|
* @param target - The target point to look at
|
|
@@ -320,13 +516,13 @@ import '../render/watermesh.js';
|
|
|
320
516
|
* Renders a scene
|
|
321
517
|
* @param scene - The scene to be rendered
|
|
322
518
|
* @param compositor - Compositor instance that will be used to apply postprocess effects
|
|
323
|
-
*/ render(scene, compositor
|
|
519
|
+
*/ render(scene, compositor) {
|
|
324
520
|
const device = Application.instance.device;
|
|
325
521
|
device.pushDeviceStates();
|
|
326
522
|
device.reverseVertexWindingOrder(false);
|
|
327
523
|
device.setFramebuffer(this._framebuffer);
|
|
328
524
|
SceneRenderer.setClearColor(this._clearColor);
|
|
329
|
-
SceneRenderer.renderScene(scene, this, compositor
|
|
525
|
+
SceneRenderer.renderScene(scene, this, compositor);
|
|
330
526
|
device.popDeviceStates();
|
|
331
527
|
}
|
|
332
528
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"camera.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|