@woosh/meep-engine 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/editor/particles/rebuildParticleEmitter.js +8 -26
- package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
- package/editor/tools/SelectionTool.js +1 -2
- package/editor/tools/TransformToolV2.js +2 -3
- package/editor/tools/v2/BlenderCameraOrientationGizmo.js +501 -501
- package/editor/tools/v2/TransformControls.js +1 -1
- package/package.json +95 -96
- package/src/core/geom/3d/mat4/m4_look_at.d.ts +25 -0
- package/src/core/geom/3d/mat4/m4_look_at.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_look_at.js +96 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts +18 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_x.js +47 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts +18 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_y.js +47 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts +18 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_make_rotation_z.js +47 -0
- package/src/core/geom/3d/mat4/m4_perspective.d.ts +25 -0
- package/src/core/geom/3d/mat4/m4_perspective.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_perspective.js +66 -0
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2045 -2052
- package/src/engine/ecs/gui/hud/testHudEdgeStick.js +2 -2
- package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/TerrainSystem.js +14 -27
- package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.d.ts.map +1 -1
- package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -126
- package/src/engine/graphics/ecs/camera/Camera.d.ts +36 -48
- package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/Camera.js +165 -303
- package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts +14 -0
- package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts.map +1 -0
- package/src/engine/graphics/ecs/camera/camera_active_frustum.js +25 -0
- package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +16 -0
- package/src/engine/graphics/ecs/camera/camera_find_active.d.ts.map +1 -0
- package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -0
- package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts +12 -0
- package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -0
- package/src/engine/graphics/ecs/camera/camera_traverse_active.js +18 -0
- package/src/engine/graphics/ecs/camera/pp/PerfectPanner.js +170 -170
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +5 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
- package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +296 -281
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +1 -1
- package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +1 -1
- package/src/engine/graphics/geometry/AttributeData.d.ts +52 -0
- package/src/engine/graphics/geometry/AttributeData.d.ts.map +1 -0
- package/src/engine/graphics/geometry/AttributeData.js +84 -0
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +1 -14
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +229 -253
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +25 -12
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1149 -1194
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +4 -8
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +472 -540
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +19 -90
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +1 -1
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +135 -514
- package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/CameraSystem3.js +10 -1
- package/src/engine/graphics3/GraphicsEngine3.d.ts +3 -3
- package/src/engine/graphics3/GraphicsEngine3.js +3 -3
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +11 -0
- package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
- package/src/engine/graphics3/ParticleEmitterSystem3.js +289 -265
- package/src/engine/graphics3/ShadeCameraAdapter.d.ts +3 -3
- package/src/engine/graphics3/ShadeCameraAdapter.js +3 -3
- package/src/engine/graphics3/camera_sync_from_transform.d.ts +2 -2
- package/src/engine/graphics3/camera_sync_from_transform.js +2 -2
- package/src/engine/graphics3/shade_camera_projection_ray.js +2 -2
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/renderer/camera/Camera.d.ts +3 -5
- package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
- package/src/shade/renderer/camera/Camera.js +281 -280
- package/src/shade/renderer/camera/GPUCameraContext.js +233 -233
- package/src/shade/renderer/loader/usd/parse_usda.js +1 -1
- package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_build_scene.js +658 -652
- package/src/shade/renderer/loader/usd/usd_compose_transform.d.ts.map +1 -1
- package/src/shade/renderer/loader/usd/usd_compose_transform.js +58 -23
- package/src/shade/renderer/particles/prototypeParticleSystem.js +450 -443
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
- package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +7 -3
- package/src/view/minimap/dom/MinimapCameraView.d.ts +2 -2
- package/src/view/minimap/dom/MinimapCameraView.js +206 -206
- package/src/engine/graphics/ecs/camera/CameraSystem.d.ts +0 -74
- package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/CameraSystem.js +0 -331
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts +0 -10
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +0 -105
- package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts +0 -7
- package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/build_three_camera_object.js +0 -29
- package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts +0 -8
- package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/frustum_from_camera.js +0 -20
- package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts +0 -9
- package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.js +0 -46
- package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts +0 -9
- package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/unprojectPoint.js +0 -14
- package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts +0 -6
- package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts.map +0 -1
- package/src/engine/graphics/ecs/camera/update_camera_transform.js +0 -17
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts +0 -67
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +0 -1
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +0 -291
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts +0 -11
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +0 -497
- package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts +0 -40
- package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts.map +0 -1
- package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.js +0 -47
- package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts +0 -7
- package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts.map +0 -1
- package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.js +0 -40
|
@@ -1,497 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AddEquation,
|
|
3
|
-
CustomBlending,
|
|
4
|
-
GLSL3,
|
|
5
|
-
Matrix4,
|
|
6
|
-
OneFactor,
|
|
7
|
-
OneMinusSrcAlphaFactor,
|
|
8
|
-
ShaderMaterial,
|
|
9
|
-
UniformsLib,
|
|
10
|
-
UniformsUtils,
|
|
11
|
-
Vector2 as ThreeVector2
|
|
12
|
-
} from "three";
|
|
13
|
-
|
|
14
|
-
const CHUNK_LAMBERT_LIGHTING = `
|
|
15
|
-
vec3 diffuse = vec3( 1.0 );
|
|
16
|
-
|
|
17
|
-
GeometricContext geometry;
|
|
18
|
-
geometry.position = -vViewPosition;
|
|
19
|
-
geometry.normal = normalize( transformedNormal );
|
|
20
|
-
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -vViewPosition.xyz );
|
|
21
|
-
|
|
22
|
-
GeometricContext backGeometry;
|
|
23
|
-
backGeometry.position = geometry.position;
|
|
24
|
-
backGeometry.normal = -geometry.normal;
|
|
25
|
-
backGeometry.viewDir = geometry.viewDir;
|
|
26
|
-
|
|
27
|
-
vLightFront = vec3( 0.0 );
|
|
28
|
-
vIndirectFront = vec3( 0.0 );
|
|
29
|
-
|
|
30
|
-
IncidentLight directLight;
|
|
31
|
-
float dotNL;
|
|
32
|
-
vec3 directLightColor_Diffuse;
|
|
33
|
-
|
|
34
|
-
#if NUM_POINT_LIGHTS > 0
|
|
35
|
-
|
|
36
|
-
#pragma unroll_loop_start
|
|
37
|
-
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
38
|
-
|
|
39
|
-
getPointLightInfo( pointLights[ i ], geometry, directLight );
|
|
40
|
-
|
|
41
|
-
RE_Direct( directLight, geometry, material, reflectedLight );
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
#pragma unroll_loop_end
|
|
45
|
-
|
|
46
|
-
#endif
|
|
47
|
-
|
|
48
|
-
#if NUM_SPOT_LIGHTS > 0
|
|
49
|
-
|
|
50
|
-
#pragma unroll_loop_start
|
|
51
|
-
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
52
|
-
|
|
53
|
-
getSpotLightInfo( spotLights[ i ], geometry, directLight );
|
|
54
|
-
|
|
55
|
-
RE_Direct( directLight, geometry, material, reflectedLight );
|
|
56
|
-
}
|
|
57
|
-
#pragma unroll_loop_end
|
|
58
|
-
|
|
59
|
-
#endif
|
|
60
|
-
|
|
61
|
-
#if NUM_DIR_LIGHTS > 0
|
|
62
|
-
|
|
63
|
-
#pragma unroll_loop_start
|
|
64
|
-
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
65
|
-
|
|
66
|
-
getDirectionalLightInfo( directionalLights[ i ], geometry, directLight );
|
|
67
|
-
|
|
68
|
-
RE_Direct( directLight, geometry, material, reflectedLight );
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
#pragma unroll_loop_end
|
|
72
|
-
|
|
73
|
-
#endif
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
#if defined( RE_IndirectDiffuse )
|
|
78
|
-
vec3 iblIrradiance = vec3( 0.0 );
|
|
79
|
-
vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
|
|
80
|
-
irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );
|
|
81
|
-
#if NUM_HEMI_LIGHTS > 0
|
|
82
|
-
|
|
83
|
-
#pragma unroll_loop_start
|
|
84
|
-
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
85
|
-
|
|
86
|
-
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
#pragma unroll_loop_end
|
|
90
|
-
|
|
91
|
-
#endif
|
|
92
|
-
|
|
93
|
-
#if defined( USE_ENVMAP ) && defined( ENVMAP_TYPE_CUBE_UV )
|
|
94
|
-
iblIrradiance += getIBLIrradiance( geometry.normal );
|
|
95
|
-
#endif
|
|
96
|
-
#endif
|
|
97
|
-
|
|
98
|
-
#if defined( RE_IndirectSpecular )
|
|
99
|
-
vec3 radiance = vec3( 0.0 );
|
|
100
|
-
vec3 clearcoatRadiance = vec3( 0.0 );
|
|
101
|
-
#endif
|
|
102
|
-
|
|
103
|
-
#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
|
|
104
|
-
radiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );
|
|
105
|
-
#endif
|
|
106
|
-
|
|
107
|
-
#if defined( RE_IndirectDiffuse )
|
|
108
|
-
RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );
|
|
109
|
-
#endif
|
|
110
|
-
#if defined( RE_IndirectSpecular )
|
|
111
|
-
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );
|
|
112
|
-
#endif
|
|
113
|
-
`;
|
|
114
|
-
|
|
115
|
-
function make_vertex_shader() {
|
|
116
|
-
//language=GLSL
|
|
117
|
-
return `
|
|
118
|
-
uniform float cameraNear;
|
|
119
|
-
uniform float cameraFar;
|
|
120
|
-
uniform vec2 resolution;
|
|
121
|
-
|
|
122
|
-
attribute float size;
|
|
123
|
-
attribute vec4 color;
|
|
124
|
-
attribute vec4 atlasPatch;
|
|
125
|
-
attribute float rotation;
|
|
126
|
-
attribute vec3 velocity;
|
|
127
|
-
attribute float blending;
|
|
128
|
-
|
|
129
|
-
varying vec4 vPatch;
|
|
130
|
-
varying float vSize;
|
|
131
|
-
varying float vFadeDistance;
|
|
132
|
-
varying vec4 vColor;
|
|
133
|
-
varying vec2 vRotationMultiplier;
|
|
134
|
-
varying float vBlending;
|
|
135
|
-
|
|
136
|
-
#if defined(LIGHTS_ENABLED)
|
|
137
|
-
varying vec3 vViewPosition;
|
|
138
|
-
#endif
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
void main() {
|
|
143
|
-
|
|
144
|
-
vColor = color;
|
|
145
|
-
vSize = size;
|
|
146
|
-
vPatch = atlasPatch;
|
|
147
|
-
vBlending = blending;
|
|
148
|
-
|
|
149
|
-
mat4 modelViewProjectionMatrix = projectionMatrix * modelViewMatrix;
|
|
150
|
-
|
|
151
|
-
vec3 transformed = position;
|
|
152
|
-
|
|
153
|
-
vec4 position4 = vec4( position, 1.0 );
|
|
154
|
-
|
|
155
|
-
#if defined(LIGHTS_ENABLED)
|
|
156
|
-
vec4 mvPosition = modelViewMatrix * position4;
|
|
157
|
-
vViewPosition = -mvPosition.xyz;
|
|
158
|
-
|
|
159
|
-
vec3 transformedNormal = vec3(0.0,0.0,1.0);
|
|
160
|
-
|
|
161
|
-
#include <worldpos_vertex>
|
|
162
|
-
#endif
|
|
163
|
-
|
|
164
|
-
gl_Position = modelViewProjectionMatrix * position4;
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
float rotationGlobal = rotation;
|
|
168
|
-
|
|
169
|
-
//
|
|
170
|
-
#ifdef ALIGN_DIRECTION_ENABLED
|
|
171
|
-
if(velocity != vec3(0.0)){
|
|
172
|
-
|
|
173
|
-
vec4 vecNext = modelViewProjectionMatrix * (position4 + vec4(velocity,0.0) );
|
|
174
|
-
|
|
175
|
-
vec2 p_2 = gl_Position.xy / gl_Position.w;
|
|
176
|
-
vec2 vecNext_2 = vecNext.xy / vecNext.w;
|
|
177
|
-
|
|
178
|
-
vec2 direction = vecNext_2 - p_2;
|
|
179
|
-
|
|
180
|
-
float upAngle = atan(direction.y, direction.x) - 1.57079632679;
|
|
181
|
-
|
|
182
|
-
rotationGlobal = rotationGlobal + upAngle;
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
#endif
|
|
186
|
-
|
|
187
|
-
vRotationMultiplier = vec2( cos(rotationGlobal),sin(rotationGlobal) );
|
|
188
|
-
|
|
189
|
-
float radius = vSize * 0.5;
|
|
190
|
-
|
|
191
|
-
float projected_radius = resolution.y * projectionMatrix[1][1] * radius / gl_Position.w;
|
|
192
|
-
|
|
193
|
-
#ifdef DEPTH_SOFT_ENABLED
|
|
194
|
-
|
|
195
|
-
vFadeDistance = 1.0 / radius;
|
|
196
|
-
|
|
197
|
-
#endif
|
|
198
|
-
|
|
199
|
-
gl_PointSize = projected_radius;
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
}`;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
//${CHUNK_LAMBERT_LIGHTING}
|
|
206
|
-
//#include <lights_lambert_vertex>
|
|
207
|
-
function make_fragment_shader() {
|
|
208
|
-
return `
|
|
209
|
-
uniform sampler2D tSpriteAtlas;
|
|
210
|
-
uniform sampler2D tDepth;
|
|
211
|
-
uniform float cameraNear;
|
|
212
|
-
uniform float cameraFar;
|
|
213
|
-
uniform mat4 modelViewMatrix;
|
|
214
|
-
uniform mat4 projectionMatrix;
|
|
215
|
-
|
|
216
|
-
uniform mat4 uProjectionInverse;
|
|
217
|
-
uniform mat4 uViewInverse;
|
|
218
|
-
|
|
219
|
-
uniform vec2 resolution;
|
|
220
|
-
|
|
221
|
-
varying float vFadeDistance;
|
|
222
|
-
varying vec4 vPatch;
|
|
223
|
-
varying float vSize;
|
|
224
|
-
varying vec4 vColor;
|
|
225
|
-
varying vec2 vRotationMultiplier;
|
|
226
|
-
varying float vBlending;
|
|
227
|
-
|
|
228
|
-
out highp vec4 pc_fragColor;
|
|
229
|
-
|
|
230
|
-
float depthToLinear( float z ) {
|
|
231
|
-
float f = cameraFar;
|
|
232
|
-
float n = cameraNear;
|
|
233
|
-
|
|
234
|
-
float d_n = 2.0*z - 1.0;
|
|
235
|
-
|
|
236
|
-
float z_diff = f - n;
|
|
237
|
-
|
|
238
|
-
float denominator = (f + n - d_n * z_diff );
|
|
239
|
-
|
|
240
|
-
float z_view = (2.0*f*n) / denominator;
|
|
241
|
-
|
|
242
|
-
return z_view-n;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
float depthToLinear_v2(float z){
|
|
246
|
-
float far = cameraFar;
|
|
247
|
-
float near = cameraNear;
|
|
248
|
-
|
|
249
|
-
// perspectiveDepthToViewZ
|
|
250
|
-
float view_z = ( near * far ) / ( ( near-far ) * z + far );
|
|
251
|
-
|
|
252
|
-
return view_z;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
float calculateFade(in float particleDepth, in float sceneDepth){
|
|
257
|
-
float zFade;
|
|
258
|
-
|
|
259
|
-
float linearParticleDepth = depthToLinear_v2(particleDepth);
|
|
260
|
-
|
|
261
|
-
float linearSceneDepth = depthToLinear_v2(sceneDepth);
|
|
262
|
-
|
|
263
|
-
float depthDelta = (linearSceneDepth - linearParticleDepth);
|
|
264
|
-
|
|
265
|
-
float inputDepth = depthDelta* vFadeDistance;
|
|
266
|
-
|
|
267
|
-
if(inputDepth <= 0.0){
|
|
268
|
-
return 0.0;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
if(inputDepth >= 1.0){
|
|
272
|
-
return 1.0;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
if(inputDepth <= 0.5){
|
|
276
|
-
zFade = 2.0 * pow( clamp(inputDepth, 0.0, 1.0), 2.0);
|
|
277
|
-
}else{
|
|
278
|
-
zFade = 1.0 - 2.0 * pow( clamp(1.0 - inputDepth, 0.0, 1.0), 2.0);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
return zFade;
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
#if defined(LIGHTS_ENABLED)
|
|
286
|
-
|
|
287
|
-
vec3 computeWorldPositionFromFragmentPosition(vec3 coord){
|
|
288
|
-
vec4 ndc = vec4(
|
|
289
|
-
(coord.x - 0.5) * 2.0,
|
|
290
|
-
(coord.y - 0.5) * 2.0,
|
|
291
|
-
(coord.z - 0.5) * 2.0,
|
|
292
|
-
1.0);
|
|
293
|
-
|
|
294
|
-
vec4 clip = uProjectionInverse * ndc;
|
|
295
|
-
return (uViewInverse* (clip / clip.w) ).xyz;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
vec3 construct_spherical_normal_from_point_coord(vec2 coord){
|
|
299
|
-
float x = coord.x * 2.0 - 1.0;
|
|
300
|
-
float y = coord.y * 2.0 - 1.0; // note we flip Y
|
|
301
|
-
|
|
302
|
-
float z = sqrt(1.0 - clamp(x*x + y*y, 0.0, 1.0));
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
vec3 position = vec3(x, -y, z);
|
|
306
|
-
|
|
307
|
-
vec3 normal = normalize(position);
|
|
308
|
-
|
|
309
|
-
return normal;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
#include <common>
|
|
313
|
-
#include <bsdfs>
|
|
314
|
-
#include <lights_pars_begin>
|
|
315
|
-
|
|
316
|
-
struct LambertMaterial {
|
|
317
|
-
vec3 diffuseColor;
|
|
318
|
-
float opacity;
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
void RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
|
|
322
|
-
float unsaturated_direction_dot = dot( geometry.normal, directLight.direction );
|
|
323
|
-
|
|
324
|
-
float dotNL = saturate( unsaturated_direction_dot );
|
|
325
|
-
|
|
326
|
-
vec3 irradiance = dotNL * directLight.color;
|
|
327
|
-
|
|
328
|
-
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
|
|
332
|
-
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
#define RE_Direct RE_Direct_Lambert
|
|
336
|
-
#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert
|
|
337
|
-
|
|
338
|
-
varying vec3 vViewPosition;
|
|
339
|
-
#endif
|
|
340
|
-
|
|
341
|
-
void main() {
|
|
342
|
-
float fragmentDepth = gl_FragCoord.z;
|
|
343
|
-
|
|
344
|
-
vec2 pixelPosition = gl_FragCoord.xy / resolution;
|
|
345
|
-
|
|
346
|
-
float sceneDepth = texture2D( tDepth, pixelPosition ).x;
|
|
347
|
-
|
|
348
|
-
#ifdef DEPTH_READ_ENABLED
|
|
349
|
-
|
|
350
|
-
if(fragmentDepth > sceneDepth){
|
|
351
|
-
discard;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
#endif
|
|
355
|
-
|
|
356
|
-
vec2 centeredUv = gl_PointCoord.xy - 0.5;
|
|
357
|
-
|
|
358
|
-
vec2 texelCoordinate = vec2( centeredUv.x* vRotationMultiplier.x - centeredUv.y* vRotationMultiplier.y, centeredUv.x * vRotationMultiplier.y + centeredUv.y * vRotationMultiplier.x) + 0.5;
|
|
359
|
-
|
|
360
|
-
texelCoordinate = clamp(texelCoordinate, vec2(0.0), vec2(1.0) );
|
|
361
|
-
|
|
362
|
-
vec2 uv = texelCoordinate*vPatch.zw + vPatch.xy;
|
|
363
|
-
|
|
364
|
-
vec4 spriteColor = texture2D( tSpriteAtlas, uv );
|
|
365
|
-
|
|
366
|
-
if(spriteColor.a == 0.0){
|
|
367
|
-
discard;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
vec4 texel = spriteColor * vColor;
|
|
371
|
-
|
|
372
|
-
#if defined(LIGHTS_ENABLED)
|
|
373
|
-
// compute world position
|
|
374
|
-
vec3 v_world_position = computeWorldPositionFromFragmentPosition(gl_FragCoord.xyz);
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
vec3 vLightFront;
|
|
378
|
-
vec3 vIndirectFront;
|
|
379
|
-
|
|
380
|
-
vec3 transformedNormal = construct_spherical_normal_from_point_coord(gl_PointCoord.xy);
|
|
381
|
-
|
|
382
|
-
LambertMaterial material = LambertMaterial(texel.rgb, texel.a);
|
|
383
|
-
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
384
|
-
|
|
385
|
-
${CHUNK_LAMBERT_LIGHTING}
|
|
386
|
-
|
|
387
|
-
vec3 totalEmissiveRadiance = vec3(0.0);
|
|
388
|
-
|
|
389
|
-
//@injection_point FORWARD_PLUS:accumulation
|
|
390
|
-
|
|
391
|
-
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
|
|
392
|
-
|
|
393
|
-
texel.rgb = outgoingLight;
|
|
394
|
-
#endif
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
// premultiply alpha
|
|
398
|
-
texel.xyz *= texel.a;
|
|
399
|
-
|
|
400
|
-
if(vBlending > 0.1){
|
|
401
|
-
// additive blending
|
|
402
|
-
texel.a = 0.0;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
#ifdef DEPTH_SOFT_ENABLED
|
|
406
|
-
|
|
407
|
-
float zFade = calculateFade(fragmentDepth, sceneDepth);
|
|
408
|
-
texel *= zFade;
|
|
409
|
-
|
|
410
|
-
#endif
|
|
411
|
-
|
|
412
|
-
pc_fragColor = texel;
|
|
413
|
-
}`;
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
/**
|
|
417
|
-
* NOTES:
|
|
418
|
-
* - To implement per-particle blend modes, we need to have access to what we're blending on to, that is - the color buffer
|
|
419
|
-
* Having the color buffer - we can do just about any kind of a blend
|
|
420
|
-
*
|
|
421
|
-
* - Support animation by adding animation sprite sheet to the main sprite atlas, record resolution of the sheet (in frames X,Y) and interpolate over tiles based on some parameter
|
|
422
|
-
* @param {boolean} [lights]
|
|
423
|
-
*/
|
|
424
|
-
export function make_particle_billboard_shader({ lights = false } = {}) {
|
|
425
|
-
let uniforms = {
|
|
426
|
-
tSpriteAtlas: {
|
|
427
|
-
type: 't',
|
|
428
|
-
value: null
|
|
429
|
-
},
|
|
430
|
-
cameraNear: {
|
|
431
|
-
type: 'f',
|
|
432
|
-
value: 1,
|
|
433
|
-
},
|
|
434
|
-
cameraFar: {
|
|
435
|
-
type: 'f',
|
|
436
|
-
value: 1,
|
|
437
|
-
},
|
|
438
|
-
tDepth: {
|
|
439
|
-
type: 't',
|
|
440
|
-
value: null
|
|
441
|
-
},
|
|
442
|
-
tColor: {
|
|
443
|
-
type: 't',
|
|
444
|
-
value: null
|
|
445
|
-
},
|
|
446
|
-
modelViewMatrix: {
|
|
447
|
-
type: 'm4',
|
|
448
|
-
value: new Matrix4()
|
|
449
|
-
},
|
|
450
|
-
projectionMatrix: {
|
|
451
|
-
type: 'm4',
|
|
452
|
-
value: new Matrix4()
|
|
453
|
-
},
|
|
454
|
-
resolution: {
|
|
455
|
-
type: 'v2',
|
|
456
|
-
value: new ThreeVector2()
|
|
457
|
-
},
|
|
458
|
-
uViewInverse: { type: 'm4', value: new Matrix4() },
|
|
459
|
-
uProjectionInverse: { type: 'm4', value: new Matrix4() },
|
|
460
|
-
};
|
|
461
|
-
|
|
462
|
-
if (lights) {
|
|
463
|
-
// mix in light uniforms
|
|
464
|
-
uniforms = Object.assign(uniforms, UniformsUtils.clone(UniformsLib.lights));
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
const shader = new ShaderMaterial({
|
|
468
|
-
defines: {
|
|
469
|
-
DEPTH_READ_ENABLED: true,
|
|
470
|
-
DEPTH_SOFT_ENABLED: true,
|
|
471
|
-
ALIGN_DIRECTION_ENABLED: false,
|
|
472
|
-
LIGHTS_ENABLED: lights
|
|
473
|
-
},
|
|
474
|
-
uniforms: uniforms,
|
|
475
|
-
vertexShader: make_vertex_shader(),
|
|
476
|
-
fragmentShader: make_fragment_shader(),
|
|
477
|
-
blending: CustomBlending,
|
|
478
|
-
lights: lights,
|
|
479
|
-
/*
|
|
480
|
-
forcing transparent pass in Graphics Engine
|
|
481
|
-
three.js and indeed WebGL doesn't provide a way to pass depth buffer into the main draw pass (to canvas), so this is a workaround
|
|
482
|
-
*/
|
|
483
|
-
depthTest: false,
|
|
484
|
-
depthWrite: false,
|
|
485
|
-
transparent: true,
|
|
486
|
-
vertexColors: false,
|
|
487
|
-
glslVersion: GLSL3
|
|
488
|
-
});
|
|
489
|
-
|
|
490
|
-
shader.blending = CustomBlending;
|
|
491
|
-
shader.blendEquation = AddEquation;
|
|
492
|
-
shader.blendSrc = OneFactor;
|
|
493
|
-
shader.blendDst = OneMinusSrcAlphaFactor;
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
return shader;
|
|
497
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export class MaterialRecord {
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* @type {Material}
|
|
5
|
-
*/
|
|
6
|
-
material: Material;
|
|
7
|
-
/**
|
|
8
|
-
* The reference {@link MaterialManager#obtain} handed out for {@link MaterialRecord#material}. Held so
|
|
9
|
-
* the material can be given back; the manager decides when to actually dispose it, as the compiled
|
|
10
|
-
* material is shared by content hash with every other consumer that asked for the same shader.
|
|
11
|
-
* @type {Reference<Material>|null}
|
|
12
|
-
*/
|
|
13
|
-
material_reference: Reference<Material> | null;
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @type {number}
|
|
17
|
-
*/
|
|
18
|
-
count: number;
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
21
|
-
* @type {SignalBinding[]}
|
|
22
|
-
*/
|
|
23
|
-
signalBindings: SignalBinding[];
|
|
24
|
-
/**
|
|
25
|
-
*
|
|
26
|
-
* @type {ParticleEmitter[]}
|
|
27
|
-
*/
|
|
28
|
-
emitters: ParticleEmitter[];
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
* @type {ParameterSet|null}
|
|
32
|
-
*/
|
|
33
|
-
parameters: ParameterSet | null;
|
|
34
|
-
/**
|
|
35
|
-
*
|
|
36
|
-
* @type {number}
|
|
37
|
-
*/
|
|
38
|
-
lastAccessTime: number;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=MaterialRecord.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MaterialRecord.d.ts","sourceRoot":"","sources":["../../../../../../../../src/engine/graphics/particles/particular/engine/shader/MaterialRecord.js"],"names":[],"mappings":"AAAA;IAEI;;;OAGG;IACH,mBAAgB;IAEhB;;;;;OAKG;IACH,oBAFU,sBAAoB,IAAI,CAER;IAE1B;;;OAGG;IACH,OAFU,MAAM,CAEN;IAEV;;;OAGG;IACH,gBAFU,eAAe,CAEL;IAEpB;;;OAGG;IACH,UAFU,iBAAiB,CAEb;IAEd;;;OAGG;IACH,YAFU,eAAa,IAAI,CAET;IAElB;;;OAGG;IACH,gBAFU,MAAM,CAEG;CAEtB"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
export class MaterialRecord {
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* @type {Material}
|
|
6
|
-
*/
|
|
7
|
-
material = null;
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* The reference {@link MaterialManager#obtain} handed out for {@link MaterialRecord#material}. Held so
|
|
11
|
-
* the material can be given back; the manager decides when to actually dispose it, as the compiled
|
|
12
|
-
* material is shared by content hash with every other consumer that asked for the same shader.
|
|
13
|
-
* @type {Reference<Material>|null}
|
|
14
|
-
*/
|
|
15
|
-
material_reference = null;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* @type {number}
|
|
20
|
-
*/
|
|
21
|
-
count = 0;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
*
|
|
25
|
-
* @type {SignalBinding[]}
|
|
26
|
-
*/
|
|
27
|
-
signalBindings = [];
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
*
|
|
31
|
-
* @type {ParticleEmitter[]}
|
|
32
|
-
*/
|
|
33
|
-
emitters = [];
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
*
|
|
37
|
-
* @type {ParameterSet|null}
|
|
38
|
-
*/
|
|
39
|
-
parameters = null;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
* @type {number}
|
|
44
|
-
*/
|
|
45
|
-
lastAccessTime = 0;
|
|
46
|
-
|
|
47
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"writeSampler2DDataToDataTexture.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.js"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,4EAFW,MAAM,WAAW,QAiC3B"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { LuminanceFormat, RedFormat, RGBAFormat, RGFormat } from "three";
|
|
2
|
-
import { GL_RGBFormat } from "../GL_RGBFormat.js";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* @param {Sampler2D} sampler
|
|
7
|
-
* @param {THREE.DataTexture} texture
|
|
8
|
-
*/
|
|
9
|
-
export function writeSample2DDataToDataTexture(sampler, texture) {
|
|
10
|
-
if (sampler.itemSize === 1) {
|
|
11
|
-
if (texture.format !== RedFormat && texture.format !== LuminanceFormat) {
|
|
12
|
-
throw new Error('itemSize is 1 and texture.format is not RedFormat');
|
|
13
|
-
}
|
|
14
|
-
} else if (sampler.itemSize === 2) {
|
|
15
|
-
if (texture.format !== RGFormat) {
|
|
16
|
-
throw new Error('itemSize is 2 and texture.format is not RGFormat');
|
|
17
|
-
}
|
|
18
|
-
} else if (sampler.itemSize === 3) {
|
|
19
|
-
if (texture.format !== GL_RGBFormat) {
|
|
20
|
-
throw new Error('itemSize is 3 and texture.format is not RGBFormat');
|
|
21
|
-
}
|
|
22
|
-
} else if (sampler.itemSize === 4) {
|
|
23
|
-
if (texture.format !== RGBAFormat) {
|
|
24
|
-
throw new Error('itemSize is 4 and texture.format is not RGBAFormat');
|
|
25
|
-
}
|
|
26
|
-
} else {
|
|
27
|
-
throw new Error('Unsupported itemSize');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (texture.image.data !== sampler.data) {
|
|
31
|
-
// dispose of previous texture data
|
|
32
|
-
texture.dispose();
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
texture.image.data = sampler.data;
|
|
36
|
-
texture.image.width = sampler.width;
|
|
37
|
-
texture.image.height = sampler.height;
|
|
38
|
-
|
|
39
|
-
texture.needsUpdate = true;
|
|
40
|
-
}
|