@multiplekex/shallot 0.1.0 → 0.1.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/package.json +8 -23
- package/src/standard/compute/index.ts +36 -0
- package/src/standard/render/camera.ts +1 -1
- package/dist/core/builder.d.ts +0 -25
- package/dist/core/builder.d.ts.map +0 -1
- package/dist/core/builder.js +0 -88
- package/dist/core/builder.js.map +0 -1
- package/dist/core/component.d.ts +0 -29
- package/dist/core/component.d.ts.map +0 -1
- package/dist/core/component.js +0 -36
- package/dist/core/component.js.map +0 -1
- package/dist/core/index.d.ts +0 -13
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/math.d.ts +0 -32
- package/dist/core/math.d.ts.map +0 -1
- package/dist/core/math.js +0 -39
- package/dist/core/math.js.map +0 -1
- package/dist/core/relation.d.ts +0 -16
- package/dist/core/relation.d.ts.map +0 -1
- package/dist/core/relation.js +0 -32
- package/dist/core/relation.js.map +0 -1
- package/dist/core/resource.d.ts +0 -9
- package/dist/core/resource.d.ts.map +0 -1
- package/dist/core/resource.js +0 -12
- package/dist/core/resource.js.map +0 -1
- package/dist/core/runtime.d.ts +0 -13
- package/dist/core/runtime.d.ts.map +0 -1
- package/dist/core/runtime.js +0 -118
- package/dist/core/runtime.js.map +0 -1
- package/dist/core/scheduler.d.ts +0 -47
- package/dist/core/scheduler.d.ts.map +0 -1
- package/dist/core/scheduler.js +0 -138
- package/dist/core/scheduler.js.map +0 -1
- package/dist/core/state.d.ts +0 -62
- package/dist/core/state.d.ts.map +0 -1
- package/dist/core/state.js +0 -185
- package/dist/core/state.js.map +0 -1
- package/dist/core/strings.d.ts +0 -3
- package/dist/core/strings.d.ts.map +0 -1
- package/dist/core/strings.js +0 -11
- package/dist/core/strings.js.map +0 -1
- package/dist/core/types.d.ts +0 -33
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/xml.d.ts +0 -42
- package/dist/core/xml.d.ts.map +0 -1
- package/dist/core/xml.js +0 -349
- package/dist/core/xml.js.map +0 -1
- package/dist/extras/arrows/index.d.ts +0 -33
- package/dist/extras/arrows/index.d.ts.map +0 -1
- package/dist/extras/arrows/index.js +0 -288
- package/dist/extras/arrows/index.js.map +0 -1
- package/dist/extras/index.d.ts +0 -5
- package/dist/extras/index.d.ts.map +0 -1
- package/dist/extras/index.js +0 -31
- package/dist/extras/index.js.map +0 -1
- package/dist/extras/lines/index.d.ts +0 -36
- package/dist/extras/lines/index.d.ts.map +0 -1
- package/dist/extras/lines/index.js +0 -288
- package/dist/extras/lines/index.js.map +0 -1
- package/dist/extras/orbit/index.d.ts +0 -20
- package/dist/extras/orbit/index.d.ts.map +0 -1
- package/dist/extras/orbit/index.js +0 -93
- package/dist/extras/orbit/index.js.map +0 -1
- package/dist/extras/text/index.d.ts +0 -64
- package/dist/extras/text/index.d.ts.map +0 -1
- package/dist/extras/text/index.js +0 -423
- package/dist/extras/text/index.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -187
- package/dist/index.js.map +0 -1
- package/dist/rust/transforms/pkg/shallot_transforms.js +0 -107
- package/dist/rust/transforms/pkg/shallot_transforms.js.map +0 -1
- package/dist/standard/compute/graph.d.ts +0 -37
- package/dist/standard/compute/graph.d.ts.map +0 -1
- package/dist/standard/compute/graph.js +0 -85
- package/dist/standard/compute/graph.js.map +0 -1
- package/dist/standard/compute/index.d.ts +0 -21
- package/dist/standard/compute/index.d.ts.map +0 -1
- package/dist/standard/compute/index.js +0 -81
- package/dist/standard/compute/index.js.map +0 -1
- package/dist/standard/defaults.d.ts +0 -3
- package/dist/standard/defaults.d.ts.map +0 -1
- package/dist/standard/defaults.js +0 -18
- package/dist/standard/defaults.js.map +0 -1
- package/dist/standard/index.d.ts +0 -8
- package/dist/standard/index.d.ts.map +0 -1
- package/dist/standard/input/index.d.ts +0 -5
- package/dist/standard/input/index.d.ts.map +0 -1
- package/dist/standard/input/index.js +0 -70
- package/dist/standard/input/index.js.map +0 -1
- package/dist/standard/loading/index.d.ts +0 -7
- package/dist/standard/loading/index.d.ts.map +0 -1
- package/dist/standard/loading/index.js +0 -91
- package/dist/standard/loading/index.js.map +0 -1
- package/dist/standard/render/camera.d.ts +0 -36
- package/dist/standard/render/camera.d.ts.map +0 -1
- package/dist/standard/render/camera.js +0 -71
- package/dist/standard/render/camera.js.map +0 -1
- package/dist/standard/render/forward.d.ts +0 -30
- package/dist/standard/render/forward.d.ts.map +0 -1
- package/dist/standard/render/forward.js +0 -158
- package/dist/standard/render/forward.js.map +0 -1
- package/dist/standard/render/index.d.ts +0 -22
- package/dist/standard/render/index.d.ts.map +0 -1
- package/dist/standard/render/index.js +0 -153
- package/dist/standard/render/index.js.map +0 -1
- package/dist/standard/render/light.d.ts +0 -25
- package/dist/standard/render/light.d.ts.map +0 -1
- package/dist/standard/render/light.js +0 -48
- package/dist/standard/render/light.js.map +0 -1
- package/dist/standard/render/mesh/box.d.ts +0 -3
- package/dist/standard/render/mesh/box.d.ts.map +0 -1
- package/dist/standard/render/mesh/box.js +0 -190
- package/dist/standard/render/mesh/box.js.map +0 -1
- package/dist/standard/render/mesh/index.d.ts +0 -52
- package/dist/standard/render/mesh/index.d.ts.map +0 -1
- package/dist/standard/render/mesh/index.js +0 -158
- package/dist/standard/render/mesh/index.js.map +0 -1
- package/dist/standard/render/mesh/plane.d.ts +0 -3
- package/dist/standard/render/mesh/plane.d.ts.map +0 -1
- package/dist/standard/render/mesh/plane.js +0 -33
- package/dist/standard/render/mesh/plane.js.map +0 -1
- package/dist/standard/render/mesh/sphere.d.ts +0 -3
- package/dist/standard/render/mesh/sphere.d.ts.map +0 -1
- package/dist/standard/render/mesh/sphere.js +0 -25
- package/dist/standard/render/mesh/sphere.js.map +0 -1
- package/dist/standard/render/postprocess.d.ts +0 -11
- package/dist/standard/render/postprocess.d.ts.map +0 -1
- package/dist/standard/render/postprocess.js +0 -190
- package/dist/standard/render/postprocess.js.map +0 -1
- package/dist/standard/render/scene.d.ts +0 -8
- package/dist/standard/render/scene.d.ts.map +0 -1
- package/dist/standard/render/scene.js +0 -67
- package/dist/standard/render/scene.js.map +0 -1
- package/dist/standard/transforms/index.d.ts +0 -27
- package/dist/standard/transforms/index.d.ts.map +0 -1
- package/dist/standard/transforms/index.js +0 -122
- package/dist/standard/transforms/index.js.map +0 -1
- package/dist/standard/transforms/wasm.d.ts +0 -17
- package/dist/standard/transforms/wasm.d.ts.map +0 -1
- package/dist/standard/transforms/wasm.js +0 -31
- package/dist/standard/transforms/wasm.js.map +0 -1
- package/dist/standard/tween/easing.d.ts +0 -5
- package/dist/standard/tween/easing.d.ts.map +0 -1
- package/dist/standard/tween/easing.js +0 -80
- package/dist/standard/tween/easing.js.map +0 -1
- package/dist/standard/tween/index.d.ts +0 -4
- package/dist/standard/tween/index.d.ts.map +0 -1
- package/dist/standard/tween/sequence.d.ts +0 -20
- package/dist/standard/tween/sequence.d.ts.map +0 -1
- package/dist/standard/tween/sequence.js +0 -95
- package/dist/standard/tween/sequence.js.map +0 -1
- package/dist/standard/tween/tween.d.ts +0 -28
- package/dist/standard/tween/tween.d.ts.map +0 -1
- package/dist/standard/tween/tween.js +0 -136
- package/dist/standard/tween/tween.js.map +0 -1
- package/src/vite-env.d.ts +0 -6
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
const E = (
|
|
2
|
-
/* wgsl */
|
|
3
|
-
`
|
|
4
|
-
struct VertexOutput {
|
|
5
|
-
@builtin(position) position: vec4f,
|
|
6
|
-
@location(0) uv: vec2f,
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
@vertex
|
|
10
|
-
fn vertexMain(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
11
|
-
var positions = array<vec2f, 3>(
|
|
12
|
-
vec2f(-1.0, -1.0),
|
|
13
|
-
vec2f(3.0, -1.0),
|
|
14
|
-
vec2f(-1.0, 3.0)
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
let pos = positions[vertexIndex];
|
|
18
|
-
|
|
19
|
-
var output: VertexOutput;
|
|
20
|
-
output.position = vec4f(pos, 0.0, 1.0);
|
|
21
|
-
output.uv = (pos + 1.0) * 0.5;
|
|
22
|
-
output.uv.y = 1.0 - output.uv.y;
|
|
23
|
-
return output;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
@group(0) @binding(0) var inputTexture: texture_2d<f32>;
|
|
27
|
-
@group(0) @binding(1) var inputSampler: sampler;
|
|
28
|
-
|
|
29
|
-
struct Uniforms {
|
|
30
|
-
exposure: f32,
|
|
31
|
-
vignetteStrength: f32,
|
|
32
|
-
vignetteInner: f32,
|
|
33
|
-
vignetteOuter: f32,
|
|
34
|
-
texelSizeX: f32,
|
|
35
|
-
texelSizeY: f32,
|
|
36
|
-
flags: u32,
|
|
37
|
-
_pad: u32,
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@group(0) @binding(2) var<uniform> uniforms: Uniforms;
|
|
41
|
-
|
|
42
|
-
const FLAG_TONEMAP: u32 = 1u;
|
|
43
|
-
const FLAG_FXAA: u32 = 2u;
|
|
44
|
-
const FLAG_VIGNETTE: u32 = 4u;
|
|
45
|
-
|
|
46
|
-
fn aces(x: vec3f) -> vec3f {
|
|
47
|
-
let a = 2.51;
|
|
48
|
-
let b = 0.03;
|
|
49
|
-
let c = 2.43;
|
|
50
|
-
let d = 0.59;
|
|
51
|
-
let e = 0.14;
|
|
52
|
-
return saturate((x * (a * x + b)) / (x * (c * x + d) + e));
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
fn luma(color: vec3f) -> f32 {
|
|
56
|
-
return dot(color, vec3f(0.299, 0.587, 0.114));
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const FXAA_REDUCE_MIN: f32 = 1.0 / 128.0;
|
|
60
|
-
const FXAA_REDUCE_MUL: f32 = 1.0 / 8.0;
|
|
61
|
-
const FXAA_SPAN_MAX: f32 = 8.0;
|
|
62
|
-
|
|
63
|
-
fn applyFXAA(uv: vec2f, colorM: vec3f) -> vec3f {
|
|
64
|
-
let texelSize = vec2f(uniforms.texelSizeX, uniforms.texelSizeY);
|
|
65
|
-
|
|
66
|
-
let colorNW = textureSample(inputTexture, inputSampler, uv + vec2f(-1.0, -1.0) * texelSize).rgb;
|
|
67
|
-
let colorNE = textureSample(inputTexture, inputSampler, uv + vec2f(1.0, -1.0) * texelSize).rgb;
|
|
68
|
-
let colorSW = textureSample(inputTexture, inputSampler, uv + vec2f(-1.0, 1.0) * texelSize).rgb;
|
|
69
|
-
let colorSE = textureSample(inputTexture, inputSampler, uv + vec2f(1.0, 1.0) * texelSize).rgb;
|
|
70
|
-
|
|
71
|
-
let lumaM = luma(colorM);
|
|
72
|
-
let lumaNW = luma(colorNW);
|
|
73
|
-
let lumaNE = luma(colorNE);
|
|
74
|
-
let lumaSW = luma(colorSW);
|
|
75
|
-
let lumaSE = luma(colorSE);
|
|
76
|
-
|
|
77
|
-
let lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));
|
|
78
|
-
let lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));
|
|
79
|
-
|
|
80
|
-
var dir: vec2f;
|
|
81
|
-
dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));
|
|
82
|
-
dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));
|
|
83
|
-
|
|
84
|
-
let dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * 0.25 * FXAA_REDUCE_MUL, FXAA_REDUCE_MIN);
|
|
85
|
-
let rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);
|
|
86
|
-
dir = clamp(dir * rcpDirMin, vec2f(-FXAA_SPAN_MAX), vec2f(FXAA_SPAN_MAX)) * texelSize;
|
|
87
|
-
|
|
88
|
-
let colorA = 0.5 * (
|
|
89
|
-
textureSample(inputTexture, inputSampler, uv + dir * (1.0 / 3.0 - 0.5)).rgb +
|
|
90
|
-
textureSample(inputTexture, inputSampler, uv + dir * (2.0 / 3.0 - 0.5)).rgb
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
let colorB = colorA * 0.5 + 0.25 * (
|
|
94
|
-
textureSample(inputTexture, inputSampler, uv + dir * -0.5).rgb +
|
|
95
|
-
textureSample(inputTexture, inputSampler, uv + dir * 0.5).rgb
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
let lumaB = luma(colorB);
|
|
99
|
-
|
|
100
|
-
if lumaB < lumaMin || lumaB > lumaMax {
|
|
101
|
-
return colorA;
|
|
102
|
-
}
|
|
103
|
-
return colorB;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
fn applyVignette(color: vec3f, uv: vec2f) -> vec3f {
|
|
107
|
-
let center = vec2f(0.5, 0.5);
|
|
108
|
-
let dist = distance(uv, center);
|
|
109
|
-
let vignette = 1.0 - smoothstep(uniforms.vignetteInner, uniforms.vignetteOuter, dist) * uniforms.vignetteStrength;
|
|
110
|
-
return color * vignette;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
@fragment
|
|
114
|
-
fn fragmentMain(@location(0) uv: vec2f) -> @location(0) vec4f {
|
|
115
|
-
var color = textureSample(inputTexture, inputSampler, uv).rgb;
|
|
116
|
-
|
|
117
|
-
if (uniforms.flags & FLAG_FXAA) != 0u {
|
|
118
|
-
color = applyFXAA(uv, color);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
if (uniforms.flags & FLAG_TONEMAP) != 0u {
|
|
122
|
-
color = aces(color * uniforms.exposure);
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
if (uniforms.flags & FLAG_VIGNETTE) != 0u {
|
|
126
|
-
color = applyVignette(color, uv);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return vec4f(color, 1.0);
|
|
130
|
-
}
|
|
131
|
-
`
|
|
132
|
-
);
|
|
133
|
-
function N(e) {
|
|
134
|
-
let u = null, l = null, a = null;
|
|
135
|
-
return {
|
|
136
|
-
id: "postprocess",
|
|
137
|
-
phase: "postprocess",
|
|
138
|
-
inputs: [{ id: "scene", access: "read" }],
|
|
139
|
-
outputs: [{ id: "framebuffer", access: "write" }],
|
|
140
|
-
execute(c) {
|
|
141
|
-
const { device: t, encoder: m, canvasView: f, format: v, context: s } = c, x = s.canvas.width, g = s.canvas.height, d = c.getTextureView("scene");
|
|
142
|
-
if (!u) {
|
|
143
|
-
const p = t.createShaderModule({ code: E });
|
|
144
|
-
u = t.createRenderPipeline({
|
|
145
|
-
layout: "auto",
|
|
146
|
-
vertex: { module: p, entryPoint: "vertexMain" },
|
|
147
|
-
fragment: {
|
|
148
|
-
module: p,
|
|
149
|
-
entryPoint: "fragmentMain",
|
|
150
|
-
targets: [{ format: v }]
|
|
151
|
-
},
|
|
152
|
-
primitive: { topology: "triangle-list" }
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
l || (l = t.createBuffer({
|
|
156
|
-
size: 32,
|
|
157
|
-
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
|
|
158
|
-
})), a || (a = t.createSampler({
|
|
159
|
-
magFilter: "linear",
|
|
160
|
-
minFilter: "linear"
|
|
161
|
-
}));
|
|
162
|
-
let n = 0;
|
|
163
|
-
e.tonemap && (n |= 1), e.fxaa && (n |= 2), e.vignetteStrength > 0 && (n |= 4);
|
|
164
|
-
const o = new ArrayBuffer(32), r = new Float32Array(o), A = new Uint32Array(o);
|
|
165
|
-
r[0] = e.exposure, r[1] = e.vignetteStrength, r[2] = e.vignetteInner, r[3] = e.vignetteOuter, r[4] = 1 / x, r[5] = 1 / g, A[6] = n, t.queue.writeBuffer(l, 0, o);
|
|
166
|
-
const S = t.createBindGroup({
|
|
167
|
-
layout: u.getBindGroupLayout(0),
|
|
168
|
-
entries: [
|
|
169
|
-
{ binding: 0, resource: d },
|
|
170
|
-
{ binding: 1, resource: a },
|
|
171
|
-
{ binding: 2, resource: { buffer: l } }
|
|
172
|
-
]
|
|
173
|
-
}), i = m.beginRenderPass({
|
|
174
|
-
colorAttachments: [
|
|
175
|
-
{
|
|
176
|
-
view: f,
|
|
177
|
-
loadOp: "clear",
|
|
178
|
-
storeOp: "store",
|
|
179
|
-
clearValue: { r: 0, g: 0, b: 0, a: 1 }
|
|
180
|
-
}
|
|
181
|
-
]
|
|
182
|
-
});
|
|
183
|
-
i.setPipeline(u), i.setBindGroup(0, S), i.draw(3), i.end();
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
export {
|
|
188
|
-
N as createPostProcessNode
|
|
189
|
-
};
|
|
190
|
-
//# sourceMappingURL=postprocess.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postprocess.js","sources":["../../../src/standard/render/postprocess.ts"],"sourcesContent":["import type { ComputeNode, ExecutionContext } from \"../compute\";\n\nconst shader = /* wgsl */ `\nstruct VertexOutput {\n @builtin(position) position: vec4f,\n @location(0) uv: vec2f,\n}\n\n@vertex\nfn vertexMain(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {\n var positions = array<vec2f, 3>(\n vec2f(-1.0, -1.0),\n vec2f(3.0, -1.0),\n vec2f(-1.0, 3.0)\n );\n\n let pos = positions[vertexIndex];\n\n var output: VertexOutput;\n output.position = vec4f(pos, 0.0, 1.0);\n output.uv = (pos + 1.0) * 0.5;\n output.uv.y = 1.0 - output.uv.y;\n return output;\n}\n\n@group(0) @binding(0) var inputTexture: texture_2d<f32>;\n@group(0) @binding(1) var inputSampler: sampler;\n\nstruct Uniforms {\n exposure: f32,\n vignetteStrength: f32,\n vignetteInner: f32,\n vignetteOuter: f32,\n texelSizeX: f32,\n texelSizeY: f32,\n flags: u32,\n _pad: u32,\n}\n\n@group(0) @binding(2) var<uniform> uniforms: Uniforms;\n\nconst FLAG_TONEMAP: u32 = 1u;\nconst FLAG_FXAA: u32 = 2u;\nconst FLAG_VIGNETTE: u32 = 4u;\n\nfn aces(x: vec3f) -> vec3f {\n let a = 2.51;\n let b = 0.03;\n let c = 2.43;\n let d = 0.59;\n let e = 0.14;\n return saturate((x * (a * x + b)) / (x * (c * x + d) + e));\n}\n\nfn luma(color: vec3f) -> f32 {\n return dot(color, vec3f(0.299, 0.587, 0.114));\n}\n\nconst FXAA_REDUCE_MIN: f32 = 1.0 / 128.0;\nconst FXAA_REDUCE_MUL: f32 = 1.0 / 8.0;\nconst FXAA_SPAN_MAX: f32 = 8.0;\n\nfn applyFXAA(uv: vec2f, colorM: vec3f) -> vec3f {\n let texelSize = vec2f(uniforms.texelSizeX, uniforms.texelSizeY);\n\n let colorNW = textureSample(inputTexture, inputSampler, uv + vec2f(-1.0, -1.0) * texelSize).rgb;\n let colorNE = textureSample(inputTexture, inputSampler, uv + vec2f(1.0, -1.0) * texelSize).rgb;\n let colorSW = textureSample(inputTexture, inputSampler, uv + vec2f(-1.0, 1.0) * texelSize).rgb;\n let colorSE = textureSample(inputTexture, inputSampler, uv + vec2f(1.0, 1.0) * texelSize).rgb;\n\n let lumaM = luma(colorM);\n let lumaNW = luma(colorNW);\n let lumaNE = luma(colorNE);\n let lumaSW = luma(colorSW);\n let lumaSE = luma(colorSE);\n\n let lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n let lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n var dir: vec2f;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n let dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * 0.25 * FXAA_REDUCE_MUL, FXAA_REDUCE_MIN);\n let rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = clamp(dir * rcpDirMin, vec2f(-FXAA_SPAN_MAX), vec2f(FXAA_SPAN_MAX)) * texelSize;\n\n let colorA = 0.5 * (\n textureSample(inputTexture, inputSampler, uv + dir * (1.0 / 3.0 - 0.5)).rgb +\n textureSample(inputTexture, inputSampler, uv + dir * (2.0 / 3.0 - 0.5)).rgb\n );\n\n let colorB = colorA * 0.5 + 0.25 * (\n textureSample(inputTexture, inputSampler, uv + dir * -0.5).rgb +\n textureSample(inputTexture, inputSampler, uv + dir * 0.5).rgb\n );\n\n let lumaB = luma(colorB);\n\n if lumaB < lumaMin || lumaB > lumaMax {\n return colorA;\n }\n return colorB;\n}\n\nfn applyVignette(color: vec3f, uv: vec2f) -> vec3f {\n let center = vec2f(0.5, 0.5);\n let dist = distance(uv, center);\n let vignette = 1.0 - smoothstep(uniforms.vignetteInner, uniforms.vignetteOuter, dist) * uniforms.vignetteStrength;\n return color * vignette;\n}\n\n@fragment\nfn fragmentMain(@location(0) uv: vec2f) -> @location(0) vec4f {\n var color = textureSample(inputTexture, inputSampler, uv).rgb;\n\n if (uniforms.flags & FLAG_FXAA) != 0u {\n color = applyFXAA(uv, color);\n }\n\n if (uniforms.flags & FLAG_TONEMAP) != 0u {\n color = aces(color * uniforms.exposure);\n }\n\n if (uniforms.flags & FLAG_VIGNETTE) != 0u {\n color = applyVignette(color, uv);\n }\n\n return vec4f(color, 1.0);\n}\n`;\n\nconst FLAG_TONEMAP = 1;\nconst FLAG_FXAA = 2;\nconst FLAG_VIGNETTE = 4;\n\nexport interface PostProcessUniforms {\n tonemap: boolean;\n exposure: number;\n fxaa: boolean;\n vignetteStrength: number;\n vignetteInner: number;\n vignetteOuter: number;\n}\n\nexport function createPostProcessNode(uniforms: PostProcessUniforms): ComputeNode {\n let pipeline: GPURenderPipeline | null = null;\n let uniformBuffer: GPUBuffer | null = null;\n let sampler: GPUSampler | null = null;\n\n return {\n id: \"postprocess\",\n phase: \"postprocess\",\n inputs: [{ id: \"scene\", access: \"read\" }],\n outputs: [{ id: \"framebuffer\", access: \"write\" }],\n\n execute(ctx: ExecutionContext) {\n const { device, encoder, canvasView, format, context } = ctx;\n const width = context.canvas.width;\n const height = context.canvas.height;\n const sceneView = ctx.getTextureView(\"scene\")!;\n\n if (!pipeline) {\n const module = device.createShaderModule({ code: shader });\n pipeline = device.createRenderPipeline({\n layout: \"auto\",\n vertex: { module, entryPoint: \"vertexMain\" },\n fragment: {\n module,\n entryPoint: \"fragmentMain\",\n targets: [{ format }],\n },\n primitive: { topology: \"triangle-list\" },\n });\n }\n\n if (!uniformBuffer) {\n uniformBuffer = device.createBuffer({\n size: 32,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n });\n }\n\n if (!sampler) {\n sampler = device.createSampler({\n magFilter: \"linear\",\n minFilter: \"linear\",\n });\n }\n\n let flags = 0;\n if (uniforms.tonemap) flags |= FLAG_TONEMAP;\n if (uniforms.fxaa) flags |= FLAG_FXAA;\n if (uniforms.vignetteStrength > 0) flags |= FLAG_VIGNETTE;\n\n const data = new ArrayBuffer(32);\n const floats = new Float32Array(data);\n const uints = new Uint32Array(data);\n floats[0] = uniforms.exposure;\n floats[1] = uniforms.vignetteStrength;\n floats[2] = uniforms.vignetteInner;\n floats[3] = uniforms.vignetteOuter;\n floats[4] = 1.0 / width;\n floats[5] = 1.0 / height;\n uints[6] = flags;\n\n device.queue.writeBuffer(uniformBuffer, 0, data);\n\n const bindGroup = device.createBindGroup({\n layout: pipeline.getBindGroupLayout(0),\n entries: [\n { binding: 0, resource: sceneView },\n { binding: 1, resource: sampler },\n { binding: 2, resource: { buffer: uniformBuffer } },\n ],\n });\n\n const pass = encoder.beginRenderPass({\n colorAttachments: [\n {\n view: canvasView,\n loadOp: \"clear\" as const,\n storeOp: \"store\" as const,\n clearValue: { r: 0, g: 0, b: 0, a: 1 },\n },\n ],\n });\n\n pass.setPipeline(pipeline);\n pass.setBindGroup(0, bindGroup);\n pass.draw(3);\n pass.end();\n },\n };\n}\n"],"names":["shader","createPostProcessNode","uniforms","pipeline","uniformBuffer","sampler","ctx","device","encoder","canvasView","format","context","width","height","sceneView","module","flags","data","floats","uints","bindGroup","pass"],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export declare const SCENE_UNIFORM_SIZE = 176;
|
|
2
|
-
export declare const DEPTH_FORMAT: GPUTextureFormat;
|
|
3
|
-
export declare function createSceneBuffer(device: GPUDevice): GPUBuffer;
|
|
4
|
-
export declare function ensureRenderTextures(device: GPUDevice, format: GPUTextureFormat, width: number, height: number, textures: Map<string, GPUTexture>, textureViews: Map<string, GPUTextureView>): void;
|
|
5
|
-
export declare function perspective(fov: number, aspect: number, near: number, far: number): Float32Array;
|
|
6
|
-
export declare function multiply(a: Float32Array, b: Float32Array): Float32Array;
|
|
7
|
-
export declare function invert(m: Float32Array): Float32Array;
|
|
8
|
-
//# sourceMappingURL=scene.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/standard/render/scene.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,YAAY,EAAE,gBAAgC,CAAC;AAE5D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAM9D;AAED,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACjC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAC1C,IAAI,CAyBN;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAqBhG;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,YAAY,CAYvE;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAiCpD"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
const g = 176, i = "depth24plus";
|
|
2
|
-
function p(t) {
|
|
3
|
-
return t.createBuffer({
|
|
4
|
-
label: "scene",
|
|
5
|
-
size: 176,
|
|
6
|
-
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC
|
|
7
|
-
});
|
|
8
|
-
}
|
|
9
|
-
function N(t, e, s, r, n, c) {
|
|
10
|
-
const o = n.get("scene");
|
|
11
|
-
if (o && o.width === s && o.height === r) return;
|
|
12
|
-
o?.destroy(), n.get("depth")?.destroy();
|
|
13
|
-
const u = t.createTexture({
|
|
14
|
-
label: "scene",
|
|
15
|
-
size: { width: s, height: r },
|
|
16
|
-
format: e,
|
|
17
|
-
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING
|
|
18
|
-
}), a = t.createTexture({
|
|
19
|
-
label: "depth",
|
|
20
|
-
size: { width: s, height: r },
|
|
21
|
-
format: i,
|
|
22
|
-
usage: GPUTextureUsage.RENDER_ATTACHMENT
|
|
23
|
-
});
|
|
24
|
-
n.set("scene", u), c.set("scene", u.createView()), n.set("depth", a), c.set("depth", a.createView());
|
|
25
|
-
}
|
|
26
|
-
function R(t, e, s, r) {
|
|
27
|
-
const n = 1 / Math.tan(t * Math.PI / 360), c = 1 / (s - r);
|
|
28
|
-
return new Float32Array([
|
|
29
|
-
n / e,
|
|
30
|
-
0,
|
|
31
|
-
0,
|
|
32
|
-
0,
|
|
33
|
-
0,
|
|
34
|
-
n,
|
|
35
|
-
0,
|
|
36
|
-
0,
|
|
37
|
-
0,
|
|
38
|
-
0,
|
|
39
|
-
(r + s) * c,
|
|
40
|
-
-1,
|
|
41
|
-
0,
|
|
42
|
-
0,
|
|
43
|
-
2 * r * s * c,
|
|
44
|
-
0
|
|
45
|
-
]);
|
|
46
|
-
}
|
|
47
|
-
function P(t, e) {
|
|
48
|
-
const s = new Float32Array(16);
|
|
49
|
-
for (let r = 0; r < 4; r++)
|
|
50
|
-
for (let n = 0; n < 4; n++)
|
|
51
|
-
s[n * 4 + r] = t[r] * e[n * 4] + t[r + 4] * e[n * 4 + 1] + t[r + 8] * e[n * 4 + 2] + t[r + 12] * e[n * 4 + 3];
|
|
52
|
-
return s;
|
|
53
|
-
}
|
|
54
|
-
function _(t) {
|
|
55
|
-
const e = new Float32Array(16), s = t[0], r = t[1], n = t[2], c = t[4], o = t[5], u = t[6], a = t[8], E = t[9], l = t[10], f = t[12], T = t[13], U = t[14];
|
|
56
|
-
return e[0] = s, e[1] = c, e[2] = a, e[3] = 0, e[4] = r, e[5] = o, e[6] = E, e[7] = 0, e[8] = n, e[9] = u, e[10] = l, e[11] = 0, e[12] = -(s * f + r * T + n * U), e[13] = -(c * f + o * T + u * U), e[14] = -(a * f + E * T + l * U), e[15] = 1, e;
|
|
57
|
-
}
|
|
58
|
-
export {
|
|
59
|
-
i as DEPTH_FORMAT,
|
|
60
|
-
g as SCENE_UNIFORM_SIZE,
|
|
61
|
-
p as createSceneBuffer,
|
|
62
|
-
N as ensureRenderTextures,
|
|
63
|
-
_ as invert,
|
|
64
|
-
P as multiply,
|
|
65
|
-
R as perspective
|
|
66
|
-
};
|
|
67
|
-
//# sourceMappingURL=scene.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scene.js","sources":["../../../src/standard/render/scene.ts"],"sourcesContent":["export const SCENE_UNIFORM_SIZE = 176; // viewProj (64) + cameraWorld (64) + ambient (16) + sunDir (16) + sunColor (16)\nexport const DEPTH_FORMAT: GPUTextureFormat = \"depth24plus\";\n\nexport function createSceneBuffer(device: GPUDevice): GPUBuffer {\n return device.createBuffer({\n label: \"scene\",\n size: SCENE_UNIFORM_SIZE,\n usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC,\n });\n}\n\nexport function ensureRenderTextures(\n device: GPUDevice,\n format: GPUTextureFormat,\n width: number,\n height: number,\n textures: Map<string, GPUTexture>,\n textureViews: Map<string, GPUTextureView>\n): void {\n const existing = textures.get(\"scene\");\n if (existing && existing.width === width && existing.height === height) return;\n\n existing?.destroy();\n textures.get(\"depth\")?.destroy();\n\n const scene = device.createTexture({\n label: \"scene\",\n size: { width, height },\n format,\n usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,\n });\n\n const depth = device.createTexture({\n label: \"depth\",\n size: { width, height },\n format: DEPTH_FORMAT,\n usage: GPUTextureUsage.RENDER_ATTACHMENT,\n });\n\n textures.set(\"scene\", scene);\n textureViews.set(\"scene\", scene.createView());\n textures.set(\"depth\", depth);\n textureViews.set(\"depth\", depth.createView());\n}\n\nexport function perspective(fov: number, aspect: number, near: number, far: number): Float32Array {\n const f = 1 / Math.tan((fov * Math.PI) / 360);\n const nf = 1 / (near - far);\n return new Float32Array([\n f / aspect,\n 0,\n 0,\n 0,\n 0,\n f,\n 0,\n 0,\n 0,\n 0,\n (far + near) * nf,\n -1,\n 0,\n 0,\n 2 * far * near * nf,\n 0,\n ]);\n}\n\nexport function multiply(a: Float32Array, b: Float32Array): Float32Array {\n const out = new Float32Array(16);\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n out[j * 4 + i] =\n a[i] * b[j * 4] +\n a[i + 4] * b[j * 4 + 1] +\n a[i + 8] * b[j * 4 + 2] +\n a[i + 12] * b[j * 4 + 3];\n }\n }\n return out;\n}\n\nexport function invert(m: Float32Array): Float32Array {\n const out = new Float32Array(16);\n const r00 = m[0],\n r01 = m[1],\n r02 = m[2];\n const r10 = m[4],\n r11 = m[5],\n r12 = m[6];\n const r20 = m[8],\n r21 = m[9],\n r22 = m[10];\n const tx = m[12],\n ty = m[13],\n tz = m[14];\n\n out[0] = r00;\n out[1] = r10;\n out[2] = r20;\n out[3] = 0;\n out[4] = r01;\n out[5] = r11;\n out[6] = r21;\n out[7] = 0;\n out[8] = r02;\n out[9] = r12;\n out[10] = r22;\n out[11] = 0;\n out[12] = -(r00 * tx + r01 * ty + r02 * tz);\n out[13] = -(r10 * tx + r11 * ty + r12 * tz);\n out[14] = -(r20 * tx + r21 * ty + r22 * tz);\n out[15] = 1;\n\n return out;\n}\n"],"names":["SCENE_UNIFORM_SIZE","DEPTH_FORMAT","createSceneBuffer","device","ensureRenderTextures","format","width","height","textures","textureViews","existing","scene","depth","perspective","fov","aspect","near","far","f","nf","multiply","a","b","out","i","j","invert","m","r00","r01","r02","r10","r11","r12","r20","r21","r22","tx","ty","tz"],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Plugin } from '../../core';
|
|
2
|
-
export declare function rotate(eid: number, dx: number, dy: number, dz: number): void;
|
|
3
|
-
interface EulerProxy extends Array<number> {
|
|
4
|
-
get(eid: number): number;
|
|
5
|
-
set(eid: number, value: number): void;
|
|
6
|
-
}
|
|
7
|
-
export declare const Transform: {
|
|
8
|
-
posX: Float32Array;
|
|
9
|
-
posY: Float32Array;
|
|
10
|
-
posZ: Float32Array;
|
|
11
|
-
quatX: Float32Array;
|
|
12
|
-
quatY: Float32Array;
|
|
13
|
-
quatZ: Float32Array;
|
|
14
|
-
quatW: Float32Array;
|
|
15
|
-
scaleX: Float32Array;
|
|
16
|
-
scaleY: Float32Array;
|
|
17
|
-
scaleZ: Float32Array;
|
|
18
|
-
eulerX: EulerProxy;
|
|
19
|
-
eulerY: EulerProxy;
|
|
20
|
-
eulerZ: EulerProxy;
|
|
21
|
-
};
|
|
22
|
-
export declare const WorldTransform: {
|
|
23
|
-
data: Float32Array;
|
|
24
|
-
};
|
|
25
|
-
export declare const TransformsPlugin: Plugin;
|
|
26
|
-
export {};
|
|
27
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/standard/transforms/index.ts"],"names":[],"mappings":"AACA,OAAO,EAQH,KAAK,MAAM,EACd,MAAM,YAAY,CAAC;AAIpB,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAc5E;AAED,UAAU,UAAW,SAAQ,KAAK,CAAC,MAAM,CAAC;IACtC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AA6CD,eAAO,MAAM,SAAS,EAAE;IACpB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CAetB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAEhD,CAAC;AAqEF,eAAO,MAAM,gBAAgB,EAAE,MAI9B,CAAC"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { Not as m, Wildcard as f, Hierarchy as Y } from "bitecs";
|
|
2
|
-
import { MAX_ENTITIES as n } from "../../core/state.js";
|
|
3
|
-
import "../../core/builder.js";
|
|
4
|
-
import { setTraits as Z } from "../../core/component.js";
|
|
5
|
-
import { ChildOf as q } from "../../core/relation.js";
|
|
6
|
-
import { quaternionToEuler as y, eulerToQuaternion as w, rotateQuaternion as A } from "../../core/math.js";
|
|
7
|
-
import "fast-xml-parser";
|
|
8
|
-
import { init as F, posX as N, posY as W, posZ as T, quatX as g, quatY as x, quatZ as z, quatW as b, scaleX as P, scaleY as E, scaleZ as _, matrices as h, indices as p, NoParent as C, parents as X, compute as I } from "./wasm.js";
|
|
9
|
-
function j(a, e, u, r) {
|
|
10
|
-
const o = A(
|
|
11
|
-
t.quatX[a],
|
|
12
|
-
t.quatY[a],
|
|
13
|
-
t.quatZ[a],
|
|
14
|
-
t.quatW[a],
|
|
15
|
-
e,
|
|
16
|
-
u,
|
|
17
|
-
r
|
|
18
|
-
);
|
|
19
|
-
t.quatX[a] = o.x, t.quatY[a] = o.y, t.quatZ[a] = o.z, t.quatW[a] = o.w;
|
|
20
|
-
}
|
|
21
|
-
function i(a) {
|
|
22
|
-
function e(r) {
|
|
23
|
-
return y(
|
|
24
|
-
t.quatX[r],
|
|
25
|
-
t.quatY[r],
|
|
26
|
-
t.quatZ[r],
|
|
27
|
-
t.quatW[r]
|
|
28
|
-
)[a];
|
|
29
|
-
}
|
|
30
|
-
function u(r, o) {
|
|
31
|
-
const s = y(
|
|
32
|
-
t.quatX[r],
|
|
33
|
-
t.quatY[r],
|
|
34
|
-
t.quatZ[r],
|
|
35
|
-
t.quatW[r]
|
|
36
|
-
);
|
|
37
|
-
s[a] = o;
|
|
38
|
-
const l = w(s.x, s.y, s.z);
|
|
39
|
-
t.quatX[r] = l.x, t.quatY[r] = l.y, t.quatZ[r] = l.z, t.quatW[r] = l.w;
|
|
40
|
-
}
|
|
41
|
-
return new Proxy([], {
|
|
42
|
-
get(r, o) {
|
|
43
|
-
if (o === "get") return e;
|
|
44
|
-
if (o === "set") return u;
|
|
45
|
-
const s = Number(o);
|
|
46
|
-
if (!Number.isNaN(s))
|
|
47
|
-
return e(s);
|
|
48
|
-
},
|
|
49
|
-
set(r, o, s) {
|
|
50
|
-
const l = Number(o);
|
|
51
|
-
return Number.isNaN(l) ? !1 : (u(l, s), !0);
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
const t = {
|
|
56
|
-
posX: new Float32Array(n),
|
|
57
|
-
posY: new Float32Array(n),
|
|
58
|
-
posZ: new Float32Array(n),
|
|
59
|
-
quatX: new Float32Array(n),
|
|
60
|
-
quatY: new Float32Array(n),
|
|
61
|
-
quatZ: new Float32Array(n),
|
|
62
|
-
quatW: new Float32Array(n),
|
|
63
|
-
scaleX: new Float32Array(n),
|
|
64
|
-
scaleY: new Float32Array(n),
|
|
65
|
-
scaleZ: new Float32Array(n),
|
|
66
|
-
eulerX: i("x"),
|
|
67
|
-
eulerY: i("y"),
|
|
68
|
-
eulerZ: i("z")
|
|
69
|
-
}, c = {
|
|
70
|
-
data: new Float32Array(n * 16)
|
|
71
|
-
};
|
|
72
|
-
Z(t, {
|
|
73
|
-
defaults: () => ({
|
|
74
|
-
posX: 0,
|
|
75
|
-
posY: 0,
|
|
76
|
-
posZ: 0,
|
|
77
|
-
quatX: 0,
|
|
78
|
-
quatY: 0,
|
|
79
|
-
quatZ: 0,
|
|
80
|
-
quatW: 1,
|
|
81
|
-
scaleX: 1,
|
|
82
|
-
scaleY: 1,
|
|
83
|
-
scaleZ: 1
|
|
84
|
-
}),
|
|
85
|
-
accessors: {
|
|
86
|
-
eulerX: t.eulerX,
|
|
87
|
-
eulerY: t.eulerY,
|
|
88
|
-
eulerZ: t.eulerZ
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
async function Q() {
|
|
92
|
-
await F(), t.posX = N, t.posY = W, t.posZ = T, t.quatX = g, t.quatY = x, t.quatZ = z, t.quatW = b, t.scaleX = P, t.scaleY = E, t.scaleZ = _, c.data = h;
|
|
93
|
-
}
|
|
94
|
-
const S = {
|
|
95
|
-
group: "simulation",
|
|
96
|
-
last: !0,
|
|
97
|
-
update(a) {
|
|
98
|
-
for (const u of a.query([t, m(c)]))
|
|
99
|
-
a.addComponent(u, c);
|
|
100
|
-
let e = 0;
|
|
101
|
-
for (const u of a.query([t, m(q.relation(f))]))
|
|
102
|
-
p[e] = u, X[e] = C, e++;
|
|
103
|
-
for (const u of a.query([
|
|
104
|
-
t,
|
|
105
|
-
q.relation(f),
|
|
106
|
-
Y(q.relation)
|
|
107
|
-
]))
|
|
108
|
-
p[e] = u, X[e] = a.getRelationTargets(u, q)[0], e++;
|
|
109
|
-
I(e);
|
|
110
|
-
}
|
|
111
|
-
}, k = {
|
|
112
|
-
systems: [S],
|
|
113
|
-
components: { Transform: t, WorldTransform: c },
|
|
114
|
-
initialize: Q
|
|
115
|
-
};
|
|
116
|
-
export {
|
|
117
|
-
t as Transform,
|
|
118
|
-
k as TransformsPlugin,
|
|
119
|
-
c as WorldTransform,
|
|
120
|
-
j as rotate
|
|
121
|
-
};
|
|
122
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/standard/transforms/index.ts"],"sourcesContent":["import { Hierarchy, Not, Wildcard } from \"bitecs\";\nimport {\n ChildOf,\n MAX_ENTITIES,\n rotateQuaternion,\n eulerToQuaternion,\n quaternionToEuler,\n type State,\n type System,\n type Plugin,\n} from \"../../core\";\nimport { setTraits } from \"../../core/component\";\nimport * as wasm from \"./wasm\";\n\nexport function rotate(eid: number, dx: number, dy: number, dz: number): void {\n const q = rotateQuaternion(\n Transform.quatX[eid],\n Transform.quatY[eid],\n Transform.quatZ[eid],\n Transform.quatW[eid],\n dx,\n dy,\n dz\n );\n Transform.quatX[eid] = q.x;\n Transform.quatY[eid] = q.y;\n Transform.quatZ[eid] = q.z;\n Transform.quatW[eid] = q.w;\n}\n\ninterface EulerProxy extends Array<number> {\n get(eid: number): number;\n set(eid: number, value: number): void;\n}\n\nfunction eulerProxy(axis: \"x\" | \"y\" | \"z\"): EulerProxy {\n function getValue(eid: number): number {\n const e = quaternionToEuler(\n Transform.quatX[eid],\n Transform.quatY[eid],\n Transform.quatZ[eid],\n Transform.quatW[eid]\n );\n return e[axis];\n }\n\n function setValue(eid: number, value: number): void {\n const e = quaternionToEuler(\n Transform.quatX[eid],\n Transform.quatY[eid],\n Transform.quatZ[eid],\n Transform.quatW[eid]\n );\n e[axis] = value;\n const q = eulerToQuaternion(e.x, e.y, e.z);\n Transform.quatX[eid] = q.x;\n Transform.quatY[eid] = q.y;\n Transform.quatZ[eid] = q.z;\n Transform.quatW[eid] = q.w;\n }\n\n return new Proxy([] as unknown as EulerProxy, {\n get(_, prop) {\n if (prop === \"get\") return getValue;\n if (prop === \"set\") return setValue;\n const eid = Number(prop);\n if (Number.isNaN(eid)) return undefined;\n return getValue(eid);\n },\n set(_, prop, value) {\n const eid = Number(prop);\n if (Number.isNaN(eid)) return false;\n setValue(eid, value);\n return true;\n },\n });\n}\n\nexport const Transform: {\n posX: Float32Array;\n posY: Float32Array;\n posZ: Float32Array;\n quatX: Float32Array;\n quatY: Float32Array;\n quatZ: Float32Array;\n quatW: Float32Array;\n scaleX: Float32Array;\n scaleY: Float32Array;\n scaleZ: Float32Array;\n eulerX: EulerProxy;\n eulerY: EulerProxy;\n eulerZ: EulerProxy;\n} = {\n posX: new Float32Array(MAX_ENTITIES),\n posY: new Float32Array(MAX_ENTITIES),\n posZ: new Float32Array(MAX_ENTITIES),\n quatX: new Float32Array(MAX_ENTITIES),\n quatY: new Float32Array(MAX_ENTITIES),\n quatZ: new Float32Array(MAX_ENTITIES),\n quatW: new Float32Array(MAX_ENTITIES),\n scaleX: new Float32Array(MAX_ENTITIES),\n scaleY: new Float32Array(MAX_ENTITIES),\n scaleZ: new Float32Array(MAX_ENTITIES),\n eulerX: eulerProxy(\"x\"),\n eulerY: eulerProxy(\"y\"),\n eulerZ: eulerProxy(\"z\"),\n};\n\nexport const WorldTransform: { data: Float32Array } = {\n data: new Float32Array(MAX_ENTITIES * 16),\n};\n\nsetTraits(Transform, {\n defaults: () => ({\n posX: 0,\n posY: 0,\n posZ: 0,\n quatX: 0,\n quatY: 0,\n quatZ: 0,\n quatW: 1,\n scaleX: 1,\n scaleY: 1,\n scaleZ: 1,\n }),\n accessors: {\n eulerX: Transform.eulerX,\n eulerY: Transform.eulerY,\n eulerZ: Transform.eulerZ,\n },\n});\n\nasync function init(): Promise<void> {\n await wasm.init();\n\n Transform.posX = wasm.posX;\n Transform.posY = wasm.posY;\n Transform.posZ = wasm.posZ;\n Transform.quatX = wasm.quatX;\n Transform.quatY = wasm.quatY;\n Transform.quatZ = wasm.quatZ;\n Transform.quatW = wasm.quatW;\n Transform.scaleX = wasm.scaleX;\n Transform.scaleY = wasm.scaleY;\n Transform.scaleZ = wasm.scaleZ;\n WorldTransform.data = wasm.matrices;\n}\n\nconst TransformSystem: System = {\n group: \"simulation\",\n last: true,\n\n update(state: State) {\n for (const eid of state.query([Transform, Not(WorldTransform)])) {\n state.addComponent(eid, WorldTransform);\n }\n\n let count = 0;\n\n for (const eid of state.query([Transform, Not(ChildOf.relation(Wildcard))])) {\n wasm.indices[count] = eid;\n wasm.parents[count] = wasm.NoParent;\n count++;\n }\n\n for (const eid of state.query([\n Transform,\n ChildOf.relation(Wildcard),\n Hierarchy(ChildOf.relation),\n ])) {\n wasm.indices[count] = eid;\n wasm.parents[count] = state.getRelationTargets(eid, ChildOf)[0];\n count++;\n }\n\n wasm.compute(count);\n },\n};\n\nexport const TransformsPlugin: Plugin = {\n systems: [TransformSystem],\n components: { Transform, WorldTransform },\n initialize: init,\n};\n"],"names":["rotate","eid","dx","dy","dz","q","rotateQuaternion","Transform","eulerProxy","axis","getValue","quaternionToEuler","setValue","value","e","eulerToQuaternion","_","prop","MAX_ENTITIES","WorldTransform","setTraits","init","wasm.init","wasm.posX","wasm.posY","wasm.posZ","wasm.quatX","wasm.quatY","wasm.quatZ","wasm.quatW","wasm.scaleX","wasm.scaleY","wasm.scaleZ","wasm.matrices","TransformSystem","state","Not","count","ChildOf","Wildcard","wasm.indices","wasm.parents","wasm.NoParent","Hierarchy","wasm.compute","TransformsPlugin"],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export declare let posX: Float32Array;
|
|
2
|
-
export declare let posY: Float32Array;
|
|
3
|
-
export declare let posZ: Float32Array;
|
|
4
|
-
export declare let quatX: Float32Array;
|
|
5
|
-
export declare let quatY: Float32Array;
|
|
6
|
-
export declare let quatZ: Float32Array;
|
|
7
|
-
export declare let quatW: Float32Array;
|
|
8
|
-
export declare let scaleX: Float32Array;
|
|
9
|
-
export declare let scaleY: Float32Array;
|
|
10
|
-
export declare let scaleZ: Float32Array;
|
|
11
|
-
export declare let matrices: Float32Array;
|
|
12
|
-
export declare let indices: Uint32Array;
|
|
13
|
-
export declare let parents: Uint32Array;
|
|
14
|
-
export declare let NoParent: number;
|
|
15
|
-
export declare function init(): Promise<void>;
|
|
16
|
-
export declare function compute(count: number): void;
|
|
17
|
-
//# sourceMappingURL=wasm.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../../src/standard/transforms/wasm.ts"],"names":[],"mappings":"AAoBA,eAAO,IAAI,IAAI,EAAE,YAAY,CAAC;AAC9B,eAAO,IAAI,IAAI,EAAE,YAAY,CAAC;AAC9B,eAAO,IAAI,IAAI,EAAE,YAAY,CAAC;AAC9B,eAAO,IAAI,KAAK,EAAE,YAAY,CAAC;AAC/B,eAAO,IAAI,KAAK,EAAE,YAAY,CAAC;AAC/B,eAAO,IAAI,KAAK,EAAE,YAAY,CAAC;AAC/B,eAAO,IAAI,KAAK,EAAE,YAAY,CAAC;AAC/B,eAAO,IAAI,MAAM,EAAE,YAAY,CAAC;AAChC,eAAO,IAAI,MAAM,EAAE,YAAY,CAAC;AAChC,eAAO,IAAI,MAAM,EAAE,YAAY,CAAC;AAChC,eAAO,IAAI,QAAQ,EAAE,YAAY,CAAC;AAClC,eAAO,IAAI,OAAO,EAAE,WAAW,CAAC;AAChC,eAAO,IAAI,OAAO,EAAE,WAAW,CAAC;AAChC,eAAO,IAAI,QAAQ,EAAE,MAAM,CAAC;AAE5B,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqB1C;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAE3C"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import _, { init_data as n, get_max_entities as l, get_pos_x_ptr as o, get_pos_y_ptr as s, get_pos_z_ptr as p, get_quat_x_ptr as i, get_quat_y_ptr as c, get_quat_z_ptr as y, get_quat_w_ptr as w, get_scale_x_ptr as g, get_scale_y_ptr as u, get_scale_z_ptr as A, get_matrices_ptr as m, get_indices_ptr as F, get_parents_ptr as f, get_no_parent as q, compute_transforms as x } from "../../rust/transforms/pkg/shallot_transforms.js";
|
|
2
|
-
let a, b, d, z, X, Y, Z, U, E, N, P, W, h, j;
|
|
3
|
-
async function v() {
|
|
4
|
-
if (a) return;
|
|
5
|
-
const r = await _();
|
|
6
|
-
n();
|
|
7
|
-
const t = r.memory.buffer, e = l();
|
|
8
|
-
a = new Float32Array(t, o(), e), b = new Float32Array(t, s(), e), d = new Float32Array(t, p(), e), z = new Float32Array(t, i(), e), X = new Float32Array(t, c(), e), Y = new Float32Array(t, y(), e), Z = new Float32Array(t, w(), e), U = new Float32Array(t, g(), e), E = new Float32Array(t, u(), e), N = new Float32Array(t, A(), e), P = new Float32Array(t, m(), e * 16), W = new Uint32Array(t, F(), e), h = new Uint32Array(t, f(), e), j = q();
|
|
9
|
-
}
|
|
10
|
-
function B(r) {
|
|
11
|
-
x(r);
|
|
12
|
-
}
|
|
13
|
-
export {
|
|
14
|
-
j as NoParent,
|
|
15
|
-
B as compute,
|
|
16
|
-
W as indices,
|
|
17
|
-
v as init,
|
|
18
|
-
P as matrices,
|
|
19
|
-
h as parents,
|
|
20
|
-
a as posX,
|
|
21
|
-
b as posY,
|
|
22
|
-
d as posZ,
|
|
23
|
-
Z as quatW,
|
|
24
|
-
z as quatX,
|
|
25
|
-
X as quatY,
|
|
26
|
-
Y as quatZ,
|
|
27
|
-
U as scaleX,
|
|
28
|
-
E as scaleY,
|
|
29
|
-
N as scaleZ
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=wasm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.js","sources":["../../../src/standard/transforms/wasm.ts"],"sourcesContent":["import wasmInit, {\n get_pos_x_ptr,\n get_pos_y_ptr,\n get_pos_z_ptr,\n get_quat_x_ptr,\n get_quat_y_ptr,\n get_quat_z_ptr,\n get_quat_w_ptr,\n get_scale_x_ptr,\n get_scale_y_ptr,\n get_scale_z_ptr,\n get_matrices_ptr,\n get_indices_ptr,\n get_parents_ptr,\n get_max_entities,\n get_no_parent,\n init_data,\n compute_transforms,\n} from \"../../../rust/transforms/pkg/shallot_transforms.js\";\n\nexport let posX: Float32Array;\nexport let posY: Float32Array;\nexport let posZ: Float32Array;\nexport let quatX: Float32Array;\nexport let quatY: Float32Array;\nexport let quatZ: Float32Array;\nexport let quatW: Float32Array;\nexport let scaleX: Float32Array;\nexport let scaleY: Float32Array;\nexport let scaleZ: Float32Array;\nexport let matrices: Float32Array;\nexport let indices: Uint32Array;\nexport let parents: Uint32Array;\nexport let NoParent: number;\n\nexport async function init(): Promise<void> {\n if (posX) return;\n const wasm = await wasmInit();\n init_data();\n const buffer = wasm.memory.buffer;\n const maxEntities = get_max_entities();\n\n posX = new Float32Array(buffer, get_pos_x_ptr(), maxEntities);\n posY = new Float32Array(buffer, get_pos_y_ptr(), maxEntities);\n posZ = new Float32Array(buffer, get_pos_z_ptr(), maxEntities);\n quatX = new Float32Array(buffer, get_quat_x_ptr(), maxEntities);\n quatY = new Float32Array(buffer, get_quat_y_ptr(), maxEntities);\n quatZ = new Float32Array(buffer, get_quat_z_ptr(), maxEntities);\n quatW = new Float32Array(buffer, get_quat_w_ptr(), maxEntities);\n scaleX = new Float32Array(buffer, get_scale_x_ptr(), maxEntities);\n scaleY = new Float32Array(buffer, get_scale_y_ptr(), maxEntities);\n scaleZ = new Float32Array(buffer, get_scale_z_ptr(), maxEntities);\n matrices = new Float32Array(buffer, get_matrices_ptr(), maxEntities * 16);\n indices = new Uint32Array(buffer, get_indices_ptr(), maxEntities);\n parents = new Uint32Array(buffer, get_parents_ptr(), maxEntities);\n NoParent = get_no_parent();\n}\n\nexport function compute(count: number): void {\n compute_transforms(count);\n}\n"],"names":["posX","posY","posZ","quatX","quatY","quatZ","quatW","scaleX","scaleY","scaleZ","matrices","indices","parents","NoParent","init","wasm","wasmInit","init_data","buffer","maxEntities","get_max_entities","get_pos_x_ptr","get_pos_y_ptr","get_pos_z_ptr","get_quat_x_ptr","get_quat_y_ptr","get_quat_z_ptr","get_quat_w_ptr","get_scale_x_ptr","get_scale_y_ptr","get_scale_z_ptr","get_matrices_ptr","get_indices_ptr","get_parents_ptr","get_no_parent","compute","count","compute_transforms"],"mappings":";AAoBO,IAAIA,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC;AAEX,eAAsBC,IAAsB;AACxC,MAAId,EAAM;AACV,QAAMe,IAAO,MAAMC,EAAA;AACnB,EAAAC,EAAA;AACA,QAAMC,IAASH,EAAK,OAAO,QACrBI,IAAcC,EAAA;AAEpB,EAAApB,IAAO,IAAI,aAAakB,GAAQG,EAAA,GAAiBF,CAAW,GAC5DlB,IAAO,IAAI,aAAaiB,GAAQI,EAAA,GAAiBH,CAAW,GAC5DjB,IAAO,IAAI,aAAagB,GAAQK,EAAA,GAAiBJ,CAAW,GAC5DhB,IAAQ,IAAI,aAAae,GAAQM,EAAA,GAAkBL,CAAW,GAC9Df,IAAQ,IAAI,aAAac,GAAQO,EAAA,GAAkBN,CAAW,GAC9Dd,IAAQ,IAAI,aAAaa,GAAQQ,EAAA,GAAkBP,CAAW,GAC9Db,IAAQ,IAAI,aAAaY,GAAQS,EAAA,GAAkBR,CAAW,GAC9DZ,IAAS,IAAI,aAAaW,GAAQU,EAAA,GAAmBT,CAAW,GAChEX,IAAS,IAAI,aAAaU,GAAQW,EAAA,GAAmBV,CAAW,GAChEV,IAAS,IAAI,aAAaS,GAAQY,EAAA,GAAmBX,CAAW,GAChET,IAAW,IAAI,aAAaQ,GAAQa,EAAA,GAAoBZ,IAAc,EAAE,GACxER,IAAU,IAAI,YAAYO,GAAQc,EAAA,GAAmBb,CAAW,GAChEP,IAAU,IAAI,YAAYM,GAAQe,EAAA,GAAmBd,CAAW,GAChEN,IAAWqB,EAAA;AACf;AAEO,SAASC,EAAQC,GAAqB;AACzC,EAAAC,EAAmBD,CAAK;AAC5B;"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export type EasingFn = (t: number) => number;
|
|
2
|
-
export declare const EASING_FUNCTIONS: readonly EasingFn[];
|
|
3
|
-
export declare function getEasingIndex(name: string): number;
|
|
4
|
-
export declare function getEasing(index: number): EasingFn;
|
|
5
|
-
//# sourceMappingURL=easing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"easing.d.ts","sourceRoot":"","sources":["../../../src/standard/tween/easing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AA8F7C,eAAO,MAAM,gBAAgB,EAAE,SAAS,QAAQ,EAgCtC,CAAC;AAoCX,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAEjD"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
const a = (e) => e, o = (e) => e * e, c = (e) => e * (2 - e), u = (e) => e < 0.5 ? 2 * e * e : -1 + (4 - 2 * e) * e, i = (e) => e * e * e, t = (e) => --e * e * e + 1, r = (e) => e < 0.5 ? 4 * e * e * e : (e - 1) * (2 * e - 2) * (2 * e - 2) + 1, I = (e) => e * e * e * e, h = (e) => 1 - --e * e * e * e, M = (e) => e < 0.5 ? 8 * e * e * e * e : 1 - 8 * --e * e * e * e, O = (e) => e * e * e * e * e, p = (e) => 1 + --e * e * e * e * e, d = (e) => e < 0.5 ? 16 * e * e * e * e * e : 1 + 16 * --e * e * e * e * e, q = (e) => 1 - Math.cos(e * Math.PI / 2), b = (e) => Math.sin(e * Math.PI / 2), w = (e) => -(Math.cos(Math.PI * e) - 1) / 2, E = (e) => e === 0 ? 0 : Math.pow(2, 10 * e - 10), Q = (e) => e === 1 ? 1 : 1 - Math.pow(2, -10 * e), l = (e) => e === 0 ? 0 : e === 1 ? 1 : e < 0.5 ? Math.pow(2, 20 * e - 10) / 2 : (2 - Math.pow(2, -20 * e + 10)) / 2, x = (e) => 1 - Math.sqrt(1 - e * e), C = (e) => Math.sqrt(1 - --e * e), P = (e) => e < 0.5 ? (1 - Math.sqrt(1 - 4 * e * e)) / 2 : (Math.sqrt(1 - (-2 * e + 2) * (-2 * e + 2)) + 1) / 2, k = (e) => 2.70158 * e * e * e - 1.70158 * e * e, B = (e) => 1 + 2.70158 * Math.pow(e - 1, 3) + 1.70158 * Math.pow(e - 1, 2), S = (e) => {
|
|
2
|
-
const n = 2.5949095;
|
|
3
|
-
return e < 0.5 ? Math.pow(2 * e, 2) * ((n + 1) * 2 * e - n) / 2 : (Math.pow(2 * e - 2, 2) * ((n + 1) * (e * 2 - 2) + n) + 2) / 2;
|
|
4
|
-
}, f = (e) => e === 0 ? 0 : e === 1 ? 1 : -Math.pow(2, 10 * e - 10) * Math.sin((e * 10 - 10.75) * (2 * Math.PI / 3)), N = (e) => e === 0 ? 0 : e === 1 ? 1 : Math.pow(2, -10 * e) * Math.sin((e * 10 - 0.75) * (2 * Math.PI / 3)) + 1, g = (e) => e === 0 ? 0 : e === 1 ? 1 : e < 0.5 ? -(Math.pow(2, 20 * e - 10) * Math.sin((20 * e - 11.125) * (2 * Math.PI / 4.5))) / 2 : Math.pow(2, -20 * e + 10) * Math.sin((20 * e - 11.125) * (2 * Math.PI / 4.5)) / 2 + 1, s = (e) => e < 0.36363636363636365 ? 7.5625 * e * e : e < 0.7272727272727273 ? 7.5625 * (e -= 0.5454545454545454) * e + 0.75 : e < 0.9090909090909091 ? 7.5625 * (e -= 0.8181818181818182) * e + 0.9375 : 7.5625 * (e -= 0.9545454545454546) * e + 0.984375, A = (e) => 1 - s(1 - e), G = (e) => e < 0.5 ? (1 - s(1 - 2 * e)) / 2 : (1 + s(2 * e - 1)) / 2, _ = [
|
|
5
|
-
a,
|
|
6
|
-
o,
|
|
7
|
-
c,
|
|
8
|
-
u,
|
|
9
|
-
i,
|
|
10
|
-
t,
|
|
11
|
-
r,
|
|
12
|
-
I,
|
|
13
|
-
h,
|
|
14
|
-
M,
|
|
15
|
-
O,
|
|
16
|
-
p,
|
|
17
|
-
d,
|
|
18
|
-
q,
|
|
19
|
-
b,
|
|
20
|
-
w,
|
|
21
|
-
E,
|
|
22
|
-
Q,
|
|
23
|
-
l,
|
|
24
|
-
x,
|
|
25
|
-
C,
|
|
26
|
-
P,
|
|
27
|
-
k,
|
|
28
|
-
B,
|
|
29
|
-
S,
|
|
30
|
-
f,
|
|
31
|
-
N,
|
|
32
|
-
g,
|
|
33
|
-
A,
|
|
34
|
-
s,
|
|
35
|
-
G
|
|
36
|
-
], D = {
|
|
37
|
-
linear: 0,
|
|
38
|
-
"ease-in-quad": 1,
|
|
39
|
-
"ease-out-quad": 2,
|
|
40
|
-
"ease-in-out-quad": 3,
|
|
41
|
-
"ease-in-cubic": 4,
|
|
42
|
-
"ease-out-cubic": 5,
|
|
43
|
-
"ease-in-out-cubic": 6,
|
|
44
|
-
"ease-in-quart": 7,
|
|
45
|
-
"ease-out-quart": 8,
|
|
46
|
-
"ease-in-out-quart": 9,
|
|
47
|
-
"ease-in-quint": 10,
|
|
48
|
-
"ease-out-quint": 11,
|
|
49
|
-
"ease-in-out-quint": 12,
|
|
50
|
-
"ease-in-sine": 13,
|
|
51
|
-
"ease-out-sine": 14,
|
|
52
|
-
"ease-in-out-sine": 15,
|
|
53
|
-
"ease-in-expo": 16,
|
|
54
|
-
"ease-out-expo": 17,
|
|
55
|
-
"ease-in-out-expo": 18,
|
|
56
|
-
"ease-in-circ": 19,
|
|
57
|
-
"ease-out-circ": 20,
|
|
58
|
-
"ease-in-out-circ": 21,
|
|
59
|
-
"ease-in-back": 22,
|
|
60
|
-
"ease-out-back": 23,
|
|
61
|
-
"ease-in-out-back": 24,
|
|
62
|
-
"ease-in-elastic": 25,
|
|
63
|
-
"ease-out-elastic": 26,
|
|
64
|
-
"ease-in-out-elastic": 27,
|
|
65
|
-
"ease-in-bounce": 28,
|
|
66
|
-
"ease-out-bounce": 29,
|
|
67
|
-
"ease-in-out-bounce": 30
|
|
68
|
-
};
|
|
69
|
-
function T(e) {
|
|
70
|
-
return D[e] ?? 0;
|
|
71
|
-
}
|
|
72
|
-
function U(e) {
|
|
73
|
-
return _[e] ?? a;
|
|
74
|
-
}
|
|
75
|
-
export {
|
|
76
|
-
_ as EASING_FUNCTIONS,
|
|
77
|
-
U as getEasing,
|
|
78
|
-
T as getEasingIndex
|
|
79
|
-
};
|
|
80
|
-
//# sourceMappingURL=easing.js.map
|