UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

190 lines 16 kB
export function isWebglImage(data) { return (data instanceof ImageData || data instanceof HTMLImageElement || data instanceof HTMLCanvasElement || data instanceof HTMLVideoElement || data instanceof ImageBitmap); } export var WebglEnumDepthFunction; (function (WebglEnumDepthFunction) { /** never pass */ WebglEnumDepthFunction[WebglEnumDepthFunction["NEVER"] = WebGL2RenderingContext.NEVER] = "NEVER"; /** pass if the incoming value is less than the depth buffer value */ WebglEnumDepthFunction[WebglEnumDepthFunction["LESS"] = WebGL2RenderingContext.LESS] = "LESS"; /** pass if the incoming value equals the depth buffer value */ WebglEnumDepthFunction[WebglEnumDepthFunction["EQUAL"] = WebGL2RenderingContext.EQUAL] = "EQUAL"; /** pass if the incoming value is less than or equal to the depth buffer value */ WebglEnumDepthFunction[WebglEnumDepthFunction["LEQUAL"] = WebGL2RenderingContext.LEQUAL] = "LEQUAL"; /** pass if the incoming value is greater than the depth buffer value */ WebglEnumDepthFunction[WebglEnumDepthFunction["GREATER"] = WebGL2RenderingContext.GREATER] = "GREATER"; /** pass if the incoming value is not equal to the depth buffer value */ WebglEnumDepthFunction[WebglEnumDepthFunction["NOTEQUAL"] = WebGL2RenderingContext.NOTEQUAL] = "NOTEQUAL"; /** pass if the incoming value is greater than or equal to the depth buffer value */ WebglEnumDepthFunction[WebglEnumDepthFunction["GEQUAL"] = WebGL2RenderingContext.GEQUAL] = "GEQUAL"; /** always pass */ WebglEnumDepthFunction[WebglEnumDepthFunction["ALWAYS"] = WebGL2RenderingContext.ALWAYS] = "ALWAYS"; })(WebglEnumDepthFunction || (WebglEnumDepthFunction = {})); export var WebglEnumBlendEquation; (function (WebglEnumBlendEquation) { /** source + destination (default value) */ WebglEnumBlendEquation[WebglEnumBlendEquation["FUNC_ADD"] = WebGL2RenderingContext.FUNC_ADD] = "FUNC_ADD"; /** source - destination */ WebglEnumBlendEquation[WebglEnumBlendEquation["FUNC_SUBTRACT"] = WebGL2RenderingContext.FUNC_SUBTRACT] = "FUNC_SUBTRACT"; /** destination - source */ WebglEnumBlendEquation[WebglEnumBlendEquation["FUNC_REVERSE_SUBTRACT"] = WebGL2RenderingContext.FUNC_REVERSE_SUBTRACT] = "FUNC_REVERSE_SUBTRACT"; /** Minimum of source and destination */ WebglEnumBlendEquation[WebglEnumBlendEquation["MIN"] = WebGL2RenderingContext.MIN] = "MIN"; /** Maximum of source and destination */ WebglEnumBlendEquation[WebglEnumBlendEquation["MAX"] = WebGL2RenderingContext.MAX] = "MAX"; })(WebglEnumBlendEquation || (WebglEnumBlendEquation = {})); export var WebglEnumBlendFunction; (function (WebglEnumBlendFunction) { /** * 0,0,0,0 * * Multiplies all colors by 0. */ WebglEnumBlendFunction[WebglEnumBlendFunction["ZERO"] = WebGL2RenderingContext.ZERO] = "ZERO"; /** * 1,1,1,1 * * Multiplies all colors by 1. */ WebglEnumBlendFunction[WebglEnumBlendFunction["ONE"] = WebGL2RenderingContext.ONE] = "ONE"; /** * RS, GS, BS, AS * * Multiplies all colors by the source colors. */ WebglEnumBlendFunction[WebglEnumBlendFunction["SRC_COLOR"] = WebGL2RenderingContext.SRC_COLOR] = "SRC_COLOR"; /** * 1-RS, 1-GS, 1-BS, 1-AS * * Multiplies all colors by 1 minus each source color. */ WebglEnumBlendFunction[WebglEnumBlendFunction["ONE_MINUS_SRC_COLOR"] = WebGL2RenderingContext.ONE_MINUS_SRC_COLOR] = "ONE_MINUS_SRC_COLOR"; /** * RD, GD, BD, AD * * Multiplies all colors by the destination color. */ WebglEnumBlendFunction[WebglEnumBlendFunction["DST_COLOR"] = WebGL2RenderingContext.DST_COLOR] = "DST_COLOR"; /** * 1-RD, 1-GD, 1-BD, 1-AD * * Multiplies all colors by 1 minus each destination color. */ WebglEnumBlendFunction[WebglEnumBlendFunction["ONE_MINUS_DST_COLOR"] = WebGL2RenderingContext.ONE_MINUS_DST_COLOR] = "ONE_MINUS_DST_COLOR"; /** * AS, AS, AS, AS * * Multiplies all colors by the source alpha value. */ WebglEnumBlendFunction[WebglEnumBlendFunction["SRC_ALPHA"] = WebGL2RenderingContext.SRC_ALPHA] = "SRC_ALPHA"; /** * 1-AS, 1-AS, 1-AS, 1-AS * * Multiplies all colors by 1 minus the source alpha value. */ WebglEnumBlendFunction[WebglEnumBlendFunction["ONE_MINUS_SRC_ALPHA"] = WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA] = "ONE_MINUS_SRC_ALPHA"; /** * AD, AD, AD, AD * * Multiplies all colors by the destination alpha value. */ WebglEnumBlendFunction[WebglEnumBlendFunction["DST_ALPHA"] = WebGL2RenderingContext.DST_ALPHA] = "DST_ALPHA"; /** * 1-AD, 1-AD, 1-AD, 1-AD * * Multiplies all colors by 1 minus the destination alpha value. */ WebglEnumBlendFunction[WebglEnumBlendFunction["ONE_MINUS_DST_ALPHA"] = WebGL2RenderingContext.ONE_MINUS_DST_ALPHA] = "ONE_MINUS_DST_ALPHA"; /** * RC, GC, BC, AC * * Multiplies all colors by a constant color. */ WebglEnumBlendFunction[WebglEnumBlendFunction["CONSTANT_COLOR"] = WebGL2RenderingContext.CONSTANT_COLOR] = "CONSTANT_COLOR"; /** * 1-RC, 1-GC, 1-BC, 1-AC * * Multiplies all colors by 1 minus a constant color. */ WebglEnumBlendFunction[WebglEnumBlendFunction["ONE_MINUS_CONSTANT_COLOR"] = WebGL2RenderingContext.ONE_MINUS_CONSTANT_COLOR] = "ONE_MINUS_CONSTANT_COLOR"; /** * AC, AC, AC, AC * * Multiplies all colors by a constant alpha value. */ WebglEnumBlendFunction[WebglEnumBlendFunction["CONSTANT_ALPHA"] = WebGL2RenderingContext.CONSTANT_ALPHA] = "CONSTANT_ALPHA"; /** * 1-AC, 1-AC, 1-AC, 1-AC * * Multiplies all colors by 1 minus a constant alpha value. */ WebglEnumBlendFunction[WebglEnumBlendFunction["ONE_MINUS_CONSTANT_ALPHA"] = WebGL2RenderingContext.ONE_MINUS_CONSTANT_ALPHA] = "ONE_MINUS_CONSTANT_ALPHA"; /** * min(AS, 1 - AD), min(AS, 1 - AD), min(AS, 1 - AD), 1 * * Multiplies the RGB colors by the smaller of either the source alpha value or the value of 1 minus the destination alpha value. The alpha value is multiplied by 1. */ WebglEnumBlendFunction[WebglEnumBlendFunction["SRC_ALPHA_SATURATE"] = WebGL2RenderingContext.SRC_ALPHA_SATURATE] = "SRC_ALPHA_SATURATE"; })(WebglEnumBlendFunction || (WebglEnumBlendFunction = {})); export var WebglEnumStencilFunction; (function (WebglEnumStencilFunction) { /** Never pass. */ WebglEnumStencilFunction[WebglEnumStencilFunction["NEVER"] = WebGL2RenderingContext.NEVER] = "NEVER"; /** Pass if (ref & mask) < (stencil & mask). */ WebglEnumStencilFunction[WebglEnumStencilFunction["LESS"] = WebGL2RenderingContext.LESS] = "LESS"; /** Pass if (ref & mask) = (stencil & mask). */ WebglEnumStencilFunction[WebglEnumStencilFunction["EQUAL"] = WebGL2RenderingContext.EQUAL] = "EQUAL"; /** Pass if (ref & mask) <= (stencil & mask). */ WebglEnumStencilFunction[WebglEnumStencilFunction["LEQUAL"] = WebGL2RenderingContext.LEQUAL] = "LEQUAL"; /** Pass if (ref & mask) > (stencil & mask). */ WebglEnumStencilFunction[WebglEnumStencilFunction["GREATER"] = WebGL2RenderingContext.GREATER] = "GREATER"; /** Pass if (ref & mask) !== (stencil & mask). */ WebglEnumStencilFunction[WebglEnumStencilFunction["NOTEQUAL"] = WebGL2RenderingContext.NOTEQUAL] = "NOTEQUAL"; /** Pass if (ref & mask) >= (stencil & mask). */ WebglEnumStencilFunction[WebglEnumStencilFunction["GEQUAL"] = WebGL2RenderingContext.GEQUAL] = "GEQUAL"; /** Always pass. */ WebglEnumStencilFunction[WebglEnumStencilFunction["ALWAYS"] = WebGL2RenderingContext.ALWAYS] = "ALWAYS"; })(WebglEnumStencilFunction || (WebglEnumStencilFunction = {})); export var WebglEnumStencilOperation; (function (WebglEnumStencilOperation) { /** Keeps the current value. */ WebglEnumStencilOperation[WebglEnumStencilOperation["KEEP"] = WebGL2RenderingContext.KEEP] = "KEEP"; /** Sets the stencil buffer value to 0. */ WebglEnumStencilOperation[WebglEnumStencilOperation["ZERO"] = WebGL2RenderingContext.ZERO] = "ZERO"; /** Sets the stencil buffer value to the reference value as specified by WebGLRenderingContext.stencilFunc(). */ WebglEnumStencilOperation[WebglEnumStencilOperation["REPLACE"] = WebGL2RenderingContext.REPLACE] = "REPLACE"; /** Increments the current stencil buffer value. Clamps to the maximum representable unsigned value. */ WebglEnumStencilOperation[WebglEnumStencilOperation["INCR"] = WebGL2RenderingContext.INCR] = "INCR"; /** Increments the current stencil buffer value. Wraps stencil buffer value to zero when incrementing the maximum representable unsigned value. */ WebglEnumStencilOperation[WebglEnumStencilOperation["INCR_WRAP"] = WebGL2RenderingContext.INCR_WRAP] = "INCR_WRAP"; /** Decrements the current stencil buffer value. Clamps to 0. */ WebglEnumStencilOperation[WebglEnumStencilOperation["DECR"] = WebGL2RenderingContext.DECR] = "DECR"; /** Decrements the current stencil buffer value. Wraps stencil buffer value to the maximum representable unsigned value when decrementing a stencil buffer value of 0. */ WebglEnumStencilOperation[WebglEnumStencilOperation["DECR_WRAP"] = WebGL2RenderingContext.DECR_WRAP] = "DECR_WRAP"; /** Inverts the current stencil buffer value bitwise. */ WebglEnumStencilOperation[WebglEnumStencilOperation["INVERT"] = WebGL2RenderingContext.INVERT] = "INVERT"; })(WebglEnumStencilOperation || (WebglEnumStencilOperation = {})); export var WebglEnumCullFace; (function (WebglEnumCullFace) { WebglEnumCullFace[WebglEnumCullFace["FRONT"] = WebGL2RenderingContext.FRONT] = "FRONT"; WebglEnumCullFace[WebglEnumCullFace["BACK"] = WebGL2RenderingContext.BACK] = "BACK"; WebglEnumCullFace[WebglEnumCullFace["FRONT_AND_BACK"] = WebGL2RenderingContext.FRONT_AND_BACK] = "FRONT_AND_BACK"; })(WebglEnumCullFace || (WebglEnumCullFace = {})); export var WebglEnumTex2DInternalFormat; (function (WebglEnumTex2DInternalFormat) { /** : Discards the red, green and blue components and reads the alpha component. */ WebglEnumTex2DInternalFormat[WebglEnumTex2DInternalFormat["ALPHA"] = WebGL2RenderingContext.ALPHA] = "ALPHA"; /** : Discards the alpha components and reads the red, green and blue components. */ WebglEnumTex2DInternalFormat[WebglEnumTex2DInternalFormat["RGB"] = WebGL2RenderingContext.RGB] = "RGB"; /** : Red, green, blue and alpha components are read from the color buffer. */ WebglEnumTex2DInternalFormat[WebglEnumTex2DInternalFormat["RGBA"] = WebGL2RenderingContext.RGBA] = "RGBA"; /** : Each color component is a luminance component, alpha is 1.0. */ WebglEnumTex2DInternalFormat[WebglEnumTex2DInternalFormat["LUMINANCE"] = WebGL2RenderingContext.LUMINANCE] = "LUMINANCE"; /** : Each component is a luminance/alpha component. */ WebglEnumTex2DInternalFormat[WebglEnumTex2DInternalFormat["LUMINANCE_ALPHA"] = WebGL2RenderingContext.LUMINANCE_ALPHA] = "LUMINANCE_ALPHA"; })(WebglEnumTex2DInternalFormat || (WebglEnumTex2DInternalFormat = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViZ2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvd2ViZ2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOENBLE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBYTtJQUN0QyxPQUFPLENBQ0gsSUFBSSxZQUFZLFNBQVM7UUFDekIsSUFBSSxZQUFZLGdCQUFnQjtRQUNoQyxJQUFJLFlBQVksaUJBQWlCO1FBQ2pDLElBQUksWUFBWSxnQkFBZ0I7UUFDaEMsSUFBSSxZQUFZLFdBQVcsQ0FDOUIsQ0FBQTtBQUNMLENBQUM7QUFvQkQsTUFBTSxDQUFOLElBQVksc0JBaUJYO0FBakJELFdBQVksc0JBQXNCO0lBQzlCLGlCQUFpQjtJQUNqQix5REFBUSxzQkFBc0IsQ0FBQyxLQUFLLFdBQUEsQ0FBQTtJQUNwQyxxRUFBcUU7SUFDckUsd0RBQU8sc0JBQXNCLENBQUMsSUFBSSxVQUFBLENBQUE7SUFDbEMsK0RBQStEO0lBQy9ELHlEQUFRLHNCQUFzQixDQUFDLEtBQUssV0FBQSxDQUFBO0lBQ3BDLGlGQUFpRjtJQUNqRiwwREFBUyxzQkFBc0IsQ0FBQyxNQUFNLFlBQUEsQ0FBQTtJQUN0Qyx3RUFBd0U7SUFDeEUsMkRBQVUsc0JBQXNCLENBQUMsT0FBTyxhQUFBLENBQUE7SUFDeEMsd0VBQXdFO0lBQ3hFLDREQUFXLHNCQUFzQixDQUFDLFFBQVEsY0FBQSxDQUFBO0lBQzFDLG9GQUFvRjtJQUNwRiwwREFBUyxzQkFBc0IsQ0FBQyxNQUFNLFlBQUEsQ0FBQTtJQUN0QyxrQkFBa0I7SUFDbEIsMERBQVMsc0JBQXNCLENBQUMsTUFBTSxZQUFBLENBQUE7QUFDMUMsQ0FBQyxFQWpCVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBaUJqQztBQWNELE1BQU0sQ0FBTixJQUFZLHNCQVdYO0FBWEQsV0FBWSxzQkFBc0I7SUFDOUIsNENBQTRDO0lBQzVDLDREQUFXLHNCQUFzQixDQUFDLFFBQVEsY0FBQSxDQUFBO0lBQzFDLDRCQUE0QjtJQUM1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