diff options
Diffstat (limited to 'js/lib/rdge/materials/uber-material.js')
-rwxr-xr-x | js/lib/rdge/materials/uber-material.js | 1560 |
1 files changed, 674 insertions, 886 deletions
diff --git a/js/lib/rdge/materials/uber-material.js b/js/lib/rdge/materials/uber-material.js index c1d1913c..e94458cc 100755 --- a/js/lib/rdge/materials/uber-material.js +++ b/js/lib/rdge/materials/uber-material.js | |||
@@ -1,8 +1,8 @@ | |||
1 | /* <copyright> | 1 | /* <copyright> |
2 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | 2 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> |
3 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | 3 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> |
4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | 4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. |
5 | </copyright> */ | 5 | </copyright> */ |
6 | 6 | ||
7 | var MaterialParser = require("js/lib/rdge/materials/material-parser").MaterialParser; | 7 | var MaterialParser = require("js/lib/rdge/materials/material-parser").MaterialParser; |
8 | var Material = require("js/lib/rdge/materials/material").Material; | 8 | var Material = require("js/lib/rdge/materials/material").Material; |
@@ -11,973 +11,761 @@ var UberMaterial = function UberMaterial() { | |||
11 | /////////////////////////////////////////////////////////////////////// | 11 | /////////////////////////////////////////////////////////////////////// |
12 | // Instance variables | 12 | // Instance variables |
13 | /////////////////////////////////////////////////////////////////////// | 13 | /////////////////////////////////////////////////////////////////////// |
14 | this._name = "UberMaterial"; | 14 | this._name = "UberMaterial"; |
15 | this._shaderName = "uber"; | 15 | this._shaderName = "uber"; |
16 | this.getShaderName = function() { return this._shaderName; }; | 16 | this.getShaderName = function () { return this._shaderName; }; |
17 | 17 | ||
18 | // set some default values | 18 | // set some default values |
19 | this._ambientColor = [ 0.0, 0.0, 0.0, 1.0 ]; | 19 | this._ambientColor = [0.0, 0.0, 0.0, 1.0]; |
20 | this._diffuseColor = [ 1.0, 1.0, 1.0, 1.0 ]; | 20 | this._diffuseColor = [1.0, 1.0, 1.0, 1.0]; |
21 | this._specularColor = [ 1.0, 1.0, 1.0, 1.0 ]; | 21 | this._specularColor = [1.0, 1.0, 1.0, 1.0]; |
22 | this._specularPower = 32.0; | 22 | this._specularPower = 32.0; |
23 | this._environmentAmount = 0.2; // 0 .. 1 | 23 | this._environmentAmount = 0.2; // 0 .. 1 |
24 | 24 | ||
25 | // set the default maps | 25 | // set the default maps |
26 | this._diffuseMapOb = { 'texture' : 'assets/images/rocky-diffuse.jpg', 'wrap' : 'REPEAT' }; | 26 | this._diffuseMapOb = { 'texture': 'assets/images/rocky-diffuse.jpg', 'wrap': 'REPEAT' }; |
27 | this._normalMapOb = { 'texture' : 'assets/images/rocky-normal.jpg', 'wrap' : 'REPEAT' }; | 27 | this._normalMapOb = { 'texture': 'assets/images/rocky-normal.jpg', 'wrap': 'REPEAT' }; |
28 | this._specularMapOb = { 'texture' : 'assets/images/rocky-spec.jpg', 'wrap' : 'REPEAT' }; | 28 | this._specularMapOb = { 'texture': 'assets/images/rocky-spec.jpg', 'wrap': 'REPEAT' }; |
29 | this._environmentMapOb = { 'texture' : 'assets/images/silver.png', 'wrap' : 'CLAMP', 'envReflection' : this._environmentAmount }; | 29 | this._environmentMapOb = { 'texture': 'assets/images/silver.png', 'wrap': 'CLAMP', 'envReflection': this._environmentAmount }; |
30 | 30 | ||
31 | this._useDiffuseMap = true; | 31 | this._useDiffuseMap = true; |
32 | this._useNormalMap = true; | 32 | this._useNormalMap = true; |
33 | this._useSpecularMap = true; | 33 | this._useSpecularMap = true; |
34 | this._useEnvironmentMap = true; | 34 | this._useEnvironmentMap = true; |
35 | this._useLights = [true, true, true, true]; | 35 | this._useLights = [true, true, true, true]; |
36 | 36 | ||
37 | this._MAX_LIGHTS = 4; | 37 | this._MAX_LIGHTS = 4; |
38 | 38 | ||
39 | /////////////////////////////////////////////////////////////////////// | 39 | /////////////////////////////////////////////////////////////////////// |
40 | // Material Property Accessors | 40 | // Material Property Accessors |
41 | /////////////////////////////////////////////////////////////////////// | 41 | /////////////////////////////////////////////////////////////////////// |
42 | this._propNames = ["ambientColor", "diffuseColor", "specularColor", "specularPower" , "diffuseMap", "normalMap", "specularMap", "environmentMap", "environmentAmount" ]; | 42 | this._propNames = ["ambientColor", "diffuseColor", "specularColor", "specularPower", "diffuseMap", "normalMap", "specularMap", "environmentMap", "environmentAmount"]; |
43 | this._propLabels = ["Ambient Color", "Diffuse Color", "Specular Color", "Specular Power", "Texture Map", "Bump Map", "Specular Map", "Environment Map", "Environment Map Amount" ]; | 43 | this._propLabels = ["Ambient Color", "Diffuse Color", "Specular Color", "Specular Power", "Texture Map", "Bump Map", "Specular Map", "Environment Map", "Environment Map Amount"]; |
44 | this._propTypes = ["color", "color", "color", "float", "file", "file", "file", "file", "float" ]; | 44 | this._propTypes = ["color", "color", "color", "float", "file", "file", "file", "file", "float"]; |
45 | this._propValues = []; | 45 | this._propValues = []; |
46 | 46 | ||
47 | this._propValues[ this._propNames[0] ] = this._ambientColor.slice(0); | 47 | this._propValues[this._propNames[0]] = this._ambientColor.slice(0); |
48 | this._propValues[ this._propNames[1] ] = this._diffuseColor.slice(0); | 48 | this._propValues[this._propNames[1]] = this._diffuseColor.slice(0); |
49 | this._propValues[ this._propNames[2] ] = this._specularColor.slice(0); | 49 | this._propValues[this._propNames[2]] = this._specularColor.slice(0); |
50 | this._propValues[ this._propNames[3] ] = this._specularPower; | 50 | this._propValues[this._propNames[3]] = this._specularPower; |
51 | this._propValues[ this._propNames[4] ] = this._diffuseMapOb['texture']; | 51 | this._propValues[this._propNames[4]] = this._diffuseMapOb['texture']; |
52 | this._propValues[ this._propNames[5] ] = this._normalMapOb['texture']; | 52 | this._propValues[this._propNames[5]] = this._normalMapOb['texture']; |
53 | this._propValues[ this._propNames[6] ] = this._specularMapOb['texture']; | 53 | this._propValues[this._propNames[6]] = this._specularMapOb['texture']; |
54 | this._propValues[ this._propNames[7] ] = this._environmentMapOb['texture']; | 54 | this._propValues[this._propNames[7]] = this._environmentMapOb['texture']; |
55 | this._propValues[ this._propNames[8] ] = this._environmentMapOb['envReflection']; | 55 | this._propValues[this._propNames[8]] = this._environmentMapOb['envReflection']; |
56 | 56 | ||
57 | this.setProperty = function( prop, value ) { | 57 | this.setProperty = function (prop, value) { |
58 | if (prop == "color") prop = "ambientColor"; | 58 | if (prop == "color") prop = "ambientColor"; |
59 | var valid = this.validateProperty( prop, value ); | 59 | var valid = this.validateProperty(prop, value); |
60 | if (valid) { | 60 | if (valid) { |
61 | this._propValues[prop] = value; | 61 | this._propValues[prop] = value; |
62 | 62 | ||
63 | switch (prop) | 63 | switch (prop) { |
64 | { | 64 | case "diffuseMap": |
65 | case "diffuseMap": | 65 | this.updateDiffuseMap(); |
66 | this.updateDiffuseMap(); | 66 | break; |
67 | break; | 67 | case "normalMap": |
68 | case "normalMap": | 68 | this.updateNormalMap(); |
69 | this.updateNormalMap(); | 69 | break; |
70 | break; | 70 | case "specularMap": |
71 | case "specularMap": | 71 | this.updateSpecularMap(); |
72 | this.updateSpecularMap(); | 72 | break; |
73 | break; | 73 | case "environmentMap": |
74 | case "environmentMap": | 74 | this.updateEnvironmentMap(); |
75 | this.updateEnvironmentMap(); | 75 | break; |
76 | break; | 76 | case "environmentAmount": |
77 | case "environmentAmount": | 77 | this.updateEnvironmentAmount(value); |
78 | this.updateEnvironmentAmount( value ); | 78 | break; |
79 | break; | 79 | case "specularPower": |
80 | case "specularPower": | 80 | this.updateSpecularPower(value); |
81 | this.updateSpecularPower( value ); | 81 | break; |
82 | break; | 82 | case "ambientColor": |
83 | case "ambientColor": | 83 | this.updateAmbientColor(value); |
84 | this.updateAmbientColor( value ); | 84 | break; |
85 | break; | 85 | case "diffuseColor": |
86 | case "diffuseColor": | 86 | this.updateDiffuseColor(value); |
87 | this.updateDiffuseColor( value ); | 87 | break; |
88 | break; | 88 | case "specularColor": |
89 | case "specularColor": | 89 | this.updateSpecularColor(value); |
90 | this.updateSpecularColor( value ); | 90 | break; |
91 | break; | 91 | } |
92 | } | 92 | } |
93 | } | 93 | }; |
94 | }; | ||
95 | /////////////////////////////////////////////////////////////////////// | 94 | /////////////////////////////////////////////////////////////////////// |
96 | 95 | ||
97 | // define the 4 lights | 96 | // define the 4 lights |
98 | this._lights = [ | 97 | this._lights = [ |
99 | 98 | ||
100 | { | 99 | { |
101 | 'type' : 'point', // can be 'directional', 'point' or 'spot' | 100 | 'type': 'point', // can be 'directional', 'point' or 'spot' |
102 | 'spotInnerCutoff' : 14.0, // fragments in the inner cutoff 'cone' are full intensity. | 101 | 'spotInnerCutoff': 14.0, // fragments in the inner cutoff 'cone' are full intensity. |
103 | 'spotOuterCutoff' : 15.0, // fragments outside the outer cutoff 'cone' are unlit. | 102 | 'spotOuterCutoff': 15.0, // fragments outside the outer cutoff 'cone' are unlit. |
104 | 'position' : [ 8.0, 2.0, 8.0 ], // light position; ignored for directional lights | 103 | 'position': [8.0, 2.0, 8.0], // light position; ignored for directional lights |
105 | 'direction' : [ -1.0, -1.0, -1.0 ], // light direction; ignored for point lights | 104 | 'direction': [-1.0, -1.0, -1.0], // light direction; ignored for point lights |
106 | 'attenuation' : [ 1.0, 0.025, 0.00125 ], // light attenuation; constant, linear, quadratic | 105 | 'attenuation': [1.0, 0.025, 0.00125], // light attenuation; constant, linear, quadratic |
107 | 'diffuseColor' : [ 1.0, 0.5, 0.5, 1.0 ], // diffuse light color | 106 | 'diffuseColor': [1.0, 0.5, 0.5, 1.0], // diffuse light color |
108 | 'specularColor' : [ 1.0, 1.0, 1.0, 1.0 ] // specular light color | 107 | 'specularColor': [1.0, 1.0, 1.0, 1.0] // specular light color |
109 | }, | 108 | }, |
110 | { | 109 | { |
111 | 'type' : 'point', | 110 | 'type': 'point', |
112 | 'spotInnerCutoff' : 9.0, | 111 | 'spotInnerCutoff': 9.0, |
113 | 'spotOuterCutoff' : 20.0, | 112 | 'spotOuterCutoff': 20.0, |
114 | 'position' : [ -8.0, 2.0, 8.0 ], | 113 | 'position': [-8.0, 2.0, 8.0], |
115 | 'direction' : [ 1.0, -1.0, -1.0 ], | 114 | 'direction': [1.0, -1.0, -1.0], |
116 | 'attenuation' : [ 1.0, 0.025, 0.00125 ], | 115 | 'attenuation': [1.0, 0.025, 0.00125], |
117 | 'diffuseColor' : [ 0.5, 1.0, 0.5, 1.0 ], | 116 | 'diffuseColor': [0.5, 1.0, 0.5, 1.0], |
118 | 'specularColor' : [ 1.0, 1.0, 1.0, 1.0 ] | 117 | 'specularColor': [1.0, 1.0, 1.0, 1.0] |
119 | }, | 118 | }, |
120 | { | 119 | { |
121 | 'type' : 'point', | 120 | 'type': 'point', |
122 | 'spotInnerCutoff' : 9.0, | 121 | 'spotInnerCutoff': 9.0, |
123 | 'spotOuterCutoff' : 20.0, | 122 | 'spotOuterCutoff': 20.0, |
124 | 'position' : [ -8.0, 2.0, -8.0 ], | 123 | 'position': [-8.0, 2.0, -8.0], |
125 | 'direction' : [ 1.0, -1.0, 1.0 ], | 124 | 'direction': [1.0, -1.0, 1.0], |
126 | 'attenuation' : [ 1.0, 0.25, 0.0125 ], | 125 | 'attenuation': [1.0, 0.25, 0.0125], |
127 | 'diffuseColor' |