@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.
Files changed (219) hide show
  1. package/LICENSE +54 -0
  2. package/README.md +98 -0
  3. package/dist/animation/easings.d.ts +9 -0
  4. package/dist/animation/easings.d.ts.map +1 -0
  5. package/dist/animation/easings.js +230 -0
  6. package/dist/animation/easings.js.map +1 -0
  7. package/dist/animation/expr.d.ts +44 -0
  8. package/dist/animation/expr.d.ts.map +1 -0
  9. package/dist/animation/expr.js +236 -0
  10. package/dist/animation/expr.js.map +1 -0
  11. package/dist/animation/keyframes.d.ts +23 -0
  12. package/dist/animation/keyframes.d.ts.map +1 -0
  13. package/dist/animation/keyframes.js +117 -0
  14. package/dist/animation/keyframes.js.map +1 -0
  15. package/dist/animation/motion-path.d.ts +18 -0
  16. package/dist/animation/motion-path.d.ts.map +1 -0
  17. package/dist/animation/motion-path.js +269 -0
  18. package/dist/animation/motion-path.js.map +1 -0
  19. package/dist/animation/noise1d.d.ts +5 -0
  20. package/dist/animation/noise1d.d.ts.map +1 -0
  21. package/dist/animation/noise1d.js +27 -0
  22. package/dist/animation/noise1d.js.map +1 -0
  23. package/dist/animation/presets.d.ts +60 -0
  24. package/dist/animation/presets.d.ts.map +1 -0
  25. package/dist/animation/presets.js +221 -0
  26. package/dist/animation/presets.js.map +1 -0
  27. package/dist/assets/cache.d.ts +18 -0
  28. package/dist/assets/cache.d.ts.map +1 -0
  29. package/dist/assets/cache.js +56 -0
  30. package/dist/assets/cache.js.map +1 -0
  31. package/dist/assets/fonts.d.ts +20 -0
  32. package/dist/assets/fonts.d.ts.map +1 -0
  33. package/dist/assets/fonts.js +127 -0
  34. package/dist/assets/fonts.js.map +1 -0
  35. package/dist/assets/loader.d.ts +18 -0
  36. package/dist/assets/loader.d.ts.map +1 -0
  37. package/dist/assets/loader.js +87 -0
  38. package/dist/assets/loader.js.map +1 -0
  39. package/dist/assets/lut.d.ts +5 -0
  40. package/dist/assets/lut.d.ts.map +1 -0
  41. package/dist/assets/lut.js +77 -0
  42. package/dist/assets/lut.js.map +1 -0
  43. package/dist/assets/media-time.d.ts +31 -0
  44. package/dist/assets/media-time.d.ts.map +1 -0
  45. package/dist/assets/media-time.js +65 -0
  46. package/dist/assets/media-time.js.map +1 -0
  47. package/dist/assets/mp4-frame-source.d.ts +44 -0
  48. package/dist/assets/mp4-frame-source.d.ts.map +1 -0
  49. package/dist/assets/mp4-frame-source.js +387 -0
  50. package/dist/assets/mp4-frame-source.js.map +1 -0
  51. package/dist/audio/encoder.d.ts +31 -0
  52. package/dist/audio/encoder.d.ts.map +1 -0
  53. package/dist/audio/encoder.js +96 -0
  54. package/dist/audio/encoder.js.map +1 -0
  55. package/dist/audio/fades.d.ts +16 -0
  56. package/dist/audio/fades.d.ts.map +1 -0
  57. package/dist/audio/fades.js +43 -0
  58. package/dist/audio/fades.js.map +1 -0
  59. package/dist/audio/limiter.d.ts +8 -0
  60. package/dist/audio/limiter.d.ts.map +1 -0
  61. package/dist/audio/limiter.js +39 -0
  62. package/dist/audio/limiter.js.map +1 -0
  63. package/dist/audio/loader.d.ts +6 -0
  64. package/dist/audio/loader.d.ts.map +1 -0
  65. package/dist/audio/loader.js +42 -0
  66. package/dist/audio/loader.js.map +1 -0
  67. package/dist/audio/mixer.d.ts +17 -0
  68. package/dist/audio/mixer.d.ts.map +1 -0
  69. package/dist/audio/mixer.js +204 -0
  70. package/dist/audio/mixer.js.map +1 -0
  71. package/dist/audio/varispeed.d.ts +24 -0
  72. package/dist/audio/varispeed.d.ts.map +1 -0
  73. package/dist/audio/varispeed.js +114 -0
  74. package/dist/audio/varispeed.js.map +1 -0
  75. package/dist/audio/wav.d.ts +6 -0
  76. package/dist/audio/wav.d.ts.map +1 -0
  77. package/dist/audio/wav.js +62 -0
  78. package/dist/audio/wav.js.map +1 -0
  79. package/dist/backend/backend.d.ts +579 -0
  80. package/dist/backend/backend.d.ts.map +1 -0
  81. package/dist/backend/backend.js +17 -0
  82. package/dist/backend/backend.js.map +1 -0
  83. package/dist/backend/webgl-backend.d.ts +97 -0
  84. package/dist/backend/webgl-backend.d.ts.map +1 -0
  85. package/dist/backend/webgl-backend.js +2142 -0
  86. package/dist/backend/webgl-backend.js.map +1 -0
  87. package/dist/backend/webgpu-backend.d.ts +121 -0
  88. package/dist/backend/webgpu-backend.d.ts.map +1 -0
  89. package/dist/backend/webgpu-backend.js +2481 -0
  90. package/dist/backend/webgpu-backend.js.map +1 -0
  91. package/dist/compositor/bitfont.d.ts +8 -0
  92. package/dist/compositor/bitfont.d.ts.map +1 -0
  93. package/dist/compositor/bitfont.js +52 -0
  94. package/dist/compositor/bitfont.js.map +1 -0
  95. package/dist/compositor/camera.d.ts +5 -0
  96. package/dist/compositor/camera.d.ts.map +1 -0
  97. package/dist/compositor/camera.js +114 -0
  98. package/dist/compositor/camera.js.map +1 -0
  99. package/dist/compositor/color.d.ts +26 -0
  100. package/dist/compositor/color.d.ts.map +1 -0
  101. package/dist/compositor/color.js +189 -0
  102. package/dist/compositor/color.js.map +1 -0
  103. package/dist/compositor/element-renderers/caption.d.ts +4 -0
  104. package/dist/compositor/element-renderers/caption.d.ts.map +1 -0
  105. package/dist/compositor/element-renderers/caption.js +376 -0
  106. package/dist/compositor/element-renderers/caption.js.map +1 -0
  107. package/dist/compositor/element-renderers/group.d.ts +12 -0
  108. package/dist/compositor/element-renderers/group.d.ts.map +1 -0
  109. package/dist/compositor/element-renderers/group.js +259 -0
  110. package/dist/compositor/element-renderers/group.js.map +1 -0
  111. package/dist/compositor/element-renderers/image.d.ts +4 -0
  112. package/dist/compositor/element-renderers/image.d.ts.map +1 -0
  113. package/dist/compositor/element-renderers/image.js +97 -0
  114. package/dist/compositor/element-renderers/image.js.map +1 -0
  115. package/dist/compositor/element-renderers/lit.d.ts +6 -0
  116. package/dist/compositor/element-renderers/lit.d.ts.map +1 -0
  117. package/dist/compositor/element-renderers/lit.js +82 -0
  118. package/dist/compositor/element-renderers/lit.js.map +1 -0
  119. package/dist/compositor/element-renderers/particles.d.ts +4 -0
  120. package/dist/compositor/element-renderers/particles.d.ts.map +1 -0
  121. package/dist/compositor/element-renderers/particles.js +212 -0
  122. package/dist/compositor/element-renderers/particles.js.map +1 -0
  123. package/dist/compositor/element-renderers/shape.d.ts +4 -0
  124. package/dist/compositor/element-renderers/shape.d.ts.map +1 -0
  125. package/dist/compositor/element-renderers/shape.js +171 -0
  126. package/dist/compositor/element-renderers/shape.js.map +1 -0
  127. package/dist/compositor/element-renderers/svg.d.ts +4 -0
  128. package/dist/compositor/element-renderers/svg.d.ts.map +1 -0
  129. package/dist/compositor/element-renderers/svg.js +210 -0
  130. package/dist/compositor/element-renderers/svg.js.map +1 -0
  131. package/dist/compositor/element-renderers/text.d.ts +25 -0
  132. package/dist/compositor/element-renderers/text.d.ts.map +1 -0
  133. package/dist/compositor/element-renderers/text.js +1358 -0
  134. package/dist/compositor/element-renderers/text.js.map +1 -0
  135. package/dist/compositor/element-renderers/video.d.ts +12 -0
  136. package/dist/compositor/element-renderers/video.d.ts.map +1 -0
  137. package/dist/compositor/element-renderers/video.js +109 -0
  138. package/dist/compositor/element-renderers/video.js.map +1 -0
  139. package/dist/compositor/fit.d.ts +18 -0
  140. package/dist/compositor/fit.d.ts.map +1 -0
  141. package/dist/compositor/fit.js +106 -0
  142. package/dist/compositor/fit.js.map +1 -0
  143. package/dist/compositor/lighting.d.ts +63 -0
  144. package/dist/compositor/lighting.d.ts.map +1 -0
  145. package/dist/compositor/lighting.js +141 -0
  146. package/dist/compositor/lighting.js.map +1 -0
  147. package/dist/compositor/mat4.d.ts +88 -0
  148. package/dist/compositor/mat4.d.ts.map +1 -0
  149. package/dist/compositor/mat4.js +245 -0
  150. package/dist/compositor/mat4.js.map +1 -0
  151. package/dist/compositor/project.d.ts +24 -0
  152. package/dist/compositor/project.d.ts.map +1 -0
  153. package/dist/compositor/project.js +105 -0
  154. package/dist/compositor/project.js.map +1 -0
  155. package/dist/compositor/render-context.d.ts +194 -0
  156. package/dist/compositor/render-context.d.ts.map +1 -0
  157. package/dist/compositor/render-context.js +10 -0
  158. package/dist/compositor/render-context.js.map +1 -0
  159. package/dist/compositor/resolve.d.ts +80 -0
  160. package/dist/compositor/resolve.d.ts.map +1 -0
  161. package/dist/compositor/resolve.js +276 -0
  162. package/dist/compositor/resolve.js.map +1 -0
  163. package/dist/compositor/scene.d.ts +10 -0
  164. package/dist/compositor/scene.d.ts.map +1 -0
  165. package/dist/compositor/scene.js +658 -0
  166. package/dist/compositor/scene.js.map +1 -0
  167. package/dist/compositor/transform.d.ts +73 -0
  168. package/dist/compositor/transform.d.ts.map +1 -0
  169. package/dist/compositor/transform.js +229 -0
  170. package/dist/compositor/transform.js.map +1 -0
  171. package/dist/compositor/unit.d.ts +27 -0
  172. package/dist/compositor/unit.d.ts.map +1 -0
  173. package/dist/compositor/unit.js +74 -0
  174. package/dist/compositor/unit.js.map +1 -0
  175. package/dist/encoder/exporter.d.ts +95 -0
  176. package/dist/encoder/exporter.d.ts.map +1 -0
  177. package/dist/encoder/exporter.js +341 -0
  178. package/dist/encoder/exporter.js.map +1 -0
  179. package/dist/encoder/index.d.ts +3 -0
  180. package/dist/encoder/index.d.ts.map +1 -0
  181. package/dist/encoder/index.js +2 -0
  182. package/dist/encoder/index.js.map +1 -0
  183. package/dist/index.d.ts +12 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +27 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/logger.d.ts +13 -0
  188. package/dist/logger.d.ts.map +1 -0
  189. package/dist/logger.js +32 -0
  190. package/dist/logger.js.map +1 -0
  191. package/dist/runtime.d.ts +216 -0
  192. package/dist/runtime.d.ts.map +1 -0
  193. package/dist/runtime.js +1012 -0
  194. package/dist/runtime.js.map +1 -0
  195. package/dist/svg/morph.d.ts +6 -0
  196. package/dist/svg/morph.d.ts.map +1 -0
  197. package/dist/svg/morph.js +62 -0
  198. package/dist/svg/morph.js.map +1 -0
  199. package/dist/svg/svg-renderer.d.ts +18 -0
  200. package/dist/svg/svg-renderer.d.ts.map +1 -0
  201. package/dist/svg/svg-renderer.js +142 -0
  202. package/dist/svg/svg-renderer.js.map +1 -0
  203. package/dist/text/caption-chunk.d.ts +17 -0
  204. package/dist/text/caption-chunk.d.ts.map +1 -0
  205. package/dist/text/caption-chunk.js +76 -0
  206. package/dist/text/caption-chunk.js.map +1 -0
  207. package/dist/text/font-atlas.d.ts +63 -0
  208. package/dist/text/font-atlas.d.ts.map +1 -0
  209. package/dist/text/font-atlas.js +225 -0
  210. package/dist/text/font-atlas.js.map +1 -0
  211. package/dist/text/measure.d.ts +38 -0
  212. package/dist/text/measure.d.ts.map +1 -0
  213. package/dist/text/measure.js +164 -0
  214. package/dist/text/measure.js.map +1 -0
  215. package/dist/text/text-animation.d.ts +52 -0
  216. package/dist/text/text-animation.d.ts.map +1 -0
  217. package/dist/text/text-animation.js +133 -0
  218. package/dist/text/text-animation.js.map +1 -0
  219. 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