UNPKG

ts-game-engine

Version:

Simple WebGL game/render engine written in TypeScript

46 lines (38 loc) 2.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Material_1 = require("./Material"); const Constants_1 = require("../Constants"); class VertexColoredInstancedMaterial extends Material_1.Material { constructor(scene) { super(scene, vsSource, fsSource); this.Shader.DefineInstancedAttribute(Constants_1.INSTANCE_MATRIX_ATTRIBUTE, Constants_1.INSTANCED_ATTRIBUTE_BASE_LOCATION + 0); this.Shader.DefineUniform(Constants_1.MODEL_MATRIX_UNIFORM, 10 /* Matrix4 */); this.Shader.DefineUniform(Constants_1.VIEW_MATRIX_UNIFORM, 10 /* Matrix4 */); this.Shader.DefineUniform(Constants_1.PROJECTION_MATRIX_UNIFORM, 10 /* Matrix4 */); } SetUniforms(globalUniforms) { this.Shader.SetMatrix4Uniform(Constants_1.MODEL_MATRIX_UNIFORM, globalUniforms.modelMatrix); this.Shader.SetMatrix4Uniform(Constants_1.VIEW_MATRIX_UNIFORM, globalUniforms.viewMatrix); this.Shader.SetMatrix4Uniform(Constants_1.PROJECTION_MATRIX_UNIFORM, globalUniforms.projectionMatrix); } } exports.VertexColoredInstancedMaterial = VertexColoredInstancedMaterial; const vsSource = `#version 300 es layout(location = ${Constants_1.POSITION_ATTRIBUTE_LOCATION}) in vec3 ${Constants_1.POSITION_ATTRIBUTE}; layout(location = ${Constants_1.COLOR_ATTRIBUTE_LOCATION}) in vec4 ${Constants_1.COLOR_ATTRIBUTE}; layout(location = ${Constants_1.INSTANCED_ATTRIBUTE_BASE_LOCATION + 0}) in mat4 ${Constants_1.INSTANCE_MATRIX_ATTRIBUTE}; uniform mat4 ${Constants_1.MODEL_MATRIX_UNIFORM}; uniform mat4 ${Constants_1.VIEW_MATRIX_UNIFORM}; uniform mat4 ${Constants_1.PROJECTION_MATRIX_UNIFORM}; out vec4 vColor; void main() { gl_Position = ${Constants_1.PROJECTION_MATRIX_UNIFORM} * ${Constants_1.VIEW_MATRIX_UNIFORM} * ${Constants_1.MODEL_MATRIX_UNIFORM} * ${Constants_1.INSTANCE_MATRIX_ATTRIBUTE} * vec4(${Constants_1.POSITION_ATTRIBUTE}, 1); vColor = ${Constants_1.COLOR_ATTRIBUTE}; }`; const fsSource = `#version 300 es precision mediump float; in vec4 vColor; out vec4 fragColor; void main() { fragColor = vColor; }`;