Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
*/
this.vertexData = new Float32Array(1);
/**
* If geometry is changed used to decide to re-transform
* the vertexData.
* @member {number}
* @private
*/
this.vertexDirty = 0;
this._transformID = -1;
// Inherited from DisplayMode, set defaults
this.tint = 0xFFFFFF;
this.blendMode = BLEND_MODES.NORMAL;
/**
* Internal roundPixels field
*
* @member {boolean}
* @private
*/
this._roundPixels = settings.ROUND_PIXELS;
/**
* Batched UV's are cached for atlas textures
* @member {PIXI.MeshBatchUvs}
* @private
*/
this.batchUvs = null;
}
texture._frame.y * resolution,
width * resolution,
height * resolution,
dx * renderer.resolution,
dy * renderer.resolution,
width * renderer.resolution,
height * renderer.resolution
);
}
if (outerBlend)
{
context.restore();
}
// just in case, leaking outer blend here will be catastrophic!
renderer.setBlendMode(BLEND_MODES.NORMAL);
}
displayObject.parent = cacheParent;
if (transform)
{
// Clear the matrix cache one more time,
// we dont have our computations to affect standard "transform=null" case
displayObject.transform._parentID = -1;
}
// displayObject.hitArea = //TODO add a temp hit area
}
context.save();
context.setTransform(1, 0, 0, 1, 0, 0);
context.globalAlpha = 1;
this._activeBlendMode = BLEND_MODES.NORMAL;
this._outerBlend = false;
context.globalCompositeOperation = this.blendModes[BLEND_MODES.NORMAL];
if (clear !== undefined ? clear : this.clearBeforeRender)
{
if (this.renderingToScreen)
{
if (this.transparent)
{
context.clearRect(0, 0, this.width, this.height);
}
else
{
context.fillStyle = this._backgroundColorString;
context.fillRect(0, 0, this.width, this.height);
}
} // else {
// TODO: implement background for CanvasRenderTarget or RenderTexture?
constructor()
{
this.data = 0;
this.blendMode = BLEND_MODES.NORMAL;
this.polygonOffset = 0;
this.blend = true;
// this.depthTest = true;
}
displayObject.updateTransform();
displayObject.parent = cacheParent;
if (transform)
{
// Clear the matrix cache one more time,
// we dont have our computations to affect standard "transform=null" case
displayObject.transform._parentID = -1;
}
// displayObject.hitArea = //TODO add a temp hit area
}
context.save();
context.setTransform(1, 0, 0, 1, 0, 0);
context.globalAlpha = 1;
this._activeBlendMode = BLEND_MODES.NORMAL;
this._outerBlend = false;
context.globalCompositeOperation = this.blendModes[BLEND_MODES.NORMAL];
if (clear !== undefined ? clear : this.clearBeforeRender)
{
if (this.renderingToScreen)
{
if (this.transparent)
{
context.clearRect(0, 0, this.width, this.height);
}
else
{
context.fillStyle = this._backgroundColorString;
context.fillRect(0, 0, this.width, this.height);
}
constructor(geometry, shader, state, drawMode = DRAW_MODES.TRIANGLES)// vertices, uvs, indices, drawMode)
{
super();
/**
* Includes vertex positions, face indices, normals, colors, UVs, and
* custom attributes within buffers, reducing the cost of passing all
* this data to the GPU. Can be shared between multiple Mesh objects.
* @member {PIXI.Geometry}
* @readonly
*/
this.geometry = geometry;
geometry.refCount++;
/**
* Represents the vertex and fragment shaders that processes the geometry and runs on the GPU.
// TODO - this can be simplified
for (let i = 0; i < this.batches.length; i++)
{
const data = this.batches[i];
// TODO add some full on MAX_TEXTURE CODE..
const MAX_TEXTURES = 8;
const style = data.style;
const nextTexture = style.texture.baseTexture;
if (native !== !!style.native)
{
native = !!style.native;
drawMode = native ? DRAW_MODES.LINES : DRAW_MODES.TRIANGLES;
// force the batch to break!
currentTexture = null;
textureCount = MAX_TEXTURES;
TICK++;
}
if (currentTexture !== nextTexture)
{
currentTexture = nextTexture;
if (nextTexture._batchEnabled !== TICK)
{
if (textureCount === MAX_TEXTURES)
{
TICK++;
filter.uniforms.uSampler = input;
filter.uniforms.filterGlobals = this.globalUniforms;
// TODO make it so that the order of this does not matter..
// because it does at the moment cos of global uniforms.
// they need to get resynced
renderer.state.setState(filter.state);
renderer.shader.bind(filter);
if (filter.legacy)
{
this.quadUv.map(input._frame, input.filterFrame);
renderer.geometry.bind(this.quadUv);
renderer.geometry.draw(DRAW_MODES.TRIANGLES);
}
else
{
renderer.geometry.bind(this.quad);
renderer.geometry.draw(DRAW_MODES.TRIANGLE_STRIP);
}
}
if (!currentGroup)
{
currentGroup = new BatchDrawCall();
currentGroup.textures = new BatchTextureArray();
}
currentGroup.textures.count = 0;
currentGroup.start = 0;
currentGroup.size = 0;
currentGroup.type = DRAW_MODES.TRIANGLES;
let textureCount = 0;
let currentTexture = null;
let textureId = 0;
let native = false;
let drawMode = DRAW_MODES.TRIANGLES;
let index = 0;
this.drawCalls.push(currentGroup);
// TODO - this can be simplified
for (let i = 0; i < this.batches.length; i++)
{
const data = this.batches[i];
// TODO add some full on MAX_TEXTURE CODE..
const MAX_TEXTURES = 8;
const style = data.style;
const nextTexture = style.texture.baseTexture;
filter.uniforms.uSampler = input;
filter.uniforms.filterGlobals = this.globalUniforms;
// TODO make it so that the order of this does not matter..
// because it does at the moment cos of global uniforms.
// they need to get resynced
renderer.state.set(filter.state);
renderer.shader.bind(filter);
if (filter.legacy)
{
this.quadUv.map(input._frame, input.filterFrame);
renderer.geometry.bind(this.quadUv);
renderer.geometry.draw(DRAW_MODES.TRIANGLES);
}
else
{
renderer.geometry.bind(this.quad);
renderer.geometry.draw(DRAW_MODES.TRIANGLE_STRIP);
}
}