UNPKG

ts-game-engine

Version:

Simple WebGL game/render engine written in TypeScript

45 lines (39 loc) 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Material_1 = require("./Material"); const gl_matrix_1 = require("gl-matrix"); const Constants_1 = require("../Constants"); class UnlitColoredMaterial extends Material_1.Material { constructor(scene) { super(scene, vsSource, fsSource); 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 */); this.Shader.DefineUniform("uColor", 5 /* Float3 */); this.color = gl_matrix_1.vec3.fromValues(1, 1, 1); } get Color() { return this.color; } set Color(color) { this.color = color; } 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); this.Shader.SetFloat3Uniform("uColor", this.color); } } exports.UnlitColoredMaterial = UnlitColoredMaterial; const vsSource = `#version 300 es layout(location = ${Constants_1.POSITION_ATTRIBUTE_LOCATION}) in vec3 ${Constants_1.POSITION_ATTRIBUTE}; uniform mat4 ${Constants_1.MODEL_MATRIX_UNIFORM}; uniform mat4 ${Constants_1.VIEW_MATRIX_UNIFORM}; uniform mat4 ${Constants_1.PROJECTION_MATRIX_UNIFORM}; void main() { gl_Position = ${Constants_1.PROJECTION_MATRIX_UNIFORM} * ${Constants_1.VIEW_MATRIX_UNIFORM} * ${Constants_1.MODEL_MATRIX_UNIFORM} * vec4(${Constants_1.POSITION_ATTRIBUTE}, 1); }`; const fsSource = `#version 300 es precision mediump float; uniform vec3 uColor; out vec4 fragColor; void main() { fragColor = vec4(uColor, 1); }`;