diff --git a/src/core/Shader.js b/src/core/Shader.js deleted file mode 100644 index 7846567..0000000 --- a/src/core/Shader.js +++ /dev/null @@ -1,45 +0,0 @@ -import { GLShader } from 'pixi-gl-core'; -import { PRECISION } from './const'; - -function checkPrecision(src) -{ - if (src instanceof Array) - { - if (src[0].substring(0, 9) !== 'precision') - { - const copy = src.slice(0); - - copy.unshift(`precision ${PRECISION.DEFAULT} float;`); - - return copy; - } - } - else if (src.substring(0, 9) !== 'precision') - { - return `precision ${PRECISION.DEFAULT} float;\n${src}`; - } - - return src; -} - -/** - * Wrapper class, webGL Shader for Pixi. - * Adds precision string if vertexSrc or fragmentSrc have no mention of it. - * - * @class - * @extends GLShader - * @memberof PIXI - */ -export default class Shader extends GLShader -{ - /** - * - * @param {WebGLRenderingContext} gl - The current WebGL rendering context - * @param {string|string[]} vertexSrc - The vertex shader source as an array of strings. - * @param {string|string[]} fragmentSrc - The fragment shader source as an array of strings. - */ - constructor(gl, vertexSrc, fragmentSrc) - { - super(gl, checkPrecision(vertexSrc), checkPrecision(fragmentSrc)); - } -} diff --git a/src/core/Shader.js b/src/core/Shader.js deleted file mode 100644 index 7846567..0000000 --- a/src/core/Shader.js +++ /dev/null @@ -1,45 +0,0 @@ -import { GLShader } from 'pixi-gl-core'; -import { PRECISION } from './const'; - -function checkPrecision(src) -{ - if (src instanceof Array) - { - if (src[0].substring(0, 9) !== 'precision') - { - const copy = src.slice(0); - - copy.unshift(`precision ${PRECISION.DEFAULT} float;`); - - return copy; - } - } - else if (src.substring(0, 9) !== 'precision') - { - return `precision ${PRECISION.DEFAULT} float;\n${src}`; - } - - return src; -} - -/** - * Wrapper class, webGL Shader for Pixi. - * Adds precision string if vertexSrc or fragmentSrc have no mention of it. - * - * @class - * @extends GLShader - * @memberof PIXI - */ -export default class Shader extends GLShader -{ - /** - * - * @param {WebGLRenderingContext} gl - The current WebGL rendering context - * @param {string|string[]} vertexSrc - The vertex shader source as an array of strings. - * @param {string|string[]} fragmentSrc - The fragment shader source as an array of strings. - */ - constructor(gl, vertexSrc, fragmentSrc) - { - super(gl, checkPrecision(vertexSrc), checkPrecision(fragmentSrc)); - } -} diff --git a/src/core/graphics/webgl/shaders/PrimitiveShader.js b/src/core/graphics/webgl/shaders/PrimitiveShader.js index dd3779b..5ba9799 100644 --- a/src/core/graphics/webgl/shaders/PrimitiveShader.js +++ b/src/core/graphics/webgl/shaders/PrimitiveShader.js @@ -1,4 +1,5 @@ -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; /** * This shader is used to draw simple primitive shapes for {@link PIXI.Graphics}. @@ -7,7 +8,7 @@ * @memberof PIXI * @extends PIXI.Shader */ -export default class PrimitiveShader extends Shader +export default class PrimitiveShader extends GLShader { /** * @param {WebGLRenderingContext} gl - The webgl shader manager this shader works for. @@ -40,7 +41,8 @@ 'void main(void){', ' gl_FragColor = vColor;', '}', - ].join('\n') + ].join('\n'), + PRECISION.DEFAULT ); } } diff --git a/src/core/Shader.js b/src/core/Shader.js deleted file mode 100644 index 7846567..0000000 --- a/src/core/Shader.js +++ /dev/null @@ -1,45 +0,0 @@ -import { GLShader } from 'pixi-gl-core'; -import { PRECISION } from './const'; - -function checkPrecision(src) -{ - if (src instanceof Array) - { - if (src[0].substring(0, 9) !== 'precision') - { - const copy = src.slice(0); - - copy.unshift(`precision ${PRECISION.DEFAULT} float;`); - - return copy; - } - } - else if (src.substring(0, 9) !== 'precision') - { - return `precision ${PRECISION.DEFAULT} float;\n${src}`; - } - - return src; -} - -/** - * Wrapper class, webGL Shader for Pixi. - * Adds precision string if vertexSrc or fragmentSrc have no mention of it. - * - * @class - * @extends GLShader - * @memberof PIXI - */ -export default class Shader extends GLShader -{ - /** - * - * @param {WebGLRenderingContext} gl - The current WebGL rendering context - * @param {string|string[]} vertexSrc - The vertex shader source as an array of strings. - * @param {string|string[]} fragmentSrc - The fragment shader source as an array of strings. - */ - constructor(gl, vertexSrc, fragmentSrc) - { - super(gl, checkPrecision(vertexSrc), checkPrecision(fragmentSrc)); - } -} diff --git a/src/core/graphics/webgl/shaders/PrimitiveShader.js b/src/core/graphics/webgl/shaders/PrimitiveShader.js index dd3779b..5ba9799 100644 --- a/src/core/graphics/webgl/shaders/PrimitiveShader.js +++ b/src/core/graphics/webgl/shaders/PrimitiveShader.js @@ -1,4 +1,5 @@ -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; /** * This shader is used to draw simple primitive shapes for {@link PIXI.Graphics}. @@ -7,7 +8,7 @@ * @memberof PIXI * @extends PIXI.Shader */ -export default class PrimitiveShader extends Shader +export default class PrimitiveShader extends GLShader { /** * @param {WebGLRenderingContext} gl - The webgl shader manager this shader works for. @@ -40,7 +41,8 @@ 'void main(void){', ' gl_FragColor = vColor;', '}', - ].join('\n') + ].join('\n'), + PRECISION.DEFAULT ); } } diff --git a/src/core/index.js b/src/core/index.js index f2b3af1..7ea739a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -35,7 +35,6 @@ export { default as VideoBaseTexture } from './textures/VideoBaseTexture'; export { default as TextureUvs } from './textures/TextureUvs'; export { default as CanvasRenderTarget } from './renderers/canvas/utils/CanvasRenderTarget'; -export { default as Shader } from './Shader'; export { default as WebGLManager } from './renderers/webgl/managers/WebGLManager'; export { default as ObjectRenderer } from './renderers/webgl/utils/ObjectRenderer'; export { default as RenderTarget } from './renderers/webgl/utils/RenderTarget'; diff --git a/src/core/Shader.js b/src/core/Shader.js deleted file mode 100644 index 7846567..0000000 --- a/src/core/Shader.js +++ /dev/null @@ -1,45 +0,0 @@ -import { GLShader } from 'pixi-gl-core'; -import { PRECISION } from './const'; - -function checkPrecision(src) -{ - if (src instanceof Array) - { - if (src[0].substring(0, 9) !== 'precision') - { - const copy = src.slice(0); - - copy.unshift(`precision ${PRECISION.DEFAULT} float;`); - - return copy; - } - } - else if (src.substring(0, 9) !== 'precision') - { - return `precision ${PRECISION.DEFAULT} float;\n${src}`; - } - - return src; -} - -/** - * Wrapper class, webGL Shader for Pixi. - * Adds precision string if vertexSrc or fragmentSrc have no mention of it. - * - * @class - * @extends GLShader - * @memberof PIXI - */ -export default class Shader extends GLShader -{ - /** - * - * @param {WebGLRenderingContext} gl - The current WebGL rendering context - * @param {string|string[]} vertexSrc - The vertex shader source as an array of strings. - * @param {string|string[]} fragmentSrc - The fragment shader source as an array of strings. - */ - constructor(gl, vertexSrc, fragmentSrc) - { - super(gl, checkPrecision(vertexSrc), checkPrecision(fragmentSrc)); - } -} diff --git a/src/core/graphics/webgl/shaders/PrimitiveShader.js b/src/core/graphics/webgl/shaders/PrimitiveShader.js index dd3779b..5ba9799 100644 --- a/src/core/graphics/webgl/shaders/PrimitiveShader.js +++ b/src/core/graphics/webgl/shaders/PrimitiveShader.js @@ -1,4 +1,5 @@ -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; /** * This shader is used to draw simple primitive shapes for {@link PIXI.Graphics}. @@ -7,7 +8,7 @@ * @memberof PIXI * @extends PIXI.Shader */ -export default class PrimitiveShader extends Shader +export default class PrimitiveShader extends GLShader { /** * @param {WebGLRenderingContext} gl - The webgl shader manager this shader works for. @@ -40,7 +41,8 @@ 'void main(void){', ' gl_FragColor = vColor;', '}', - ].join('\n') + ].join('\n'), + PRECISION.DEFAULT ); } } diff --git a/src/core/index.js b/src/core/index.js index f2b3af1..7ea739a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -35,7 +35,6 @@ export { default as VideoBaseTexture } from './textures/VideoBaseTexture'; export { default as TextureUvs } from './textures/TextureUvs'; export { default as CanvasRenderTarget } from './renderers/canvas/utils/CanvasRenderTarget'; -export { default as Shader } from './Shader'; export { default as WebGLManager } from './renderers/webgl/managers/WebGLManager'; export { default as ObjectRenderer } from './renderers/webgl/utils/ObjectRenderer'; export { default as RenderTarget } from './renderers/webgl/utils/RenderTarget'; diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index c8a9a95..7e77dd7 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -2,7 +2,8 @@ import RenderTarget from '../utils/RenderTarget'; import Quad from '../utils/Quad'; import { Rectangle } from '../../../math'; -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; import * as filterTransforms from '../filters/filterTransforms'; import bitTwiddle from 'bit-twiddle'; @@ -220,14 +221,15 @@ if (!shader) { - shader = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); filter.glShaders[renderer.CONTEXT_UID] = this.shaderCache[filter.glShaderKey] = shader; } } else { - shader = filter.glShaders[renderer.CONTEXT_UID] = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); + filter.glShaders[renderer.CONTEXT_UID] = shader; } // TODO - this only needs to be done once? diff --git a/src/core/Shader.js b/src/core/Shader.js deleted file mode 100644 index 7846567..0000000 --- a/src/core/Shader.js +++ /dev/null @@ -1,45 +0,0 @@ -import { GLShader } from 'pixi-gl-core'; -import { PRECISION } from './const'; - -function checkPrecision(src) -{ - if (src instanceof Array) - { - if (src[0].substring(0, 9) !== 'precision') - { - const copy = src.slice(0); - - copy.unshift(`precision ${PRECISION.DEFAULT} float;`); - - return copy; - } - } - else if (src.substring(0, 9) !== 'precision') - { - return `precision ${PRECISION.DEFAULT} float;\n${src}`; - } - - return src; -} - -/** - * Wrapper class, webGL Shader for Pixi. - * Adds precision string if vertexSrc or fragmentSrc have no mention of it. - * - * @class - * @extends GLShader - * @memberof PIXI - */ -export default class Shader extends GLShader -{ - /** - * - * @param {WebGLRenderingContext} gl - The current WebGL rendering context - * @param {string|string[]} vertexSrc - The vertex shader source as an array of strings. - * @param {string|string[]} fragmentSrc - The fragment shader source as an array of strings. - */ - constructor(gl, vertexSrc, fragmentSrc) - { - super(gl, checkPrecision(vertexSrc), checkPrecision(fragmentSrc)); - } -} diff --git a/src/core/graphics/webgl/shaders/PrimitiveShader.js b/src/core/graphics/webgl/shaders/PrimitiveShader.js index dd3779b..5ba9799 100644 --- a/src/core/graphics/webgl/shaders/PrimitiveShader.js +++ b/src/core/graphics/webgl/shaders/PrimitiveShader.js @@ -1,4 +1,5 @@ -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; /** * This shader is used to draw simple primitive shapes for {@link PIXI.Graphics}. @@ -7,7 +8,7 @@ * @memberof PIXI * @extends PIXI.Shader */ -export default class PrimitiveShader extends Shader +export default class PrimitiveShader extends GLShader { /** * @param {WebGLRenderingContext} gl - The webgl shader manager this shader works for. @@ -40,7 +41,8 @@ 'void main(void){', ' gl_FragColor = vColor;', '}', - ].join('\n') + ].join('\n'), + PRECISION.DEFAULT ); } } diff --git a/src/core/index.js b/src/core/index.js index f2b3af1..7ea739a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -35,7 +35,6 @@ export { default as VideoBaseTexture } from './textures/VideoBaseTexture'; export { default as TextureUvs } from './textures/TextureUvs'; export { default as CanvasRenderTarget } from './renderers/canvas/utils/CanvasRenderTarget'; -export { default as Shader } from './Shader'; export { default as WebGLManager } from './renderers/webgl/managers/WebGLManager'; export { default as ObjectRenderer } from './renderers/webgl/utils/ObjectRenderer'; export { default as RenderTarget } from './renderers/webgl/utils/RenderTarget'; diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index c8a9a95..7e77dd7 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -2,7 +2,8 @@ import RenderTarget from '../utils/RenderTarget'; import Quad from '../utils/Quad'; import { Rectangle } from '../../../math'; -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; import * as filterTransforms from '../filters/filterTransforms'; import bitTwiddle from 'bit-twiddle'; @@ -220,14 +221,15 @@ if (!shader) { - shader = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); filter.glShaders[renderer.CONTEXT_UID] = this.shaderCache[filter.glShaderKey] = shader; } } else { - shader = filter.glShaders[renderer.CONTEXT_UID] = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); + filter.glShaders[renderer.CONTEXT_UID] = shader; } // TODO - this only needs to be done once? diff --git a/src/core/sprites/webgl/generateMultiTextureShader.js b/src/core/sprites/webgl/generateMultiTextureShader.js index b1b903e..a0e2fe9 100644 --- a/src/core/sprites/webgl/generateMultiTextureShader.js +++ b/src/core/sprites/webgl/generateMultiTextureShader.js @@ -1,4 +1,6 @@ -import Shader from '../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../const'; + const glslify = require('glslify'); // eslint-disable-line no-undef const fragTemplate = [ @@ -23,7 +25,7 @@ fragmentSrc = fragmentSrc.replace(/%count%/gi, maxTextures); fragmentSrc = fragmentSrc.replace(/%forloop%/gi, generateSampleSrc(maxTextures)); - const shader = new Shader(gl, vertexSrc, fragmentSrc); + const shader = new GLShader(gl, vertexSrc, fragmentSrc, PRECISION.DEFAULT); const sampleValues = []; diff --git a/src/core/Shader.js b/src/core/Shader.js deleted file mode 100644 index 7846567..0000000 --- a/src/core/Shader.js +++ /dev/null @@ -1,45 +0,0 @@ -import { GLShader } from 'pixi-gl-core'; -import { PRECISION } from './const'; - -function checkPrecision(src) -{ - if (src instanceof Array) - { - if (src[0].substring(0, 9) !== 'precision') - { - const copy = src.slice(0); - - copy.unshift(`precision ${PRECISION.DEFAULT} float;`); - - return copy; - } - } - else if (src.substring(0, 9) !== 'precision') - { - return `precision ${PRECISION.DEFAULT} float;\n${src}`; - } - - return src; -} - -/** - * Wrapper class, webGL Shader for Pixi. - * Adds precision string if vertexSrc or fragmentSrc have no mention of it. - * - * @class - * @extends GLShader - * @memberof PIXI - */ -export default class Shader extends GLShader -{ - /** - * - * @param {WebGLRenderingContext} gl - The current WebGL rendering context - * @param {string|string[]} vertexSrc - The vertex shader source as an array of strings. - * @param {string|string[]} fragmentSrc - The fragment shader source as an array of strings. - */ - constructor(gl, vertexSrc, fragmentSrc) - { - super(gl, checkPrecision(vertexSrc), checkPrecision(fragmentSrc)); - } -} diff --git a/src/core/graphics/webgl/shaders/PrimitiveShader.js b/src/core/graphics/webgl/shaders/PrimitiveShader.js index dd3779b..5ba9799 100644 --- a/src/core/graphics/webgl/shaders/PrimitiveShader.js +++ b/src/core/graphics/webgl/shaders/PrimitiveShader.js @@ -1,4 +1,5 @@ -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; /** * This shader is used to draw simple primitive shapes for {@link PIXI.Graphics}. @@ -7,7 +8,7 @@ * @memberof PIXI * @extends PIXI.Shader */ -export default class PrimitiveShader extends Shader +export default class PrimitiveShader extends GLShader { /** * @param {WebGLRenderingContext} gl - The webgl shader manager this shader works for. @@ -40,7 +41,8 @@ 'void main(void){', ' gl_FragColor = vColor;', '}', - ].join('\n') + ].join('\n'), + PRECISION.DEFAULT ); } } diff --git a/src/core/index.js b/src/core/index.js index f2b3af1..7ea739a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -35,7 +35,6 @@ export { default as VideoBaseTexture } from './textures/VideoBaseTexture'; export { default as TextureUvs } from './textures/TextureUvs'; export { default as CanvasRenderTarget } from './renderers/canvas/utils/CanvasRenderTarget'; -export { default as Shader } from './Shader'; export { default as WebGLManager } from './renderers/webgl/managers/WebGLManager'; export { default as ObjectRenderer } from './renderers/webgl/utils/ObjectRenderer'; export { default as RenderTarget } from './renderers/webgl/utils/RenderTarget'; diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index c8a9a95..7e77dd7 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -2,7 +2,8 @@ import RenderTarget from '../utils/RenderTarget'; import Quad from '../utils/Quad'; import { Rectangle } from '../../../math'; -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; import * as filterTransforms from '../filters/filterTransforms'; import bitTwiddle from 'bit-twiddle'; @@ -220,14 +221,15 @@ if (!shader) { - shader = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); filter.glShaders[renderer.CONTEXT_UID] = this.shaderCache[filter.glShaderKey] = shader; } } else { - shader = filter.glShaders[renderer.CONTEXT_UID] = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); + filter.glShaders[renderer.CONTEXT_UID] = shader; } // TODO - this only needs to be done once? diff --git a/src/core/sprites/webgl/generateMultiTextureShader.js b/src/core/sprites/webgl/generateMultiTextureShader.js index b1b903e..a0e2fe9 100644 --- a/src/core/sprites/webgl/generateMultiTextureShader.js +++ b/src/core/sprites/webgl/generateMultiTextureShader.js @@ -1,4 +1,6 @@ -import Shader from '../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../const'; + const glslify = require('glslify'); // eslint-disable-line no-undef const fragTemplate = [ @@ -23,7 +25,7 @@ fragmentSrc = fragmentSrc.replace(/%count%/gi, maxTextures); fragmentSrc = fragmentSrc.replace(/%forloop%/gi, generateSampleSrc(maxTextures)); - const shader = new Shader(gl, vertexSrc, fragmentSrc); + const shader = new GLShader(gl, vertexSrc, fragmentSrc, PRECISION.DEFAULT); const sampleValues = []; diff --git a/src/extras/webgl/TilingSpriteRenderer.js b/src/extras/webgl/TilingSpriteRenderer.js index 60bb185..34b98c4 100644 --- a/src/extras/webgl/TilingSpriteRenderer.js +++ b/src/extras/webgl/TilingSpriteRenderer.js @@ -1,5 +1,6 @@ import * as core from '../../core'; import { WRAP_MODES } from '../../core/const'; +import { GLShader } from 'pixi-gl-core'; const glslify = require('glslify'); // eslint-disable-line no-undef @@ -34,12 +35,14 @@ { const gl = this.renderer.gl; - this.shader = new core.Shader(gl, + this.shader = new GLShader(gl, glslify('./tilingSprite.vert'), - glslify('./tilingSprite.frag')); - this.simpleShader = new core.Shader(gl, + glslify('./tilingSprite.frag'), + core.PRECISION.DEFAULT); + this.simpleShader = new GLShader(gl, glslify('./tilingSprite.vert'), - glslify('./tilingSprite_simple.frag')); + glslify('./tilingSprite_simple.frag'), + core.PRECISION.DEFAULT); this.renderer.bindVao(null); this.quad = new core.Quad(gl, this.renderer.state.attribState); diff --git a/src/core/Shader.js b/src/core/Shader.js deleted file mode 100644 index 7846567..0000000 --- a/src/core/Shader.js +++ /dev/null @@ -1,45 +0,0 @@ -import { GLShader } from 'pixi-gl-core'; -import { PRECISION } from './const'; - -function checkPrecision(src) -{ - if (src instanceof Array) - { - if (src[0].substring(0, 9) !== 'precision') - { - const copy = src.slice(0); - - copy.unshift(`precision ${PRECISION.DEFAULT} float;`); - - return copy; - } - } - else if (src.substring(0, 9) !== 'precision') - { - return `precision ${PRECISION.DEFAULT} float;\n${src}`; - } - - return src; -} - -/** - * Wrapper class, webGL Shader for Pixi. - * Adds precision string if vertexSrc or fragmentSrc have no mention of it. - * - * @class - * @extends GLShader - * @memberof PIXI - */ -export default class Shader extends GLShader -{ - /** - * - * @param {WebGLRenderingContext} gl - The current WebGL rendering context - * @param {string|string[]} vertexSrc - The vertex shader source as an array of strings. - * @param {string|string[]} fragmentSrc - The fragment shader source as an array of strings. - */ - constructor(gl, vertexSrc, fragmentSrc) - { - super(gl, checkPrecision(vertexSrc), checkPrecision(fragmentSrc)); - } -} diff --git a/src/core/graphics/webgl/shaders/PrimitiveShader.js b/src/core/graphics/webgl/shaders/PrimitiveShader.js index dd3779b..5ba9799 100644 --- a/src/core/graphics/webgl/shaders/PrimitiveShader.js +++ b/src/core/graphics/webgl/shaders/PrimitiveShader.js @@ -1,4 +1,5 @@ -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; /** * This shader is used to draw simple primitive shapes for {@link PIXI.Graphics}. @@ -7,7 +8,7 @@ * @memberof PIXI * @extends PIXI.Shader */ -export default class PrimitiveShader extends Shader +export default class PrimitiveShader extends GLShader { /** * @param {WebGLRenderingContext} gl - The webgl shader manager this shader works for. @@ -40,7 +41,8 @@ 'void main(void){', ' gl_FragColor = vColor;', '}', - ].join('\n') + ].join('\n'), + PRECISION.DEFAULT ); } } diff --git a/src/core/index.js b/src/core/index.js index f2b3af1..7ea739a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -35,7 +35,6 @@ export { default as VideoBaseTexture } from './textures/VideoBaseTexture'; export { default as TextureUvs } from './textures/TextureUvs'; export { default as CanvasRenderTarget } from './renderers/canvas/utils/CanvasRenderTarget'; -export { default as Shader } from './Shader'; export { default as WebGLManager } from './renderers/webgl/managers/WebGLManager'; export { default as ObjectRenderer } from './renderers/webgl/utils/ObjectRenderer'; export { default as RenderTarget } from './renderers/webgl/utils/RenderTarget'; diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index c8a9a95..7e77dd7 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -2,7 +2,8 @@ import RenderTarget from '../utils/RenderTarget'; import Quad from '../utils/Quad'; import { Rectangle } from '../../../math'; -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; import * as filterTransforms from '../filters/filterTransforms'; import bitTwiddle from 'bit-twiddle'; @@ -220,14 +221,15 @@ if (!shader) { - shader = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); filter.glShaders[renderer.CONTEXT_UID] = this.shaderCache[filter.glShaderKey] = shader; } } else { - shader = filter.glShaders[renderer.CONTEXT_UID] = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); + filter.glShaders[renderer.CONTEXT_UID] = shader; } // TODO - this only needs to be done once? diff --git a/src/core/sprites/webgl/generateMultiTextureShader.js b/src/core/sprites/webgl/generateMultiTextureShader.js index b1b903e..a0e2fe9 100644 --- a/src/core/sprites/webgl/generateMultiTextureShader.js +++ b/src/core/sprites/webgl/generateMultiTextureShader.js @@ -1,4 +1,6 @@ -import Shader from '../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../const'; + const glslify = require('glslify'); // eslint-disable-line no-undef const fragTemplate = [ @@ -23,7 +25,7 @@ fragmentSrc = fragmentSrc.replace(/%count%/gi, maxTextures); fragmentSrc = fragmentSrc.replace(/%forloop%/gi, generateSampleSrc(maxTextures)); - const shader = new Shader(gl, vertexSrc, fragmentSrc); + const shader = new GLShader(gl, vertexSrc, fragmentSrc, PRECISION.DEFAULT); const sampleValues = []; diff --git a/src/extras/webgl/TilingSpriteRenderer.js b/src/extras/webgl/TilingSpriteRenderer.js index 60bb185..34b98c4 100644 --- a/src/extras/webgl/TilingSpriteRenderer.js +++ b/src/extras/webgl/TilingSpriteRenderer.js @@ -1,5 +1,6 @@ import * as core from '../../core'; import { WRAP_MODES } from '../../core/const'; +import { GLShader } from 'pixi-gl-core'; const glslify = require('glslify'); // eslint-disable-line no-undef @@ -34,12 +35,14 @@ { const gl = this.renderer.gl; - this.shader = new core.Shader(gl, + this.shader = new GLShader(gl, glslify('./tilingSprite.vert'), - glslify('./tilingSprite.frag')); - this.simpleShader = new core.Shader(gl, + glslify('./tilingSprite.frag'), + core.PRECISION.DEFAULT); + this.simpleShader = new GLShader(gl, glslify('./tilingSprite.vert'), - glslify('./tilingSprite_simple.frag')); + glslify('./tilingSprite_simple.frag'), + core.PRECISION.DEFAULT); this.renderer.bindVao(null); this.quad = new core.Quad(gl, this.renderer.state.attribState); diff --git a/src/mesh/webgl/MeshRenderer.js b/src/mesh/webgl/MeshRenderer.js index 005ccf9..5258efa 100644 --- a/src/mesh/webgl/MeshRenderer.js +++ b/src/mesh/webgl/MeshRenderer.js @@ -30,9 +30,10 @@ { const gl = this.renderer.gl; - this.shader = new core.Shader(gl, + this.shader = new glCore.GLShader(gl, glslify('./mesh.vert'), - glslify('./mesh.frag')); + glslify('./mesh.frag'), + core.PRECISION.DEFAULT); } /** diff --git a/src/core/Shader.js b/src/core/Shader.js deleted file mode 100644 index 7846567..0000000 --- a/src/core/Shader.js +++ /dev/null @@ -1,45 +0,0 @@ -import { GLShader } from 'pixi-gl-core'; -import { PRECISION } from './const'; - -function checkPrecision(src) -{ - if (src instanceof Array) - { - if (src[0].substring(0, 9) !== 'precision') - { - const copy = src.slice(0); - - copy.unshift(`precision ${PRECISION.DEFAULT} float;`); - - return copy; - } - } - else if (src.substring(0, 9) !== 'precision') - { - return `precision ${PRECISION.DEFAULT} float;\n${src}`; - } - - return src; -} - -/** - * Wrapper class, webGL Shader for Pixi. - * Adds precision string if vertexSrc or fragmentSrc have no mention of it. - * - * @class - * @extends GLShader - * @memberof PIXI - */ -export default class Shader extends GLShader -{ - /** - * - * @param {WebGLRenderingContext} gl - The current WebGL rendering context - * @param {string|string[]} vertexSrc - The vertex shader source as an array of strings. - * @param {string|string[]} fragmentSrc - The fragment shader source as an array of strings. - */ - constructor(gl, vertexSrc, fragmentSrc) - { - super(gl, checkPrecision(vertexSrc), checkPrecision(fragmentSrc)); - } -} diff --git a/src/core/graphics/webgl/shaders/PrimitiveShader.js b/src/core/graphics/webgl/shaders/PrimitiveShader.js index dd3779b..5ba9799 100644 --- a/src/core/graphics/webgl/shaders/PrimitiveShader.js +++ b/src/core/graphics/webgl/shaders/PrimitiveShader.js @@ -1,4 +1,5 @@ -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; /** * This shader is used to draw simple primitive shapes for {@link PIXI.Graphics}. @@ -7,7 +8,7 @@ * @memberof PIXI * @extends PIXI.Shader */ -export default class PrimitiveShader extends Shader +export default class PrimitiveShader extends GLShader { /** * @param {WebGLRenderingContext} gl - The webgl shader manager this shader works for. @@ -40,7 +41,8 @@ 'void main(void){', ' gl_FragColor = vColor;', '}', - ].join('\n') + ].join('\n'), + PRECISION.DEFAULT ); } } diff --git a/src/core/index.js b/src/core/index.js index f2b3af1..7ea739a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -35,7 +35,6 @@ export { default as VideoBaseTexture } from './textures/VideoBaseTexture'; export { default as TextureUvs } from './textures/TextureUvs'; export { default as CanvasRenderTarget } from './renderers/canvas/utils/CanvasRenderTarget'; -export { default as Shader } from './Shader'; export { default as WebGLManager } from './renderers/webgl/managers/WebGLManager'; export { default as ObjectRenderer } from './renderers/webgl/utils/ObjectRenderer'; export { default as RenderTarget } from './renderers/webgl/utils/RenderTarget'; diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index c8a9a95..7e77dd7 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -2,7 +2,8 @@ import RenderTarget from '../utils/RenderTarget'; import Quad from '../utils/Quad'; import { Rectangle } from '../../../math'; -import Shader from '../../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../../const'; import * as filterTransforms from '../filters/filterTransforms'; import bitTwiddle from 'bit-twiddle'; @@ -220,14 +221,15 @@ if (!shader) { - shader = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); filter.glShaders[renderer.CONTEXT_UID] = this.shaderCache[filter.glShaderKey] = shader; } } else { - shader = filter.glShaders[renderer.CONTEXT_UID] = new Shader(this.gl, filter.vertexSrc, filter.fragmentSrc); + shader = new GLShader(this.gl, filter.vertexSrc, filter.fragmentSrc, PRECISION.DEFAULT); + filter.glShaders[renderer.CONTEXT_UID] = shader; } // TODO - this only needs to be done once? diff --git a/src/core/sprites/webgl/generateMultiTextureShader.js b/src/core/sprites/webgl/generateMultiTextureShader.js index b1b903e..a0e2fe9 100644 --- a/src/core/sprites/webgl/generateMultiTextureShader.js +++ b/src/core/sprites/webgl/generateMultiTextureShader.js @@ -1,4 +1,6 @@ -import Shader from '../../Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../const'; + const glslify = require('glslify'); // eslint-disable-line no-undef const fragTemplate = [ @@ -23,7 +25,7 @@ fragmentSrc = fragmentSrc.replace(/%count%/gi, maxTextures); fragmentSrc = fragmentSrc.replace(/%forloop%/gi, generateSampleSrc(maxTextures)); - const shader = new Shader(gl, vertexSrc, fragmentSrc); + const shader = new GLShader(gl, vertexSrc, fragmentSrc, PRECISION.DEFAULT); const sampleValues = []; diff --git a/src/extras/webgl/TilingSpriteRenderer.js b/src/extras/webgl/TilingSpriteRenderer.js index 60bb185..34b98c4 100644 --- a/src/extras/webgl/TilingSpriteRenderer.js +++ b/src/extras/webgl/TilingSpriteRenderer.js @@ -1,5 +1,6 @@ import * as core from '../../core'; import { WRAP_MODES } from '../../core/const'; +import { GLShader } from 'pixi-gl-core'; const glslify = require('glslify'); // eslint-disable-line no-undef @@ -34,12 +35,14 @@ { const gl = this.renderer.gl; - this.shader = new core.Shader(gl, + this.shader = new GLShader(gl, glslify('./tilingSprite.vert'), - glslify('./tilingSprite.frag')); - this.simpleShader = new core.Shader(gl, + glslify('./tilingSprite.frag'), + core.PRECISION.DEFAULT); + this.simpleShader = new GLShader(gl, glslify('./tilingSprite.vert'), - glslify('./tilingSprite_simple.frag')); + glslify('./tilingSprite_simple.frag'), + core.PRECISION.DEFAULT); this.renderer.bindVao(null); this.quad = new core.Quad(gl, this.renderer.state.attribState); diff --git a/src/mesh/webgl/MeshRenderer.js b/src/mesh/webgl/MeshRenderer.js index 005ccf9..5258efa 100644 --- a/src/mesh/webgl/MeshRenderer.js +++ b/src/mesh/webgl/MeshRenderer.js @@ -30,9 +30,10 @@ { const gl = this.renderer.gl; - this.shader = new core.Shader(gl, + this.shader = new glCore.GLShader(gl, glslify('./mesh.vert'), - glslify('./mesh.frag')); + glslify('./mesh.frag'), + core.PRECISION.DEFAULT); } /** diff --git a/src/particles/webgl/ParticleShader.js b/src/particles/webgl/ParticleShader.js index 8c8b056..417380e 100644 --- a/src/particles/webgl/ParticleShader.js +++ b/src/particles/webgl/ParticleShader.js @@ -1,11 +1,12 @@ -import Shader from '../../core/Shader'; +import { GLShader } from 'pixi-gl-core'; +import { PRECISION } from '../../core/const'; /** * @class * @extends PIXI.Shader * @memberof PIXI */ -export default class ParticleShader extends Shader +export default class ParticleShader extends GLShader { /** * @param {PIXI.Shader} gl - The webgl shader manager this shader works for. @@ -55,7 +56,8 @@ ' if (color.a == 0.0) discard;', ' gl_FragColor = color;', '}', - ].join('\n') + ].join('\n'), + PRECISION.DEFAULT ); } }