diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/core/src/Renderer.js b/packages/core/src/Renderer.js index 2227e78..a307144 100644 --- a/packages/core/src/Renderer.js +++ b/packages/core/src/Renderer.js @@ -54,8 +54,6 @@ * rendering, stopping pixel interpolation. * @param {number} [options.backgroundColor=0x000000] - The background color of the rendered area * (shown if not transparent). - * @param {boolean} [options.legacy=false] - If true PixiJS will aim to ensure compatibility - * with older / less advanced devices. If you experiance unexplained flickering try setting this to true. * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card */ @@ -74,7 +72,6 @@ // this will be set by the contextSystem (this.context) this.gl = null; this.CONTEXT_UID = 0; - this.legacy = !!options.legacy; // TODO legacy! diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/core/src/Renderer.js b/packages/core/src/Renderer.js index 2227e78..a307144 100644 --- a/packages/core/src/Renderer.js +++ b/packages/core/src/Renderer.js @@ -54,8 +54,6 @@ * rendering, stopping pixel interpolation. * @param {number} [options.backgroundColor=0x000000] - The background color of the rendered area * (shown if not transparent). - * @param {boolean} [options.legacy=false] - If true PixiJS will aim to ensure compatibility - * with older / less advanced devices. If you experiance unexplained flickering try setting this to true. * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card */ @@ -74,7 +72,6 @@ // this will be set by the contextSystem (this.context) this.gl = null; this.CONTEXT_UID = 0; - this.legacy = !!options.legacy; // TODO legacy! diff --git a/packages/core/src/context/ContextSystem.js b/packages/core/src/context/ContextSystem.js index 301aab4..eddc93f 100644 --- a/packages/core/src/context/ContextSystem.js +++ b/packages/core/src/context/ContextSystem.js @@ -1,5 +1,6 @@ import System from '../System'; -import { settings } from '@pixi/settings'; +import { settings } from '../settings'; +import { ENV } from '@pixi/constants'; let CONTEXT_UID = 0; @@ -74,7 +75,7 @@ { let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', options); } diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/core/src/Renderer.js b/packages/core/src/Renderer.js index 2227e78..a307144 100644 --- a/packages/core/src/Renderer.js +++ b/packages/core/src/Renderer.js @@ -54,8 +54,6 @@ * rendering, stopping pixel interpolation. * @param {number} [options.backgroundColor=0x000000] - The background color of the rendered area * (shown if not transparent). - * @param {boolean} [options.legacy=false] - If true PixiJS will aim to ensure compatibility - * with older / less advanced devices. If you experiance unexplained flickering try setting this to true. * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card */ @@ -74,7 +72,6 @@ // this will be set by the contextSystem (this.context) this.gl = null; this.CONTEXT_UID = 0; - this.legacy = !!options.legacy; // TODO legacy! diff --git a/packages/core/src/context/ContextSystem.js b/packages/core/src/context/ContextSystem.js index 301aab4..eddc93f 100644 --- a/packages/core/src/context/ContextSystem.js +++ b/packages/core/src/context/ContextSystem.js @@ -1,5 +1,6 @@ import System from '../System'; -import { settings } from '@pixi/settings'; +import { settings } from '../settings'; +import { ENV } from '@pixi/constants'; let CONTEXT_UID = 0; @@ -74,7 +75,7 @@ { let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', options); } diff --git a/packages/core/src/geometry/GeometrySystem.js b/packages/core/src/geometry/GeometrySystem.js index 9b59f86..b08fc97 100644 --- a/packages/core/src/geometry/GeometrySystem.js +++ b/packages/core/src/geometry/GeometrySystem.js @@ -1,5 +1,7 @@ import System from '../System'; import GLBuffer from './GLBuffer'; +import { ENV } from '@pixi/constants'; +import { settings } from '../settings'; const byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 }; @@ -41,7 +43,7 @@ // webgl 1! let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; - if (this.renderer.legacy) + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { nativeVaoExtension = null; } diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/core/src/Renderer.js b/packages/core/src/Renderer.js index 2227e78..a307144 100644 --- a/packages/core/src/Renderer.js +++ b/packages/core/src/Renderer.js @@ -54,8 +54,6 @@ * rendering, stopping pixel interpolation. * @param {number} [options.backgroundColor=0x000000] - The background color of the rendered area * (shown if not transparent). - * @param {boolean} [options.legacy=false] - If true PixiJS will aim to ensure compatibility - * with older / less advanced devices. If you experiance unexplained flickering try setting this to true. * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card */ @@ -74,7 +72,6 @@ // this will be set by the contextSystem (this.context) this.gl = null; this.CONTEXT_UID = 0; - this.legacy = !!options.legacy; // TODO legacy! diff --git a/packages/core/src/context/ContextSystem.js b/packages/core/src/context/ContextSystem.js index 301aab4..eddc93f 100644 --- a/packages/core/src/context/ContextSystem.js +++ b/packages/core/src/context/ContextSystem.js @@ -1,5 +1,6 @@ import System from '../System'; -import { settings } from '@pixi/settings'; +import { settings } from '../settings'; +import { ENV } from '@pixi/constants'; let CONTEXT_UID = 0; @@ -74,7 +75,7 @@ { let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', options); } diff --git a/packages/core/src/geometry/GeometrySystem.js b/packages/core/src/geometry/GeometrySystem.js index 9b59f86..b08fc97 100644 --- a/packages/core/src/geometry/GeometrySystem.js +++ b/packages/core/src/geometry/GeometrySystem.js @@ -1,5 +1,7 @@ import System from '../System'; import GLBuffer from './GLBuffer'; +import { ENV } from '@pixi/constants'; +import { settings } from '../settings'; const byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 }; @@ -41,7 +43,7 @@ // webgl 1! let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; - if (this.renderer.legacy) + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { nativeVaoExtension = null; } diff --git a/packages/core/src/index.js b/packages/core/src/index.js index fd1f547..dce9df4 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -1,6 +1,8 @@ import * as resources from './textures/resources'; import * as systems from './systems'; +import './settings'; + export { systems }; export { resources }; diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/core/src/Renderer.js b/packages/core/src/Renderer.js index 2227e78..a307144 100644 --- a/packages/core/src/Renderer.js +++ b/packages/core/src/Renderer.js @@ -54,8 +54,6 @@ * rendering, stopping pixel interpolation. * @param {number} [options.backgroundColor=0x000000] - The background color of the rendered area * (shown if not transparent). - * @param {boolean} [options.legacy=false] - If true PixiJS will aim to ensure compatibility - * with older / less advanced devices. If you experiance unexplained flickering try setting this to true. * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card */ @@ -74,7 +72,6 @@ // this will be set by the contextSystem (this.context) this.gl = null; this.CONTEXT_UID = 0; - this.legacy = !!options.legacy; // TODO legacy! diff --git a/packages/core/src/context/ContextSystem.js b/packages/core/src/context/ContextSystem.js index 301aab4..eddc93f 100644 --- a/packages/core/src/context/ContextSystem.js +++ b/packages/core/src/context/ContextSystem.js @@ -1,5 +1,6 @@ import System from '../System'; -import { settings } from '@pixi/settings'; +import { settings } from '../settings'; +import { ENV } from '@pixi/constants'; let CONTEXT_UID = 0; @@ -74,7 +75,7 @@ { let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', options); } diff --git a/packages/core/src/geometry/GeometrySystem.js b/packages/core/src/geometry/GeometrySystem.js index 9b59f86..b08fc97 100644 --- a/packages/core/src/geometry/GeometrySystem.js +++ b/packages/core/src/geometry/GeometrySystem.js @@ -1,5 +1,7 @@ import System from '../System'; import GLBuffer from './GLBuffer'; +import { ENV } from '@pixi/constants'; +import { settings } from '../settings'; const byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 }; @@ -41,7 +43,7 @@ // webgl 1! let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; - if (this.renderer.legacy) + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { nativeVaoExtension = null; } diff --git a/packages/core/src/index.js b/packages/core/src/index.js index fd1f547..dce9df4 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -1,6 +1,8 @@ import * as resources from './textures/resources'; import * as systems from './systems'; +import './settings'; + export { systems }; export { resources }; diff --git a/packages/core/src/settings.js b/packages/core/src/settings.js new file mode 100644 index 0000000..f87baad --- /dev/null +++ b/packages/core/src/settings.js @@ -0,0 +1,20 @@ +import { settings } from '@pixi/settings'; +import { ENV } from '@pixi/constants'; + +/** + * The maximum support for using WebGL. If a device does not + * support WebGL version, for instance WebGL 2, it will still + * attempt to fallback support to WebGL 1. If you want to + * explicitly remove feature support to target a more stable + * baseline, prefer a lower environment. + * + * @static + * @constant + * @name PREFER_ENV + * @memberof PIXI.settings + * @type {number} + * @default PIXI.ENV.WEBGL2 + */ +settings.PREFER_ENV = ENV.WEBGL2; + +export { settings }; diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/core/src/Renderer.js b/packages/core/src/Renderer.js index 2227e78..a307144 100644 --- a/packages/core/src/Renderer.js +++ b/packages/core/src/Renderer.js @@ -54,8 +54,6 @@ * rendering, stopping pixel interpolation. * @param {number} [options.backgroundColor=0x000000] - The background color of the rendered area * (shown if not transparent). - * @param {boolean} [options.legacy=false] - If true PixiJS will aim to ensure compatibility - * with older / less advanced devices. If you experiance unexplained flickering try setting this to true. * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card */ @@ -74,7 +72,6 @@ // this will be set by the contextSystem (this.context) this.gl = null; this.CONTEXT_UID = 0; - this.legacy = !!options.legacy; // TODO legacy! diff --git a/packages/core/src/context/ContextSystem.js b/packages/core/src/context/ContextSystem.js index 301aab4..eddc93f 100644 --- a/packages/core/src/context/ContextSystem.js +++ b/packages/core/src/context/ContextSystem.js @@ -1,5 +1,6 @@ import System from '../System'; -import { settings } from '@pixi/settings'; +import { settings } from '../settings'; +import { ENV } from '@pixi/constants'; let CONTEXT_UID = 0; @@ -74,7 +75,7 @@ { let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', options); } diff --git a/packages/core/src/geometry/GeometrySystem.js b/packages/core/src/geometry/GeometrySystem.js index 9b59f86..b08fc97 100644 --- a/packages/core/src/geometry/GeometrySystem.js +++ b/packages/core/src/geometry/GeometrySystem.js @@ -1,5 +1,7 @@ import System from '../System'; import GLBuffer from './GLBuffer'; +import { ENV } from '@pixi/constants'; +import { settings } from '../settings'; const byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 }; @@ -41,7 +43,7 @@ // webgl 1! let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; - if (this.renderer.legacy) + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { nativeVaoExtension = null; } diff --git a/packages/core/src/index.js b/packages/core/src/index.js index fd1f547..dce9df4 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -1,6 +1,8 @@ import * as resources from './textures/resources'; import * as systems from './systems'; +import './settings'; + export { systems }; export { resources }; diff --git a/packages/core/src/settings.js b/packages/core/src/settings.js new file mode 100644 index 0000000..f87baad --- /dev/null +++ b/packages/core/src/settings.js @@ -0,0 +1,20 @@ +import { settings } from '@pixi/settings'; +import { ENV } from '@pixi/constants'; + +/** + * The maximum support for using WebGL. If a device does not + * support WebGL version, for instance WebGL 2, it will still + * attempt to fallback support to WebGL 1. If you want to + * explicitly remove feature support to target a more stable + * baseline, prefer a lower environment. + * + * @static + * @constant + * @name PREFER_ENV + * @memberof PIXI.settings + * @type {number} + * @default PIXI.ENV.WEBGL2 + */ +settings.PREFER_ENV = ENV.WEBGL2; + +export { settings }; diff --git a/packages/core/src/shader/utils/getTestContext.js b/packages/core/src/shader/utils/getTestContext.js index ea174cc..7ff0fc0 100644 --- a/packages/core/src/shader/utils/getTestContext.js +++ b/packages/core/src/shader/utils/getTestContext.js @@ -1,4 +1,5 @@ -import { settings } from '@pixi/settings'; +import { settings } from '../../settings'; +import { ENV } from '@pixi/constants'; let context = null; @@ -17,7 +18,7 @@ let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', {}); } diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/core/src/Renderer.js b/packages/core/src/Renderer.js index 2227e78..a307144 100644 --- a/packages/core/src/Renderer.js +++ b/packages/core/src/Renderer.js @@ -54,8 +54,6 @@ * rendering, stopping pixel interpolation. * @param {number} [options.backgroundColor=0x000000] - The background color of the rendered area * (shown if not transparent). - * @param {boolean} [options.legacy=false] - If true PixiJS will aim to ensure compatibility - * with older / less advanced devices. If you experiance unexplained flickering try setting this to true. * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card */ @@ -74,7 +72,6 @@ // this will be set by the contextSystem (this.context) this.gl = null; this.CONTEXT_UID = 0; - this.legacy = !!options.legacy; // TODO legacy! diff --git a/packages/core/src/context/ContextSystem.js b/packages/core/src/context/ContextSystem.js index 301aab4..eddc93f 100644 --- a/packages/core/src/context/ContextSystem.js +++ b/packages/core/src/context/ContextSystem.js @@ -1,5 +1,6 @@ import System from '../System'; -import { settings } from '@pixi/settings'; +import { settings } from '../settings'; +import { ENV } from '@pixi/constants'; let CONTEXT_UID = 0; @@ -74,7 +75,7 @@ { let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', options); } diff --git a/packages/core/src/geometry/GeometrySystem.js b/packages/core/src/geometry/GeometrySystem.js index 9b59f86..b08fc97 100644 --- a/packages/core/src/geometry/GeometrySystem.js +++ b/packages/core/src/geometry/GeometrySystem.js @@ -1,5 +1,7 @@ import System from '../System'; import GLBuffer from './GLBuffer'; +import { ENV } from '@pixi/constants'; +import { settings } from '../settings'; const byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 }; @@ -41,7 +43,7 @@ // webgl 1! let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; - if (this.renderer.legacy) + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { nativeVaoExtension = null; } diff --git a/packages/core/src/index.js b/packages/core/src/index.js index fd1f547..dce9df4 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -1,6 +1,8 @@ import * as resources from './textures/resources'; import * as systems from './systems'; +import './settings'; + export { systems }; export { resources }; diff --git a/packages/core/src/settings.js b/packages/core/src/settings.js new file mode 100644 index 0000000..f87baad --- /dev/null +++ b/packages/core/src/settings.js @@ -0,0 +1,20 @@ +import { settings } from '@pixi/settings'; +import { ENV } from '@pixi/constants'; + +/** + * The maximum support for using WebGL. If a device does not + * support WebGL version, for instance WebGL 2, it will still + * attempt to fallback support to WebGL 1. If you want to + * explicitly remove feature support to target a more stable + * baseline, prefer a lower environment. + * + * @static + * @constant + * @name PREFER_ENV + * @memberof PIXI.settings + * @type {number} + * @default PIXI.ENV.WEBGL2 + */ +settings.PREFER_ENV = ENV.WEBGL2; + +export { settings }; diff --git a/packages/core/src/shader/utils/getTestContext.js b/packages/core/src/shader/utils/getTestContext.js index ea174cc..7ff0fc0 100644 --- a/packages/core/src/shader/utils/getTestContext.js +++ b/packages/core/src/shader/utils/getTestContext.js @@ -1,4 +1,5 @@ -import { settings } from '@pixi/settings'; +import { settings } from '../../settings'; +import { ENV } from '@pixi/constants'; let context = null; @@ -17,7 +18,7 @@ let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', {}); } diff --git a/packages/core/test/Renderer.js b/packages/core/test/Renderer.js index d9d3325..9a6d3fc 100644 --- a/packages/core/test/Renderer.js +++ b/packages/core/test/Renderer.js @@ -1,4 +1,6 @@ const { Renderer } = require('../'); +const { settings } = require('@pixi/settings'); +const { ENV } = require('@pixi/constants'); const { isWebGLSupported, skipHello } = require('@pixi/utils'); skipHello(); @@ -12,7 +14,8 @@ { it('setting option legacy should disable VAOs and SPRITE_MAX_TEXTURES', withGL(function () { - const renderer = new Renderer({ legacy: true, width: 1, height: 1 }); + settings.PREFER_ENV = ENV.WEBGL_LEGACY; + const renderer = new Renderer(1, 1); try { @@ -23,6 +26,7 @@ { renderer.destroy(); } + settings.PREFER_ENV = ENV.WEBGL2; })); it('should allow clear() to work despite no containers added to the renderer', withGL(function () diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/core/src/Renderer.js b/packages/core/src/Renderer.js index 2227e78..a307144 100644 --- a/packages/core/src/Renderer.js +++ b/packages/core/src/Renderer.js @@ -54,8 +54,6 @@ * rendering, stopping pixel interpolation. * @param {number} [options.backgroundColor=0x000000] - The background color of the rendered area * (shown if not transparent). - * @param {boolean} [options.legacy=false] - If true PixiJS will aim to ensure compatibility - * with older / less advanced devices. If you experiance unexplained flickering try setting this to true. * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card */ @@ -74,7 +72,6 @@ // this will be set by the contextSystem (this.context) this.gl = null; this.CONTEXT_UID = 0; - this.legacy = !!options.legacy; // TODO legacy! diff --git a/packages/core/src/context/ContextSystem.js b/packages/core/src/context/ContextSystem.js index 301aab4..eddc93f 100644 --- a/packages/core/src/context/ContextSystem.js +++ b/packages/core/src/context/ContextSystem.js @@ -1,5 +1,6 @@ import System from '../System'; -import { settings } from '@pixi/settings'; +import { settings } from '../settings'; +import { ENV } from '@pixi/constants'; let CONTEXT_UID = 0; @@ -74,7 +75,7 @@ { let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', options); } diff --git a/packages/core/src/geometry/GeometrySystem.js b/packages/core/src/geometry/GeometrySystem.js index 9b59f86..b08fc97 100644 --- a/packages/core/src/geometry/GeometrySystem.js +++ b/packages/core/src/geometry/GeometrySystem.js @@ -1,5 +1,7 @@ import System from '../System'; import GLBuffer from './GLBuffer'; +import { ENV } from '@pixi/constants'; +import { settings } from '../settings'; const byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 }; @@ -41,7 +43,7 @@ // webgl 1! let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; - if (this.renderer.legacy) + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { nativeVaoExtension = null; } diff --git a/packages/core/src/index.js b/packages/core/src/index.js index fd1f547..dce9df4 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -1,6 +1,8 @@ import * as resources from './textures/resources'; import * as systems from './systems'; +import './settings'; + export { systems }; export { resources }; diff --git a/packages/core/src/settings.js b/packages/core/src/settings.js new file mode 100644 index 0000000..f87baad --- /dev/null +++ b/packages/core/src/settings.js @@ -0,0 +1,20 @@ +import { settings } from '@pixi/settings'; +import { ENV } from '@pixi/constants'; + +/** + * The maximum support for using WebGL. If a device does not + * support WebGL version, for instance WebGL 2, it will still + * attempt to fallback support to WebGL 1. If you want to + * explicitly remove feature support to target a more stable + * baseline, prefer a lower environment. + * + * @static + * @constant + * @name PREFER_ENV + * @memberof PIXI.settings + * @type {number} + * @default PIXI.ENV.WEBGL2 + */ +settings.PREFER_ENV = ENV.WEBGL2; + +export { settings }; diff --git a/packages/core/src/shader/utils/getTestContext.js b/packages/core/src/shader/utils/getTestContext.js index ea174cc..7ff0fc0 100644 --- a/packages/core/src/shader/utils/getTestContext.js +++ b/packages/core/src/shader/utils/getTestContext.js @@ -1,4 +1,5 @@ -import { settings } from '@pixi/settings'; +import { settings } from '../../settings'; +import { ENV } from '@pixi/constants'; let context = null; @@ -17,7 +18,7 @@ let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', {}); } diff --git a/packages/core/test/Renderer.js b/packages/core/test/Renderer.js index d9d3325..9a6d3fc 100644 --- a/packages/core/test/Renderer.js +++ b/packages/core/test/Renderer.js @@ -1,4 +1,6 @@ const { Renderer } = require('../'); +const { settings } = require('@pixi/settings'); +const { ENV } = require('@pixi/constants'); const { isWebGLSupported, skipHello } = require('@pixi/utils'); skipHello(); @@ -12,7 +14,8 @@ { it('setting option legacy should disable VAOs and SPRITE_MAX_TEXTURES', withGL(function () { - const renderer = new Renderer({ legacy: true, width: 1, height: 1 }); + settings.PREFER_ENV = ENV.WEBGL_LEGACY; + const renderer = new Renderer(1, 1); try { @@ -23,6 +26,7 @@ { renderer.destroy(); } + settings.PREFER_ENV = ENV.WEBGL2; })); it('should allow clear() to work despite no containers added to the renderer', withGL(function () diff --git a/packages/settings/src/settings.js b/packages/settings/src/settings.js index d0db6e3..e4906af 100644 --- a/packages/settings/src/settings.js +++ b/packages/settings/src/settings.js @@ -37,16 +37,6 @@ RESOLUTION: 1, /** - * Prefer the use of WebGL v2 by default. - * - * @static - * @memberof PIXI.settings - * @type {boolean} - * @default true - */ - PREFER_WEBGL_2: true, - - /** * Default filter resolution. * * @static diff --git a/packages/app/src/Application.js b/packages/app/src/Application.js index ef40610..b5c0ba1 100644 --- a/packages/app/src/Application.js +++ b/packages/app/src/Application.js @@ -46,8 +46,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @param {boolean} [options.sharedTicker=false] - `true` to use PIXI.Ticker.shared, `false` to create new ticker. diff --git a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js index 7bbcf01..916eba7 100644 --- a/packages/canvas/canvas-renderer/src/autoDetectRenderer.js +++ b/packages/canvas/canvas-renderer/src/autoDetectRenderer.js @@ -28,8 +28,6 @@ * stopping pixel interpolation. * @param {boolean} [options.forceFXAA=false] - forces FXAA antialiasing to be used over native. * FXAA is faster, but may not always look as great **webgl only** - * @param {boolean} [options.legacy=false] - `true` to ensure compatibility with older / less advanced devices. - * If you experience unexplained flickering try setting this to true. **webgl only** * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card **webgl only** * @return {PIXI.Renderer|PIXI.CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer diff --git a/packages/constants/src/index.js b/packages/constants/src/index.js index 1f306bd..9d1faa1 100644 --- a/packages/constants/src/index.js +++ b/packages/constants/src/index.js @@ -1,4 +1,23 @@ /** + * Different types of environments for WebGL. + * + * @static + * @constant + * @memberof PIXI + * @name ENV + * @type {object} + * @property {number} WEBGL_LEGACY - Used for older v1 WebGL devices. PixiJS will aim to ensure compatibility + * with older / less advanced devices. If you experiance unexplained flickering prefer this envionment. + * @property {number} WEBGL - Version 1 of WebGL + * @property {number} WEBGL2 - Version 2 of WebGL + */ +export const ENV = { + WEBGL_LEGACY: 0, + WEBGL: 1, + WEBGL2: 2, +}; + +/** * Constant to identify the Renderer Type. * * @static diff --git a/packages/core/src/Renderer.js b/packages/core/src/Renderer.js index 2227e78..a307144 100644 --- a/packages/core/src/Renderer.js +++ b/packages/core/src/Renderer.js @@ -54,8 +54,6 @@ * rendering, stopping pixel interpolation. * @param {number} [options.backgroundColor=0x000000] - The background color of the rendered area * (shown if not transparent). - * @param {boolean} [options.legacy=false] - If true PixiJS will aim to ensure compatibility - * with older / less advanced devices. If you experiance unexplained flickering try setting this to true. * @param {string} [options.powerPreference] - Parameter passed to webgl context, set to "high-performance" * for devices with dual graphics card */ @@ -74,7 +72,6 @@ // this will be set by the contextSystem (this.context) this.gl = null; this.CONTEXT_UID = 0; - this.legacy = !!options.legacy; // TODO legacy! diff --git a/packages/core/src/context/ContextSystem.js b/packages/core/src/context/ContextSystem.js index 301aab4..eddc93f 100644 --- a/packages/core/src/context/ContextSystem.js +++ b/packages/core/src/context/ContextSystem.js @@ -1,5 +1,6 @@ import System from '../System'; -import { settings } from '@pixi/settings'; +import { settings } from '../settings'; +import { ENV } from '@pixi/constants'; let CONTEXT_UID = 0; @@ -74,7 +75,7 @@ { let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', options); } diff --git a/packages/core/src/geometry/GeometrySystem.js b/packages/core/src/geometry/GeometrySystem.js index 9b59f86..b08fc97 100644 --- a/packages/core/src/geometry/GeometrySystem.js +++ b/packages/core/src/geometry/GeometrySystem.js @@ -1,5 +1,7 @@ import System from '../System'; import GLBuffer from './GLBuffer'; +import { ENV } from '@pixi/constants'; +import { settings } from '../settings'; const byteSizeMap = { 5126: 4, 5123: 2, 5121: 1 }; @@ -41,7 +43,7 @@ // webgl 1! let nativeVaoExtension = this.renderer.context.extensions.vertexArrayObject; - if (this.renderer.legacy) + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { nativeVaoExtension = null; } diff --git a/packages/core/src/index.js b/packages/core/src/index.js index fd1f547..dce9df4 100644 --- a/packages/core/src/index.js +++ b/packages/core/src/index.js @@ -1,6 +1,8 @@ import * as resources from './textures/resources'; import * as systems from './systems'; +import './settings'; + export { systems }; export { resources }; diff --git a/packages/core/src/settings.js b/packages/core/src/settings.js new file mode 100644 index 0000000..f87baad --- /dev/null +++ b/packages/core/src/settings.js @@ -0,0 +1,20 @@ +import { settings } from '@pixi/settings'; +import { ENV } from '@pixi/constants'; + +/** + * The maximum support for using WebGL. If a device does not + * support WebGL version, for instance WebGL 2, it will still + * attempt to fallback support to WebGL 1. If you want to + * explicitly remove feature support to target a more stable + * baseline, prefer a lower environment. + * + * @static + * @constant + * @name PREFER_ENV + * @memberof PIXI.settings + * @type {number} + * @default PIXI.ENV.WEBGL2 + */ +settings.PREFER_ENV = ENV.WEBGL2; + +export { settings }; diff --git a/packages/core/src/shader/utils/getTestContext.js b/packages/core/src/shader/utils/getTestContext.js index ea174cc..7ff0fc0 100644 --- a/packages/core/src/shader/utils/getTestContext.js +++ b/packages/core/src/shader/utils/getTestContext.js @@ -1,4 +1,5 @@ -import { settings } from '@pixi/settings'; +import { settings } from '../../settings'; +import { ENV } from '@pixi/constants'; let context = null; @@ -17,7 +18,7 @@ let gl; - if (settings.PREFER_WEBGL_2) + if (settings.PREFER_ENV >= ENV.WEBGL2) { gl = canvas.getContext('webgl2', {}); } diff --git a/packages/core/test/Renderer.js b/packages/core/test/Renderer.js index d9d3325..9a6d3fc 100644 --- a/packages/core/test/Renderer.js +++ b/packages/core/test/Renderer.js @@ -1,4 +1,6 @@ const { Renderer } = require('../'); +const { settings } = require('@pixi/settings'); +const { ENV } = require('@pixi/constants'); const { isWebGLSupported, skipHello } = require('@pixi/utils'); skipHello(); @@ -12,7 +14,8 @@ { it('setting option legacy should disable VAOs and SPRITE_MAX_TEXTURES', withGL(function () { - const renderer = new Renderer({ legacy: true, width: 1, height: 1 }); + settings.PREFER_ENV = ENV.WEBGL_LEGACY; + const renderer = new Renderer(1, 1); try { @@ -23,6 +26,7 @@ { renderer.destroy(); } + settings.PREFER_ENV = ENV.WEBGL2; })); it('should allow clear() to work despite no containers added to the renderer', withGL(function () diff --git a/packages/settings/src/settings.js b/packages/settings/src/settings.js index d0db6e3..e4906af 100644 --- a/packages/settings/src/settings.js +++ b/packages/settings/src/settings.js @@ -37,16 +37,6 @@ RESOLUTION: 1, /** - * Prefer the use of WebGL v2 by default. - * - * @static - * @memberof PIXI.settings - * @type {boolean} - * @default true - */ - PREFER_WEBGL_2: true, - - /** * Default filter resolution. * * @static diff --git a/packages/sprite/src/SpriteRenderer.js b/packages/sprite/src/SpriteRenderer.js index 6ed9cb6..1fdc253 100644 --- a/packages/sprite/src/SpriteRenderer.js +++ b/packages/sprite/src/SpriteRenderer.js @@ -7,6 +7,7 @@ import bitTwiddle from 'bit-twiddle'; import BatchBuffer from './BatchBuffer'; import generateMultiTextureShader from './generateMultiTextureShader'; +import { ENV } from '@pixi/constants'; let TICK = 0; // const TEXTURE_TICK = 0; @@ -103,7 +104,7 @@ { const gl = this.renderer.gl; - if (this.renderer.legacy) + if (settings.PREFER_ENV === ENV.WEBGL_LEGACY) { this.MAX_TEXTURES = 1; }