@lightningjs/renderer 0.8.2 → 0.8.3

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 (66) hide show
  1. package/dist/src/core/CoreShaderManager.d.ts +2 -0
  2. package/dist/src/core/CoreShaderManager.js +8 -0
  3. package/dist/src/core/CoreShaderManager.js.map +1 -1
  4. package/dist/src/core/Stage.d.ts +3 -2
  5. package/dist/src/core/Stage.js +15 -5
  6. package/dist/src/core/Stage.js.map +1 -1
  7. package/dist/src/core/lib/ImageWorker.js +1 -1
  8. package/dist/src/core/renderers/CoreRenderer.d.ts +21 -3
  9. package/dist/src/core/renderers/CoreRenderer.js +13 -2
  10. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  11. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +16 -0
  12. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +155 -0
  13. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
  14. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
  15. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +122 -0
  16. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
  17. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +5 -0
  18. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +32 -0
  19. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -0
  20. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +15 -0
  21. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +45 -0
  22. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -0
  23. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
  24. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +43 -0
  25. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
  26. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +2 -20
  27. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +3 -15
  28. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  29. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +3 -1
  30. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  31. package/dist/src/core/textures/ImageTexture.js +3 -0
  32. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  33. package/dist/src/main-api/Inspector.js +7 -1
  34. package/dist/src/main-api/Inspector.js.map +1 -1
  35. package/dist/src/main-api/RendererMain.d.ts +4 -0
  36. package/dist/src/main-api/RendererMain.js +1 -0
  37. package/dist/src/main-api/RendererMain.js.map +1 -1
  38. package/dist/src/render-drivers/main/MainCoreDriver.js +1 -0
  39. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
  40. package/dist/src/render-drivers/threadx/worker/renderer.js +1 -0
  41. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
  42. package/dist/src/render-drivers/utils.js +1 -1
  43. package/dist/src/render-drivers/utils.js.map +1 -1
  44. package/dist/src/utils.d.ts +12 -6
  45. package/dist/src/utils.js +19 -9
  46. package/dist/src/utils.js.map +1 -1
  47. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  48. package/package.json +1 -1
  49. package/src/core/CoreShaderManager.ts +10 -0
  50. package/src/core/Stage.ts +18 -5
  51. package/src/core/lib/ImageWorker.ts +1 -1
  52. package/src/core/renderers/CoreRenderer.ts +32 -6
  53. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +178 -0
  54. package/src/core/renderers/canvas/CanvasCoreTexture.ts +138 -0
  55. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +34 -0
  56. package/src/core/renderers/canvas/internal/ColorUtils.ts +55 -0
  57. package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +49 -0
  58. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +8 -38
  59. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +3 -1
  60. package/src/core/textures/ImageTexture.ts +3 -0
  61. package/src/main-api/Inspector.ts +6 -1
  62. package/src/main-api/RendererMain.ts +7 -0
  63. package/src/render-drivers/main/MainCoreDriver.ts +1 -0
  64. package/src/render-drivers/threadx/worker/renderer.ts +1 -0
  65. package/src/render-drivers/utils.ts +1 -1
  66. package/src/utils.ts +21 -9
package/src/utils.ts CHANGED
@@ -143,19 +143,30 @@ export function mergeColorAlpha(rgba: number, alpha: number): number {
143
143
  return ((r << 24) | (g << 16) | (b << 8) | a) >>> 0;
144
144
  }
145
145
 
146
+ let premultiplyRGB = true;
147
+
148
+ /**
149
+ * RGB components should not be premultiplied when using Canvas renderer
150
+ * @param mode Renderer mode
151
+ */
152
+ export function setPremultiplyMode(mode: 'webgl' | 'canvas'): void {
153
+ premultiplyRGB = mode === 'webgl';
154
+ }
155
+
146
156
  /**
147
157
  * Given an RGBA encoded number, returns back the RGBA number with it's alpha
148
- * component multiplied by the passed `alpha` parameter. Before returning, the
149
- * final alpha value is multiplied into the color channels.
158
+ * component multiplied by the passed `alpha` parameter.
159
+ *
160
+ * For the webGl renderer, each color channel is premultiplied by the final alpha value.
150
161
  *
151
162
  * @remarks
152
163
  * If `flipEndianess` is set to true, the function will returned an ABGR encoded number
153
164
  * which is useful when the color value needs to be passed into a shader attribute.
154
165
  *
155
- * NOTE: This method returns a PREMULTIPLIED alpha color which is generally only useful
156
- * in the context of the internal rendering process. Use {@link mergeColorAlpha} if you
157
- * need to blend an alpha value into a color in the context of the Renderer's
158
- * main API.
166
+ * NOTE: Depending on the mode set by {@link setPremultiplyMode}, this method returns
167
+ * a PREMULTIPLIED alpha color which is generally only useful in the context of the
168
+ * internal rendering process. Use {@link mergeColorAlpha} if you need to blend an alpha
169
+ * value into a color in the context of the Renderer's main API.
159
170
  *
160
171
  * @internalRemarks
161
172
  * Do not expose this method in the main API because Renderer users should instead use
@@ -173,9 +184,10 @@ export function mergeColorAlphaPremultiplied(
173
184
  flipEndianess = false,
174
185
  ): number {
175
186
  const newAlpha = ((rgba & 0xff) / 255) * alpha;
176
- const r = Math.trunc((rgba >>> 24) * newAlpha);
177
- const g = Math.trunc(((rgba >>> 16) & 0xff) * newAlpha);
178
- const b = Math.trunc(((rgba >>> 8) & 0xff) * newAlpha);
187
+ const rgbAlpha = premultiplyRGB ? newAlpha : 1;
188
+ const r = Math.trunc((rgba >>> 24) * rgbAlpha);
189
+ const g = Math.trunc(((rgba >>> 16) & 0xff) * rgbAlpha);
190
+ const b = Math.trunc(((rgba >>> 8) & 0xff) * rgbAlpha);
179
191
  const a = Math.trunc(newAlpha * 255);
180
192
 
181
193
  if (flipEndianess) {