ts-game-engine
Version:
Simple WebGL game/render engine written in TypeScript
45 lines (39 loc) • 1.96 kB
JavaScript
;
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);
}`;