Initial
This commit is contained in:
65
resources/app/client/pixi/webgl/shaders/region/base.js
Normal file
65
resources/app/client/pixi/webgl/shaders/region/base.js
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
* The shader used by {@link RegionMesh}.
|
||||
*/
|
||||
class RegionShader extends AbstractBaseShader {
|
||||
|
||||
/** @override */
|
||||
static vertexShader = `
|
||||
precision ${PIXI.settings.PRECISION_VERTEX} float;
|
||||
|
||||
attribute vec2 aVertexPosition;
|
||||
|
||||
uniform mat3 translationMatrix;
|
||||
uniform mat3 projectionMatrix;
|
||||
uniform vec2 canvasDimensions;
|
||||
uniform vec4 sceneDimensions;
|
||||
uniform vec2 screenDimensions;
|
||||
|
||||
varying vec2 vCanvasCoord; // normalized canvas coordinates
|
||||
varying vec2 vSceneCoord; // normalized scene coordinates
|
||||
varying vec2 vScreenCoord; // normalized screen coordinates
|
||||
|
||||
void main() {
|
||||
vec2 pixelCoord = aVertexPosition;
|
||||
vCanvasCoord = pixelCoord / canvasDimensions;
|
||||
vSceneCoord = (pixelCoord - sceneDimensions.xy) / sceneDimensions.zw;
|
||||
vec3 tPos = translationMatrix * vec3(aVertexPosition, 1.0);
|
||||
vScreenCoord = tPos.xy / screenDimensions;
|
||||
gl_Position = vec4((projectionMatrix * tPos).xy, 0.0, 1.0);
|
||||
}
|
||||
`;
|
||||
|
||||
/** @override */
|
||||
static fragmentShader = `
|
||||
precision ${PIXI.settings.PRECISION_FRAGMENT} float;
|
||||
|
||||
uniform vec4 tintAlpha;
|
||||
|
||||
void main() {
|
||||
gl_FragColor = tintAlpha;
|
||||
}
|
||||
`;
|
||||
|
||||
/* ---------------------------------------- */
|
||||
|
||||
/** @override */
|
||||
static defaultUniforms = {
|
||||
canvasDimensions: [1, 1],
|
||||
sceneDimensions: [0, 0, 1, 1],
|
||||
screenDimensions: [1, 1],
|
||||
tintAlpha: [1, 1, 1, 1]
|
||||
};
|
||||
|
||||
/* ---------------------------------------- */
|
||||
|
||||
/** @override */
|
||||
_preRender(mesh, renderer) {
|
||||
const uniforms = this.uniforms;
|
||||
uniforms.tintAlpha = mesh._cachedTint;
|
||||
const dimensions = canvas.dimensions;
|
||||
uniforms.canvasDimensions[0] = dimensions.width;
|
||||
uniforms.canvasDimensions[1] = dimensions.height;
|
||||
uniforms.sceneDimensions = dimensions.sceneRect;
|
||||
uniforms.screenDimensions = canvas.screenDimensions;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user