@lightningjs/renderer 0.8.3 → 0.8.4
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/src/core/CoreNode.d.ts +27 -1
- package/dist/src/core/CoreNode.js +130 -5
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.js +3 -2
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.js +20 -1
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +2 -0
- package/dist/src/core/CoreTextureManager.js +2 -0
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.js +25 -9
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +1 -0
- package/dist/src/core/TextureMemoryManager.js +3 -1
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -1
- package/dist/src/core/lib/ImageWorker.js +10 -6
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +26 -1
- package/dist/src/core/lib/WebGlContextWrapper.js +37 -1
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +11 -0
- package/dist/src/core/renderers/CoreRenderer.js +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +10 -4
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +18 -7
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -2
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +8 -6
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +4 -4
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +1 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +2 -2
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +11 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +51 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +11 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +22 -11
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +4 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +7 -2
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +16 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +119 -27
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +19 -4
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +4 -6
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +6 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +12 -0
- package/dist/src/core/text-rendering/TextRenderingUtils.js +14 -0
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +4 -3
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +2 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +28 -0
- package/dist/src/core/textures/RenderTexture.js +52 -0
- package/dist/src/core/textures/RenderTexture.js.map +1 -0
- package/dist/src/core/utils.d.ts +6 -1
- package/dist/src/core/utils.js +74 -82
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +9 -0
- package/dist/src/main-api/RendererMain.js +2 -1
- package/dist/src/main-api/RendererMain.js.map +1 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +3 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js +29 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +1 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +3 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js +9 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +1 -0
- package/dist/src/render-drivers/threadx/SharedNode.js +1 -0
- package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +2 -0
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +3 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +7 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreNode.ts +164 -8
- package/src/core/CoreShaderManager.ts +6 -3
- package/src/core/CoreTextNode.ts +25 -0
- package/src/core/CoreTextureManager.ts +3 -0
- package/src/core/Stage.ts +32 -11
- package/src/core/TextureMemoryManager.ts +3 -1
- package/src/core/lib/ImageWorker.ts +12 -7
- package/src/core/lib/WebGlContextWrapper.ts +51 -1
- package/src/core/renderers/CoreRenderer.ts +15 -1
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +59 -14
- package/src/core/renderers/canvas/CanvasCoreTexture.ts +24 -18
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +6 -3
- package/src/core/renderers/canvas/internal/ColorUtils.ts +6 -6
- package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +2 -3
- package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +79 -0
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +26 -24
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +4 -2
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +166 -33
- package/src/core/renderers/webgl/WebGlCoreShader.ts +29 -4
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +4 -6
- package/src/core/renderers/webgl/shaders/SdfShader.ts +6 -1
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +8 -1
- package/src/core/text-rendering/renderers/TextRenderer.ts +3 -0
- package/src/core/textures/RenderTexture.ts +81 -0
- package/src/core/utils.ts +101 -93
- package/src/main-api/INode.ts +11 -0
- package/src/main-api/RendererMain.ts +2 -1
- package/src/render-drivers/main/MainOnlyNode.ts +44 -0
- package/src/render-drivers/main/MainOnlyTextNode.ts +1 -0
- package/src/render-drivers/threadx/NodeStruct.ts +10 -0
- package/src/render-drivers/threadx/SharedNode.ts +2 -0
- package/src/render-drivers/threadx/ThreadXCoreDriver.ts +2 -0
- package/src/render-drivers/threadx/ThreadXMainNode.ts +9 -0
- package/src/render-drivers/threadx/worker/ThreadXRendererNode.ts +1 -0
- package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +1 -0
- package/src/render-drivers/threadx/worker/renderer.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CanvasCoreTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/canvas/CanvasCoreTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAqB,MAAM,0BAA0B,CAAC;AAEzE,MAAM,OAAO,iBAAkB,SAAQ,kBAAkB;
|
|
1
|
+
{"version":3,"file":"CanvasCoreTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/canvas/CanvasCoreTexture.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
-
import { ROUNDED_RECTANGLE_SHADER_TYPE, UnsupportedShader } from
|
|
19
|
+
import { ROUNDED_RECTANGLE_SHADER_TYPE, UnsupportedShader, } from '../shaders/UnsupportedShader.js';
|
|
20
20
|
/**
|
|
21
21
|
* Extract `RoundedRectangle` shader radius to apply as a clipping
|
|
22
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"C2DShaderUtils.js","sourceRoot":"","sources":["../../../../../../src/core/renderers/canvas/internal/C2DShaderUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"C2DShaderUtils.js","sourceRoot":"","sources":["../../../../../../src/core/renderers/canvas/internal/C2DShaderUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAiB;IACzC,IAAI,IAAI,CAAC,MAAM,YAAY,iBAAiB,EAAE;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,MAAM,KAAK,6BAA6B,EAAE;YAC5C,OAAQ,IAAI,CAAC,WAAW,EAAE,MAAiB,IAAI,CAAC,CAAC;SAClD;KACF;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -21,7 +21,7 @@ const WHITE = {
|
|
|
21
21
|
a: 1,
|
|
22
22
|
r: 0xff,
|
|
23
23
|
g: 0xff,
|
|
24
|
-
b: 0xff
|
|
24
|
+
b: 0xff,
|
|
25
25
|
};
|
|
26
26
|
/**
|
|
27
27
|
* Extract color components
|
|
@@ -31,9 +31,9 @@ export function parseColor(abgr) {
|
|
|
31
31
|
return WHITE;
|
|
32
32
|
}
|
|
33
33
|
const a = ((abgr >>> 24) & 0xff) / 255;
|
|
34
|
-
const b = (
|
|
35
|
-
const g = (
|
|
36
|
-
const r =
|
|
34
|
+
const b = (abgr >>> 16) & 0xff & 0xff;
|
|
35
|
+
const g = (abgr >>> 8) & 0xff & 0xff;
|
|
36
|
+
const r = abgr & 0xff & 0xff;
|
|
37
37
|
return { isWhite: false, a, r, g, b };
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColorUtils.js","sourceRoot":"","sources":["../../../../../../src/core/renderers/canvas/internal/ColorUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,MAAM,KAAK,GAAiB;IAC1B,OAAO,EAAE,IAAI;IACb,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;CACR,
|
|
1
|
+
{"version":3,"file":"ColorUtils.js","sourceRoot":"","sources":["../../../../../../src/core/renderers/canvas/internal/ColorUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,MAAM,KAAK,GAAiB;IAC1B,OAAO,EAAE,IAAI;IACb,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;CACR,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,IAAI,KAAK,UAAU,EAAE;QACvB,OAAO,KAAK,CAAC;KACd;IACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAgB;IACrD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACrC,CAAC"}
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
-
import { CoreShader } from
|
|
20
|
-
export const ROUNDED_RECTANGLE_SHADER_TYPE =
|
|
19
|
+
import { CoreShader } from '../../CoreShader.js';
|
|
20
|
+
export const ROUNDED_RECTANGLE_SHADER_TYPE = 'RoundedRectangle';
|
|
21
21
|
export class UnsupportedShader extends CoreShader {
|
|
22
22
|
shType;
|
|
23
23
|
constructor(shType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnsupportedShader.js","sourceRoot":"","sources":["../../../../../../src/core/renderers/canvas/shaders/UnsupportedShader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"UnsupportedShader.js","sourceRoot":"","sources":["../../../../../../src/core/renderers/canvas/shaders/UnsupportedShader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,MAAM,6BAA6B,GAAG,kBAAkB,CAAC;AAEhE,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IACxC,MAAM,CAAS;IAEtB,YAAY,MAAc;QACxB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,KAAK,6BAA6B,EAAE;YAC5C,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;SAC7C;IACH,CAAC;IAED,YAAY;QACV,OAAO;IACT,CAAC;IACS,SAAS;QACjB,OAAO;IACT,CAAC;IAED,MAAM;QACJ,OAAO;IACT,CAAC;IACD,MAAM;QACJ,OAAO;IACT,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
2
|
+
import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
|
|
3
|
+
import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
4
|
+
import type { RenderTexture } from '../../textures/RenderTexture.js';
|
|
5
|
+
import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
|
|
6
|
+
export declare class WebGlCoreCtxRenderTexture extends WebGlCoreCtxTexture {
|
|
7
|
+
textureSource: RenderTexture;
|
|
8
|
+
readonly framebuffer: WebGLFramebuffer;
|
|
9
|
+
constructor(glw: WebGlContextWrapper, memManager: TextureMemoryManager, textureSource: RenderTexture);
|
|
10
|
+
onLoadRequest(): Promise<Dimensions>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
+
* following copyright and licenses apply:
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2024 Comcast Cable Communications Management, LLC.
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*/
|
|
19
|
+
import { assertTruthy } from '../../../utils.js';
|
|
20
|
+
import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
|
|
21
|
+
export class WebGlCoreCtxRenderTexture extends WebGlCoreCtxTexture {
|
|
22
|
+
framebuffer;
|
|
23
|
+
constructor(glw, memManager, textureSource) {
|
|
24
|
+
super(glw, memManager, textureSource);
|
|
25
|
+
// Create Framebuffer object
|
|
26
|
+
const framebuffer = glw.createFramebuffer();
|
|
27
|
+
assertTruthy(framebuffer, 'Unable to create framebuffer');
|
|
28
|
+
this.framebuffer = framebuffer;
|
|
29
|
+
}
|
|
30
|
+
async onLoadRequest() {
|
|
31
|
+
const { glw, memManager } = this;
|
|
32
|
+
const nativeTexture = (this._nativeCtxTexture =
|
|
33
|
+
this.createNativeCtxTexture());
|
|
34
|
+
const { width, height } = this.textureSource;
|
|
35
|
+
// Set the dimensions of the render texture
|
|
36
|
+
glw.texImage2D(0, glw.RGBA, width, height, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);
|
|
37
|
+
// Update the texture memory manager
|
|
38
|
+
memManager.setTextureMemUse(this, width * height * 4);
|
|
39
|
+
// Bind the framebuffer
|
|
40
|
+
glw.bindFramebuffer(this.framebuffer);
|
|
41
|
+
// Attach the texture to the framebuffer
|
|
42
|
+
glw.framebufferTexture2D(glw.COLOR_ATTACHMENT0, nativeTexture, 0);
|
|
43
|
+
// Unbind the framebuffer
|
|
44
|
+
glw.bindFramebuffer(null);
|
|
45
|
+
return {
|
|
46
|
+
width,
|
|
47
|
+
height,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=WebGlCoreCtxRenderTexture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebGlCoreCtxRenderTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,OAAO,yBAA0B,SAAQ,mBAAmB;IAGvD,WAAW,CAAmB;IAEvC,YACE,GAAwB,EACxB,UAAgC,EAChC,aAA4B;QAE5B,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACtC,4BAA4B;QAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC5C,YAAY,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEQ,KAAK,CAAC,aAAa;QAC1B,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACjC,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,iBAAiB;YAC3C,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAE7C,2CAA2C;QAC3C,GAAG,CAAC,UAAU,CACZ,CAAC,EACD,GAAG,CAAC,IAAI,EACR,KAAK,EACL,MAAM,EACN,CAAC,EACD,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,aAAa,EACjB,IAAI,CACL,CAAC;QAEF,oCAAoC;QACpC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAEtD,uBAAuB;QACvB,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEtC,wCAAwC;QACxC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAElE,yBAAyB;QACzB,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE1B,OAAO;YACL,KAAK;YACL,MAAM;SACP,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -45,5 +45,15 @@ export declare class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
45
45
|
* @returns
|
|
46
46
|
*/
|
|
47
47
|
free(): void;
|
|
48
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Create native context texture
|
|
50
|
+
*
|
|
51
|
+
* @remarks
|
|
52
|
+
* When this method returns the returned texture will be bound to the GL context state.
|
|
53
|
+
*
|
|
54
|
+
* @param width
|
|
55
|
+
* @param height
|
|
56
|
+
* @returns
|
|
57
|
+
*/
|
|
58
|
+
protected createNativeCtxTexture(): WebGLTexture;
|
|
49
59
|
}
|
|
@@ -98,17 +98,8 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
98
98
|
*/
|
|
99
99
|
async onLoadRequest() {
|
|
100
100
|
const { glw, memManager } = this;
|
|
101
|
-
//
|
|
102
|
-
|
|
103
|
-
glw.activeTexture(0);
|
|
104
|
-
glw.bindTexture(this._nativeCtxTexture);
|
|
105
|
-
// linear texture filtering
|
|
106
|
-
glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);
|
|
107
|
-
glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);
|
|
108
|
-
// texture wrapping method
|
|
109
|
-
glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
|
|
110
|
-
glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
|
|
111
|
-
glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, TRANSPARENT_TEXTURE_DATA);
|
|
101
|
+
// Set to a 1x1 transparent texture
|
|
102
|
+
glw.texImage2D(0, glw.RGBA, 1, 1, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);
|
|
112
103
|
memManager.setTextureMemUse(this, TRANSPARENT_TEXTURE_DATA.byteLength);
|
|
113
104
|
const textureData = await this.textureSource?.getTextureData();
|
|
114
105
|
// If the texture has been freed while loading, return early.
|
|
@@ -188,12 +179,32 @@ export class WebGlCoreCtxTexture extends CoreContextTexture {
|
|
|
188
179
|
memManager.setTextureMemUse(this, 0);
|
|
189
180
|
this._nativeCtxTexture = null;
|
|
190
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Create native context texture
|
|
184
|
+
*
|
|
185
|
+
* @remarks
|
|
186
|
+
* When this method returns the returned texture will be bound to the GL context state.
|
|
187
|
+
*
|
|
188
|
+
* @param width
|
|
189
|
+
* @param height
|
|
190
|
+
* @returns
|
|
191
|
+
*/
|
|
191
192
|
createNativeCtxTexture() {
|
|
192
193
|
const { glw } = this;
|
|
193
194
|
const nativeTexture = glw.createTexture();
|
|
194
195
|
if (!nativeTexture) {
|
|
195
196
|
throw new Error('Could not create WebGL Texture');
|
|
196
197
|
}
|
|
198
|
+
// On initial load request, create a 1x1 transparent texture to use until
|
|
199
|
+
// the texture data is finally loaded.
|
|
200
|
+
glw.activeTexture(0);
|
|
201
|
+
glw.bindTexture(nativeTexture);
|
|
202
|
+
// linear texture filtering
|
|
203
|
+
glw.texParameteri(glw.TEXTURE_MAG_FILTER, glw.LINEAR);
|
|
204
|
+
glw.texParameteri(glw.TEXTURE_MIN_FILTER, glw.LINEAR);
|
|
205
|
+
// texture wrapping method
|
|
206
|
+
glw.texParameteri(glw.TEXTURE_WRAP_S, glw.CLAMP_TO_EDGE);
|
|
207
|
+
glw.texParameteri(glw.TEXTURE_WRAP_T, glw.CLAMP_TO_EDGE);
|
|
197
208
|
return nativeTexture;
|
|
198
209
|
}
|
|
199
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGlCoreCtxTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,wBAAwB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,mBAAoB,SAAQ,kBAAkB;IAO7C;IANF,iBAAiB,GAAwB,IAAI,CAAC;IAChD,MAAM,GAA8C,OAAO,CAAC;IAC5D,EAAE,GAAG,CAAC,CAAC;IACP,EAAE,GAAG,CAAC,CAAC;IAEf,YACY,GAAwB,EAClC,UAAgC,EAChC,aAAsB;QAEtB,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAJvB,QAAG,GAAH,GAAG,CAAqB;IAKpC,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;YAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;QACD,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;IACvC,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI;QACF,oEAAoE;QACpE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YACzD,OAAO;SACR;QACD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvD,IAAI,CAAC,aAAa,EAAE;aACjB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;YAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;gBAC3B,OAAO;aACR;YACD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;YACjB,sEAAsE;YACtE,iBAAiB;YACjB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAEjC,
|
|
1
|
+
{"version":3,"file":"WebGlCoreCtxTexture.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreCtxTexture.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,11 +21,14 @@ export declare class WebGlCoreRenderOp extends CoreRenderOp {
|
|
|
21
21
|
readonly dimensions: Dimensions;
|
|
22
22
|
readonly bufferIdx: number;
|
|
23
23
|
readonly zIndex: number;
|
|
24
|
+
readonly renderToTexture: boolean | undefined;
|
|
25
|
+
readonly parentHasRenderTexture: boolean | undefined;
|
|
26
|
+
readonly framebufferDimensions: Dimensions | undefined;
|
|
24
27
|
length: number;
|
|
25
28
|
numQuads: number;
|
|
26
29
|
textures: WebGlCoreCtxTexture[];
|
|
27
30
|
readonly maxTextures: number;
|
|
28
|
-
constructor(glw: WebGlContextWrapper, options: WebGlCoreRendererOptions, buffers: BufferCollection, shader: WebGlCoreShader, shaderProps: Record<string, unknown>, alpha: number, clippingRect: RectWithValid, dimensions: Dimensions, bufferIdx: number, zIndex: number);
|
|
31
|
+
constructor(glw: WebGlContextWrapper, options: WebGlCoreRendererOptions, buffers: BufferCollection, shader: WebGlCoreShader, shaderProps: Record<string, unknown>, alpha: number, clippingRect: RectWithValid, dimensions: Dimensions, bufferIdx: number, zIndex: number, renderToTexture: boolean | undefined, parentHasRenderTexture: boolean | undefined, framebufferDimensions: Dimensions | undefined);
|
|
29
32
|
addTexture(texture: WebGlCoreCtxTexture): number;
|
|
30
33
|
draw(): void;
|
|
31
34
|
}
|
|
@@ -34,11 +34,14 @@ export class WebGlCoreRenderOp extends CoreRenderOp {
|
|
|
34
34
|
dimensions;
|
|
35
35
|
bufferIdx;
|
|
36
36
|
zIndex;
|
|
37
|
+
renderToTexture;
|
|
38
|
+
parentHasRenderTexture;
|
|
39
|
+
framebufferDimensions;
|
|
37
40
|
length = 0;
|
|
38
41
|
numQuads = 0;
|
|
39
42
|
textures = [];
|
|
40
43
|
maxTextures;
|
|
41
|
-
constructor(glw, options, buffers, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, zIndex) {
|
|
44
|
+
constructor(glw, options, buffers, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, zIndex, renderToTexture, parentHasRenderTexture, framebufferDimensions) {
|
|
42
45
|
super();
|
|
43
46
|
this.glw = glw;
|
|
44
47
|
this.options = options;
|
|
@@ -50,6 +53,9 @@ export class WebGlCoreRenderOp extends CoreRenderOp {
|
|
|
50
53
|
this.dimensions = dimensions;
|
|
51
54
|
this.bufferIdx = bufferIdx;
|
|
52
55
|
this.zIndex = zIndex;
|
|
56
|
+
this.renderToTexture = renderToTexture;
|
|
57
|
+
this.parentHasRenderTexture = parentHasRenderTexture;
|
|
58
|
+
this.framebufferDimensions = framebufferDimensions;
|
|
53
59
|
this.maxTextures = shader.supportsIndexedTextures
|
|
54
60
|
? glw.getParameter(glw.MAX_VERTEX_TEXTURE_IMAGE_UNITS)
|
|
55
61
|
: 1;
|
|
@@ -69,7 +75,6 @@ export class WebGlCoreRenderOp extends CoreRenderOp {
|
|
|
69
75
|
}
|
|
70
76
|
draw() {
|
|
71
77
|
const { glw, shader, shaderProps, options } = this;
|
|
72
|
-
// shaderOp.draw(this);
|
|
73
78
|
const { shManager } = options;
|
|
74
79
|
shManager.useShader(shader);
|
|
75
80
|
shader.bindRenderOp(this, shaderProps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebGlCoreRenderOp.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreRenderOp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAQvD,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,oBAAoB;AAE5C;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAOtC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;
|
|
1
|
+
{"version":3,"file":"WebGlCoreRenderOp.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreRenderOp.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { CoreShaderManager } from '../../CoreShaderManager.js';
|
|
|
7
7
|
import { BufferCollection } from './internal/BufferCollection.js';
|
|
8
8
|
import { WebGlCoreShader } from './WebGlCoreShader.js';
|
|
9
9
|
import { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
10
|
+
import type { CoreNode } from '../../CoreNode.js';
|
|
10
11
|
export type WebGlCoreRendererOptions = CoreRendererOptions;
|
|
11
12
|
interface CoreWebGlSystem {
|
|
12
13
|
parameters: CoreWebGlParameters;
|
|
@@ -21,13 +22,18 @@ export declare class WebGlCoreRenderer extends CoreRenderer {
|
|
|
21
22
|
renderOps: WebGlCoreRenderOp[];
|
|
22
23
|
curBufferIdx: number;
|
|
23
24
|
curRenderOp: WebGlCoreRenderOp | null;
|
|
24
|
-
|
|
25
|
+
rttNodes: CoreNode[];
|
|
26
|
+
activeRttNode: CoreNode | null;
|
|
25
27
|
defaultShader: WebGlCoreShader;
|
|
26
28
|
quadBufferCollection: BufferCollection;
|
|
27
29
|
/**
|
|
28
30
|
* White pixel texture used by default when no texture is specified.
|
|
29
31
|
*/
|
|
30
32
|
defaultTexture: Texture;
|
|
33
|
+
/**
|
|
34
|
+
* Whether the renderer is currently rendering to a texture.
|
|
35
|
+
*/
|
|
36
|
+
renderToTextureActive: boolean;
|
|
31
37
|
constructor(options: WebGlCoreRendererOptions);
|
|
32
38
|
reset(): void;
|
|
33
39
|
getShaderManager(): CoreShaderManager;
|
|
@@ -66,6 +72,12 @@ export declare class WebGlCoreRenderer extends CoreRenderer {
|
|
|
66
72
|
* @returns Assigned Texture Index of the texture in the render op
|
|
67
73
|
*/
|
|
68
74
|
private addTexture;
|
|
75
|
+
/**
|
|
76
|
+
* Test if the current Render operation can be reused for the specified parameters.
|
|
77
|
+
* @param params
|
|
78
|
+
* @returns
|
|
79
|
+
*/
|
|
80
|
+
reuseRenderOp(params: QuadOptions): boolean;
|
|
69
81
|
/**
|
|
70
82
|
* add RenderOp to the render pipeline
|
|
71
83
|
*/
|
|
@@ -78,5 +90,8 @@ export declare class WebGlCoreRenderer extends CoreRenderer {
|
|
|
78
90
|
* @param surface
|
|
79
91
|
*/
|
|
80
92
|
render(surface?: 'screen' | CoreContextTexture): void;
|
|
93
|
+
renderToTexture(node: CoreNode): void;
|
|
94
|
+
renderRTTNodes(): void;
|
|
95
|
+
removeRTTNode(node: CoreNode): void;
|
|
81
96
|
}
|
|
82
97
|
export {};
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
-
import { assertTruthy, createWebGLContext, hasOwn
|
|
20
|
-
import { CoreRenderer } from '../CoreRenderer.js';
|
|
19
|
+
import { assertTruthy, createWebGLContext, hasOwn } from '../../../utils.js';
|
|
20
|
+
import { CoreRenderer, } from '../CoreRenderer.js';
|
|
21
21
|
import { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
|
|
22
22
|
import { createIndexBuffer, getWebGlParameters, getWebGlExtensions, } from './internal/RendererUtils.js';
|
|
23
23
|
import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
|
|
@@ -30,6 +30,8 @@ import { BufferCollection } from './internal/BufferCollection.js';
|
|
|
30
30
|
import { compareRect, getNormalizedRgbaComponents, } from '../../lib/utils.js';
|
|
31
31
|
import { WebGlCoreShader } from './WebGlCoreShader.js';
|
|
32
32
|
import { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
33
|
+
import { RenderTexture } from '../../textures/RenderTexture.js';
|
|
34
|
+
import { WebGlCoreCtxRenderTexture } from './WebGlCoreCtxRenderTexture.js';
|
|
33
35
|
const WORDS_PER_QUAD = 24;
|
|
34
36
|
export class WebGlCoreRenderer extends CoreRenderer {
|
|
35
37
|
//// WebGL Native Context and Data
|
|
@@ -43,7 +45,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
43
45
|
//// Render Op / Buffer Filling State
|
|
44
46
|
curBufferIdx = 0;
|
|
45
47
|
curRenderOp = null;
|
|
46
|
-
|
|
48
|
+
rttNodes = [];
|
|
49
|
+
activeRttNode = null;
|
|
47
50
|
//// Default Shader
|
|
48
51
|
defaultShader;
|
|
49
52
|
quadBufferCollection;
|
|
@@ -51,11 +54,19 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
51
54
|
* White pixel texture used by default when no texture is specified.
|
|
52
55
|
*/
|
|
53
56
|
defaultTexture;
|
|
57
|
+
/**
|
|
58
|
+
* Whether the renderer is currently rendering to a texture.
|
|
59
|
+
*/
|
|
60
|
+
renderToTextureActive = false;
|
|
54
61
|
constructor(options) {
|
|
55
62
|
super(options);
|
|
56
63
|
this.mode = 'webgl';
|
|
57
64
|
const { canvas, clearColor, bufferMemory } = options;
|
|
58
65
|
this.defaultTexture = new ColorTexture(this.txManager);
|
|
66
|
+
// Mark the default texture as ALWAYS renderable
|
|
67
|
+
// This prevents it from ever being garbage collected.
|
|
68
|
+
// Fixes https://github.com/lightning-js/renderer/issues/262
|
|
69
|
+
this.defaultTexture.setRenderableOwner(this, true);
|
|
59
70
|
// When the default texture is loaded, request a render in case the
|
|
60
71
|
// RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123
|
|
61
72
|
this.defaultTexture.once('loaded', () => {
|
|
@@ -133,6 +144,9 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
133
144
|
if (textureSource instanceof SubTexture) {
|
|
134
145
|
return new WebGlCoreCtxSubTexture(this.glw, this.txMemManager, textureSource);
|
|
135
146
|
}
|
|
147
|
+
else if (textureSource instanceof RenderTexture) {
|
|
148
|
+
return new WebGlCoreCtxRenderTexture(this.glw, this.txMemManager, textureSource);
|
|
149
|
+
}
|
|
136
150
|
return new WebGlCoreCtxTexture(this.glw, this.txMemManager, textureSource);
|
|
137
151
|
}
|
|
138
152
|
/**
|
|
@@ -149,7 +163,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
149
163
|
*/
|
|
150
164
|
addQuad(params) {
|
|
151
165
|
const { fQuadBuffer, uiQuadBuffer } = this;
|
|
152
|
-
const { width, height, colorTl, colorTr, colorBl, colorBr, textureOptions, shader, shaderProps, alpha, clippingRect, tx, ty, ta, tb, tc, td, } = params;
|
|
166
|
+
const { width, height, colorTl, colorTr, colorBl, colorBr, textureOptions, shader, shaderProps, alpha, clippingRect, tx, ty, ta, tb, tc, td, rtt: renderToTexture, parentHasRenderTexture, framebufferDimensions, } = params;
|
|
153
167
|
let { texture } = params;
|
|
154
168
|
/**
|
|
155
169
|
* If the shader props contain any automatic properties, update it with the
|
|
@@ -167,27 +181,12 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
167
181
|
const targetDims = {
|
|
168
182
|
width,
|
|
169
183
|
height,
|
|
170
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
171
184
|
};
|
|
172
185
|
const targetShader = shader || this.defaultShader;
|
|
173
186
|
assertTruthy(targetShader instanceof WebGlCoreShader);
|
|
174
|
-
if (
|
|
175
|
-
// If the current render op is not the same shader, create a new one
|
|
176
|
-
// If the current render op's shader props are not compatible with the
|
|
177
|
-
// the new shader props, create a new one render op.
|
|
178
|
-
if (curRenderOp.shader !== targetShader ||
|
|
179
|
-
!compareRect(curRenderOp.clippingRect, clippingRect) ||
|
|
180
|
-
(curRenderOp.shader !== this.defaultShader &&
|
|
181
|
-
(!shaderProps ||
|
|
182
|
-
!curRenderOp.shader.canBatchShaderProps(curRenderOp.shaderProps, shaderProps)))) {
|
|
183
|
-
curRenderOp = null;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
assertTruthy(targetShader instanceof WebGlCoreShader);
|
|
187
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
|
|
188
|
-
if (!curRenderOp) {
|
|
187
|
+
if (!this.reuseRenderOp(params)) {
|
|
189
188
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
190
|
-
this.newRenderOp(targetShader, shaderProps, alpha, targetDims, clippingRect, bufferIdx);
|
|
189
|
+
this.newRenderOp(targetShader, shaderProps, alpha, targetDims, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions);
|
|
191
190
|
curRenderOp = this.curRenderOp;
|
|
192
191
|
assertTruthy(curRenderOp);
|
|
193
192
|
}
|
|
@@ -297,8 +296,9 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
297
296
|
* @param shader
|
|
298
297
|
* @param bufferIdx
|
|
299
298
|
*/
|
|
300
|
-
newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx) {
|
|
301
|
-
const curRenderOp = new WebGlCoreRenderOp(this.glw, this.options, this.quadBufferCollection, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, 0
|
|
299
|
+
newRenderOp(shader, shaderProps, alpha, dimensions, clippingRect, bufferIdx, renderToTexture, parentHasRenderTexture, framebufferDimensions) {
|
|
300
|
+
const curRenderOp = new WebGlCoreRenderOp(this.glw, this.options, this.quadBufferCollection, shader, shaderProps, alpha, clippingRect, dimensions, bufferIdx, 0, // Z-Index is only used for explictly added Render Ops
|
|
301
|
+
renderToTexture, parentHasRenderTexture, framebufferDimensions);
|
|
302
302
|
this.curRenderOp = curRenderOp;
|
|
303
303
|
this.renderOps.push(curRenderOp);
|
|
304
304
|
}
|
|
@@ -329,6 +329,37 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
329
329
|
}
|
|
330
330
|
return textureIdx;
|
|
331
331
|
}
|
|
332
|
+
/**
|
|
333
|
+
* Test if the current Render operation can be reused for the specified parameters.
|
|
334
|
+
* @param params
|
|
335
|
+
* @returns
|
|
336
|
+
*/
|
|
337
|
+
reuseRenderOp(params) {
|
|
338
|
+
const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } = params;
|
|
339
|
+
const targetShader = shader || this.defaultShader;
|
|
340
|
+
// Switching shader program will require a new render operation
|
|
341
|
+
if (this.curRenderOp?.shader !== targetShader) {
|
|
342
|
+
return false;
|
|
343
|
+
}
|
|
344
|
+
// Switching clipping rect will require a new render operation
|
|
345
|
+
if (!compareRect(this.curRenderOp.clippingRect, clippingRect)) {
|
|
346
|
+
return false;
|
|
347
|
+
}
|
|
348
|
+
// Force new render operation if rendering to texture
|
|
349
|
+
// @todo: This needs to be improved, render operations could also be reused
|
|
350
|
+
// for rendering to texture
|
|
351
|
+
if (parentHasRenderTexture || rtt) {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
// Check if the shader can batch the shader properties
|
|
355
|
+
if (this.curRenderOp.shader !== this.defaultShader &&
|
|
356
|
+
(!shaderProps ||
|
|
357
|
+
!this.curRenderOp.shader.canBatchShaderProps(this.curRenderOp.shaderProps, shaderProps))) {
|
|
358
|
+
return false;
|
|
359
|
+
}
|
|
360
|
+
// Render operation can be reused
|
|
361
|
+
return true;
|
|
362
|
+
}
|
|
332
363
|
/**
|
|
333
364
|
* add RenderOp to the render pipeline
|
|
334
365
|
*/
|
|
@@ -354,13 +385,74 @@ export class WebGlCoreRenderer extends CoreRenderer {
|
|
|
354
385
|
}
|
|
355
386
|
this.renderOps.forEach((renderOp, i) => {
|
|
356
387
|
if (doLog) {
|
|
357
|
-
console.log('
|
|
388
|
+
console.log('Quads per operation', renderOp.numQuads);
|
|
358
389
|
}
|
|
359
390
|
renderOp.draw();
|
|
360
391
|
});
|
|
361
|
-
|
|
362
|
-
|
|
392
|
+
}
|
|
393
|
+
renderToTexture(node) {
|
|
394
|
+
for (let i = 0; i < this.rttNodes.length; i++) {
|
|
395
|
+
if (this.rttNodes[i] === node) {
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
// @todo: Better bottom up rendering order
|
|
400
|
+
this.rttNodes.unshift(node);
|
|
401
|
+
}
|
|
402
|
+
renderRTTNodes() {
|
|
403
|
+
const { glw } = this;
|
|
404
|
+
const { txManager } = this.stage;
|
|
405
|
+
// Render all associated RTT nodes to their textures
|
|
406
|
+
for (let i = 0; i < this.rttNodes.length; i++) {
|
|
407
|
+
const node = this.rttNodes[i];
|
|
408
|
+
// Skip nodes that don't have RTT updates
|
|
409
|
+
if (!node || !node.hasRTTupdates) {
|
|
410
|
+
continue;
|
|
411
|
+
}
|
|
412
|
+
// Set the active RTT node to the current node
|
|
413
|
+
// So we can prevent rendering children of nested RTT nodes
|
|
414
|
+
this.activeRttNode = node;
|
|
415
|
+
assertTruthy(node.texture, 'RTT node missing texture');
|
|
416
|
+
const ctxTexture = txManager.getCtxTexture(node.texture);
|
|
417
|
+
assertTruthy(ctxTexture instanceof WebGlCoreCtxRenderTexture);
|
|
418
|
+
this.renderToTextureActive = true;
|
|
419
|
+
// Bind the the texture's framebuffer
|
|
420
|
+
glw.bindFramebuffer(ctxTexture.framebuffer);
|
|
421
|
+
glw.viewport(0, 0, ctxTexture.w, ctxTexture.h);
|
|
422
|
+
glw.clear();
|
|
423
|
+
// Render all associated quads to the texture
|
|
424
|
+
for (let i = 0; i < node.children.length; i++) {
|
|
425
|
+
const child = node.children[i];
|
|
426
|
+
if (!child) {
|
|
427
|
+
continue;
|
|
428
|
+
}
|
|
429
|
+
child.update(this.stage.deltaTime, {
|
|
430
|
+
x: 0,
|
|
431
|
+
y: 0,
|
|
432
|
+
width: 0,
|
|
433
|
+
height: 0,
|
|
434
|
+
valid: false,
|
|
435
|
+
});
|
|
436
|
+
this.stage.addQuads(child);
|
|
437
|
+
child.hasRTTupdates = false;
|
|
438
|
+
}
|
|
439
|
+
// Render all associated quads to the texture
|
|
440
|
+
this.render();
|
|
441
|
+
// Reset render operations
|
|
442
|
+
this.renderOps.length = 0;
|
|
443
|
+
node.hasRTTupdates = false;
|
|
444
|
+
}
|
|
445
|
+
// Bind the default framebuffer
|
|
446
|
+
glw.bindFramebuffer(null);
|
|
447
|
+
glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height);
|
|
448
|
+
this.renderToTextureActive = false;
|
|
449
|
+
}
|
|
450
|
+
removeRTTNode(node) {
|
|
451
|
+
const index = this.rttNodes.indexOf(node);
|
|
452
|
+
if (index === -1) {
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
455
|
+
this.rttNodes.splice(index, 1);
|
|
363
456
|
}
|
|
364
457
|
}
|
|
365
|
-
const idx = 0;
|
|
366
458
|
//# sourceMappingURL=WebGlCoreRenderer.js.map
|