diff options
author | John Mayhew | 2012-07-09 17:28:24 -0700 |
---|---|---|
committer | John Mayhew | 2012-07-09 17:28:24 -0700 |
commit | 770bcb52422742ff741a88a75ecefbeb90bc9247 (patch) | |
tree | 64cb3e09a8daeb340261dd7f3869c73f7b90b643 /js/lib/rdge/materials/mandel-material.js | |
parent | 8c5ecaf90062f9e030386f338bdc19fd62b826c8 (diff) | |
parent | 2b2b5fbb4b6a786daa4e9d4ee9eba9ac78924842 (diff) | |
download | ninja-770bcb52422742ff741a88a75ecefbeb90bc9247.tar.gz |
Merge branch 'master' of github.com:Motorola-Mobility/ninja-internal
Conflicts:
manifest.json
Diffstat (limited to 'js/lib/rdge/materials/mandel-material.js')
-rw-r--r-- | js/lib/rdge/materials/mandel-material.js | 166 |
1 files changed, 88 insertions, 78 deletions
diff --git a/js/lib/rdge/materials/mandel-material.js b/js/lib/rdge/materials/mandel-material.js index 48377fe4..9c4ff701 100644 --- a/js/lib/rdge/materials/mandel-material.js +++ b/js/lib/rdge/materials/mandel-material.js | |||
@@ -1,24 +1,25 @@ | |||
1 | /* <copyright> | 1 | /* <copyright> |
2 | Copyright (c) 2012, Motorola Mobility, Inc | 2 | Copyright (c) 2012, Motorola Mobility LLC. |
3 | All Rights Reserved. | 3 | All Rights Reserved. |
4 | BSD License. | ||
5 | 4 | ||
6 | Redistribution and use in source and binary forms, with or without | 5 | Redistribution and use in source and binary forms, with or without |
7 | modification, are permitted provided that the following conditions are met: | 6 | modification, are permitted provided that the following conditions are met: |
8 | 7 | ||
9 | - Redistributions of source code must retain the above copyright notice, | 8 | * Redistributions of source code must retain the above copyright notice, |
10 | this list of conditions and the following disclaimer. | 9 | this list of conditions and the following disclaimer. |
11 | - Redistributions in binary form must reproduce the above copyright | 10 | |
12 | notice, this list of conditions and the following disclaimer in the | 11 | * Redistributions in binary form must reproduce the above copyright notice, |
13 | documentation and/or other materials provided with the distribution. | 12 | this list of conditions and the following disclaimer in the documentation |
14 | - Neither the name of Motorola Mobility nor the names of its contributors | 13 | and/or other materials provided with the distribution. |
15 | may be used to endorse or promote products derived from this software | 14 | |
16 | without specific prior written permission. | 15 | * Neither the name of Motorola Mobility LLC nor the names of its |
16 | contributors may be used to endorse or promote products derived from this | ||
17 | software without specific prior written permission. | ||
17 | 18 | ||
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
21 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
22 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 23 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 24 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 25 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
@@ -35,103 +36,112 @@ var MandelMaterial = function MandelMaterial() { | |||
35 | /////////////////////////////////////////////////////////////////////// | 36 | /////////////////////////////////////////////////////////////////////// |
36 | // Instance variables | 37 | // Instance variables |
37 | /////////////////////////////////////////////////////////////////////// | 38 | /////////////////////////////////////////////////////////////////////// |
38 | this._name = "Mandel"; | 39 | this._name = "Mandel"; |
39 | this._shaderName = "mandel"; | 40 | this._shaderName = "mandel"; |
40 | 41 | ||
41 | this._time = 0.0; | 42 | this._time = 0.0; |
42 | this._dTime = 0.01; | 43 | this._dTime = 0.01; |
43 | 44 | ||
44 | /////////////////////////////////////////////////////////////////////// | 45 | /////////////////////////////////////////////////////////////////////// |
45 | // Properties | 46 | // Properties |
46 | /////////////////////////////////////////////////////////////////////// | 47 | /////////////////////////////////////////////////////////////////////// |
47 | // properties inherited from PulseMaterial | 48 | // properties inherited from PulseMaterial |
48 | 49 | ||
49 | /////////////////////////////////////////////////////////////////////// | 50 | /////////////////////////////////////////////////////////////////////// |
50 | // Material Property Accessors | 51 | // Material Property Accessors |
51 | /////////////////////////////////////////////////////////////////////// | 52 | /////////////////////////////////////////////////////////////////////// |
52 | var u_speed_index = 0; | 53 | var u_speed_index = 0; |
53 | this._propNames = [ "u_speed" ]; | 54 | this._propNames = [ "u_speed" ]; |
54 | this._propLabels = [ "Speed" ]; | 55 | this._propLabels = [ "Speed" ]; |
55 | this._propTypes = [ "float" ]; | 56 | this._propTypes = [ "float" ]; |
56 | this._propValues = []; | 57 | this._propValues = []; |
57 | this._propValues[this._propNames[u_speed_index]] = 1.0; | 58 | this._propValues[this._propNames[u_speed_index]] = 1.0; |
58 | 59 | ||
59 | /////////////////////////////////////////////////////////////////////// | 60 | /////////////////////////////////////////////////////////////////////// |
60 | 61 | ||
61 | this.isAnimated = function() { return true; }; | 62 | this.isAnimated = function() { return true; }; |
62 | this.getShaderDef = function() { return MandelMaterialDef; } | 63 | this.getShaderDef = function() { return MandelMaterialDef; } |
63 | 64 | ||
64 | /////////////////////////////////////////////////////////////////////// | 65 | /////////////////////////////////////////////////////////////////////// |
65 | // Methods | 66 | // Methods |
66 | /////////////////////////////////////////////////////////////////////// | 67 | /////////////////////////////////////////////////////////////////////// |
67 | // duplcate method requirde | 68 | // duplcate method requirde |
68 | 69 | ||
69 | this.init = function( world ) { | 70 | this.init = function( world ) { |
70 | // save the world | 71 | // save the world |
71 | if (world) this.setWorld( world ); | 72 | if (world) this.setWorld( world ); |
72 | 73 | ||
73 | // set up the shader | 74 | // set up the shader |
74 | this._shader = new RDGE.jshader(); | 75 | this._shader = new RDGE.jshader(); |
75 | this._shader.def = MandelMaterialDef; | 76 | this._shader.def = MandelMaterialDef; |
76 | this._shader.init(); | 77 | this._shader.init(); |
77 | 78 | ||
78 | // set up the material node | 79 | // set up the material node |
79 | this._materialNode = RDGE.createMaterialNode("mandelMaterial" + "_" + world.generateUniqueNodeID()); | 80 | this._materialNode = RDGE.createMaterialNode("mandelMaterial" + "_" + world.generateUniqueNodeID()); |
80 | this._materialNode.setShader(this._shader); | 81 | this._materialNode.setShader(this._shader); |
81 | 82 | ||
82 | this._time = 0; | 83 | this._time = 0; |
83 | if (this._shader && this._shader['default']) { | 84 | if (this._shader && this._shader['default']) { |
84 | this._shader['default'].u_time.set( [this._time] ); | 85 | this._shader['default'].u_time.set( [this._time] ); |
85 | } | 86 | } |
86 | 87 | ||
87 | // set the shader values in the shader | 88 | // set the shader values in the shader |
88 | this.setShaderValues(); | 89 | this.setShaderValues(); |
89 | this.setResolution( [world.getViewportWidth(),world.getViewportHeight()] ); | 90 | this.setResolution( [world.getViewportWidth(),world.getViewportHeight()] ); |
90 | this.update( 0 ); | 91 | this.update( 0 ); |
91 | }; | 92 | }; |
93 | |||
94 | this.resetToDefault = function() | ||
95 | { | ||
96 | this._propValues[this._propNames[u_speed_index]] = 1.0; | ||
97 | |||
98 | var nProps = this._propNames.length; | ||
99 | for (var i=0; i<nProps; i++) | ||
100 | this.setProperty( this._propNames[i], this._propValues[this._propNames[i]] ); | ||
101 | }; | ||
92 | }; | 102 | }; |
93 | 103 | ||
94 | /////////////////////////////////////////////////////////////////////////////////////// | 104 | /////////////////////////////////////////////////////////////////////////////////////// |
95 | // RDGE shader | 105 | // RDGE shader |
96 | 106 | ||
97 | // shader spec (can also be loaded from a .JSON file, or constructed at runtime) | 107 | // shader spec (can also be loaded from a .JSON file, or constructed at runtime) |
98 | var MandelMaterialDef = | 108 | var MandelMaterialDef = |
99 | {'shaders': | 109 | {'shaders': |
100 | { | 110 | { |
101 | 'defaultVShader':"assets/shaders/Basic.vert.glsl", | 111 | 'defaultVShader':"assets/shaders/Basic.vert.glsl", |
102 | 'defaultFShader':"assets/shaders/Mandel.frag.glsl" | 112 | 'defaultFShader':"assets/shaders/Mandel.frag.glsl" |
103 | }, | 113 | }, |
104 | 'techniques': | 114 | 'techniques': |
105 | { | 115 | { |
106 | 'default': | 116 | 'default': |
107 | [ | 117 | [ |
108 | { | 118 | { |
109 | 'vshader' : 'defaultVShader', | 119 | 'vshader' : 'defaultVShader', |
110 | 'fshader' : 'defaultFShader', | 120 | 'fshader' : 'defaultFShader', |
111 | // attributes | 121 | // attributes |
112 | 'attributes' : | 122 | 'attributes' : |
113 | { | 123 | { |
114 | 'vert' : { 'type' : 'vec3' }, | 124 | 'vert' : { 'type' : 'vec3' }, |
115 | 'normal' : { 'type' : 'vec3' }, | 125 | 'normal' : { 'type' : 'vec3' }, |
116 | 'texcoord' : { 'type' : 'vec2' } | 126 | 'texcoord' : { 'type' : 'vec2' } |
117 | }, | 127 | }, |
118 | // parameters | 128 | // parameters |
119 | 'params' : | 129 | 'params' : |
120 | { | 130 | { |
121 | 'u_time' : { 'type' : 'float' }, | 131 | 'u_time' : { 'type' : 'float' }, |
122 | 'u_speed' : { 'type' : 'float' }, | 132 | 'u_speed' : { 'type' : 'float' }, |
123 | 'u_resolution' : { 'type' : 'vec2' }, | 133 | 'u_resolution' : { 'type' : 'vec2' }, |
124 | }, | 134 | }, |
125 | 135 | ||
126 | // render states | 136 | // render states |
127 | 'states' : | 137 | 'states' : |
128 | { | 138 | { |
129 | 'depthEnable' : true, | 139 | 'depthEnable' : true, |
130 | 'offset':[1.0, 0.1] | 140 | 'offset':[1.0, 0.1] |
131 | } | 141 | } |
132 | } | 142 | } |
133 | ] | 143 | ] |
134 | } | 144 | } |