diff --git a/packages/core/src/geometry/GeometrySystem.js b/packages/core/src/geometry/GeometrySystem.js index c63a5bd..3eaf193 100644 --- a/packages/core/src/geometry/GeometrySystem.js +++ b/packages/core/src/geometry/GeometrySystem.js @@ -312,6 +312,10 @@ { attributes[j].size = program.attributeData[j].size; } + else if (!attributes[j].size) + { + console.warn(`PIXI Geometry attribute '${j}' size cannot be determined (likely the bound shader does not have the attribute)`); // eslint-disable-line + } tempStride[attributes[j].buffer] += attributes[j].size * byteSizeMap[attributes[j].type]; } diff --git a/packages/core/src/geometry/GeometrySystem.js b/packages/core/src/geometry/GeometrySystem.js index c63a5bd..3eaf193 100644 --- a/packages/core/src/geometry/GeometrySystem.js +++ b/packages/core/src/geometry/GeometrySystem.js @@ -312,6 +312,10 @@ { attributes[j].size = program.attributeData[j].size; } + else if (!attributes[j].size) + { + console.warn(`PIXI Geometry attribute '${j}' size cannot be determined (likely the bound shader does not have the attribute)`); // eslint-disable-line + } tempStride[attributes[j].buffer] += attributes[j].size * byteSizeMap[attributes[j].type]; } diff --git a/packages/core/src/shader/Program.js b/packages/core/src/shader/Program.js index 24d2856..47ecb0a 100644 --- a/packages/core/src/shader/Program.js +++ b/packages/core/src/shader/Program.js @@ -12,6 +12,8 @@ let UID = 0; +const nameCache = {}; + /** * @class * @memberof PIXI @@ -43,8 +45,18 @@ name = name.replace(/\s+/g, '-'); - this.vertexSrc = `#define SHADER_NAME ${name}-${this.id}\n${this.vertexSrc}`; - this.fragmentSrc = `#define SHADER_NAME ${name}-${this.id}\n${this.fragmentSrc}`; + if (nameCache[name]) + { + nameCache[name]++; + name += `-${nameCache[name]}`; + } + else + { + nameCache[name] = 1; + } + + this.vertexSrc = `#define SHADER_NAME ${name}\n${this.vertexSrc}`; + this.fragmentSrc = `#define SHADER_NAME ${name}\n${this.fragmentSrc}`; this.vertexSrc = setPrecision(this.vertexSrc, settings.PRECISION_VERTEX); this.fragmentSrc = setPrecision(this.fragmentSrc, settings.PRECISION_FRAGMENT);