mirror of
https://github.com/photonstorm/phaser
synced 2025-02-16 05:58:30 +00:00
Added in Camera alpha support to all canvas renderers
This commit is contained in:
parent
6dff47b71d
commit
90ba2608fa
9 changed files with 125 additions and 56 deletions
|
@ -68,6 +68,21 @@ var DynamicBitmapTextCanvasRenderer = function (renderer, src, interpolationPerc
|
|||
var rotation = 0;
|
||||
var scale = (src.fontSize / src.fontData.size);
|
||||
|
||||
// Alpha
|
||||
|
||||
var alpha = camera.alpha * src.alpha;
|
||||
|
||||
if (alpha === 0)
|
||||
{
|
||||
// Nothing to see, so abort early
|
||||
return;
|
||||
}
|
||||
else if (renderer.currentAlpha !== alpha)
|
||||
{
|
||||
renderer.currentAlpha = alpha;
|
||||
ctx.globalAlpha = alpha;
|
||||
}
|
||||
|
||||
// Blend Mode
|
||||
if (renderer.currentBlendMode !== src.blendMode)
|
||||
{
|
||||
|
|
|
@ -63,6 +63,21 @@ var BitmapTextCanvasRenderer = function (renderer, src, interpolationPercentage,
|
|||
|
||||
var scale = (src.fontSize / src.fontData.size);
|
||||
|
||||
// Alpha
|
||||
|
||||
var alpha = camera.alpha * src.alpha;
|
||||
|
||||
if (alpha === 0)
|
||||
{
|
||||
// Nothing to see, so abort early
|
||||
return;
|
||||
}
|
||||
else if (renderer.currentAlpha !== alpha)
|
||||
{
|
||||
renderer.currentAlpha = alpha;
|
||||
ctx.globalAlpha = alpha;
|
||||
}
|
||||
|
||||
// Blend Mode
|
||||
if (renderer.currentBlendMode !== src.blendMode)
|
||||
{
|
||||
|
@ -70,13 +85,6 @@ var BitmapTextCanvasRenderer = function (renderer, src, interpolationPercentage,
|
|||
ctx.globalCompositeOperation = renderer.blendModes[src.blendMode];
|
||||
}
|
||||
|
||||
// Alpha
|
||||
if (renderer.currentAlpha !== src.alpha)
|
||||
{
|
||||
renderer.currentAlpha = src.alpha;
|
||||
ctx.globalAlpha = src.alpha;
|
||||
}
|
||||
|
||||
// Smoothing
|
||||
if (renderer.currentScaleMode !== src.scaleMode)
|
||||
{
|
||||
|
|
|
@ -49,6 +49,21 @@ var GraphicsCanvasRenderer = function (renderer, src, interpolationPercentage, c
|
|||
var green = 0;
|
||||
var blue = 0;
|
||||
|
||||
// Alpha
|
||||
|
||||
var alpha = camera.alpha * src.alpha;
|
||||
|
||||
if (alpha === 0)
|
||||
{
|
||||
// Nothing to see, so abort early
|
||||
return;
|
||||
}
|
||||
else if (renderer.currentAlpha !== alpha)
|
||||
{
|
||||
renderer.currentAlpha = alpha;
|
||||
ctx.globalAlpha = alpha;
|
||||
}
|
||||
|
||||
// Blend Mode
|
||||
if (renderer.currentBlendMode !== src.blendMode)
|
||||
{
|
||||
|
@ -56,13 +71,6 @@ var GraphicsCanvasRenderer = function (renderer, src, interpolationPercentage, c
|
|||
ctx.globalCompositeOperation = renderer.blendModes[src.blendMode];
|
||||
}
|
||||
|
||||
// Alpha
|
||||
if (renderer.currentAlpha !== src.alpha)
|
||||
{
|
||||
renderer.currentAlpha = src.alpha;
|
||||
ctx.globalAlpha = src.alpha;
|
||||
}
|
||||
|
||||
// Smoothing
|
||||
if (renderer.currentScaleMode !== src.scaleMode)
|
||||
{
|
||||
|
@ -70,11 +78,14 @@ var GraphicsCanvasRenderer = function (renderer, src, interpolationPercentage, c
|
|||
}
|
||||
|
||||
ctx.save();
|
||||
|
||||
if (parentMatrix)
|
||||
{
|
||||
var matrix = parentMatrix.matrix;
|
||||
|
||||
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
|
||||
}
|
||||
|
||||
ctx.translate(srcX - cameraScrollX, srcY - cameraScrollY);
|
||||
ctx.rotate(srcRotation);
|
||||
ctx.scale(srcScaleX, srcScaleY);
|
||||
|
@ -253,10 +264,6 @@ var GraphicsCanvasRenderer = function (renderer, src, interpolationPercentage, c
|
|||
);
|
||||
index += 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
// console.error('Phaser: Invalid Graphics Command ID ' + commandID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -33,9 +33,11 @@ var ParticleManagerCanvasRenderer = function (renderer, emitterManager, interpol
|
|||
var ctx = renderer.currentContext;
|
||||
|
||||
ctx.save();
|
||||
|
||||
if (parentMatrix !== undefined)
|
||||
{
|
||||
var matrix = parentMatrix.matrix;
|
||||
|
||||
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
|
||||
}
|
||||
|
||||
|
@ -51,8 +53,8 @@ var ParticleManagerCanvasRenderer = function (renderer, emitterManager, interpol
|
|||
continue;
|
||||
}
|
||||
|
||||
|
||||
var lastAlpha = ctx.globalAlpha;
|
||||
|
||||
var cameraScrollX = camera.scrollX * emitter.scrollFactorX;
|
||||
var cameraScrollY = camera.scrollY * emitter.scrollFactorY;
|
||||
|
||||
|
@ -68,9 +70,9 @@ var ParticleManagerCanvasRenderer = function (renderer, emitterManager, interpol
|
|||
{
|
||||
var particle = particles[index];
|
||||
|
||||
var alpha = ((particle.color >> 24) & 0xFF) / 255.0;
|
||||
var particleAlpha = camera.alpha * ((particle.color >> 24) & 0xFF) / 255;
|
||||
|
||||
if (alpha <= 0)
|
||||
if (particleAlpha <= 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
@ -94,7 +96,7 @@ var ParticleManagerCanvasRenderer = function (renderer, emitterManager, interpol
|
|||
ty |= 0;
|
||||
}
|
||||
|
||||
ctx.globalAlpha = alpha;
|
||||
ctx.globalAlpha = particleAlpha;
|
||||
|
||||
ctx.save();
|
||||
|
||||
|
|
|
@ -30,17 +30,30 @@ var RenderTextureCanvasRenderer = function (renderer, renderTexture, interpolati
|
|||
|
||||
var ctx = renderer.currentContext;
|
||||
|
||||
// Alpha
|
||||
|
||||
var alpha = camera.alpha * renderTexture.alpha;
|
||||
|
||||
if (alpha === 0)
|
||||
{
|
||||
// Nothing to see, so abort early
|
||||
return;
|
||||
}
|
||||
else if (renderer.currentAlpha !== alpha)
|
||||
{
|
||||
renderer.currentAlpha = alpha;
|
||||
ctx.globalAlpha = alpha;
|
||||
}
|
||||
|
||||
// Blend Mode
|
||||
|
||||
if (renderer.currentBlendMode !== renderTexture.blendMode)
|
||||
{
|
||||
renderer.currentBlendMode = renderTexture.blendMode;
|
||||
ctx.globalCompositeOperation = renderer.blendModes[renderTexture.blendMode];
|
||||
}
|
||||
|
||||
if (renderer.currentAlpha !== renderTexture.alpha)
|
||||
{
|
||||
renderer.currentAlpha = renderTexture.alpha;
|
||||
ctx.globalAlpha = renderTexture.alpha;
|
||||
}
|
||||
// Scale Mode
|
||||
|
||||
if (renderer.currentScaleMode !== renderTexture.scaleMode)
|
||||
{
|
||||
|
@ -74,11 +87,14 @@ var RenderTextureCanvasRenderer = function (renderer, renderTexture, interpolati
|
|||
}
|
||||
|
||||
ctx.save();
|
||||
|
||||
if (parentMatrix !== undefined)
|
||||
{
|
||||
var matrix = parentMatrix.matrix;
|
||||
|
||||
ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
|
||||
}
|
||||
|
||||
ctx.translate(renderTexture.x - camera.scrollX * renderTexture.scrollFactorX, renderTexture.y - camera.scrollY * renderTexture.scrollFactorY);
|
||||
ctx.rotate(renderTexture.rotation);
|
||||
ctx.scale(renderTexture.scaleX, renderTexture.scaleY);
|
||||
|
|
|
@ -30,23 +30,31 @@ var TextCanvasRenderer = function (renderer, src, interpolationPercentage, camer
|
|||
|
||||
var ctx = renderer.currentContext;
|
||||
|
||||
// var resolution = src.resolution;
|
||||
// Alpha
|
||||
|
||||
var alpha = camera.alpha * src.alpha;
|
||||
|
||||
if (alpha === 0)
|
||||
{
|
||||
// Nothing to see, so abort early
|
||||
return;
|
||||
}
|
||||
else if (renderer.currentAlpha !== alpha)
|
||||
{
|
||||
renderer.currentAlpha = alpha;
|
||||
ctx.globalAlpha = alpha;
|
||||
}
|
||||
|
||||
// Blend Mode
|
||||
|
||||
if (renderer.currentBlendMode !== src.blendMode)
|
||||
{
|
||||
renderer.currentBlendMode = src.blendMode;
|
||||
ctx.globalCompositeOperation = renderer.blendModes[src.blendMode];
|
||||
}
|
||||
|
||||
// Alpha
|
||||
if (renderer.currentAlpha !== src.alpha)
|
||||
{
|
||||
renderer.currentAlpha = src.alpha;
|
||||
ctx.globalAlpha = src.alpha;
|
||||
}
|
||||
|
||||
// Smoothing
|
||||
|
||||
if (renderer.currentScaleMode !== src.scaleMode)
|
||||
{
|
||||
renderer.currentScaleMode = src.scaleMode;
|
||||
|
|
|
@ -33,6 +33,21 @@ var TileSpriteCanvasRenderer = function (renderer, src, interpolationPercentage,
|
|||
|
||||
src.updateTileTexture();
|
||||
|
||||
// Alpha
|
||||
|
||||
var alpha = camera.alpha * src.alpha;
|
||||
|
||||
if (alpha === 0)
|
||||
{
|
||||
// Nothing to see, so abort early
|
||||
return;
|
||||
}
|
||||
else if (renderer.currentAlpha !== alpha)
|
||||
{
|
||||
renderer.currentAlpha = alpha;
|
||||
ctx.globalAlpha = alpha;
|
||||
}
|
||||
|
||||
// Blend Mode
|
||||
|
||||
if (renderer.currentBlendMode !== src.blendMode)
|
||||
|
@ -41,14 +56,6 @@ var TileSpriteCanvasRenderer = function (renderer, src, interpolationPercentage,
|
|||
ctx.globalCompositeOperation = renderer.blendModes[src.blendMode];
|
||||
}
|
||||
|
||||
// Alpha
|
||||
|
||||
if (renderer.currentAlpha !== src.alpha)
|
||||
{
|
||||
renderer.currentAlpha = src.alpha;
|
||||
ctx.globalAlpha = src.alpha;
|
||||
}
|
||||
|
||||
// Smoothing
|
||||
|
||||
if (renderer.currentScaleMode !== src.scaleMode)
|
||||
|
|
|
@ -395,11 +395,9 @@ var CanvasRenderer = new Class({
|
|||
ctx.fillRect(camera.x, camera.y, camera.width, camera.height);
|
||||
}
|
||||
|
||||
if (this.currentAlpha !== 1)
|
||||
{
|
||||
ctx.globalAlpha = 1;
|
||||
this.currentAlpha = 1;
|
||||
}
|
||||
ctx.globalAlpha = camera.alpha;
|
||||
|
||||
this.currentAlpha = camera.alpha;
|
||||
|
||||
if (this.currentBlendMode !== 0)
|
||||
{
|
||||
|
@ -442,6 +440,7 @@ var CanvasRenderer = new Class({
|
|||
|
||||
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
||||
ctx.globalCompositeOperation = 'source-over';
|
||||
ctx.globalAlpha = 1;
|
||||
|
||||
camera.flashEffect.postRenderCanvas(ctx);
|
||||
camera.fadeEffect.postRenderCanvas(ctx);
|
||||
|
|
|
@ -22,6 +22,21 @@ var DrawImage = function (src, camera, parentMatrix)
|
|||
var frame = src.frame;
|
||||
var cd = frame.canvasData;
|
||||
|
||||
// Alpha
|
||||
|
||||
var alpha = camera.alpha * src.alpha;
|
||||
|
||||
if (alpha === 0)
|
||||
{
|
||||
// Nothing to see, so abort early
|
||||
return;
|
||||
}
|
||||
else if (renderer.currentAlpha !== alpha)
|
||||
{
|
||||
renderer.currentAlpha = alpha;
|
||||
ctx.globalAlpha = alpha;
|
||||
}
|
||||
|
||||
// Blend Mode
|
||||
|
||||
if (this.currentBlendMode !== src.blendMode)
|
||||
|
@ -30,14 +45,6 @@ var DrawImage = function (src, camera, parentMatrix)
|
|||
ctx.globalCompositeOperation = this.blendModes[src.blendMode];
|
||||
}
|
||||
|
||||
// Alpha
|
||||
|
||||
if (this.currentAlpha !== src.alpha)
|
||||
{
|
||||
this.currentAlpha = src.alpha;
|
||||
ctx.globalAlpha = src.alpha;
|
||||
}
|
||||
|
||||
// Smoothing
|
||||
|
||||
if (this.currentScaleMode !== src.scaleMode)
|
||||
|
|
Loading…
Add table
Reference in a new issue