@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.
Files changed (122) hide show
  1. package/editor/particles/rebuildParticleEmitter.js +8 -26
  2. package/editor/process/symbolic/CameraSymbolicDisplay.js +146 -146
  3. package/editor/tools/SelectionTool.js +1 -2
  4. package/editor/tools/TransformToolV2.js +2 -3
  5. package/editor/tools/v2/BlenderCameraOrientationGizmo.js +501 -501
  6. package/editor/tools/v2/TransformControls.js +1 -1
  7. package/package.json +95 -96
  8. package/src/core/geom/3d/mat4/m4_look_at.d.ts +25 -0
  9. package/src/core/geom/3d/mat4/m4_look_at.d.ts.map +1 -0
  10. package/src/core/geom/3d/mat4/m4_look_at.js +96 -0
  11. package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts +18 -0
  12. package/src/core/geom/3d/mat4/m4_make_rotation_x.d.ts.map +1 -0
  13. package/src/core/geom/3d/mat4/m4_make_rotation_x.js +47 -0
  14. package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts +18 -0
  15. package/src/core/geom/3d/mat4/m4_make_rotation_y.d.ts.map +1 -0
  16. package/src/core/geom/3d/mat4/m4_make_rotation_y.js +47 -0
  17. package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts +18 -0
  18. package/src/core/geom/3d/mat4/m4_make_rotation_z.d.ts.map +1 -0
  19. package/src/core/geom/3d/mat4/m4_make_rotation_z.js +47 -0
  20. package/src/core/geom/3d/mat4/m4_perspective.d.ts +25 -0
  21. package/src/core/geom/3d/mat4/m4_perspective.d.ts.map +1 -0
  22. package/src/core/geom/3d/mat4/m4_perspective.js +66 -0
  23. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  24. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2045 -2052
  25. package/src/engine/ecs/gui/hud/testHudEdgeStick.js +2 -2
  26. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
  27. package/src/engine/ecs/terrain/ecs/TerrainSystem.js +14 -27
  28. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.d.ts.map +1 -1
  29. package/src/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +129 -126
  30. package/src/engine/graphics/ecs/camera/Camera.d.ts +36 -48
  31. package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
  32. package/src/engine/graphics/ecs/camera/Camera.js +165 -303
  33. package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts +14 -0
  34. package/src/engine/graphics/ecs/camera/camera_active_frustum.d.ts.map +1 -0
  35. package/src/engine/graphics/ecs/camera/camera_active_frustum.js +25 -0
  36. package/src/engine/graphics/ecs/camera/camera_find_active.d.ts +16 -0
  37. package/src/engine/graphics/ecs/camera/camera_find_active.d.ts.map +1 -0
  38. package/src/engine/graphics/ecs/camera/camera_find_active.js +28 -0
  39. package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts +12 -0
  40. package/src/engine/graphics/ecs/camera/camera_traverse_active.d.ts.map +1 -0
  41. package/src/engine/graphics/ecs/camera/camera_traverse_active.js +18 -0
  42. package/src/engine/graphics/ecs/camera/pp/PerfectPanner.js +170 -170
  43. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts +5 -1
  44. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.d.ts.map +1 -1
  45. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.js +296 -281
  46. package/src/engine/graphics/ecs/render_layers_compute_depth_range.d.ts +1 -1
  47. package/src/engine/graphics/ecs/render_layers_compute_depth_range.js +1 -1
  48. package/src/engine/graphics/geometry/AttributeData.d.ts +52 -0
  49. package/src/engine/graphics/geometry/AttributeData.d.ts.map +1 -0
  50. package/src/engine/graphics/geometry/AttributeData.js +84 -0
  51. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts +1 -14
  52. package/src/engine/graphics/particles/particular/engine/ParticularEngine.d.ts.map +1 -1
  53. package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +229 -253
  54. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +25 -12
  55. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  56. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1149 -1194
  57. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts +4 -8
  58. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.d.ts.map +1 -1
  59. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +472 -540
  60. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts +19 -90
  61. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.d.ts.map +1 -1
  62. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +135 -514
  63. package/src/engine/graphics3/CameraSystem3.d.ts.map +1 -1
  64. package/src/engine/graphics3/CameraSystem3.js +10 -1
  65. package/src/engine/graphics3/GraphicsEngine3.d.ts +3 -3
  66. package/src/engine/graphics3/GraphicsEngine3.js +3 -3
  67. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts +11 -0
  68. package/src/engine/graphics3/ParticleEmitterSystem3.d.ts.map +1 -1
  69. package/src/engine/graphics3/ParticleEmitterSystem3.js +289 -265
  70. package/src/engine/graphics3/ShadeCameraAdapter.d.ts +3 -3
  71. package/src/engine/graphics3/ShadeCameraAdapter.js +3 -3
  72. package/src/engine/graphics3/camera_sync_from_transform.d.ts +2 -2
  73. package/src/engine/graphics3/camera_sync_from_transform.js +2 -2
  74. package/src/engine/graphics3/shade_camera_projection_ray.js +2 -2
  75. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  76. package/src/shade/renderer/camera/Camera.d.ts +3 -5
  77. package/src/shade/renderer/camera/Camera.d.ts.map +1 -1
  78. package/src/shade/renderer/camera/Camera.js +281 -280
  79. package/src/shade/renderer/camera/GPUCameraContext.js +233 -233
  80. package/src/shade/renderer/loader/usd/parse_usda.js +1 -1
  81. package/src/shade/renderer/loader/usd/usd_build_scene.d.ts.map +1 -1
  82. package/src/shade/renderer/loader/usd/usd_build_scene.js +658 -652
  83. package/src/shade/renderer/loader/usd/usd_compose_transform.d.ts.map +1 -1
  84. package/src/shade/renderer/loader/usd/usd_compose_transform.js +58 -23
  85. package/src/shade/renderer/particles/prototypeParticleSystem.js +450 -443
  86. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.d.ts.map +1 -1
  87. package/src/shade/renderer/shadow/map/DirectionalLightShadowmap.js +7 -3
  88. package/src/view/minimap/dom/MinimapCameraView.d.ts +2 -2
  89. package/src/view/minimap/dom/MinimapCameraView.js +206 -206
  90. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts +0 -74
  91. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +0 -1
  92. package/src/engine/graphics/ecs/camera/CameraSystem.js +0 -331
  93. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts +0 -10
  94. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.d.ts.map +0 -1
  95. package/src/engine/graphics/ecs/camera/auto_set_camera_clipping_planes.js +0 -105
  96. package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts +0 -7
  97. package/src/engine/graphics/ecs/camera/build_three_camera_object.d.ts.map +0 -1
  98. package/src/engine/graphics/ecs/camera/build_three_camera_object.js +0 -29
  99. package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts +0 -8
  100. package/src/engine/graphics/ecs/camera/frustum_from_camera.d.ts.map +0 -1
  101. package/src/engine/graphics/ecs/camera/frustum_from_camera.js +0 -20
  102. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts +0 -9
  103. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.d.ts.map +0 -1
  104. package/src/engine/graphics/ecs/camera/set_camera_aspect_ratio.js +0 -46
  105. package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts +0 -9
  106. package/src/engine/graphics/ecs/camera/unprojectPoint.d.ts.map +0 -1
  107. package/src/engine/graphics/ecs/camera/unprojectPoint.js +0 -14
  108. package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts +0 -6
  109. package/src/engine/graphics/ecs/camera/update_camera_transform.d.ts.map +0 -1
  110. package/src/engine/graphics/ecs/camera/update_camera_transform.js +0 -17
  111. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts +0 -67
  112. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.d.ts.map +0 -1
  113. package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +0 -291
  114. package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts +0 -11
  115. package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.d.ts.map +0 -1
  116. package/src/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +0 -497
  117. package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts +0 -40
  118. package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.d.ts.map +0 -1
  119. package/src/engine/graphics/particles/particular/engine/shader/MaterialRecord.js +0 -47
  120. package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts +0 -7
  121. package/src/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.d.ts.map +0 -1
  122. 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,7 +0,0 @@
1
- /**
2
- *
3
- * @param {Sampler2D} sampler
4
- * @param {THREE.DataTexture} texture
5
- */
6
- export function writeSample2DDataToDataTexture(sampler: Sampler2D, texture: THREE.DataTexture): void;
7
- //# sourceMappingURL=writeSampler2DDataToDataTexture.d.ts.map
@@ -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
- }