diff options
Diffstat (limited to 'js/lib/rdge/materials/material.js')
-rwxr-xr-x | js/lib/rdge/materials/material.js | 78 |
1 files changed, 9 insertions, 69 deletions
diff --git a/js/lib/rdge/materials/material.js b/js/lib/rdge/materials/material.js index 276c7687..4b8a5d6b 100755 --- a/js/lib/rdge/materials/material.js +++ b/js/lib/rdge/materials/material.js | |||
@@ -38,6 +38,11 @@ var Material = function GLMaterial( world ) { | |||
38 | this._shader = null; | 38 | this._shader = null; |
39 | this._materialNode = null; | 39 | this._materialNode = null; |
40 | 40 | ||
41 | // vertex deformation variables | ||
42 | this._hasVertexDeformation = false; | ||
43 | this._vertexDeformationRange = [0, 0, 1, 1]; // (xMin, yMin, xMax, yMax) | ||
44 | this._vertexDeformationTolerance = 0.02; | ||
45 | |||
41 | /////////////////////////////////////////////////////////////////////// | 46 | /////////////////////////////////////////////////////////////////////// |
42 | // Property Accessors | 47 | // Property Accessors |
43 | /////////////////////////////////////////////////////////////////////// | 48 | /////////////////////////////////////////////////////////////////////// |
@@ -252,78 +257,13 @@ var Material = function GLMaterial( world ) { | |||
252 | return tex; | 257 | return tex; |
253 | }; | 258 | }; |
254 | 259 | ||
255 | /* | 260 | this.updateTextures = function() |
256 | this.setRenderProperties = function( glContext, shaderProgram ) | ||
257 | { | 261 | { |
258 | glContext.uniform1f( shaderProgram.materialShininessUniform, this._shininess ); | 262 | // this function is called whenever a world that generates textuers for |
259 | 263 | // the current world changes in some way. Sub-classes with textures | |
260 | if (this._texture) | 264 | // should override this function. |
261 | this.prepareTextureForRender( 0 ); | ||
262 | else | ||
263 | glContext.uniform1i( shaderProgram.useTextureUniform, false ); | ||
264 | |||
265 | var amb = this._ambient, diff = this._diffuse, spec = this._specular; | ||
266 | glContext.uniform4f( shaderProgram.materialAmbientUniform, amb[0], amb[1], amb[2], amb[3]); | ||
267 | glContext.uniform4f( shaderProgram.materialDiffuseUniform, diff[0], diff[1], diff[2], diff[3]); | ||
268 | glContext.uniform4f( shaderProgram.materialSpecularUniform, spec[0], spec[1], spec[2], spec[3]); | ||
269 | } | 265 | } |
270 | |||
271 | |||
272 | |||
273 | this.prepareTextureForRender = function ( index ) | ||
274 | { | ||
275 | // we will need to be able to handle multiple textures. | ||
276 | // currently only dealing with 1. | ||
277 | index = 0; | ||
278 | var texture = this._texture; | ||
279 | |||
280 | var gl = this.getWorld().getGLContext(); | ||
281 | var shaderProgram = this.getWorld().getShaderProgram(); | ||
282 | |||
283 | gl.activeTexture(gl.TEXTURE0); | ||
284 | gl.bindTexture(gl.TEXTURE_2D, texture); | ||
285 | gl.uniform1i(shaderProgram.samplerUniform, 0); | ||
286 | gl.uniform1i( shaderProgram.useTextureUniform, true ); | ||
287 | } | ||
288 | |||
289 | this.textureLoadHandler = function (event) | ||
290 | { | ||
291 | var texture = this._texture; | ||
292 | |||
293 | var gl = this._world.getGLContext(); | ||
294 | var shaderProgram = this._world.getShaderProgram(); | ||
295 | |||
296 | gl.activeTexture(gl.TEXTURE0); | ||
297 | gl.bindTexture(gl.TEXTURE_2D, texture); | ||
298 | gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true); | ||
299 | gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.image); | ||
300 | gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); | ||
301 | gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); | ||
302 | |||
303 | // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); | ||
304 | // gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); | ||
305 | gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); | ||
306 | gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); | ||
307 | 266 | ||
308 | gl.bindTexture(gl.TEXTURE_2D, null); | ||
309 | |||
310 | this._material._texture = this._texture; | ||
311 | this._world.render(); | ||
312 | } | ||
313 | |||
314 | |||
315 | this.loadTexture = function( path ) | ||
316 | { | ||
317 | var gl = this.getWorld().getGLContext(); | ||
318 | var tex = gl.createTexture(); | ||
319 | tex.image = new Image(); | ||
320 | tex.image._world = this._world; | ||
321 | tex.image._material = this; | ||
322 | tex.image._texture = tex; | ||
323 | tex.image.onload = this.textureLoadHandler; | ||
324 | tex.image.src = path; | ||
325 | } | ||
326 | */ | ||
327 | }; | 267 | }; |
328 | 268 | ||
329 | if (typeof exports === "object") { | 269 | if (typeof exports === "object") { |