@spearwolf/twopoint5d
Version:
a library to create 2.5d realtime graphics and pixelart with three.js
45 lines (37 loc) • 1.52 kB
JavaScript
import { ShaderTool } from './ShaderTool.js';
const ShaderLib = {
rotateZ_vertex: ShaderTool.rotateZ(),
makeBillboard_fn_vertex: `
vec4 makeBillboard(in mat4 modelViewMatrix, in vec3 cameraPosition, in vec3 billboardPosition, in vec2 billboardSize, in vec2 vertexPosition) {
vec3 look = normalize(cameraPosition - billboardPosition);
vec3 cameraUp = vec3(modelViewMatrix[0].y, modelViewMatrix[1].y, modelViewMatrix[2].y);
vec3 billboardRight = cross(cameraUp, look);
vec3 billboardUp = cross(look, billboardRight);
return vec4(billboardPosition
+ billboardRight * vertexPosition.x * billboardSize.x
+ billboardUp * vertexPosition.y * billboardSize.y,
1.0);
}
`,
vertexPosition_makeBillboard_instanced_vertex: `
vec4 vertexPosition = makeBillboard(
modelViewMatrix,
cameraPosition,
instancePosition,
quadSize,
(rotateZ(rotation) * vec4(position, 1.0)).xy
);
`,
vertexPosition_instanced_vertex: `
vec4 vertexPosition = rotateZ(rotation)
* vec4(position * vec3(quadSize.xy, 0.0), 0.0)
+ vec4(instancePosition, 1.0);
`,
discard_by_alpha_fragment: `
if (gl_FragColor.a == 0.0) {
discard;
}
`,
};
export default ShaderLib;
//# sourceMappingURL=ShaderLib.js.map