import { mat4, vec3, vec4 } from './glm/glm.mjs'; export class Material { constructor(gl, colour = [0.89019607843, 0.0, 0.00392156862], shininess = 20.0) { this.gl = gl; this.colour = colour; this.shininess = shininess; } } export class Renderable { constructor(gl, shader, material = new Material()) { this.gl = gl; // TODO: Get these from the shader this.attributeLocations = { position: 0, normal: 1, }; this.buffers = { vertexBuffer: null, normalBuffer: null, faceBuffer: null, }; this.data = { verticies: [], normals: [], faces: [], }; this.shader = shader; this.material = material; this.uniforms = { modelMatrix: mat4.create(), u_modelMatrix: null, viewMatrix: mat4.create(), u_viewMatrix: null, projectionMatrix: mat4.create(), u_projectionMatrix: null, lightPosition: vec3.create(), u_lightPosition: null, ambientLightColor: vec3.fromValues(0.2, 0.2, 0.2), u_ambientLightColor: null, diffuseLightColor: vec3.fromValues(0.8, 0.8, 0.8), u_diffuseLightColor: null, specularLightColor: vec3.fromValues(1.0, 1.0, 1.0), u_specularLightColor: null, lightIntensity: 1.0, u_lightIntensity: null, ambientIntensity: 1.0, u_ambientIntensity: null, }; } } export class LegoBrickRenderable { }