@lightningjs/renderer 3.0.0-beta1 → 3.0.0-beta3

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 (71) hide show
  1. package/dist/exports/index.d.ts +1 -0
  2. package/dist/exports/index.js +1 -0
  3. package/dist/exports/index.js.map +1 -1
  4. package/dist/src/core/CoreNode.d.ts +1 -0
  5. package/dist/src/core/CoreNode.js +17 -13
  6. package/dist/src/core/CoreNode.js.map +1 -1
  7. package/dist/src/core/CoreShaderManager.d.ts +3 -5
  8. package/dist/src/core/CoreShaderManager.js.map +1 -1
  9. package/dist/src/core/CoreTextNode.js +0 -7
  10. package/dist/src/core/CoreTextNode.js.map +1 -1
  11. package/dist/src/core/Stage.js +2 -4
  12. package/dist/src/core/Stage.js.map +1 -1
  13. package/dist/src/core/lib/ImageWorker.js +2 -1
  14. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  15. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  16. package/dist/src/core/lib/RenderCoords.js +43 -55
  17. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  18. package/dist/src/core/lib/WebGlContextWrapper.d.ts +22 -0
  19. package/dist/src/core/lib/WebGlContextWrapper.js +27 -0
  20. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  21. package/dist/src/core/lib/utils.d.ts +1 -0
  22. package/dist/src/core/lib/utils.js +20 -0
  23. package/dist/src/core/lib/utils.js.map +1 -1
  24. package/dist/src/core/renderers/CoreShaderNode.d.ts +2 -3
  25. package/dist/src/core/renderers/CoreShaderNode.js +0 -3
  26. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  27. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  28. package/dist/src/core/renderers/canvas/CanvasTexture.js +3 -2
  29. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  30. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +10 -2
  31. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +27 -16
  32. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  33. package/dist/src/core/renderers/webgl/WebGlRenderer.js +14 -13
  34. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  35. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -1
  36. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  37. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +1 -1
  38. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +32 -26
  39. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  40. package/dist/src/core/shaders/webgl/SdfShader.js +1 -1
  41. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  42. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -1
  43. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  44. package/dist/src/core/textures/ImageTexture.d.ts +2 -2
  45. package/dist/src/core/textures/ImageTexture.js +24 -4
  46. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  47. package/dist/src/main-api/INode.d.ts +2 -2
  48. package/dist/src/main-api/Renderer.d.ts +1 -1
  49. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  50. package/exports/index.ts +1 -0
  51. package/package.json +2 -2
  52. package/src/core/CoreNode.ts +24 -14
  53. package/src/core/CoreShaderManager.ts +5 -10
  54. package/src/core/CoreTextNode.ts +0 -9
  55. package/src/core/Stage.ts +2 -4
  56. package/src/core/lib/ImageWorker.ts +2 -1
  57. package/src/core/lib/RenderCoords.ts +52 -67
  58. package/src/core/lib/WebGlContextWrapper.ts +50 -0
  59. package/src/core/lib/utils.ts +25 -0
  60. package/src/core/renderers/CoreShaderNode.ts +2 -8
  61. package/src/core/renderers/canvas/CanvasRenderer.ts +0 -1
  62. package/src/core/renderers/canvas/CanvasTexture.ts +5 -2
  63. package/src/core/renderers/webgl/WebGlRenderOp.ts +32 -16
  64. package/src/core/renderers/webgl/WebGlRenderer.ts +22 -17
  65. package/src/core/renderers/webgl/WebGlShaderNode.ts +5 -1
  66. package/src/core/renderers/webgl/WebGlShaderProgram.ts +39 -31
  67. package/src/core/shaders/webgl/SdfShader.ts +1 -4
  68. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -1
  69. package/src/core/textures/ImageTexture.ts +31 -8
  70. package/src/main-api/INode.ts +4 -3
  71. package/src/main-api/Renderer.ts +1 -1
@@ -23,7 +23,11 @@ import {
23
23
  isCompressedTextureContainer,
24
24
  loadCompressedTexture,
25
25
  } from '../lib/textureCompression.js';
26
- import { convertUrlToAbsolute, isBase64Image } from '../lib/utils.js';
26
+ import {
27
+ convertUrlToAbsolute,
28
+ dataURIToBlob,
29
+ isBase64Image,
30
+ } from '../lib/utils.js';
27
31
  import { isSvgImage, loadSvg } from '../lib/textureSvg.js';
