UNPKG

5.55 kBJavaScriptView Raw
1import { RENDERER_TYPE } from '@pixi/constants';
2import { ExtensionType, extensions } from '@pixi/extensions';
3import { Matrix } from '@pixi/math';
4import { settings } from '@pixi/settings';
5import { deprecation, isWebGLSupported } from '@pixi/utils';
6import { UniformGroup } from './shader/UniformGroup.mjs';
7import { SystemManager } from './system/SystemManager.mjs';
8
9const _Renderer = class extends SystemManager {
10 constructor(options) {
11 super();
12 this.type = RENDERER_TYPE.WEBGL;
13 options = Object.assign({}, settings.RENDER_OPTIONS, options);
14 this.gl = null;
15 this.CONTEXT_UID = 0;
16 this.globalUniforms = new UniformGroup({
17 projectionMatrix: new Matrix()
18 }, true);
19 const systemConfig = {
20 runners: [
21 "init",
22 "destroy",
23 "contextChange",
24 "resolutionChange",
25 "reset",
26 "update",
27 "postrender",
28 "prerender",
29 "resize"
30 ],
31 systems: _Renderer.__systems,
32 priority: [
33 "_view",
34 "textureGenerator",
35 "background",
36 "_plugin",
37 "startup",
38 "context",
39 "state",
40 "texture",
41 "buffer",
42 "geometry",
43 "framebuffer",
44 "transformFeedback",
45 "mask",
46 "scissor",
47 "stencil",
48 "projection",
49 "textureGC",
50 "filter",
51 "renderTexture",
52 "batch",
53 "objectRenderer",
54 "_multisample"
55 ]
56 };
57 this.setup(systemConfig);
58 if ("useContextAlpha" in options) {
59 deprecation("7.0.0", "options.useContextAlpha is deprecated, use options.premultipliedAlpha and options.backgroundAlpha instead");
60 options.premultipliedAlpha = options.useContextAlpha && options.useContextAlpha !== "notMultiplied";
61 options.backgroundAlpha = options.useContextAlpha === false ? 1 : options.backgroundAlpha;
62 }
63 this._plugin.rendererPlugins = _Renderer.__plugins;
64 this.options = options;
65 this.startup.run(this.options);
66 }
67 static test(options) {
68 if (options?.forceCanvas) {
69 return false;
70 }
71 return isWebGLSupported();
72 }
73 render(displayObject, options) {
74 this.objectRenderer.render(displayObject, options);
75 }
76 resize(desiredScreenWidth, desiredScreenHeight) {
77 this._view.resizeView(desiredScreenWidth, desiredScreenHeight);
78 }
79 reset() {
80 this.runners.reset.emit();
81 return this;
82 }
83 clear() {
84 this.renderTexture.bind();
85 this.renderTexture.clear();
86 }
87 destroy(removeView = false) {
88 this.runners.destroy.items.reverse();
89 this.emitWithCustomOptions(this.runners.destroy, {
90 _view: removeView
91 });
92 super.destroy();
93 }
94 get plugins() {
95 return this._plugin.plugins;
96 }
97 get multisample() {
98 return this._multisample.multisample;
99 }
100 get width() {
101 return this._view.element.width;
102 }
103 get height() {
104 return this._view.element.height;
105 }
106 get resolution() {
107 return this._view.resolution;
108 }
109 set resolution(value) {
110 this._view.resolution = value;
111 this.runners.resolutionChange.emit(value);
112 }
113 get autoDensity() {
114 return this._view.autoDensity;
115 }
116 get view() {
117 return this._view.element;
118 }
119 get screen() {
120 return this._view.screen;
121 }
122 get lastObjectRendered() {
123 return this.objectRenderer.lastObjectRendered;
124 }
125 get renderingToScreen() {
126 return this.objectRenderer.renderingToScreen;
127 }
128 get rendererLogId() {
129 return `WebGL ${this.context.webGLVersion}`;
130 }
131 get clearBeforeRender() {
132 deprecation("7.0.0", "renderer.clearBeforeRender has been deprecated, please use renderer.background.clearBeforeRender instead.");
133 return this.background.clearBeforeRender;
134 }
135 get useContextAlpha() {
136 deprecation("7.0.0", "renderer.useContextAlpha has been deprecated, please use renderer.context.premultipliedAlpha instead.");
137 return this.context.useContextAlpha;
138 }
139 get preserveDrawingBuffer() {
140 deprecation("7.0.0", "renderer.preserveDrawingBuffer has been deprecated, we cannot truly know this unless pixi created the context");
141 return this.context.preserveDrawingBuffer;
142 }
143 get backgroundColor() {
144 deprecation("7.0.0", "renderer.backgroundColor has been deprecated, use renderer.background.color instead.");
145 return this.background.color;
146 }
147 set backgroundColor(value) {
148 deprecation("7.0.0", "renderer.backgroundColor has been deprecated, use renderer.background.color instead.");
149 this.background.color = value;
150 }
151 get backgroundAlpha() {
152 deprecation("7.0.0", "renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.");
153 return this.background.alpha;
154 }
155 set backgroundAlpha(value) {
156 deprecation("7.0.0", "renderer.backgroundAlpha has been deprecated, use renderer.background.alpha instead.");
157 this.background.alpha = value;
158 }
159 get powerPreference() {
160 deprecation("7.0.0", "renderer.powerPreference has been deprecated, we can only know this if pixi creates the context");
161 return this.context.powerPreference;
162 }
163 generateTexture(displayObject, options) {
164 return this.textureGenerator.generateTexture(displayObject, options);
165 }
166};
167let Renderer = _Renderer;
168Renderer.extension = {
169 type: ExtensionType.Renderer,
170 priority: 1
171};
172Renderer.__plugins = {};
173Renderer.__systems = {};
174extensions.handleByMap(ExtensionType.RendererPlugin, Renderer.__plugins);
175extensions.handleByMap(ExtensionType.RendererSystem, Renderer.__systems);
176extensions.add(Renderer);
177
178export { Renderer };
179//# sourceMappingURL=Renderer.mjs.map