Skip to content

Commit 7d6ff55

Browse files
committed
edit MaterialBinder
1 parent 323dfb7 commit 7d6ff55

File tree

3 files changed

+39
-18
lines changed

3 files changed

+39
-18
lines changed

glutil-binders.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,23 @@ at: http://upokecenter.dreamhosters.com/articles/donate-now-2/
1818
/** @private */
1919
function MaterialBinder(mshade){
2020
this.mshade=mshade;
21+
this.textureSize=[0,0];
2122
}
2223

2324
MaterialBinder.prototype.bind=function(program){
2425
if(!this.mshade)return this;
2526
program.setUniforms({
26-
"textureSize":[0,0],
27+
"textureSize":this.textureSize,
2728
"mshin":this.mshade.shininess,
28-
"ma":[this.mshade.ambient[0], this.mshade.ambient[1], this.mshade.ambient[2]],
29-
"md":[this.mshade.diffuse[0], this.mshade.diffuse[1], this.mshade.diffuse[2],
30-
this.mshade.diffuse.length<4 ? 1.0 : this.mshade.diffuse[3]],
31-
"ms":[this.mshade.specular[0],this.mshade.specular[1],this.mshade.specular[2]],
32-
"me":[this.mshade.emission[0],this.mshade.emission[1],this.mshade.emission[2]]
29+
"ma":this.mshade.ambient.length==3 ? this.mshade.ambient :
30+
[this.mshade.ambient[0], this.mshade.ambient[1], this.mshade.ambient[2]],
31+
"md":this.mshade.diffuse.length==4 ? this.mshade.diffuse :
32+
[this.mshade.diffuse[0], this.mshade.diffuse[1], this.mshade.diffuse[2],
33+
this.mshade.diffuse.length<4 ? 1.0 : this.mshade.diffuse[3]],
34+
"ms":this.mshade.specular.length==3 ? this.mshade.specular :
35+
[this.mshade.specular[0],this.mshade.specular[1],this.mshade.specular[2]],
36+
"me":this.mshade.emission.length==3 ? this.mshade.emission :
37+
[this.mshade.emission[0],this.mshade.emission[1],this.mshade.emission[2]]
3338
});
3439
if(this.mshade.texture){
3540
new TextureBinder(this.mshade.texture).bind(program);

glutil-shaderprog.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,15 @@ ShaderProgram.prototype.use=function(){
151151
this.savedUniforms={};
152152
return this;
153153
}
154+
ShaderProgram.prototype._log=function(i,v){
155+
// console.log("setting "+i+": "+v);
156+
}
154157
/** @private */
155158
ShaderProgram.prototype._setUniform=function(uniforms,i,isCurrentProgram){
156159
var isCurrentProgram=null;
157160
var v=uniforms[i];
158161
var uniform=this.get(i);
159162
if(uniform===null)return isCurrentProgram;
160-
// console.log("setting "+i+": "+v);
161163
if(isCurrentProgram==null){
162164
isCurrentProgram=this.context.getParameter(
163165
this.context.CURRENT_PROGRAM)==this.program;
@@ -180,48 +182,60 @@ ShaderProgram.prototype._setUniform=function(uniforms,i,isCurrentProgram){
180182
if(newUv){
181183
if(this.uniformTypes[i]==this.context.FLOAT){
182184
this.context.uniform1f(uniform, uv);
185+
this._log(i,v);
183186
} else {
184187
this.context.uniform1i(uniform, uv);
188+
this._log(i,v);
185189
}
186190
}
187-
}
191+
}
188192
else if(v.length==3){
189193
if(!uv){
190194
this.uniformValues[i]=uv=v.slice(0,v.length)
191195
this.context.uniform3f(uniform, uv[0],uv[1],uv[2]);
196+
this._log(i,v);
192197
} else if(uv[0]!=v[0] || uv[1]!=v[1] || uv[2]!=v[2]){
193198
uv[0]=v[0]; uv[1]=v[1]; uv[2]=v[2];
199+
this._log(i,v);
194200
this.context.uniform3f(uniform, uv[0],uv[1],uv[2]);
195201
}
196202
} else if(v.length==2){
197203
if(!uv){
198204
this.uniformValues[i]=uv=v.slice(0,v.length)
199205
this.context.uniform2f(uniform, uv[0],uv[1]);
206+
this._log(i,v);
200207
} else if(uv[0]!=v[0] || uv[1]!=v[1]){
201208
uv[0]=v[0]; uv[1]=v[1];
202209
this.context.uniform2f(uniform, uv[0],uv[1]);
210+
this._log(i,v);
203211
}
204212
} else if(v.length==4){
205213
if(!uv){
206214
this.uniformValues[i]=uv=v.slice(0,v.length)
207215
this.context.uniform4f(uniform, uv[0],uv[1],uv[2],uv[3]);
216+
this._log(i,v);
208217
} else if(uv[0]!=v[0] || uv[1]!=v[1] || uv[2]!=v[2] || uv[3]!=v[3]){
209218
uv[0]=v[0]; uv[1]=v[1]; uv[2]=v[2]; uv[3]=v[3];
210219
this.context.uniform4f(uniform, uv[0],uv[1],uv[2],uv[3]);
220+
this._log(i,v);
211221
}
212222
} else if(v.length==16){
213223
if(!uv){
214224
this.uniformValues[i]=uv=v.slice(0,v.length)
215225
this.context.uniformMatrix4fv(uniform,false,uv);
226+
this._log(i,v);
216227
} else if(ShaderProgram._copyIfDifferent(v,uv,16)){
217228
this.context.uniformMatrix4fv(uniform,false,uv);
229+
this._log(i,v);
218230
}
219231
} else if(v.length==9){
220232
if(!uv){
221233
this.uniformValues[i]=uv=v.slice(0,v.length)
222234
this.context.uniformMatrix3fv(uniform,false,uv);
235+
this._log(i,v);
223236
} else if(ShaderProgram._copyIfDifferent(v,uv,9)){
224237
this.context.uniformMatrix3fv(uniform,false,uv);
238+
this._log(i,v);
225239
}
226240
}
227241
return isCurrentProgram;
@@ -256,7 +270,7 @@ ShaderProgram.prototype.setUniforms=function(uniforms){
256270
if(typeof Object.keys!=="undefined"){
257271
var keys=Object.keys(uniforms);for(var ki=0;ki<keys.length;ki++){var i=keys[ki];
258272
isCurrentProgram=this._setUniform(uniforms,i,isCurrentProgram);
259-
}
273+
}
260274
} else {
261275
for(var i in uniforms){
262276
isCurrentProgram=this._setUniform(uniforms,i,isCurrentProgram);

glutil_min.js

Lines changed: 11 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)