@flighthq/texture 0.2.1-next.410.a23f189 → 0.2.1-next.444.a313478

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/dist/texture.d.ts CHANGED
@@ -10,6 +10,7 @@ export declare function getTextureWidth(texture: Readonly<TextureLike>): number;
10
10
  export declare function hasTextureUvTransform(texture: Readonly<TextureUvTransform>): boolean;
11
11
  export declare function isTextureReady(texture: Readonly<TextureLike>): boolean;
12
12
  export declare function resetTextureUvTransform(texture: TextureLike): void;
13
+ export declare function setTextureFlip(texture: TextureLike, flipX: boolean, flipY: boolean): void;
13
14
  export declare function setTextureImage(texture: TextureLike, image: ImageResource | null): void;
14
15
  export declare function setTextureUvOffset(texture: TextureLike, x: number, y: number): void;
15
16
  export declare function setTextureUvRotation(texture: TextureLike, radians: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../src/texture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAOzB,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAUnE;AAKD,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAYjF;AAKD,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAU5E;AAID,wBAAgB,aAAa,CAC3B,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3C,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAaT;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAEvE;AAQD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAGhG;AASD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAkBhG;AAGD,wBAAgB,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAEtE;AAMD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAQpF;AAID,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAEtE;AAID,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAMlE;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAEvF;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAGnF;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhF;AAGD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAGlF;AAMD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAU/G"}
1
+ {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../src/texture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,OAAO,EACP,WAAW,EACX,kBAAkB,EAClB,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAOzB,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAYnE;AAKD,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAgBjF;AAKD,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAY5E;AAID,wBAAgB,aAAa,CAC3B,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,EAC3C,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAeT;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAEvE;AAQD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI,CAGhG;AASD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAyBhG;AAGD,wBAAgB,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAEtE;AAMD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAUpF;AAID,wBAAgB,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAEtE;AAID,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAQlE;AAKD,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAGzF;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAEvF;AAID,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAGnF;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhF;AAGD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAGlF;AAMD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAa/G"}
package/dist/texture.js CHANGED
@@ -7,6 +7,8 @@ import { cloneSampler, copySampler, createSampler, equalsSampler } from './sampl
7
7
  export function cloneTexture(source) {
8
8
  return createEntity({
9
9
  colorSpace: source.colorSpace,
10
+ flipX: source.flipX,
11
+ flipY: source.flipY,
10
12
  image: source.image,
11
13
  resource: source.resource ?? null,
12
14
  sampler: cloneSampler(source.sampler),
@@ -20,6 +22,8 @@ export function cloneTexture(source) {
20
22
  // preserved). Safe when out aliases source.
21
23
  export function copyTexture(out, source) {
22
24
  const colorSpace = source.colorSpace;
25
+ const flipX = source.flipX;
26
+ const flipY = source.flipY;
23
27
  const image = source.image;
24
28
  const resource = source.resource ?? null;
25
29
  const uvRotation = source.uvRotation;
@@ -27,6 +31,8 @@ export function copyTexture(out, source) {
27
31
  copyVector2(out.uvOffset, source.uvOffset);
28
32
  copyVector2(out.uvScale, source.uvScale);
29
33
  out.colorSpace = colorSpace;
34
+ out.flipX = flipX;
35
+ out.flipY = flipY;
30
36
  out.image = image;
31
37
  out.resource = resource;
32
38
  out.uvRotation = uvRotation;
@@ -37,6 +43,8 @@ export function copyTexture(out, source) {
37
43
  export function createTexture(opts) {
38
44
  return createEntity({
39
45
  colorSpace: opts?.colorSpace ?? 'srgb',
46
+ flipX: opts?.flipX ?? false,
47
+ flipY: opts?.flipY ?? false,
40
48
  image: opts?.image ?? null,
41
49
  resource: opts?.resource ?? null,
42
50
  sampler: opts?.sampler ? cloneSampler(opts.sampler) : createSampler(),
@@ -53,6 +61,8 @@ export function equalsTexture(a, b) {
53
61
  if (a === b)
54
62
  return true;
55
63
  return (a.colorSpace === b.colorSpace &&
64
+ a.flipX === b.flipX &&
65
+ a.flipY === b.flipY &&
56
66
  a.image === b.image &&
57
67
  a.uvRotation === b.uvRotation &&
58
68
  a.uvOffset.x === b.uvOffset.x &&
@@ -84,12 +94,19 @@ export function getTextureInverseUvMatrix(out, texture) {
84
94
  // Safe when out is an unrelated scratch; not intended for aliased input (no in-param here).
85
95
  export function getTextureUvMatrix(out, texture) {
86
96
  const r = texture.uvRotation;
87
- const sx = texture.uvScale.x;
88
- const sy = texture.uvScale.y;
89
- const tx = texture.uvOffset.x;
90
- const ty = texture.uvOffset.y;
97
+ // A flip is a -1 scale plus a +1 pre-offset on that axis (u → 1 - u), applied before scale/rotate/
98
+ // translate: the scale negates and the +1 (in source-uv units, so it scales) rotates into the
99
+ // translation, keeping the flipped range in [0, 1].
100
+ const flipScaleX = texture.flipX ? -1 : 1;
101
+ const flipScaleY = texture.flipY ? -1 : 1;
102
+ const sx = texture.uvScale.x * flipScaleX;
103
+ const sy = texture.uvScale.y * flipScaleY;
104
+ const preOffsetX = texture.flipX ? texture.uvScale.x : 0;
105
+ const preOffsetY = texture.flipY ? texture.uvScale.y : 0;
91
106
  const cosR = Math.cos(r);
92
107
  const sinR = Math.sin(r);
108
+ const tx = texture.uvOffset.x + cosR * preOffsetX - sinR * preOffsetY;
109
+ const ty = texture.uvOffset.y + sinR * preOffsetX + cosR * preOffsetY;
93
110
  const m = out.m;
94
111
  m[0] = sx * cosR; // (0,0)
95
112
  m[1] = sx * sinR; // (1,0)
@@ -110,7 +127,9 @@ export function getTextureWidth(texture) {
110
127
  // this so an untiled surface pays nothing for the uv-transform uniform or the extra vertex multiply;
111
128
  // only a texture that actually remaps its uv compiles the transforming path.
112
129
  export function hasTextureUvTransform(texture) {
113
- return (texture.uvScale.x !== 1 ||
130
+ return (texture.flipX ||
131
+ texture.flipY ||
132
+ texture.uvScale.x !== 1 ||
114
133
  texture.uvScale.y !== 1 ||
115
134
  texture.uvOffset.x !== 0 ||
116
135
  texture.uvOffset.y !== 0 ||
@@ -121,15 +140,24 @@ export function hasTextureUvTransform(texture) {
121
140
  export function isTextureReady(texture) {
122
141
  return texture.image !== null;
123
142
  }
124
- // Resets the KHR_texture_transform to identity in place: zero offset, no rotation, unit scale.
125
- // Leaves the image, color space, and sampler untouched.
143
+ // Resets the KHR_texture_transform to identity in place: zero offset, no rotation, unit scale, and
144
+ // no flip. Leaves the image, color space, and sampler untouched.
126
145
  export function resetTextureUvTransform(texture) {
146
+ texture.flipX = false;
147
+ texture.flipY = false;
127
148
  texture.uvOffset.x = 0;
128
149
  texture.uvOffset.y = 0;
129
150
  texture.uvRotation = 0;
130
151
  texture.uvScale.x = 1;
131
152
  texture.uvScale.y = 1;
132
153
  }
154
+ // Sets the vertical/horizontal flip flags in place. A flip mirrors the sampled coordinate on that
155
+ // axis (`u → 1 - u`, `v → 1 - v`) before scale/rotate/translate — the sampler-space fix for an
156
+ // upside-down image or render-target, with no pixel copy.
157
+ export function setTextureFlip(texture, flipX, flipY) {
158
+ texture.flipX = flipX;
159
+ texture.flipY = flipY;
160
+ }
133
161
  // Binds (or clears, with null) the texture's image source in place. Does not touch sampling state
134
162
  // or the uv-transform.
135
163
  export function setTextureImage(texture, image) {
@@ -155,6 +183,9 @@ export function setTextureUvScale(texture, x, y) {
155
183
  // getTextureUvMatrix's result, computed inline to avoid allocating a scratch matrix.
156
184
  // Out-param form — out may be any Vector2; no aliasing hazard (u and v are scalar inputs).
157
185
  export function transformTextureUv(out, texture, u, v) {
186
+ // Flip mirrors the coordinate first (u → 1 - u), then the standard scale → rotate → translate.
187
+ const fu = texture.flipX ? 1 - u : u;
188
+ const fv = texture.flipY ? 1 - v : v;
158
189
  const r = texture.uvRotation;
159
190
  const sx = texture.uvScale.x;
160
191
  const sy = texture.uvScale.y;
@@ -162,7 +193,7 @@ export function transformTextureUv(out, texture, u, v) {
162
193
  const ty = texture.uvOffset.y;
163
194
  const cosR = Math.cos(r);
164
195
  const sinR = Math.sin(r);
165
- out.x = sx * cosR * u - sy * sinR * v + tx;
166
- out.y = sx * sinR * u + sy * cosR * v + ty;
196
+ out.x = sx * cosR * fu - sy * sinR * fv + tx;
197
+ out.y = sx * sinR * fu + sy * cosR * fv + ty;
167
198
  }
168
199
  //# sourceMappingURL=texture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"texture.js","sourceRoot":"","sources":["../src/texture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"texture.js","sourceRoot":"","sources":["../src/texture.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"videoTexture.d.ts","sourceRoot":"","sources":["../src/videoTexture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAQlG,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,GAAG,MAAM,CAG1E;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAUlF;AAKD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAYhG;AAKD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,YAAY,CAUlH;AAKD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAGtF;AAKD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAG/G;AAKD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAkBxG;AAID,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAGrF;AAKD,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAK1F;AAID,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAE3E;AAID,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAGjG"}
1
+ {"version":3,"file":"videoTexture.d.ts","sourceRoot":"","sources":["../src/videoTexture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AASlG,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,GAAG,MAAM,CAG1E;AAMD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,YAAY,CAYlF;AAKD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAgBhG;AAKD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,YAAY,CAYlH;AAKD,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAGtF;AAKD,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAG/G;AAMD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAExG;AAID,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAGrF;AAKD,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAK1F;AAID,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAE3E;AAID,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAGjG"}
@@ -1,6 +1,7 @@
1
1
  import { createEntity } from '@flighthq/entity';
2
2
  import { cloneVector2, copyVector2, createVector2, inverseMatrix3 } from '@flighthq/geometry';
3
3
  import { cloneSampler, copySampler, createSampler } from './sampler';
4
+ import { getTextureUvMatrix } from './texture';
4
5
  // Marks a fresh decoded frame as available for upload by bumping `frameId`. A driver calls this once
5
6
  // per rendered frame when the backing element reports new pixels (readyState advanced, or a
6
7
  // requestVideoFrameCallback fired); the GPU uploader compares the id against the one it last uploaded
@@ -16,6 +17,8 @@ export function advanceVideoTexture(videoTexture) {
16
17
  export function cloneVideoTexture(source) {
17
18
  return createEntity({
18
19
  colorSpace: source.colorSpace,
20
+ flipX: source.flipX,
21
+ flipY: source.flipY,
19
22
  frameId: -1,
20
23
  sampler: cloneSampler(source.sampler),
21
24
  source: source.source,
@@ -29,6 +32,8 @@ export function cloneVideoTexture(source) {
29
32
  // aliases source.
30
33
  export function copyVideoTexture(out, source) {
31
34
  const colorSpace = source.colorSpace;
35
+ const flipX = source.flipX;
36
+ const flipY = source.flipY;
32
37
  const frameId = source.frameId;
33
38
  const src = source.source;
34
39
  const uvRotation = source.uvRotation;
@@ -36,6 +41,8 @@ export function copyVideoTexture(out, source) {
36
41
  copyVector2(out.uvOffset, source.uvOffset);
37
42
  copyVector2(out.uvScale, source.uvScale);
38
43
  out.colorSpace = colorSpace;
44
+ out.flipX = flipX;
45
+ out.flipY = flipY;
39
46
  out.frameId = frameId;
40
47
  out.source = src;
41
48
  out.uvRotation = uvRotation;
@@ -46,6 +53,8 @@ export function copyVideoTexture(out, source) {
46
53
  export function createVideoTexture(source, opts) {
47
54
  return createEntity({
48
55
  colorSpace: opts?.colorSpace ?? 'srgb',
56
+ flipX: opts?.flipX ?? false,
57
+ flipY: opts?.flipY ?? false,
49
58
  frameId: opts?.frameId ?? -1,
50
59
  sampler: opts?.sampler ? cloneSampler(opts.sampler) : createSampler(),
51
60
  source: opts?.source ?? source,
@@ -68,27 +77,12 @@ export function getVideoTextureInverseUvMatrix(out, videoTexture) {
68
77
  getVideoTextureUvMatrix(out, videoTexture);
69
78
  inverseMatrix3(out, out);
70
79
  }
71
- // Composes the KHR_texture_transform fields (uvOffset, uvRotation, uvScale) into the column-major 3×3
72
- // matrix a shader consumes at sample time — the same layout getTextureUvMatrix produces, so a material
73
- // samples a VideoTexture through one uv-transform path. scale → rotate → translate. Out-param form.
80
+ // Composes the KHR_texture_transform fields (flip, uvOffset, uvRotation, uvScale) into the column-major
81
+ // 3×3 matrix a shader consumes at sample time. A VideoTexture is a TextureUvTransform, so this delegates
82
+ // to getTextureUvMatrix — one uv-transform path (flip → scale → rotate → translate) for both texture
83
+ // kinds. Out-param form.
74
84
  export function getVideoTextureUvMatrix(out, videoTexture) {
75
- const r = videoTexture.uvRotation;
76
- const sx = videoTexture.uvScale.x;
77
- const sy = videoTexture.uvScale.y;
78
- const tx = videoTexture.uvOffset.x;
79
- const ty = videoTexture.uvOffset.y;
80
- const cosR = Math.cos(r);
81
- const sinR = Math.sin(r);
82
- const m = out.m;
83
- m[0] = sx * cosR;
84
- m[1] = sx * sinR;
85
- m[2] = 0;
86
- m[3] = -sy * sinR;
87
- m[4] = sy * cosR;
88
- m[5] = 0;
89
- m[6] = tx;
90
- m[7] = ty;
91
- m[8] = 1;
85
+ getTextureUvMatrix(out, videoTexture);
92
86
  }
93
87
  // Returns the pixel width of the current video frame, or -1 when no element is attached or no frame
94
88
  // has decoded yet.
@@ -1 +1 @@
1
- {"version":3,"file":"videoTexture.js","sourceRoot":"","sources":["../src/videoTexture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"videoTexture.js","sourceRoot":"","sources":["../src/videoTexture.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/texture",
3
- "version": "0.2.1-next.410.a23f189",
3
+ "version": "0.2.1-next.444.a313478",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/flighthq/flight.git",
@@ -32,9 +32,9 @@
32
32
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
33
33
  },
34
34
  "dependencies": {
35
- "@flighthq/entity": "0.2.1-next.410.a23f189",
36
- "@flighthq/geometry": "0.2.1-next.410.a23f189",
37
- "@flighthq/types": "0.2.1-next.410.a23f189"
35
+ "@flighthq/entity": "0.2.1-next.444.a313478",
36
+ "@flighthq/geometry": "0.2.1-next.444.a313478",
37
+ "@flighthq/types": "0.2.1-next.444.a313478"
38
38
  },
39
39
  "devDependencies": {
40
40
  "typescript": "^5.3.0"
@@ -14,6 +14,7 @@ import {
14
14
  hasTextureUvTransform,
15
15
  isTextureReady,
16
16
  resetTextureUvTransform,
17
+ setTextureFlip,
17
18
  setTextureImage,
18
19
  setTextureUvOffset,
19
20
  setTextureUvRotation,
@@ -23,6 +24,13 @@ import {
23
24
 
24
25
  const fakeImage = { width: 32, height: 64 } as ImageResource;
25
26
 
27
+ // Applies a column-major 3×3 uv matrix to (u, v, 1), writing the transformed coordinate into out.
28
+ function multiplyMatrix3Uv(out: { x: number; y: number }, matrix: { m: ArrayLike<number> }, u: number, v: number) {
29
+ const m = matrix.m;
30
+ out.x = m[0] * u + m[3] * v + m[6];
31
+ out.y = m[1] * u + m[4] * v + m[7];
32
+ }
33
+
26
34
  describe('cloneTexture', () => {
27
35
  it('shares the image but deep-clones the sampler and uv vectors', () => {
28
36
  const source = createTexture({
@@ -247,6 +255,37 @@ describe('getTextureUvMatrix', () => {
247
255
  expect(out.m[7]).toBeCloseTo(0.75); // ty
248
256
  });
249
257
 
258
+ it('maps v to 1 - v for a vertical flip and u to 1 - u for a horizontal flip', () => {
259
+ const out = createMatrix3();
260
+ const scratch = createVector2();
261
+
262
+ getTextureUvMatrix(out, createTexture({ flipY: true }));
263
+ // Apply the matrix to (u, v) = (0.2, 0.3): expect (0.2, 0.7).
264
+ multiplyMatrix3Uv(scratch, out, 0.2, 0.3);
265
+ expect(scratch.x).toBeCloseTo(0.2);
266
+ expect(scratch.y).toBeCloseTo(0.7);
267
+
268
+ getTextureUvMatrix(out, createTexture({ flipX: true }));
269
+ multiplyMatrix3Uv(scratch, out, 0.2, 0.3);
270
+ expect(scratch.x).toBeCloseTo(0.8);
271
+ expect(scratch.y).toBeCloseTo(0.3);
272
+ });
273
+
274
+ it('agrees with transformTextureUv when a flip combines with scale, rotation, and offset', () => {
275
+ const texture = createTexture({ flipX: true, flipY: true, uvScale: createVector2(2, 3) });
276
+ setTextureUvOffset(texture, 0.1, 0.2);
277
+ setTextureUvRotation(texture, 0.5);
278
+ const out = createMatrix3();
279
+ getTextureUvMatrix(out, texture);
280
+
281
+ const viaMatrix = createVector2();
282
+ multiplyMatrix3Uv(viaMatrix, out, 0.35, 0.6);
283
+ const viaInline = createVector2();
284
+ transformTextureUv(viaInline, texture, 0.35, 0.6);
285
+ expect(viaMatrix.x).toBeCloseTo(viaInline.x);
286
+ expect(viaMatrix.y).toBeCloseTo(viaInline.y);
287
+ });
288
+
250
289
  it('encodes scale in the diagonal', () => {
251
290
  const texture = createTexture();
252
291
  setTextureUvScale(texture, 2, 3);
@@ -312,6 +351,11 @@ describe('hasTextureUvTransform', () => {
312
351
  expect(hasTextureUvTransform(texture)).toBe(true);
313
352
  });
314
353
 
354
+ it('is true when a flip flag is set', () => {
355
+ expect(hasTextureUvTransform(createTexture({ flipY: true }))).toBe(true);
356
+ expect(hasTextureUvTransform(createTexture({ flipX: true }))).toBe(true);
357
+ });
358
+
315
359
  it('is true when the rotation is non-zero', () => {
316
360
  const texture = createTexture();
317
361
  setTextureUvRotation(texture, 0.5);
@@ -360,6 +404,19 @@ describe('resetTextureUvTransform', () => {
360
404
  });
361
405
  });
362
406
 
407
+ describe('setTextureFlip', () => {
408
+ it('sets the flip flags in place', () => {
409
+ const texture = createTexture();
410
+ expect(texture.flipX).toBe(false);
411
+ setTextureFlip(texture, true, true);
412
+ expect(texture.flipX).toBe(true);
413
+ expect(texture.flipY).toBe(true);
414
+ setTextureFlip(texture, false, true);
415
+ expect(texture.flipX).toBe(false);
416
+ expect(texture.flipY).toBe(true);
417
+ });
418
+ });
419
+
363
420
  describe('setTextureImage', () => {
364
421
  it('binds and clears the image in place', () => {
365
422
  const texture = createTexture();