28
32
  import { fetchJson } from '../text-rendering/font-face-types/utils.js';
29
33
 
@@ -40,7 +44,7 @@ export interface ImageTextureProps {
40
44
  *
41
45
  * @default ''
42
46
  */
43
- src?: string | ImageData | (() => ImageData | null);
47
+ src?: string | Blob | ImageData | (() => ImageData | null);
44
48
  /**
45
49
  * Whether to premultiply the alpha channel into the color channels of the
46
50
  * image.
@@ -133,10 +137,10 @@ export class ImageTexture extends Texture {
133
137
  return mimeType.indexOf('image/png') !== -1;
134
138
  }
135
139
 
136
- async loadImageFallback(src: string, hasAlpha: boolean) {
140
+ async loadImageFallback(src: string | Blob, hasAlpha: boolean) {
137
141
  const img = new Image();
138
142
 
139
- if (isBase64Image(src) === false) {
143
+ if (typeof src === 'string' && isBase64Image(src) === false) {
140
144
  img.crossOrigin = 'anonymous';
141
145
  }
142
146
 
@@ -151,7 +155,11 @@ export class ImageTexture extends Texture {
151
155
  resolve({ data: img, premultiplyAlpha: hasAlpha });
152
156
  };
153
157
 
154
- img.src = src;
158
+ if (src instanceof Blob) {
159
+ img.src = URL.createObjectURL(src);
160
+ } else {
161
+ img.src = src;
162
+ }
155
163
  },
156
164
  );
157
165
  }
@@ -215,9 +223,16 @@ export class ImageTexture extends Texture {
215
223
  );
216
224
  }
217
225
 
218
- const blob = await fetchJson(src, 'blob').then(
219
- (response) => response as Blob,
220
- );
226
+ let blob;
227
+
228
+ if (isBase64Image(src) === true) {
229
+ blob = dataURIToBlob(src);
230
+ } else {
231
+ blob = await fetchJson(src, 'blob').then(
232
+ (response) => response as Blob,
233
+ );
234
+ }
235
+
221
236
  return this.createImageBitmap(blob, premultiplyAlpha, sx, sy, sw, sh);
222
237
  }
223
238
 
@@ -274,6 +289,14 @@ export class ImageTexture extends Texture {
274
289
  }
275
290
 
276
291
  if (typeof src !== 'string') {
292
+ if (src instanceof Blob) {
293
+ if (this.txManager.hasCreateImageBitmap === true) {
294
+ const { sx, sy, sw, sh } = this.props;
295
+ return this.createImageBitmap(src, premultiplyAlpha, sx, sy, sw, sh);
296
+ } else {
297
+ return this.loadImageFallback(src, premultiplyAlpha ?? true);
298
+ }
299
+ }
277
300
  if (src instanceof ImageData) {
278
301
  return {
279
302
  data: src,
@@ -57,15 +57,16 @@ export interface INode<ShaderNode extends CoreShaderNode = CoreShaderNode>
57
57
  /**
58
58
  * Properties used to animate() a Node
59
59
  */
60
- export interface INodeAnimateProps<ShNode extends CoreShaderNode>
61
- extends Omit<CoreNodeAnimateProps, 'shaderProps'> {
60
+ export interface INodeAnimateProps<
61
+ ShNode extends CoreShaderNode = CoreShaderNode,
62
+ > extends Omit<CoreNodeAnimateProps, 'shaderProps'> {
62
63
  shaderProps: Partial<ShNode['props']>;
63
64
  }
64
65
 
65
66
  /**
66
67
  * Properties used to create a new Node
67
68
  */
68
- export interface INodeProps<ShNode extends CoreShaderNode>
69
+ export interface INodeProps<ShNode extends CoreShaderNode = CoreShaderNode>
69
70
  extends Omit<CoreNodeProps, 'shader' | 'parent'> {
70
71
  shader: ShNode;
71
72
  parent: INode | null;
@@ -557,7 +557,7 @@ export class RendererMain extends EventEmitter {
557
557
  props?: OptionalShaderProps<ShType>,
558
558
  ) {
559
559
  return this.stage.shManager.createShader(shType, props) as CoreShaderNode<
560
- ExtractShaderProps<ShType>
560
+ NonNullable<ExtractShaderProps<ShType>>
561
561
  >;
562
562
  }
563
563