Fix issues with shader code
parent
da8629164e
commit
6b1f96e0c1
|
@ -16,8 +16,8 @@ varying vec2 outPosition;
|
||||||
varying float outTintEffect;
|
varying float outTintEffect;
|
||||||
varying vec4 outTint;
|
varying vec4 outTint;
|
||||||
|
|
||||||
uniform bool hasShadow;
|
uniform int hasShadow;
|
||||||
uniform bool yCenter;
|
uniform int yCenter;
|
||||||
uniform float vCutoff;
|
uniform float vCutoff;
|
||||||
uniform vec2 relPosition;
|
uniform vec2 relPosition;
|
||||||
uniform vec2 size;
|
uniform vec2 size;
|
||||||
|
@ -55,13 +55,13 @@ void main()
|
||||||
/* Apply tone */
|
/* Apply tone */
|
||||||
color.rgb += tone.rgb * (color.a / 255.0);
|
color.rgb += tone.rgb * (color.a / 255.0);
|
||||||
|
|
||||||
if (hasShadow) {
|
if (hasShadow == 1) {
|
||||||
float width = size.x - (yOffset / 2.0);
|
float width = size.x - (yOffset / 2.0);
|
||||||
|
|
||||||
float spriteX = ((floor(outPosition.x / 6.0) - relPosition.x) / width) + 0.5;
|
float spriteX = ((floor(outPosition.x / 6.0) - relPosition.x) / width) + 0.5;
|
||||||
float spriteY = ((floor(outPosition.y / 6.0) - relPosition.y) / size.y);
|
float spriteY = ((floor(outPosition.y / 6.0) - relPosition.y) / size.y);
|
||||||
|
|
||||||
if (yCenter) {
|
if (yCenter == 1) {
|
||||||
spriteY += 0.5;
|
spriteY += 0.5;
|
||||||
} else {
|
} else {
|
||||||
spriteY += 1.0;
|
spriteY += 1.0;
|
||||||
|
@ -133,8 +133,8 @@ export default class SpritePipeline extends Phaser.Renderer.WebGL.Pipelines.Mult
|
||||||
}
|
}
|
||||||
|
|
||||||
onPreRender(): void {
|
onPreRender(): void {
|
||||||
this.setBoolean('hasShadow', false);
|
this.set1i('hasShadow', 0);
|
||||||
this.setBoolean('yCenter', false);
|
this.set1i('yCenter', 0);
|
||||||
this.set2f('relPosition', 0, 0);
|
this.set2f('relPosition', 0, 0);
|
||||||
this.set2f('size', 0, 0);
|
this.set2f('size', 0, 0);
|
||||||
this.set1f('yOffset', 0);
|
this.set1f('yOffset', 0);
|
||||||
|
@ -154,8 +154,8 @@ export default class SpritePipeline extends Phaser.Renderer.WebGL.Pipelines.Mult
|
||||||
? [ sprite.parentContainer.x, sprite.parentContainer.y ]
|
? [ sprite.parentContainer.x, sprite.parentContainer.y ]
|
||||||
: [ sprite.x, sprite.y ];
|
: [ sprite.x, sprite.y ];
|
||||||
position[0] += -(sprite.width - sprite.frame.width) / 2 + sprite.frame.x;
|
position[0] += -(sprite.width - sprite.frame.width) / 2 + sprite.frame.x;
|
||||||
this.setBoolean('hasShadow', hasShadow);
|
this.set1i('hasShadow', hasShadow ? 1 : 0);
|
||||||
this.setBoolean('yCenter', sprite.originY === 0.5);
|
this.set1i('yCenter', sprite.originY === 0.5 ? 1 : 0);
|
||||||
this.set2f('relPosition', position[0], position[1]);
|
this.set2f('relPosition', position[0], position[1]);
|
||||||
this.set2f('size', sprite.frame.width, sprite.height);
|
this.set2f('size', sprite.frame.width, sprite.height);
|
||||||
this.set1f('yOffset', sprite.height - sprite.frame.height);
|
this.set1f('yOffset', sprite.height - sprite.frame.height);
|
||||||
|
|
|
@ -157,7 +157,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||||
const ret = this.scene.add.sprite(0, 0, `pkmn__${this.isPlayer() ? 'back__' : ''}sub`);
|
const ret = this.scene.add.sprite(0, 0, `pkmn__${this.isPlayer() ? 'back__' : ''}sub`);
|
||||||
ret.setOrigin(0.5, 1);
|
ret.setOrigin(0.5, 1);
|
||||||
ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow });
|
ret.setPipeline(this.scene.spritePipeline, { tone: [ 0.0, 0.0, 0.0, 0.0 ], hasShadow: !!hasShadow });
|
||||||
ret.preFX.add
|
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue