|
@@ -32,7 +32,7 @@ THREE.WebGLProgram = ( function () {
|
|
|
var name = info.name;
|
|
|
var location = gl.getUniformLocation( program, name );
|
|
|
|
|
|
- //console.log("THREE.WebGLProgram: ACTIVE UNIFORM:", name);
|
|
|
+ // console.log("THREE.WebGLProgram: ACTIVE UNIFORM:", name);
|
|
|
|
|
|
var suffixPos = name.lastIndexOf( '[0]' );
|
|
|
if ( suffixPos !== - 1 && suffixPos === name.length - 3 ) {
|
|
@@ -60,7 +60,7 @@ THREE.WebGLProgram = ( function () {
|
|
|
var info = gl.getActiveAttrib( program, i );
|
|
|
var name = info.name;
|
|
|
|
|
|
- //console.log("THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:", name);
|
|
|
+ // console.log("THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:", name, i );
|
|
|
|
|
|
attributes[ name ] = gl.getAttribLocation( program, name );
|
|
|
|
|
@@ -85,18 +85,6 @@ THREE.WebGLProgram = ( function () {
|
|
|
var vertexShader = material.__webglShader.vertexShader;
|
|
|
var fragmentShader = material.__webglShader.fragmentShader;
|
|
|
|
|
|
- var index0AttributeName = material.index0AttributeName;
|
|
|
-
|
|
|
- /*
|
|
|
- if ( index0AttributeName === undefined && parameters.morphTargets === true ) {
|
|
|
-
|
|
|
- // programs with morphTargets displace position out of attribute 0
|
|
|
-
|
|
|
- index0AttributeName = 'position';
|
|
|
-
|
|
|
- }
|
|
|
- */
|
|
|
-
|
|
|
var shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';
|
|
|
|
|
|
if ( parameters.shadowMapType === THREE.PCFShadowMap ) {
|
|
@@ -364,13 +352,16 @@ THREE.WebGLProgram = ( function () {
|
|
|
gl.attachShader( program, glVertexShader );
|
|
|
gl.attachShader( program, glFragmentShader );
|
|
|
|
|
|
- if ( index0AttributeName !== undefined ) {
|
|
|
+ // Force a particular attribute to index 0.
|
|
|
+
|
|
|
+ if ( material.index0AttributeName !== undefined ) {
|
|
|
|
|
|
- // Force a particular attribute to index 0.
|
|
|
- // because potentially expensive emulation is done by browser if attribute 0 is disabled.
|
|
|
- // And, color, for example is often automatically bound to index 0 so disabling it
|
|
|
+ gl.bindAttribLocation( program, 0, material.index0AttributeName );
|
|
|
|
|
|
- gl.bindAttribLocation( program, 0, index0AttributeName );
|
|
|
+ } else if ( parameters.morphTargets === true ) {
|
|
|
+
|
|
|
+ // programs with morphTargets displace position out of attribute 0
|
|
|
+ gl.bindAttribLocation( program, 0, 'position' );
|
|
|
|
|
|
}
|
|
|
|