@clipkit/runtime 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +54 -0
- package/README.md +98 -0
- package/dist/animation/easings.d.ts +9 -0
- package/dist/animation/easings.d.ts.map +1 -0
- package/dist/animation/easings.js +230 -0
- package/dist/animation/easings.js.map +1 -0
- package/dist/animation/expr.d.ts +44 -0
- package/dist/animation/expr.d.ts.map +1 -0
- package/dist/animation/expr.js +236 -0
- package/dist/animation/expr.js.map +1 -0
- package/dist/animation/keyframes.d.ts +23 -0
- package/dist/animation/keyframes.d.ts.map +1 -0
- package/dist/animation/keyframes.js +117 -0
- package/dist/animation/keyframes.js.map +1 -0
- package/dist/animation/motion-path.d.ts +18 -0
- package/dist/animation/motion-path.d.ts.map +1 -0
- package/dist/animation/motion-path.js +269 -0
- package/dist/animation/motion-path.js.map +1 -0
- package/dist/animation/noise1d.d.ts +5 -0
- package/dist/animation/noise1d.d.ts.map +1 -0
- package/dist/animation/noise1d.js +27 -0
- package/dist/animation/noise1d.js.map +1 -0
- package/dist/animation/presets.d.ts +60 -0
- package/dist/animation/presets.d.ts.map +1 -0
- package/dist/animation/presets.js +221 -0
- package/dist/animation/presets.js.map +1 -0
- package/dist/assets/cache.d.ts +18 -0
- package/dist/assets/cache.d.ts.map +1 -0
- package/dist/assets/cache.js +56 -0
- package/dist/assets/cache.js.map +1 -0
- package/dist/assets/fonts.d.ts +20 -0
- package/dist/assets/fonts.d.ts.map +1 -0
- package/dist/assets/fonts.js +127 -0
- package/dist/assets/fonts.js.map +1 -0
- package/dist/assets/loader.d.ts +18 -0
- package/dist/assets/loader.d.ts.map +1 -0
- package/dist/assets/loader.js +87 -0
- package/dist/assets/loader.js.map +1 -0
- package/dist/assets/lut.d.ts +5 -0
- package/dist/assets/lut.d.ts.map +1 -0
- package/dist/assets/lut.js +77 -0
- package/dist/assets/lut.js.map +1 -0
- package/dist/assets/media-time.d.ts +31 -0
- package/dist/assets/media-time.d.ts.map +1 -0
- package/dist/assets/media-time.js +65 -0
- package/dist/assets/media-time.js.map +1 -0
- package/dist/assets/mp4-frame-source.d.ts +44 -0
- package/dist/assets/mp4-frame-source.d.ts.map +1 -0
- package/dist/assets/mp4-frame-source.js +387 -0
- package/dist/assets/mp4-frame-source.js.map +1 -0
- package/dist/audio/encoder.d.ts +31 -0
- package/dist/audio/encoder.d.ts.map +1 -0
- package/dist/audio/encoder.js +96 -0
- package/dist/audio/encoder.js.map +1 -0
- package/dist/audio/fades.d.ts +16 -0
- package/dist/audio/fades.d.ts.map +1 -0
- package/dist/audio/fades.js +43 -0
- package/dist/audio/fades.js.map +1 -0
- package/dist/audio/limiter.d.ts +8 -0
- package/dist/audio/limiter.d.ts.map +1 -0
- package/dist/audio/limiter.js +39 -0
- package/dist/audio/limiter.js.map +1 -0
- package/dist/audio/loader.d.ts +6 -0
- package/dist/audio/loader.d.ts.map +1 -0
- package/dist/audio/loader.js +42 -0
- package/dist/audio/loader.js.map +1 -0
- package/dist/audio/mixer.d.ts +17 -0
- package/dist/audio/mixer.d.ts.map +1 -0
- package/dist/audio/mixer.js +204 -0
- package/dist/audio/mixer.js.map +1 -0
- package/dist/audio/varispeed.d.ts +24 -0
- package/dist/audio/varispeed.d.ts.map +1 -0
- package/dist/audio/varispeed.js +114 -0
- package/dist/audio/varispeed.js.map +1 -0
- package/dist/audio/wav.d.ts +6 -0
- package/dist/audio/wav.d.ts.map +1 -0
- package/dist/audio/wav.js +62 -0
- package/dist/audio/wav.js.map +1 -0
- package/dist/backend/backend.d.ts +579 -0
- package/dist/backend/backend.d.ts.map +1 -0
- package/dist/backend/backend.js +17 -0
- package/dist/backend/backend.js.map +1 -0
- package/dist/backend/webgl-backend.d.ts +97 -0
- package/dist/backend/webgl-backend.d.ts.map +1 -0
- package/dist/backend/webgl-backend.js +2142 -0
- package/dist/backend/webgl-backend.js.map +1 -0
- package/dist/backend/webgpu-backend.d.ts +121 -0
- package/dist/backend/webgpu-backend.d.ts.map +1 -0
- package/dist/backend/webgpu-backend.js +2481 -0
- package/dist/backend/webgpu-backend.js.map +1 -0
- package/dist/compositor/bitfont.d.ts +8 -0
- package/dist/compositor/bitfont.d.ts.map +1 -0
- package/dist/compositor/bitfont.js +52 -0
- package/dist/compositor/bitfont.js.map +1 -0
- package/dist/compositor/camera.d.ts +5 -0
- package/dist/compositor/camera.d.ts.map +1 -0
- package/dist/compositor/camera.js +114 -0
- package/dist/compositor/camera.js.map +1 -0
- package/dist/compositor/color.d.ts +26 -0
- package/dist/compositor/color.d.ts.map +1 -0
- package/dist/compositor/color.js +189 -0
- package/dist/compositor/color.js.map +1 -0
- package/dist/compositor/element-renderers/caption.d.ts +4 -0
- package/dist/compositor/element-renderers/caption.d.ts.map +1 -0
- package/dist/compositor/element-renderers/caption.js +376 -0
- package/dist/compositor/element-renderers/caption.js.map +1 -0
- package/dist/compositor/element-renderers/group.d.ts +12 -0
- package/dist/compositor/element-renderers/group.d.ts.map +1 -0
- package/dist/compositor/element-renderers/group.js +259 -0
- package/dist/compositor/element-renderers/group.js.map +1 -0
- package/dist/compositor/element-renderers/image.d.ts +4 -0
- package/dist/compositor/element-renderers/image.d.ts.map +1 -0
- package/dist/compositor/element-renderers/image.js +97 -0
- package/dist/compositor/element-renderers/image.js.map +1 -0
- package/dist/compositor/element-renderers/lit.d.ts +6 -0
- package/dist/compositor/element-renderers/lit.d.ts.map +1 -0
- package/dist/compositor/element-renderers/lit.js +82 -0
- package/dist/compositor/element-renderers/lit.js.map +1 -0
- package/dist/compositor/element-renderers/particles.d.ts +4 -0
- package/dist/compositor/element-renderers/particles.d.ts.map +1 -0
- package/dist/compositor/element-renderers/particles.js +212 -0
- package/dist/compositor/element-renderers/particles.js.map +1 -0
- package/dist/compositor/element-renderers/shape.d.ts +4 -0
- package/dist/compositor/element-renderers/shape.d.ts.map +1 -0
- package/dist/compositor/element-renderers/shape.js +171 -0
- package/dist/compositor/element-renderers/shape.js.map +1 -0
- package/dist/compositor/element-renderers/svg.d.ts +4 -0
- package/dist/compositor/element-renderers/svg.d.ts.map +1 -0
- package/dist/compositor/element-renderers/svg.js +210 -0
- package/dist/compositor/element-renderers/svg.js.map +1 -0
- package/dist/compositor/element-renderers/text.d.ts +25 -0
- package/dist/compositor/element-renderers/text.d.ts.map +1 -0
- package/dist/compositor/element-renderers/text.js +1358 -0
- package/dist/compositor/element-renderers/text.js.map +1 -0
- package/dist/compositor/element-renderers/video.d.ts +12 -0
- package/dist/compositor/element-renderers/video.d.ts.map +1 -0
- package/dist/compositor/element-renderers/video.js +109 -0
- package/dist/compositor/element-renderers/video.js.map +1 -0
- package/dist/compositor/fit.d.ts +18 -0
- package/dist/compositor/fit.d.ts.map +1 -0
- package/dist/compositor/fit.js +106 -0
- package/dist/compositor/fit.js.map +1 -0
- package/dist/compositor/lighting.d.ts +63 -0
- package/dist/compositor/lighting.d.ts.map +1 -0
- package/dist/compositor/lighting.js +141 -0
- package/dist/compositor/lighting.js.map +1 -0
- package/dist/compositor/mat4.d.ts +88 -0
- package/dist/compositor/mat4.d.ts.map +1 -0
- package/dist/compositor/mat4.js +245 -0
- package/dist/compositor/mat4.js.map +1 -0
- package/dist/compositor/project.d.ts +24 -0
- package/dist/compositor/project.d.ts.map +1 -0
- package/dist/compositor/project.js +105 -0
- package/dist/compositor/project.js.map +1 -0
- package/dist/compositor/render-context.d.ts +194 -0
- package/dist/compositor/render-context.d.ts.map +1 -0
- package/dist/compositor/render-context.js +10 -0
- package/dist/compositor/render-context.js.map +1 -0
- package/dist/compositor/resolve.d.ts +80 -0
- package/dist/compositor/resolve.d.ts.map +1 -0
- package/dist/compositor/resolve.js +276 -0
- package/dist/compositor/resolve.js.map +1 -0
- package/dist/compositor/scene.d.ts +10 -0
- package/dist/compositor/scene.d.ts.map +1 -0
- package/dist/compositor/scene.js +658 -0
- package/dist/compositor/scene.js.map +1 -0
- package/dist/compositor/transform.d.ts +73 -0
- package/dist/compositor/transform.d.ts.map +1 -0
- package/dist/compositor/transform.js +229 -0
- package/dist/compositor/transform.js.map +1 -0
- package/dist/compositor/unit.d.ts +27 -0
- package/dist/compositor/unit.d.ts.map +1 -0
- package/dist/compositor/unit.js +74 -0
- package/dist/compositor/unit.js.map +1 -0
- package/dist/encoder/exporter.d.ts +95 -0
- package/dist/encoder/exporter.d.ts.map +1 -0
- package/dist/encoder/exporter.js +341 -0
- package/dist/encoder/exporter.js.map +1 -0
- package/dist/encoder/index.d.ts +3 -0
- package/dist/encoder/index.d.ts.map +1 -0
- package/dist/encoder/index.js +2 -0
- package/dist/encoder/index.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +13 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +32 -0
- package/dist/logger.js.map +1 -0
- package/dist/runtime.d.ts +216 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1012 -0
- package/dist/runtime.js.map +1 -0
- package/dist/svg/morph.d.ts +6 -0
- package/dist/svg/morph.d.ts.map +1 -0
- package/dist/svg/morph.js +62 -0
- package/dist/svg/morph.js.map +1 -0
- package/dist/svg/svg-renderer.d.ts +18 -0
- package/dist/svg/svg-renderer.d.ts.map +1 -0
- package/dist/svg/svg-renderer.js +142 -0
- package/dist/svg/svg-renderer.js.map +1 -0
- package/dist/text/caption-chunk.d.ts +17 -0
- package/dist/text/caption-chunk.d.ts.map +1 -0
- package/dist/text/caption-chunk.js +76 -0
- package/dist/text/caption-chunk.js.map +1 -0
- package/dist/text/font-atlas.d.ts +63 -0
- package/dist/text/font-atlas.d.ts.map +1 -0
- package/dist/text/font-atlas.js +225 -0
- package/dist/text/font-atlas.js.map +1 -0
- package/dist/text/measure.d.ts +38 -0
- package/dist/text/measure.d.ts.map +1 -0
- package/dist/text/measure.js +164 -0
- package/dist/text/measure.js.map +1 -0
- package/dist/text/text-animation.d.ts +52 -0
- package/dist/text/text-animation.d.ts.map +1 -0
- package/dist/text/text-animation.js +133 -0
- package/dist/text/text-animation.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/compositor/element-renderers/text.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { VideoElement } from '@clipkit/protocol';
|
|
2
|
+
import type { RenderContext } from '../render-context.js';
|
|
3
|
+
/**
|
|
4
|
+
* Render a video element by sampling its current frame.
|
|
5
|
+
*
|
|
6
|
+
* The runtime is responsible for advancing video.currentTime to the right
|
|
7
|
+
* playhead before calling this. For preview, that's driven by the browser's
|
|
8
|
+
* own video clock. For deterministic export, the runtime seeks each video
|
|
9
|
+
* to the desired frame time before each render call.
|
|
10
|
+
*/
|
|
11
|
+
export declare function renderVideoElement(element: VideoElement, ctx: RenderContext): void;
|
|
12
|
+
//# sourceMappingURL=video.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../../src/compositor/element-renderers/video.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,GAAG,IAAI,CA2FlF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { applyModelTransform, quadWorldTransform } from '../mat4.js';
|
|
2
|
+
import { resolveAnchor, resolveLength } from '../unit.js';
|
|
3
|
+
import { anchorToCenter } from '../transform.js';
|
|
4
|
+
import { applyAnimation, applyAspectRatio, resolve3D, resolveScalePair, resolveSkewPair } from '../resolve.js';
|
|
5
|
+
import { computeObjectFit } from '../fit.js';
|
|
6
|
+
import { resolveMaterial } from '../lighting.js';
|
|
7
|
+
import { buildLitParams } from './lit.js';
|
|
8
|
+
// Textured surfaces light from their own pixels; albedo color unused.
|
|
9
|
+
const WHITE = [1, 1, 1, 1];
|
|
10
|
+
/**
|
|
11
|
+
* Render a video element by sampling its current frame.
|
|
12
|
+
*
|
|
13
|
+
* The runtime is responsible for advancing video.currentTime to the right
|
|
14
|
+
* playhead before calling this. For preview, that's driven by the browser's
|
|
15
|
+
* own video clock. For deterministic export, the runtime seeks each video
|
|
16
|
+
* to the desired frame time before each render call.
|
|
17
|
+
*/
|
|
18
|
+
export function renderVideoElement(element, ctx) {
|
|
19
|
+
const { canvas, backend, videos } = ctx;
|
|
20
|
+
const sourceUrl = String(element.source ?? '');
|
|
21
|
+
if (!sourceUrl)
|
|
22
|
+
return;
|
|
23
|
+
const asset = videos.get(sourceUrl);
|
|
24
|
+
if (!asset)
|
|
25
|
+
return;
|
|
26
|
+
// Element-backed assets: re-upload the current video frame to the GPU
|
|
27
|
+
// texture. Cheap to call every frame; copyExternalImageToTexture from
|
|
28
|
+
// HTMLVideoElement is fast. Skip if the playhead hasn't advanced.
|
|
29
|
+
// Externally-pumped assets (video === null) are uploaded at push time
|
|
30
|
+
// by pushExternalVideoFrame — nothing to do here.
|
|
31
|
+
if (asset.video && asset.video.readyState >= 2 /* HAVE_CURRENT_DATA */) {
|
|
32
|
+
if (asset.video.currentTime !== asset.lastUploadedTime) {
|
|
33
|
+
backend.updateTexture(asset.texture, asset.video);
|
|
34
|
+
asset.lastUploadedTime = asset.video.currentTime;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const x = applyAnimation(element, 'x', resolveLength(element.x, canvas.width, canvas), ctx);
|
|
38
|
+
const y = applyAnimation(element, 'y', resolveLength(element.y, canvas.height, canvas), ctx);
|
|
39
|
+
const { sx, sy } = resolveScalePair(element, ctx);
|
|
40
|
+
const box = applyAspectRatio(element, applyAnimation(element, 'width', resolveLength(element.width, canvas.width, canvas, asset.width), ctx), applyAnimation(element, 'height', resolveLength(element.height, canvas.height, canvas, asset.height), ctx));
|
|
41
|
+
const width = sx * box.width;
|
|
42
|
+
const height = sy * box.height;
|
|
43
|
+
const rotation = applyAnimation(element, 'rotation', numberOr(element.rotation ?? element.z_rotation, 0), ctx);
|
|
44
|
+
const opacity01 = applyAnimation(element, 'opacity', numberOr(element.opacity, 1), ctx);
|
|
45
|
+
const xAnchor = resolveAnchor(element.x_anchor);
|
|
46
|
+
const yAnchor = resolveAnchor(element.y_anchor);
|
|
47
|
+
const { cx, cy } = anchorToCenter(x, y, width, height, xAnchor, yAnchor);
|
|
48
|
+
const w = applyModelTransform(ctx.modelMatrix, ctx.opacityFactor, cx, cy, rotation, opacity01, width, height);
|
|
49
|
+
const opacity = Math.max(0, Math.min(1, w.opacity01));
|
|
50
|
+
const tint = [opacity, opacity, opacity, opacity];
|
|
51
|
+
// CKP/1.0 3D (§4.4): full-matrix hand-off; fit math in LOCAL pixels.
|
|
52
|
+
const t3d = resolve3D(element, ctx);
|
|
53
|
+
const matrixPath = t3d !== null || !ctx.modelMatrix.aff;
|
|
54
|
+
// object-fit against the video's natural dimensions. Default cover.
|
|
55
|
+
// The optional source crop (§5.3) selects a normalized sub-rectangle
|
|
56
|
+
// of the frame first.
|
|
57
|
+
const fitted = computeObjectFit(element.fit, matrixPath ? width : w.width, matrixPath ? height : w.height, asset.width, asset.height, resolveCrop(element, ctx));
|
|
58
|
+
const { skewX, skewY } = resolveSkewPair(element, ctx);
|
|
59
|
+
// §4.8 PBR: a material + scene lights/environment shade the video frame
|
|
60
|
+
// as a textured surface (albedo = the sampled frame).
|
|
61
|
+
const material = resolveMaterial(element, ctx.time);
|
|
62
|
+
const lit = material
|
|
63
|
+
? buildLitParams(ctx, quadWorldTransform(ctx.worldMatrix, cx, cy, fitted.drawWidth, fitted.drawHeight, rotation, skewX, skewY, t3d), material, WHITE)
|
|
64
|
+
: null;
|
|
65
|
+
backend.drawTexturedQuad({
|
|
66
|
+
cx: w.cx,
|
|
67
|
+
cy: w.cy,
|
|
68
|
+
width: fitted.drawWidth,
|
|
69
|
+
height: fitted.drawHeight,
|
|
70
|
+
rotation: w.rotation,
|
|
71
|
+
skewX,
|
|
72
|
+
skewY,
|
|
73
|
+
transform: matrixPath
|
|
74
|
+
? quadWorldTransform(ctx.modelMatrix, cx, cy, fitted.drawWidth, fitted.drawHeight, rotation, skewX, skewY, t3d)
|
|
75
|
+
: undefined,
|
|
76
|
+
texture: asset.texture,
|
|
77
|
+
uvRect: fitted.uvRect,
|
|
78
|
+
tint,
|
|
79
|
+
blend: element.blend_mode,
|
|
80
|
+
lit: lit ?? undefined,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// Source crop (§5.3): resolve the normalized sub-rect, with each component
|
|
84
|
+
// keyframeable. Returns undefined for the common no-crop case so the fit
|
|
85
|
+
// math takes its identity fast path.
|
|
86
|
+
const CROP_PROPS = ['crop_x', 'crop_y', 'crop_width', 'crop_height'];
|
|
87
|
+
function resolveCrop(element, ctx) {
|
|
88
|
+
const hasField = CROP_PROPS.some((p) => element[p] !== undefined);
|
|
89
|
+
const hasAnim = (element.keyframe_animations ?? []).some((k) => CROP_PROPS.includes(k.property));
|
|
90
|
+
if (!hasField && !hasAnim)
|
|
91
|
+
return undefined;
|
|
92
|
+
return {
|
|
93
|
+
x: applyAnimation(element, 'crop_x', numberOr(element.crop_x, 0), ctx),
|
|
94
|
+
y: applyAnimation(element, 'crop_y', numberOr(element.crop_y, 0), ctx),
|
|
95
|
+
width: applyAnimation(element, 'crop_width', numberOr(element.crop_width, 1), ctx),
|
|
96
|
+
height: applyAnimation(element, 'crop_height', numberOr(element.crop_height, 1), ctx),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function numberOr(value, fallback) {
|
|
100
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
101
|
+
return value;
|
|
102
|
+
if (typeof value === 'string') {
|
|
103
|
+
const n = parseFloat(value);
|
|
104
|
+
if (Number.isFinite(n))
|
|
105
|
+
return n;
|
|
106
|
+
}
|
|
107
|
+
return fallback;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../../src/compositor/element-renderers/video.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type ObjectFit = 'cover' | 'contain' | 'fill' | 'none';
|
|
2
|
+
/** Normalized source sub-rectangle (0..1, origin top-left). */
|
|
3
|
+
export interface CropRect {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
}
|
|
9
|
+
export interface FitResult {
|
|
10
|
+
/** Quad width to draw, in pixels. */
|
|
11
|
+
drawWidth: number;
|
|
12
|
+
/** Quad height to draw, in pixels. */
|
|
13
|
+
drawHeight: number;
|
|
14
|
+
/** Normalized texture sub-region [u0, v0, u1, v1]. */
|
|
15
|
+
uvRect: readonly [number, number, number, number];
|
|
16
|
+
}
|
|
17
|
+
export declare function computeObjectFit(fit: ObjectFit | undefined, boxWidth: number, boxHeight: number, mediaWidth: number, mediaHeight: number, crop?: CropRect): FitResult;
|
|
18
|
+
//# sourceMappingURL=fit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit.d.ts","sourceRoot":"","sources":["../../src/compositor/fit.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9D,+DAA+D;AAC/D,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACnD;AAwBD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,QAAQ,GACd,SAAS,CAoBX"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// Object-fit math shared by the image and video renderers.
|
|
2
|
+
//
|
|
3
|
+
// Given the element box and the media's natural dimensions, produce the
|
|
4
|
+
// quad to draw (centered in the box) and the texture sub-region to
|
|
5
|
+
// sample. CSS object-fit semantics:
|
|
6
|
+
//
|
|
7
|
+
// cover scale media to FILL the box, crop the overflow (uv crop)
|
|
8
|
+
// contain scale media to FIT inside the box, letterbox (smaller quad)
|
|
9
|
+
// fill stretch media to the box exactly (the pre-fit behavior)
|
|
10
|
+
// none natural media size, centered, cropped to the box
|
|
11
|
+
//
|
|
12
|
+
// Default is 'cover', matching the prevailing video-API convention.
|
|
13
|
+
//
|
|
14
|
+
// SOURCE CROP (§5.3): an optional normalized sub-rectangle of the media
|
|
15
|
+
// selected BEFORE fit. The fit math runs against the cropped region's
|
|
16
|
+
// pixel dimensions, then the resulting uvRect is remapped back into the
|
|
17
|
+
// crop sub-rect — so crop picks WHICH part of the source is shown and
|
|
18
|
+
// fit governs how that part maps into the box. Identity crop (0,0,1,1)
|
|
19
|
+
// is a no-op, preserving the pre-crop behavior exactly.
|
|
20
|
+
const FULL_UV = [0, 0, 1, 1];
|
|
21
|
+
const clamp01 = (n) => (n < 0 ? 0 : n > 1 ? 1 : n);
|
|
22
|
+
/**
|
|
23
|
+
* Validate + clamp a crop rect to the unit square, returning null for an
|
|
24
|
+
* absent, malformed, or identity (whole-source) crop so callers can skip
|
|
25
|
+
* it entirely.
|
|
26
|
+
*/
|
|
27
|
+
function normalizeCrop(crop) {
|
|
28
|
+
if (!crop)
|
|
29
|
+
return null;
|
|
30
|
+
const { x, y, width, height } = crop;
|
|
31
|
+
if (![x, y, width, height].every((n) => Number.isFinite(n)))
|
|
32
|
+
return null;
|
|
33
|
+
const cx = clamp01(x);
|
|
34
|
+
const cy = clamp01(y);
|
|
35
|
+
const cw = Math.min(clamp01(width), 1 - cx);
|
|
36
|
+
const ch = Math.min(clamp01(height), 1 - cy);
|
|
37
|
+
if (cw <= 0 || ch <= 0)
|
|
38
|
+
return null;
|
|
39
|
+
if (cx === 0 && cy === 0 && cw === 1 && ch === 1)
|
|
40
|
+
return null; // identity
|
|
41
|
+
return { x: cx, y: cy, width: cw, height: ch };
|
|
42
|
+
}
|
|
43
|
+
export function computeObjectFit(fit, boxWidth, boxHeight, mediaWidth, mediaHeight, crop) {
|
|
44
|
+
const c = normalizeCrop(crop);
|
|
45
|
+
// Fit runs against the CROPPED region's pixel size; the cropped region
|
|
46
|
+
// becomes the effective media. uvRect comes back in [0,1] of that
|
|
47
|
+
// region and is remapped into the crop sub-rect below.
|
|
48
|
+
const mw = c ? mediaWidth * c.width : mediaWidth;
|
|
49
|
+
const mh = c ? mediaHeight * c.height : mediaHeight;
|
|
50
|
+
const base = fitCore(fit, boxWidth, boxHeight, mw, mh);
|
|
51
|
+
if (!c)
|
|
52
|
+
return base;
|
|
53
|
+
const [u0, v0, u1, v1] = base.uvRect;
|
|
54
|
+
return {
|
|
55
|
+
drawWidth: base.drawWidth,
|
|
56
|
+
drawHeight: base.drawHeight,
|
|
57
|
+
uvRect: [
|
|
58
|
+
c.x + u0 * c.width,
|
|
59
|
+
c.y + v0 * c.height,
|
|
60
|
+
c.x + u1 * c.width,
|
|
61
|
+
c.y + v1 * c.height,
|
|
62
|
+
],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function fitCore(fit, boxWidth, boxHeight, mediaWidth, mediaHeight) {
|
|
66
|
+
if (boxWidth <= 0 || boxHeight <= 0 ||
|
|
67
|
+
mediaWidth <= 0 || mediaHeight <= 0 ||
|
|
68
|
+
fit === 'fill') {
|
|
69
|
+
return { drawWidth: boxWidth, drawHeight: boxHeight, uvRect: FULL_UV };
|
|
70
|
+
}
|
|
71
|
+
switch (fit) {
|
|
72
|
+
case 'contain': {
|
|
73
|
+
const scale = Math.min(boxWidth / mediaWidth, boxHeight / mediaHeight);
|
|
74
|
+
return {
|
|
75
|
+
drawWidth: mediaWidth * scale,
|
|
76
|
+
drawHeight: mediaHeight * scale,
|
|
77
|
+
uvRect: FULL_UV,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
case 'none': {
|
|
81
|
+
// Natural size, centered, cropped to the box.
|
|
82
|
+
const drawWidth = Math.min(boxWidth, mediaWidth);
|
|
83
|
+
const drawHeight = Math.min(boxHeight, mediaHeight);
|
|
84
|
+
const insetU = (1 - drawWidth / mediaWidth) / 2;
|
|
85
|
+
const insetV = (1 - drawHeight / mediaHeight) / 2;
|
|
86
|
+
return {
|
|
87
|
+
drawWidth,
|
|
88
|
+
drawHeight,
|
|
89
|
+
uvRect: [insetU, insetV, 1 - insetU, 1 - insetV],
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
case 'cover':
|
|
93
|
+
default: {
|
|
94
|
+
const scale = Math.max(boxWidth / mediaWidth, boxHeight / mediaHeight);
|
|
95
|
+
// Visible media region after the crop, as a fraction of the media.
|
|
96
|
+
const insetU = (1 - boxWidth / (mediaWidth * scale)) / 2;
|
|
97
|
+
const insetV = (1 - boxHeight / (mediaHeight * scale)) / 2;
|
|
98
|
+
return {
|
|
99
|
+
drawWidth: boxWidth,
|
|
100
|
+
drawHeight: boxHeight,
|
|
101
|
+
uvRect: [insetU, insetV, 1 - insetU, 1 - insetV],
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=fit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fit.js","sourceRoot":"","sources":["../../src/compositor/fit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Camera, Element, Source } from '@clipkit/protocol';
|
|
2
|
+
import type { CanvasDimensions } from './unit.js';
|
|
3
|
+
export interface ResolvedLight {
|
|
4
|
+
ambient: boolean;
|
|
5
|
+
/** Unit direction TOWARD the light (world space). Unused for ambient. */
|
|
6
|
+
dir: [number, number, number];
|
|
7
|
+
/** Linear-ish RGB, already scaled by intensity. */
|
|
8
|
+
color: [number, number, number];
|
|
9
|
+
}
|
|
10
|
+
/** Resolve `source.lights` at `time`. Empty/absent ⇒ []. */
|
|
11
|
+
export declare function resolveLights(source: Source, time: number): ResolvedLight[];
|
|
12
|
+
export interface ResolvedMaterial {
|
|
13
|
+
roughness: number;
|
|
14
|
+
metalness: number;
|
|
15
|
+
reflectivity: number;
|
|
16
|
+
emissive: number;
|
|
17
|
+
/** Tangent-space normal map URL (§4.8 Phase 2), or null. */
|
|
18
|
+
normalMap: string | null;
|
|
19
|
+
/** Normal-map perturbation strength (0 = flat). */
|
|
20
|
+
normalScale: number;
|
|
21
|
+
}
|
|
22
|
+
/** Resolve an element's `material` at `time`, or null if it has none. */
|
|
23
|
+
export declare function resolveMaterial(element: Element, time: number): ResolvedMaterial | null;
|
|
24
|
+
export interface ResolvedEnvironment {
|
|
25
|
+
/** Up to 4 gradient stops, sorted by offset (empty for image envs). */
|
|
26
|
+
stops: Array<{
|
|
27
|
+
offset: number;
|
|
28
|
+
color: [number, number, number];
|
|
29
|
+
}>;
|
|
30
|
+
/** Mean color — the irradiance / fully-rough reflection fallback. */
|
|
31
|
+
avg: [number, number, number];
|
|
32
|
+
/**
|
|
33
|
+
* Equirectangular environment image URL (§4.8 Phase 3), or null for a
|
|
34
|
+
* gradient env. The runtime resolves it to a bound texture at draw time
|
|
35
|
+
* (it samples the lat-long image along the reflection vector).
|
|
36
|
+
*/
|
|
37
|
+
image: string | null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve `source.environment`, or null if absent. A gradient env
|
|
41
|
+
* (offset 0 = down, 1 = up) returns sorted stops + their mean; an image
|
|
42
|
+
* env returns its `src` (the runtime binds the equirect texture and the
|
|
43
|
+
* shader samples it along the reflection vector). `avg` for an image is
|
|
44
|
+
* filled in by the runtime from the loaded pixels.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveEnvironment(source: Source, _time: number): ResolvedEnvironment | null;
|
|
47
|
+
export interface ResolvedBloom {
|
|
48
|
+
threshold: number;
|
|
49
|
+
knee: number;
|
|
50
|
+
intensity: number;
|
|
51
|
+
radius: number;
|
|
52
|
+
}
|
|
53
|
+
/** Resolve `source.bloom` at `time`, or null if absent / a no-op. */
|
|
54
|
+
export declare function resolveBloom(source: Source, time: number): ResolvedBloom | null;
|
|
55
|
+
/**
|
|
56
|
+
* The camera's eye position in world (canvas-pixel) space. From the pose
|
|
57
|
+
* V = T(o)·R⁻¹·T(−e)·T(−o) and perspective `d`, the eye is the point that
|
|
58
|
+
* maps to the lens apex: `eye = o + e + d · (R·ẑ)`. With no pose this is
|
|
59
|
+
* `(ox, oy, d)` — the lens distance `d` in front of the origin. Used as
|
|
60
|
+
* the view-vector origin so specular sweeps as the camera moves.
|
|
61
|
+
*/
|
|
62
|
+
export declare function cameraEyeWorld(camera: Camera, time: number, canvas: CanvasDimensions): [number, number, number];
|
|
63
|
+
//# sourceMappingURL=lighting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lighting.d.ts","sourceRoot":"","sources":["../../src/compositor/lighting.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAgC,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAI/G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAUlD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,mDAAmD;IACnD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAwB3E;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAWvF;AAED,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IAClE,qEAAqE;IACrE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAmB5F;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAY/E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,GACvB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAuB1B"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// Lighting resolution (CKP/1.0 §4.8). Pure: resolves a Source's `lights`
|
|
2
|
+
// and an element's `material` to numbers at a given time, and derives the
|
|
3
|
+
// camera's world-space eye position (for view-dependent specular). No DOM,
|
|
4
|
+
// no GPU. The shading itself lives in the backends.
|
|
5
|
+
import { interpolateKeyframes } from '../animation/keyframes.js';
|
|
6
|
+
import { isExpr, evalExpr } from '../animation/expr.js';
|
|
7
|
+
import { parseColor } from './color.js';
|
|
8
|
+
const DEG = Math.PI / 180;
|
|
9
|
+
function num(v, time, fallback) {
|
|
10
|
+
if (v === undefined)
|
|
11
|
+
return fallback;
|
|
12
|
+
if (isExpr(v))
|
|
13
|
+
return evalExpr(v, { t: time, dur: 0, i: 0, n: 1, value: fallback });
|
|
14
|
+
return Array.isArray(v) ? interpolateKeyframes(v, time) : v;
|
|
15
|
+
}
|
|
16
|
+
/** Resolve `source.lights` at `time`. Empty/absent ⇒ []. */
|
|
17
|
+
export function resolveLights(source, time) {
|
|
18
|
+
const lights = source.lights;
|
|
19
|
+
if (!lights || lights.length === 0)
|
|
20
|
+
return [];
|
|
21
|
+
const out = [];
|
|
22
|
+
for (const l of lights) {
|
|
23
|
+
const c = parseColor(l.color ?? '#ffffff');
|
|
24
|
+
const intensity = num(l.intensity, time, 1);
|
|
25
|
+
const color = [c[0] * intensity, c[1] * intensity, c[2] * intensity];
|
|
26
|
+
if (l.type === 'ambient') {
|
|
27
|
+
out.push({ ambient: true, dir: [0, 0, 1], color });
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// azimuth around the view axis (0 = +x, CCW), elevation above the
|
|
31
|
+
// screen plane toward the viewer (+z). Direction points to the light.
|
|
32
|
+
const az = num(l.azimuth, time, 0) * DEG;
|
|
33
|
+
const el = num(l.elevation, time, 45) * DEG;
|
|
34
|
+
const ce = Math.cos(el);
|
|
35
|
+
out.push({
|
|
36
|
+
ambient: false,
|
|
37
|
+
dir: [ce * Math.cos(az), ce * Math.sin(az), Math.sin(el)],
|
|
38
|
+
color,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return out;
|
|
43
|
+
}
|
|
44
|
+
/** Resolve an element's `material` at `time`, or null if it has none. */
|
|
45
|
+
export function resolveMaterial(element, time) {
|
|
46
|
+
const m = element.material;
|
|
47
|
+
if (!m)
|
|
48
|
+
return null;
|
|
49
|
+
return {
|
|
50
|
+
roughness: Math.max(0.02, Math.min(1, num(m.roughness, time, 0.5))),
|
|
51
|
+
metalness: Math.max(0, Math.min(1, num(m.metalness, time, 0))),
|
|
52
|
+
reflectivity: Math.max(0, num(m.reflectivity, time, 1)),
|
|
53
|
+
emissive: Math.max(0, num(m.emissive, time, 0)),
|
|
54
|
+
normalMap: typeof m.normal_map === 'string' && m.normal_map ? m.normal_map : null,
|
|
55
|
+
normalScale: Math.max(0, num(m.normal_scale, time, 1)),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolve `source.environment`, or null if absent. A gradient env
|
|
60
|
+
* (offset 0 = down, 1 = up) returns sorted stops + their mean; an image
|
|
61
|
+
* env returns its `src` (the runtime binds the equirect texture and the
|
|
62
|
+
* shader samples it along the reflection vector). `avg` for an image is
|
|
63
|
+
* filled in by the runtime from the loaded pixels.
|
|
64
|
+
*/
|
|
65
|
+
export function resolveEnvironment(source, _time) {
|
|
66
|
+
const env = source.environment;
|
|
67
|
+
if (!env)
|
|
68
|
+
return null;
|
|
69
|
+
if (env.type === 'image') {
|
|
70
|
+
if (!env.src)
|
|
71
|
+
return null;
|
|
72
|
+
return { stops: [], avg: [0.5, 0.5, 0.5], image: env.src };
|
|
73
|
+
}
|
|
74
|
+
if (env.type !== 'gradient' || !env.stops || env.stops.length === 0)
|
|
75
|
+
return null;
|
|
76
|
+
const stops = env.stops
|
|
77
|
+
.slice(0, 4)
|
|
78
|
+
.map((s) => {
|
|
79
|
+
const c = parseColor(s.color);
|
|
80
|
+
return { offset: Math.max(0, Math.min(1, s.offset)), color: [c[0], c[1], c[2]] };
|
|
81
|
+
})
|
|
82
|
+
.sort((a, b) => a.offset - b.offset);
|
|
83
|
+
const avg = [0, 0, 0];
|
|
84
|
+
for (const s of stops) {
|
|
85
|
+
avg[0] += s.color[0];
|
|
86
|
+
avg[1] += s.color[1];
|
|
87
|
+
avg[2] += s.color[2];
|
|
88
|
+
}
|
|
89
|
+
avg[0] /= stops.length;
|
|
90
|
+
avg[1] /= stops.length;
|
|
91
|
+
avg[2] /= stops.length;
|
|
92
|
+
return { stops, avg, image: null };
|
|
93
|
+
}
|
|
94
|
+
/** Resolve `source.bloom` at `time`, or null if absent / a no-op. */
|
|
95
|
+
export function resolveBloom(source, time) {
|
|
96
|
+
const b = source.bloom;
|
|
97
|
+
if (!b)
|
|
98
|
+
return null;
|
|
99
|
+
const intensity = Math.max(0, num(b.intensity, time, 1));
|
|
100
|
+
const radius = Math.max(0, num(b.radius, time, 24));
|
|
101
|
+
if (intensity <= 0 || radius <= 0)
|
|
102
|
+
return null;
|
|
103
|
+
return {
|
|
104
|
+
threshold: Math.max(0, Math.min(1, num(b.threshold, time, 0.75))),
|
|
105
|
+
knee: Math.max(1e-3, num(b.knee, time, 0.1)),
|
|
106
|
+
intensity,
|
|
107
|
+
radius,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The camera's eye position in world (canvas-pixel) space. From the pose
|
|
112
|
+
* V = T(o)·R⁻¹·T(−e)·T(−o) and perspective `d`, the eye is the point that
|
|
113
|
+
* maps to the lens apex: `eye = o + e + d · (R·ẑ)`. With no pose this is
|
|
114
|
+
* `(ox, oy, d)` — the lens distance `d` in front of the origin. Used as
|
|
115
|
+
* the view-vector origin so specular sweeps as the camera moves.
|
|
116
|
+
*/
|
|
117
|
+
export function cameraEyeWorld(camera, time, canvas) {
|
|
118
|
+
const d = Math.max(1e-3, num(camera.perspective, time, 1000));
|
|
119
|
+
const ox = camera.origin_x !== undefined && typeof camera.origin_x === 'number'
|
|
120
|
+
? camera.origin_x : canvas.width / 2;
|
|
121
|
+
const oy = camera.origin_y !== undefined && typeof camera.origin_y === 'number'
|
|
122
|
+
? camera.origin_y : canvas.height / 2;
|
|
123
|
+
const ex = num(camera.x, time, 0);
|
|
124
|
+
const ey = num(camera.y, time, 0);
|
|
125
|
+
const ez = num(camera.z, time, 0);
|
|
126
|
+
// R·ẑ (camera forward), R = Rz·Ry·Rx — third column of the rotation.
|
|
127
|
+
const rx = num(camera.x_rotation, time, 0) * DEG;
|
|
128
|
+
const ry = num(camera.y_rotation, time, 0) * DEG;
|
|
129
|
+
const rz = num(camera.z_rotation, time, 0) * DEG;
|
|
130
|
+
const cx = Math.cos(rx), sx = Math.sin(rx);
|
|
131
|
+
const cy = Math.cos(ry), sy = Math.sin(ry);
|
|
132
|
+
const cz = Math.cos(rz), sz = Math.sin(rz);
|
|
133
|
+
// ẑ=(0,0,1) through Rz·Ry·Rx: Rx→(0,−sx,cx); Ry→(cx·sy,−sx,cx·cy);
|
|
134
|
+
// Rz rotates the (x,y) pair.
|
|
135
|
+
const vx = cx * sy, vy = -sx, vz = cx * cy;
|
|
136
|
+
const fx = vx * cz - vy * sz;
|
|
137
|
+
const fy = vx * sz + vy * cz;
|
|
138
|
+
const fz = vz;
|
|
139
|
+
return [ox + ex + d * fx, oy + ey + d * fy, ez + d * fz];
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=lighting.js.map
|