@driftengine/core 4.8.2 → 4.8.4
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/CHANGELOG.json +127 -0
- package/README.md +1 -1
- package/dist/geometry/meshConcat.js +2 -0
- package/dist/index.d.ts +11 -4
- package/dist/index.js +22 -1
- package/dist/math/scalar.js +1 -1
- package/dist/render/anisotropicLobe.d.ts +7 -0
- package/dist/render/anisotropicLobe.js +33 -0
- package/dist/render/backend/api.d.ts +41 -4
- package/dist/render/backend/materialChanges.d.ts +7 -2
- package/dist/render/backend/materialChanges.js +8 -3
- package/dist/render/backend/select.js +8 -0
- package/dist/render/backend/webgl2/clothTextures.d.ts +27 -0
- package/dist/render/backend/webgl2/clothTextures.js +93 -0
- package/dist/render/backend/webgl2/renderer.d.ts +159 -3
- package/dist/render/backend/webgl2/renderer.js +662 -80
- package/dist/render/backend/webgl2/skinScatter.d.ts +50 -0
- package/dist/render/backend/webgl2/skinScatter.js +256 -0
- package/dist/render/backend/webgpu/buffers.d.ts +25 -11
- package/dist/render/backend/webgpu/buffers.js +98 -49
- package/dist/render/backend/webgpu/causticsPass.js +2 -1
- package/dist/render/backend/webgpu/clothSolvePack.d.ts +27 -0
- package/dist/render/backend/webgpu/clothSolvePack.js +129 -0
- package/dist/render/backend/webgpu/clothTextures.d.ts +68 -0
- package/dist/render/backend/webgpu/clothTextures.js +145 -0
- package/dist/render/backend/webgpu/compressedUpload.d.ts +18 -0
- package/dist/render/backend/webgpu/compressedUpload.js +38 -0
- package/dist/render/backend/webgpu/computeHost.d.ts +21 -0
- package/dist/render/backend/webgpu/computeHost.js +5 -0
- package/dist/render/backend/webgpu/depthPass.d.ts +29 -9
- package/dist/render/backend/webgpu/depthPass.js +43 -12
- package/dist/render/backend/webgpu/drawCommand.js +6 -2
- package/dist/render/backend/webgpu/filmPass.js +2 -1
- package/dist/render/backend/webgpu/flatPass.d.ts +43 -4
- package/dist/render/backend/webgpu/flatPass.js +111 -13
- package/dist/render/backend/webgpu/gpuSkinnedCloth.d.ts +74 -0
- package/dist/render/backend/webgpu/gpuSkinnedCloth.js +452 -0
- package/dist/render/backend/webgpu/linePass.js +2 -1
- package/dist/render/backend/webgpu/motionPass.d.ts +20 -0
- package/dist/render/backend/webgpu/motionPass.js +106 -9
- package/dist/render/backend/webgpu/panelPass.js +2 -1
- package/dist/render/backend/webgpu/particlePass.js +2 -1
- package/dist/render/backend/webgpu/plumePass.js +2 -1
- package/dist/render/backend/webgpu/postPass.d.ts +15 -3
- package/dist/render/backend/webgpu/postPass.js +25 -8
- package/dist/render/backend/webgpu/renderer.d.ts +123 -6
- package/dist/render/backend/webgpu/renderer.js +534 -58
- package/dist/render/backend/webgpu/sdfTextPass.js +2 -1
- package/dist/render/backend/webgpu/shaders/clothSolve.wgsl.d.ts +33 -0
- package/dist/render/backend/webgpu/shaders/clothSolve.wgsl.js +469 -0
- package/dist/render/backend/webgpu/skinScatterPass.d.ts +51 -0
- package/dist/render/backend/webgpu/skinScatterPass.js +253 -0
- package/dist/render/backend/webgpu/surfaceTexturePass.d.ts +4 -1
- package/dist/render/backend/webgpu/surfaceTexturePass.js +37 -12
- package/dist/render/backend/webgpu/textPass.js +2 -1
- package/dist/render/backend/webgpu/waterPass.js +2 -1
- package/dist/render/backend/webgpu/windStreakPass.js +2 -1
- package/dist/render/boltBatch.js +2 -1
- package/dist/render/causticsRenderer.js +2 -1
- package/dist/render/clothBindingData.d.ts +41 -0
- package/dist/render/clothBindingData.js +72 -0
- package/dist/render/clothPlacement.d.ts +25 -0
- package/dist/render/clothPlacement.js +85 -0
- package/dist/render/compressedSource.d.ts +66 -0
- package/dist/render/compressedSource.js +138 -0
- package/dist/render/cutoutCaster.d.ts +5 -1
- package/dist/render/cutoutCaster.js +6 -0
- package/dist/render/cutoutDither.d.ts +51 -0
- package/dist/render/cutoutDither.js +90 -0
- package/dist/render/decalPass.js +2 -1
- package/dist/render/eyeRefraction.d.ts +35 -0
- package/dist/render/eyeRefraction.js +40 -0
- package/dist/render/glCompressed.d.ts +27 -0
- package/dist/render/glCompressed.js +53 -0
- package/dist/render/globalMediumPass.js +3 -2
- package/dist/render/hairLobes.d.ts +70 -0
- package/dist/render/hairLobes.js +120 -0
- package/dist/render/lightBudget.d.ts +22 -0
- package/dist/render/lightBudget.js +22 -0
- package/dist/render/lineBatch.js +5 -1
- package/dist/render/mesh.d.ts +7 -0
- package/dist/render/mesh.js +24 -0
- package/dist/render/oitPass.js +2 -1
- package/dist/render/particleBatch.js +3 -2
- package/dist/render/particlePool.d.ts +6 -2
- package/dist/render/plumeRenderer.js +3 -2
- package/dist/render/recon/motionVectors.d.ts +4 -2
- package/dist/render/recon/motionVectors.js +6 -3
- package/dist/render/renderQuality.d.ts +29 -2
- package/dist/render/renderQuality.js +5 -0
- package/dist/render/rendererHarness.js +4 -0
- package/dist/render/sceneCoverage.d.ts +54 -0
- package/dist/render/sceneCoverage.js +72 -0
- package/dist/render/sceneTarget.d.ts +12 -0
- package/dist/render/sceneTarget.js +14 -0
- package/dist/render/sdfTextRenderer.js +2 -1
- package/dist/render/shaders/clothBinding.d.ts +22 -0
- package/dist/render/shaders/clothBinding.js +80 -0
- package/dist/render/shaders/depth.js +45 -8
- package/dist/render/shaders/flat/anisotropic.d.ts +15 -0
- package/dist/render/shaders/flat/anisotropic.js +68 -0
- package/dist/render/shaders/flat/eye.d.ts +1 -0
- package/dist/render/shaders/flat/eye.js +81 -0
- package/dist/render/shaders/flat/hair.d.ts +1 -0
- package/dist/render/shaders/flat/hair.js +101 -0
- package/dist/render/shaders/flat/index.js +42 -3
- package/dist/render/shaders/flat/main.d.ts +1 -1
- package/dist/render/shaders/flat/main.js +113 -17
- package/dist/render/shaders/flat/models.d.ts +14 -0
- package/dist/render/shaders/flat/models.js +273 -0
- package/dist/render/shaders/flat/preamble.js +26 -24
- package/dist/render/shaders/flat/skin.d.ts +1 -0
- package/dist/render/shaders/flat/skin.js +114 -0
- package/dist/render/shaders/generated/depth.wgsl.d.ts +66 -24
- package/dist/render/shaders/generated/depth.wgsl.js +66 -24
- package/dist/render/shaders/generated/flat.wgsl.d.ts +1815 -1704
- package/dist/render/shaders/generated/flat.wgsl.js +1853 -1742
- package/dist/render/shaders/generated/line.wgsl.d.ts +1 -1
- package/dist/render/shaders/generated/line.wgsl.js +1 -1
- package/dist/render/shaders/generated/particle.wgsl.d.ts +3 -3
- package/dist/render/shaders/generated/particle.wgsl.js +3 -3
- package/dist/render/shaders/generated/rush.wgsl.d.ts +1 -1
- package/dist/render/shaders/generated/rush.wgsl.js +1 -1
- package/dist/render/shaders/generated/sdfText.wgsl.d.ts +1 -1
- package/dist/render/shaders/generated/sdfText.wgsl.js +1 -1
- package/dist/render/shaders/generated/skinBlur.wgsl.d.ts +48 -0
- package/dist/render/shaders/generated/skinBlur.wgsl.js +54 -0
- package/dist/render/shaders/generated/temporalResolve.wgsl.d.ts +1 -1
- package/dist/render/shaders/generated/temporalResolve.wgsl.js +1 -1
- package/dist/render/shaders/line.d.ts +1 -1
- package/dist/render/shaders/outputTransform.d.ts +14 -1
- package/dist/render/shaders/outputTransform.js +23 -1
- package/dist/render/shaders/particle.d.ts +3 -3
- package/dist/render/shaders/recon/motion.wgsl.d.ts +1 -1
- package/dist/render/shaders/recon/motion.wgsl.js +102 -0
- package/dist/render/shaders/recon/resolve.wgsl.js +15 -1
- package/dist/render/shaders/rush.js +13 -2
- package/dist/render/shaders/sdfText.d.ts +1 -1
- package/dist/render/shaders/skinBlur.d.ts +1 -0
- package/dist/render/shaders/skinBlur.js +103 -0
- package/dist/render/shaders/skinning.d.ts +3 -1
- package/dist/render/shaders/skinning.js +31 -4
- package/dist/render/shaders/temporalResolve.js +12 -5
- package/dist/render/shadowCasters.d.ts +13 -1
- package/dist/render/skinBlur.d.ts +41 -0
- package/dist/render/skinBlur.js +49 -0
- package/dist/render/skinScatter.d.ts +67 -0
- package/dist/render/skinScatter.js +80 -0
- package/dist/render/skinnedClothRun.d.ts +26 -0
- package/dist/render/skinnedClothRun.js +84 -0
- package/dist/render/ssrPass.js +2 -1
- package/dist/render/surfaceModel.d.ts +129 -0
- package/dist/render/surfaceModel.js +152 -0
- package/dist/render/surfaceTexture.d.ts +55 -4
- package/dist/render/surfaceTexture.js +60 -46
- package/dist/render/textRenderer.js +2 -1
- package/dist/render/vertexDefaults.js +8 -0
- package/dist/render/waterRenderer.js +2 -1
- package/dist/render/windStreakRenderer.js +2 -1
- package/package.json +6 -6
- package/src/geometry/meshConcat.ts +2 -0
- package/src/index.ts +53 -1
- package/src/math/scalar.ts +1 -1
- package/src/render/anisotropicLobe.ts +41 -0
- package/src/render/backend/api.ts +52 -3
- package/src/render/backend/materialChanges.ts +8 -3
- package/src/render/backend/select.ts +8 -0
- package/src/render/backend/webgl2/clothTextures.ts +120 -0
- package/src/render/backend/webgl2/renderer.ts +750 -80
- package/src/render/backend/webgl2/skinScatter.ts +309 -0
- package/src/render/backend/webgpu/buffers.ts +137 -63
- package/src/render/backend/webgpu/causticsPass.ts +2 -1
- package/src/render/backend/webgpu/clothSolvePack.ts +161 -0
- package/src/render/backend/webgpu/clothTextures.ts +194 -0
- package/src/render/backend/webgpu/compressedUpload.ts +65 -0
- package/src/render/backend/webgpu/computeHost.ts +25 -0
- package/src/render/backend/webgpu/depthPass.ts +43 -10
- package/src/render/backend/webgpu/drawCommand.ts +6 -2
- package/src/render/backend/webgpu/filmPass.ts +2 -1
- package/src/render/backend/webgpu/flatPass.ts +147 -8
- package/src/render/backend/webgpu/gpuSkinnedCloth.ts +502 -0
- package/src/render/backend/webgpu/linePass.ts +2 -1
- package/src/render/backend/webgpu/motionPass.ts +128 -9
- package/src/render/backend/webgpu/panelPass.ts +2 -1
- package/src/render/backend/webgpu/particlePass.ts +2 -1
- package/src/render/backend/webgpu/plumePass.ts +2 -1
- package/src/render/backend/webgpu/postPass.ts +25 -6
- package/src/render/backend/webgpu/renderer.ts +701 -52
- package/src/render/backend/webgpu/sdfTextPass.ts +2 -1
- package/src/render/backend/webgpu/shaders/clothSolve.wgsl.ts +470 -0
- package/src/render/backend/webgpu/skinScatterPass.ts +309 -0
- package/src/render/backend/webgpu/surfaceTexturePass.ts +42 -12
- package/src/render/backend/webgpu/textPass.ts +2 -1
- package/src/render/backend/webgpu/waterPass.ts +2 -1
- package/src/render/backend/webgpu/windStreakPass.ts +2 -1
- package/src/render/boltBatch.ts +2 -1
- package/src/render/causticsRenderer.ts +2 -1
- package/src/render/clothBindingData.ts +89 -0
- package/src/render/clothPlacement.ts +114 -0
- package/src/render/compressedSource.ts +198 -0
- package/src/render/cutoutCaster.ts +20 -2
- package/src/render/cutoutDither.ts +99 -0
- package/src/render/decalPass.ts +2 -1
- package/src/render/eyeRefraction.ts +72 -0
- package/src/render/glCompressed.ts +86 -0
- package/src/render/globalMediumPass.ts +3 -2
- package/src/render/hairLobes.ts +188 -0
- package/src/render/lightBudget.ts +25 -0
- package/src/render/lineBatch.ts +3 -1
- package/src/render/mesh.ts +23 -0
- package/src/render/oitPass.ts +2 -1
- package/src/render/particleBatch.ts +3 -2
- package/src/render/particlePool.ts +6 -2
- package/src/render/plumeRenderer.ts +3 -2
- package/src/render/recon/motionVectors.ts +6 -3
- package/src/render/renderQuality.ts +37 -2
- package/src/render/rendererHarness.ts +4 -0
- package/src/render/sceneCoverage.ts +78 -0
- package/src/render/sceneTarget.ts +21 -0
- package/src/render/sdfTextRenderer.ts +2 -1
- package/src/render/shaders/clothBinding.ts +81 -0
- package/src/render/shaders/depth.ts +45 -8
- package/src/render/shaders/flat/anisotropic.ts +68 -0
- package/src/render/shaders/flat/eye.ts +82 -0
- package/src/render/shaders/flat/hair.ts +102 -0
- package/src/render/shaders/flat/index.ts +42 -3
- package/src/render/shaders/flat/main.ts +113 -17
- package/src/render/shaders/flat/models.ts +286 -0
- package/src/render/shaders/flat/preamble.ts +26 -24
- package/src/render/shaders/flat/skin.ts +116 -0
- package/src/render/shaders/generated/depth.wgsl.ts +66 -24
- package/src/render/shaders/generated/flat.wgsl.ts +1853 -1742
- package/src/render/shaders/generated/line.wgsl.ts +1 -1
- package/src/render/shaders/generated/particle.wgsl.ts +3 -3
- package/src/render/shaders/generated/rush.wgsl.ts +1 -1
- package/src/render/shaders/generated/sdfText.wgsl.ts +1 -1
- package/src/render/shaders/generated/skinBlur.wgsl.ts +56 -0
- package/src/render/shaders/generated/temporalResolve.wgsl.ts +1 -1
- package/src/render/shaders/outputTransform.ts +24 -1
- package/src/render/shaders/recon/motion.wgsl.ts +102 -0
- package/src/render/shaders/recon/resolve.wgsl.ts +15 -1
- package/src/render/shaders/rush.ts +13 -2
- package/src/render/shaders/skinBlur.ts +105 -0
- package/src/render/shaders/skinning.ts +31 -4
- package/src/render/shaders/temporalResolve.ts +12 -5
- package/src/render/shadowCasters.ts +13 -0
- package/src/render/skinBlur.ts +53 -0
- package/src/render/skinScatter.ts +92 -0
- package/src/render/skinnedClothRun.ts +128 -0
- package/src/render/ssrPass.ts +2 -1
- package/src/render/surfaceModel.ts +274 -0
- package/src/render/surfaceTexture.ts +134 -63
- package/src/render/textRenderer.ts +2 -1
- package/src/render/vertexDefaults.ts +8 -0
- package/src/render/waterRenderer.ts +2 -1
- package/src/render/windStreakRenderer.ts +2 -1
- package/dist/math/exact.d.ts +0 -76
- package/dist/math/exact.js +0 -327
- package/src/math/exact.ts +0 -340
|
@@ -3,15 +3,18 @@ import { OCTAHEDRAL_GLSL } from '../octahedral.js';
|
|
|
3
3
|
import { PROBEGRID_GLSL } from './probeGrid.js';
|
|
4
4
|
import { TANGENT_FRAME_GLSL } from '../tangentFrame.js';
|
|
5
5
|
import { CUTOUT_COVERAGE_GLSL } from '../cutoutCoverage.js';
|
|
6
|
+
import { CUTOUT_DITHER_GLSL } from '../../cutoutDither.js';
|
|
6
7
|
import { preambleGlsl } from './preamble.js';
|
|
7
8
|
import { LOBES_GLSL } from './lobes.js';
|
|
8
9
|
import { POINTSHADOW_GLSL } from './pointShadow.js';
|
|
9
10
|
import { DIRECTIONALSHADOW_GLSL } from './directionalShadow.js';
|
|
10
11
|
import { glassTintGlsl, litSwitchesGlsl } from './glassTint.js';
|
|
11
12
|
import { MORPH_GLSL } from '../morph.js';
|
|
13
|
+
import { CLOTH_BINDING_GLSL } from '../clothBinding.js';
|
|
12
14
|
import { SKINNING_GLSL } from '../skinning.js';
|
|
13
15
|
import { SURFACE_GLSL } from './surface.js';
|
|
14
16
|
import { MAIN_GLSL } from './main.js';
|
|
17
|
+
import { MODELS_GLSL } from './models.js';
|
|
15
18
|
import { DRIFT_LIGHT_GLSL } from './driftLight.js';
|
|
16
19
|
import { SURFACE_EFFECTS_GLSL } from './surfaceEffects.js';
|
|
17
20
|
import { CHANNEL_ATTRIBUTE, CHANNEL_BEND } from '../vertexChannel.js';
|
|
@@ -61,6 +64,11 @@ uniform mat4 uLightViewProj;
|
|
|
61
64
|
* when no texture is bound.
|
|
62
65
|
*/
|
|
63
66
|
uniform vec2 uUvScale;
|
|
67
|
+
/**
|
|
68
|
+
* Where the texture starts, per axis, added after the scale: \`uv * uUvScale + uUvOffset\`. What
|
|
69
|
+
* picks a cell of a flipbook or an atlas through the material. See \`SurfaceMaterial.uOffset\`.
|
|
70
|
+
*/
|
|
71
|
+
uniform vec2 uUvOffset;
|
|
64
72
|
|
|
65
73
|
/*
|
|
66
74
|
* **Placement and tint are declared last of the shared uniforms, and the position is the
|
|
@@ -139,6 +147,10 @@ ${CHANNEL_BEND}
|
|
|
139
147
|
#if MORPHED
|
|
140
148
|
${MORPH_GLSL}
|
|
141
149
|
#endif
|
|
150
|
+
#if SKINNED
|
|
151
|
+
/* Samplers and a constant alone, so no field of the vertex block moves. See clothBinding.ts. */
|
|
152
|
+
${CLOTH_BINDING_GLSL}
|
|
153
|
+
#endif
|
|
142
154
|
|
|
143
155
|
out vec3 vNormal;
|
|
144
156
|
out vec3 vColor;
|
|
@@ -212,9 +224,11 @@ void main() {
|
|
|
212
224
|
mat4 skin = skinMatrix();
|
|
213
225
|
vec4 local = skin * vec4(basePosition, 1.0);
|
|
214
226
|
vec3 localNormal = mat3(skin) * aNormal;
|
|
227
|
+
vec3 localTangent = mat3(skin) * aTangent.xyz;
|
|
215
228
|
#else
|
|
216
229
|
vec4 local = vec4(basePosition, 1.0);
|
|
217
230
|
vec3 localNormal = aNormal;
|
|
231
|
+
vec3 localTangent = aTangent.xyz;
|
|
218
232
|
#endif
|
|
219
233
|
#if INSTANCED
|
|
220
234
|
mat4 model = mat4(aInstanceModel0, aInstanceModel1, aInstanceModel2, aInstanceModel3);
|
|
@@ -235,20 +249,42 @@ void main() {
|
|
|
235
249
|
vec3 bent = channelBend(world.xyz, aChannel.x);
|
|
236
250
|
#endif
|
|
237
251
|
world = vec4(bent, world.w);
|
|
238
|
-
vWorldPos = world.xyz;
|
|
239
252
|
// Rotation/translation-only models (our case): mat3 is a valid normal matrix.
|
|
240
253
|
vec3 worldNormal = mat3(model) * localNormal;
|
|
254
|
+
/*
|
|
255
|
+
* **The tangent turns as the normal does**, because the fragment stage crosses it with the
|
|
256
|
+
* world-space normal to build its frame. It went out in the mesh's own space until 4.8.4, which
|
|
257
|
+
* is world space only for a mesh that is moved and never turned: a turned or skinned mesh lit its
|
|
258
|
+
* normal map, and anything reading a direction along its surface, from the wrong side.
|
|
259
|
+
*/
|
|
260
|
+
vec3 worldTangent = mat3(model) * localTangent;
|
|
261
|
+
#if SKINNED
|
|
262
|
+
/*
|
|
263
|
+
* **Toward the cloth, after the skeleton and the bend.** The simulation already swings with the
|
|
264
|
+
* wind it was given, so the bend moves only the skinned part; the weight painted per vertex says
|
|
265
|
+
* how much of the cloth's place and turn the vertex takes. See clothBinding.ts.
|
|
266
|
+
*/
|
|
267
|
+
if (CLOTH_BOUND) {
|
|
268
|
+
vec3 clothPosition;
|
|
269
|
+
mat3 turn;
|
|
270
|
+
float follow = clothPlace(clothPosition, turn);
|
|
271
|
+
world = vec4(mix(world.xyz, clothPosition, follow), world.w);
|
|
272
|
+
worldNormal = normalize(mix(worldNormal, turn * aNormal, follow));
|
|
273
|
+
worldTangent = mix(worldTangent, turn * aTangent.xyz, follow);
|
|
274
|
+
}
|
|
275
|
+
#endif
|
|
276
|
+
vWorldPos = world.xyz;
|
|
241
277
|
vNormal = worldNormal;
|
|
242
278
|
vLightPos = uLightViewProj * world;
|
|
243
279
|
vColor = aColor * tint;
|
|
244
280
|
vEmissive = aEmissive;
|
|
245
281
|
vSpecular = aSpecular;
|
|
246
|
-
vUv = vec3(aUv.xy * uUvScale, aUv.z);
|
|
282
|
+
vUv = vec3(aUv.xy * uUvScale + uUvOffset, aUv.z);
|
|
247
283
|
vEmissiveColor = aEmissiveColor;
|
|
248
284
|
vRoughness = aRoughness;
|
|
249
285
|
vGrain = aGrain;
|
|
250
286
|
vRelief = aRelief;
|
|
251
|
-
vTangent = aTangent;
|
|
287
|
+
vTangent = vec4(worldTangent, aTangent.w);
|
|
252
288
|
#if INSTANCED
|
|
253
289
|
/* No channel on this path; the neutral values are what every mesh read before it existed. */
|
|
254
290
|
vSkyDirect = 1.0;
|
|
@@ -392,8 +428,11 @@ export function flatFrag(options) {
|
|
|
392
428
|
TANGENT_FRAME_GLSL,
|
|
393
429
|
/* Unconditional for the same reason, and called only where a cutoff was asked for. */
|
|
394
430
|
CUTOUT_COVERAGE_GLSL,
|
|
431
|
+
CUTOUT_DITHER_GLSL,
|
|
395
432
|
DRIFT_LIGHT_GLSL,
|
|
396
433
|
SURFACE_EFFECTS_GLSL,
|
|
434
|
+
/* Depth zero and after the tangent frame and the lobes it calls; see models.ts. */
|
|
435
|
+
MODELS_GLSL,
|
|
397
436
|
MAIN_GLSL,
|
|
398
437
|
].join('\n'), {
|
|
399
438
|
POINT_SHADOWS: options.pointShadows,
|