|
@@ -186,7 +186,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
var _glExtensionCompressedTextureS3TC;
|
|
var _glExtensionCompressedTextureS3TC;
|
|
var _glExtensionElementIndexUint;
|
|
var _glExtensionElementIndexUint;
|
|
var _glExtensionFragDepth;
|
|
var _glExtensionFragDepth;
|
|
-
|
|
|
|
|
|
+
|
|
|
|
|
|
initGL();
|
|
initGL();
|
|
|
|
|
|
@@ -606,7 +606,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
if ( attributes[ key ].buffer !== undefined ) {
|
|
if ( attributes[ key ].buffer !== undefined ) {
|
|
|
|
|
|
_gl.deleteBuffer( attributes[ key ].buffer );
|
|
_gl.deleteBuffer( attributes[ key ].buffer );
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -787,7 +787,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
attribute.__webglInitialized = true;
|
|
attribute.__webglInitialized = true;
|
|
|
|
|
|
- var size = 1; // "f" and "i"
|
|
|
|
|
|
+ var size = 1; // "f" and "i"
|
|
|
|
|
|
if ( attribute.type === "v2" ) size = 2;
|
|
if ( attribute.type === "v2" ) size = 2;
|
|
else if ( attribute.type === "v3" ) size = 3;
|
|
else if ( attribute.type === "v3" ) size = 3;
|
|
@@ -967,7 +967,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
attribute.__webglInitialized = true;
|
|
attribute.__webglInitialized = true;
|
|
|
|
|
|
- var size = 1; // "f" and "i"
|
|
|
|
|
|
+ var size = 1; // "f" and "i"
|
|
|
|
|
|
if( attribute.type === "v2" ) size = 2;
|
|
if( attribute.type === "v2" ) size = 2;
|
|
else if( attribute.type === "v3" ) size = 3;
|
|
else if( attribute.type === "v3" ) size = 3;
|
|
@@ -1049,11 +1049,11 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
// material must use some texture to require uvs
|
|
// material must use some texture to require uvs
|
|
|
|
|
|
if ( material.map ||
|
|
if ( material.map ||
|
|
- material.lightMap ||
|
|
|
|
- material.bumpMap ||
|
|
|
|
- material.normalMap ||
|
|
|
|
- material.specularMap ||
|
|
|
|
- material instanceof THREE.ShaderMaterial ) {
|
|
|
|
|
|
+ material.lightMap ||
|
|
|
|
+ material.bumpMap ||
|
|
|
|
+ material.normalMap ||
|
|
|
|
+ material.specularMap ||
|
|
|
|
+ material instanceof THREE.ShaderMaterial ) {
|
|
|
|
|
|
return true;
|
|
return true;
|
|
|
|
|
|
@@ -1179,7 +1179,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ index ];
|
|
value = customAttribute.value[ index ];
|
|
|
|
|
|
- customAttribute.array[ offset ] = value.x;
|
|
|
|
|
|
+ customAttribute.array[ offset ] = value.x;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
|
|
|
|
offset += 2;
|
|
offset += 2;
|
|
@@ -1212,7 +1212,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ index ];
|
|
value = customAttribute.value[ index ];
|
|
|
|
|
|
- customAttribute.array[ offset ] = value.x;
|
|
|
|
|
|
+ customAttribute.array[ offset ] = value.x;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 2 ] = value.z;
|
|
customAttribute.array[ offset + 2 ] = value.z;
|
|
|
|
|
|
@@ -1287,7 +1287,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( customAttribute.needsUpdate &&
|
|
if ( customAttribute.needsUpdate &&
|
|
( customAttribute.boundTo === undefined ||
|
|
( customAttribute.boundTo === undefined ||
|
|
- customAttribute.boundTo === "vertices") ) {
|
|
|
|
|
|
+ customAttribute.boundTo === "vertices") ) {
|
|
|
|
|
|
cal = customAttribute.value.length;
|
|
cal = customAttribute.value.length;
|
|
|
|
|
|
@@ -1307,7 +1307,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ ca ];
|
|
value = customAttribute.value[ ca ];
|
|
|
|
|
|
- customAttribute.array[ offset ] = value.x;
|
|
|
|
|
|
+ customAttribute.array[ offset ] = value.x;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
|
|
|
|
offset += 2;
|
|
offset += 2;
|
|
@@ -1322,7 +1322,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ ca ];
|
|
value = customAttribute.value[ ca ];
|
|
|
|
|
|
- customAttribute.array[ offset ] = value.r;
|
|
|
|
|
|
+ customAttribute.array[ offset ] = value.r;
|
|
customAttribute.array[ offset + 1 ] = value.g;
|
|
customAttribute.array[ offset + 1 ] = value.g;
|
|
customAttribute.array[ offset + 2 ] = value.b;
|
|
customAttribute.array[ offset + 2 ] = value.b;
|
|
|
|
|
|
@@ -1336,7 +1336,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ ca ];
|
|
value = customAttribute.value[ ca ];
|
|
|
|
|
|
- customAttribute.array[ offset ] = value.x;
|
|
|
|
|
|
+ customAttribute.array[ offset ] = value.x;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 2 ] = value.z;
|
|
customAttribute.array[ offset + 2 ] = value.z;
|
|
|
|
|
|
@@ -1489,7 +1489,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( customAttribute.needsUpdate &&
|
|
if ( customAttribute.needsUpdate &&
|
|
( customAttribute.boundTo === undefined ||
|
|
( customAttribute.boundTo === undefined ||
|
|
- customAttribute.boundTo === "vertices" ) ) {
|
|
|
|
|
|
+ customAttribute.boundTo === "vertices" ) ) {
|
|
|
|
|
|
offset = 0;
|
|
offset = 0;
|
|
|
|
|
|
@@ -1509,7 +1509,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ ca ];
|
|
value = customAttribute.value[ ca ];
|
|
|
|
|
|
- customAttribute.array[ offset ] = value.x;
|
|
|
|
|
|
+ customAttribute.array[ offset ] = value.x;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
|
|
|
|
offset += 2;
|
|
offset += 2;
|
|
@@ -1524,7 +1524,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ ca ];
|
|
value = customAttribute.value[ ca ];
|
|
|
|
|
|
- customAttribute.array[ offset ] = value.r;
|
|
|
|
|
|
+ customAttribute.array[ offset ] = value.r;
|
|
customAttribute.array[ offset + 1 ] = value.g;
|
|
customAttribute.array[ offset + 1 ] = value.g;
|
|
customAttribute.array[ offset + 2 ] = value.b;
|
|
customAttribute.array[ offset + 2 ] = value.b;
|
|
|
|
|
|
@@ -1538,7 +1538,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ ca ];
|
|
value = customAttribute.value[ ca ];
|
|
|
|
|
|
- customAttribute.array[ offset ] = value.x;
|
|
|
|
|
|
+ customAttribute.array[ offset ] = value.x;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 2 ] = value.z;
|
|
customAttribute.array[ offset + 2 ] = value.z;
|
|
|
|
|
|
@@ -1554,7 +1554,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ ca ];
|
|
value = customAttribute.value[ ca ];
|
|
|
|
|
|
- customAttribute.array[ offset ] = value.x;
|
|
|
|
|
|
+ customAttribute.array[ offset ] = value.x;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 1 ] = value.y;
|
|
customAttribute.array[ offset + 2 ] = value.z;
|
|
customAttribute.array[ offset + 2 ] = value.z;
|
|
customAttribute.array[ offset + 3 ] = value.w;
|
|
customAttribute.array[ offset + 3 ] = value.w;
|
|
@@ -1717,7 +1717,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
vka = morphTargetsArrays[ vk ];
|
|
vka = morphTargetsArrays[ vk ];
|
|
|
|
|
|
- vka[ offset_morphTarget ] = v1.x;
|
|
|
|
|
|
+ vka[ offset_morphTarget ] = v1.x;
|
|
vka[ offset_morphTarget + 1 ] = v1.y;
|
|
vka[ offset_morphTarget + 1 ] = v1.y;
|
|
vka[ offset_morphTarget + 2 ] = v1.z;
|
|
vka[ offset_morphTarget + 2 ] = v1.z;
|
|
|
|
|
|
@@ -1751,7 +1751,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
nka = morphNormalsArrays[ vk ];
|
|
nka = morphNormalsArrays[ vk ];
|
|
|
|
|
|
- nka[ offset_morphTarget ] = n1.x;
|
|
|
|
|
|
+ nka[ offset_morphTarget ] = n1.x;
|
|
nka[ offset_morphTarget + 1 ] = n1.y;
|
|
nka[ offset_morphTarget + 1 ] = n1.y;
|
|
nka[ offset_morphTarget + 2 ] = n1.z;
|
|
nka[ offset_morphTarget + 2 ] = n1.z;
|
|
|
|
|
|
@@ -1789,7 +1789,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
|
|
|
|
- face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
+ face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
// weights
|
|
// weights
|
|
|
|
|
|
@@ -1853,7 +1853,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
|
|
|
|
- face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
+ face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
vertexColors = face.vertexColors;
|
|
vertexColors = face.vertexColors;
|
|
faceColor = face.color;
|
|
faceColor = face.color;
|
|
@@ -1901,7 +1901,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
|
|
|
|
- face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
+ face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
vertexTangents = face.vertexTangents;
|
|
vertexTangents = face.vertexTangents;
|
|
|
|
|
|
@@ -1937,7 +1937,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
|
|
|
|
- face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
+ face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
vertexNormals = face.vertexNormals;
|
|
vertexNormals = face.vertexNormals;
|
|
faceNormal = face.normal;
|
|
faceNormal = face.normal;
|
|
@@ -2045,7 +2045,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
|
|
|
|
- faceArray[ offset_face ] = vertexIndex;
|
|
|
|
|
|
+ faceArray[ offset_face ] = vertexIndex;
|
|
faceArray[ offset_face + 1 ] = vertexIndex + 1;
|
|
faceArray[ offset_face + 1 ] = vertexIndex + 1;
|
|
faceArray[ offset_face + 2 ] = vertexIndex + 2;
|
|
faceArray[ offset_face + 2 ] = vertexIndex + 2;
|
|
|
|
|
|
@@ -2091,9 +2091,9 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
|
|
|
|
- face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
+ face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = customAttribute.value[ face.a ];
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = customAttribute.value[ face.a ];
|
|
customAttribute.array[ offset_custom + 1 ] = customAttribute.value[ face.b ];
|
|
customAttribute.array[ offset_custom + 1 ] = customAttribute.value[ face.b ];
|
|
customAttribute.array[ offset_custom + 2 ] = customAttribute.value[ face.c ];
|
|
customAttribute.array[ offset_custom + 2 ] = customAttribute.value[ face.c ];
|
|
|
|
|
|
@@ -2107,7 +2107,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
value = customAttribute.value[ chunk_faces3[ f ] ];
|
|
value = customAttribute.value[ chunk_faces3[ f ] ];
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = value;
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = value;
|
|
customAttribute.array[ offset_custom + 1 ] = value;
|
|
customAttribute.array[ offset_custom + 1 ] = value;
|
|
customAttribute.array[ offset_custom + 2 ] = value;
|
|
customAttribute.array[ offset_custom + 2 ] = value;
|
|
|
|
|
|
@@ -2123,13 +2123,13 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
|
|
|
|
- face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
+ face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
v1 = customAttribute.value[ face.a ];
|
|
v1 = customAttribute.value[ face.a ];
|
|
v2 = customAttribute.value[ face.b ];
|
|
v2 = customAttribute.value[ face.b ];
|
|
v3 = customAttribute.value[ face.c ];
|
|
v3 = customAttribute.value[ face.c ];
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = v1.x;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
|
|
|
|
customAttribute.array[ offset_custom + 2 ] = v2.x;
|
|
customAttribute.array[ offset_custom + 2 ] = v2.x;
|
|
@@ -2152,7 +2152,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
v2 = value;
|
|
v2 = value;
|
|
v3 = value;
|
|
v3 = value;
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = v1.x;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
|
|
|
|
customAttribute.array[ offset_custom + 2 ] = v2.x;
|
|
customAttribute.array[ offset_custom + 2 ] = v2.x;
|
|
@@ -2185,13 +2185,13 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
|
|
|
|
- face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
+ face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
v1 = customAttribute.value[ face.a ];
|
|
v1 = customAttribute.value[ face.a ];
|
|
v2 = customAttribute.value[ face.b ];
|
|
v2 = customAttribute.value[ face.b ];
|
|
v3 = customAttribute.value[ face.c ];
|
|
v3 = customAttribute.value[ face.c ];
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = v1[ pp[ 0 ] ];
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = v1[ pp[ 0 ] ];
|
|
customAttribute.array[ offset_custom + 1 ] = v1[ pp[ 1 ] ];
|
|
customAttribute.array[ offset_custom + 1 ] = v1[ pp[ 1 ] ];
|
|
customAttribute.array[ offset_custom + 2 ] = v1[ pp[ 2 ] ];
|
|
customAttribute.array[ offset_custom + 2 ] = v1[ pp[ 2 ] ];
|
|
|
|
|
|
@@ -2217,7 +2217,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
v2 = value;
|
|
v2 = value;
|
|
v3 = value;
|
|
v3 = value;
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = v1[ pp[ 0 ] ];
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = v1[ pp[ 0 ] ];
|
|
customAttribute.array[ offset_custom + 1 ] = v1[ pp[ 1 ] ];
|
|
customAttribute.array[ offset_custom + 1 ] = v1[ pp[ 1 ] ];
|
|
customAttribute.array[ offset_custom + 2 ] = v1[ pp[ 2 ] ];
|
|
customAttribute.array[ offset_custom + 2 ] = v1[ pp[ 2 ] ];
|
|
|
|
|
|
@@ -2243,7 +2243,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
v2 = value[ 1 ];
|
|
v2 = value[ 1 ];
|
|
v3 = value[ 2 ];
|
|
v3 = value[ 2 ];
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = v1[ pp[ 0 ] ];
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = v1[ pp[ 0 ] ];
|
|
customAttribute.array[ offset_custom + 1 ] = v1[ pp[ 1 ] ];
|
|
customAttribute.array[ offset_custom + 1 ] = v1[ pp[ 1 ] ];
|
|
customAttribute.array[ offset_custom + 2 ] = v1[ pp[ 2 ] ];
|
|
customAttribute.array[ offset_custom + 2 ] = v1[ pp[ 2 ] ];
|
|
|
|
|
|
@@ -2267,13 +2267,13 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = chunk_faces3.length; f < fl; f ++ ) {
|
|
|
|
|
|
- face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
+ face = obj_faces[ chunk_faces3[ f ] ];
|
|
|
|
|
|
v1 = customAttribute.value[ face.a ];
|
|
v1 = customAttribute.value[ face.a ];
|
|
v2 = customAttribute.value[ face.b ];
|
|
v2 = customAttribute.value[ face.b ];
|
|
v3 = customAttribute.value[ face.c ];
|
|
v3 = customAttribute.value[ face.c ];
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = v1.x;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
customAttribute.array[ offset_custom + 2 ] = v1.z;
|
|
customAttribute.array[ offset_custom + 2 ] = v1.z;
|
|
customAttribute.array[ offset_custom + 3 ] = v1.w;
|
|
customAttribute.array[ offset_custom + 3 ] = v1.w;
|
|
@@ -2302,7 +2302,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
v2 = value;
|
|
v2 = value;
|
|
v3 = value;
|
|
v3 = value;
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = v1.x;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
customAttribute.array[ offset_custom + 2 ] = v1.z;
|
|
customAttribute.array[ offset_custom + 2 ] = v1.z;
|
|
customAttribute.array[ offset_custom + 3 ] = v1.w;
|
|
customAttribute.array[ offset_custom + 3 ] = v1.w;
|
|
@@ -2331,7 +2331,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
v2 = value[ 1 ];
|
|
v2 = value[ 1 ];
|
|
v3 = value[ 2 ];
|
|
v3 = value[ 2 ];
|
|
|
|
|
|
- customAttribute.array[ offset_custom ] = v1.x;
|
|
|
|
|
|
+ customAttribute.array[ offset_custom ] = v1.x;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
customAttribute.array[ offset_custom + 1 ] = v1.y;
|
|
customAttribute.array[ offset_custom + 2 ] = v1.z;
|
|
customAttribute.array[ offset_custom + 2 ] = v1.z;
|
|
customAttribute.array[ offset_custom + 3 ] = v1.w;
|
|
customAttribute.array[ offset_custom + 3 ] = v1.w;
|
|
@@ -2462,7 +2462,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
ny = ( nay + nby + ncy ) / 3;
|
|
ny = ( nay + nby + ncy ) / 3;
|
|
nz = ( naz + nbz + ncz ) / 3;
|
|
nz = ( naz + nbz + ncz ) / 3;
|
|
|
|
|
|
- normalArray[ i ] = nx;
|
|
|
|
|
|
+ normalArray[ i ] = nx;
|
|
normalArray[ i + 1 ] = ny;
|
|
normalArray[ i + 1 ] = ny;
|
|
normalArray[ i + 2 ] = nz;
|
|
normalArray[ i + 2 ] = nz;
|
|
|
|
|
|
@@ -2546,7 +2546,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
}
|
|
}
|
|
|
|
|
|
disableUnusedAttributes();
|
|
disableUnusedAttributes();
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
this.renderBufferDirect = function ( camera, lights, fog, material, geometry, object ) {
|
|
this.renderBufferDirect = function ( camera, lights, fog, material, geometry, object ) {
|
|
@@ -2589,17 +2589,17 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
// indexed triangles
|
|
// indexed triangles
|
|
|
|
|
|
var type, size;
|
|
var type, size;
|
|
-
|
|
|
|
|
|
+
|
|
if ( index.array instanceof Uint32Array ) {
|
|
if ( index.array instanceof Uint32Array ) {
|
|
-
|
|
|
|
|
|
+
|
|
type = _gl.UNSIGNED_INT;
|
|
type = _gl.UNSIGNED_INT;
|
|
size = 4;
|
|
size = 4;
|
|
-
|
|
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
-
|
|
|
|
|
|
+
|
|
type = _gl.UNSIGNED_SHORT;
|
|
type = _gl.UNSIGNED_SHORT;
|
|
size = 2;
|
|
size = 2;
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
var offsets = geometry.offsets;
|
|
var offsets = geometry.offsets;
|
|
@@ -2698,23 +2698,23 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
setLineWidth( material.linewidth );
|
|
setLineWidth( material.linewidth );
|
|
|
|
|
|
var index = geometryAttributes[ "index" ];
|
|
var index = geometryAttributes[ "index" ];
|
|
-
|
|
|
|
|
|
+
|
|
if ( index ) {
|
|
if ( index ) {
|
|
|
|
|
|
// indexed lines
|
|
// indexed lines
|
|
|
|
|
|
var type, size;
|
|
var type, size;
|
|
-
|
|
|
|
|
|
+
|
|
if ( index.array instanceof Uint32Array ){
|
|
if ( index.array instanceof Uint32Array ){
|
|
-
|
|
|
|
|
|
+
|
|
type = _gl.UNSIGNED_INT;
|
|
type = _gl.UNSIGNED_INT;
|
|
size = 4;
|
|
size = 4;
|
|
-
|
|
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
-
|
|
|
|
|
|
+
|
|
type = _gl.UNSIGNED_SHORT;
|
|
type = _gl.UNSIGNED_SHORT;
|
|
size = 2;
|
|
size = 2;
|
|
-
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
var offsets = geometry.offsets;
|
|
var offsets = geometry.offsets;
|
|
@@ -2727,7 +2727,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, index.buffer );
|
|
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, index.buffer );
|
|
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
_gl.drawElements( _gl.LINES, index.array.length, type, 0 ); // 2 bytes per Uint16Array
|
|
_gl.drawElements( _gl.LINES, index.array.length, type, 0 ); // 2 bytes per Uint16Array
|
|
|
|
|
|
_this.info.render.calls ++;
|
|
_this.info.render.calls ++;
|
|
@@ -2753,7 +2753,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
}
|
|
}
|
|
|
|
|
|
// render indexed lines
|
|
// render indexed lines
|
|
-
|
|
|
|
|
|
+
|
|
_gl.drawElements( _gl.LINES, offsets[ i ].count, type, offsets[ i ].start * size ); // 2 bytes per Uint16Array
|
|
_gl.drawElements( _gl.LINES, offsets[ i ].count, type, offsets[ i ].start * size ); // 2 bytes per Uint16Array
|
|
|
|
|
|
_this.info.render.calls ++;
|
|
_this.info.render.calls ++;
|
|
@@ -2970,7 +2970,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
var type = geometryGroup.__typeArray === Uint32Array ? _gl.UNSIGNED_INT : _gl.UNSIGNED_SHORT;
|
|
var type = geometryGroup.__typeArray === Uint32Array ? _gl.UNSIGNED_INT : _gl.UNSIGNED_SHORT;
|
|
|
|
|
|
// wireframe
|
|
// wireframe
|
|
-
|
|
|
|
|
|
+
|
|
if ( material.wireframe ) {
|
|
if ( material.wireframe ) {
|
|
|
|
|
|
setLineWidth( material.wireframeLinewidth );
|
|
setLineWidth( material.wireframeLinewidth );
|
|
@@ -4106,7 +4106,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
skinning: material.skinning,
|
|
skinning: material.skinning,
|
|
maxBones: maxBones,
|
|
maxBones: maxBones,
|
|
- useVertexTexture: _supportsBoneTextures && object && object.useVertexTexture,
|
|
|
|
|
|
+ useVertexTexture: _supportsBoneTextures && object && object.skeleton && object.skeleton.useVertexTexture,
|
|
|
|
|
|
morphTargets: material.morphTargets,
|
|
morphTargets: material.morphTargets,
|
|
morphNormals: material.morphNormals,
|
|
morphNormals: material.morphNormals,
|
|
@@ -4319,26 +4319,26 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( material.skinning ) {
|
|
if ( material.skinning ) {
|
|
|
|
|
|
- if ( _supportsBoneTextures && object.useVertexTexture ) {
|
|
|
|
|
|
+ if ( _supportsBoneTextures && object.skeleton.useVertexTexture ) {
|
|
|
|
|
|
if ( p_uniforms.boneTexture !== null ) {
|
|
if ( p_uniforms.boneTexture !== null ) {
|
|
|
|
|
|
var textureUnit = getTextureUnit();
|
|
var textureUnit = getTextureUnit();
|
|
|
|
|
|
_gl.uniform1i( p_uniforms.boneTexture, textureUnit );
|
|
_gl.uniform1i( p_uniforms.boneTexture, textureUnit );
|
|
- _this.setTexture( object.boneTexture, textureUnit );
|
|
|
|
|
|
+ _this.setTexture( object.skeleton.boneTexture, textureUnit );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
if ( p_uniforms.boneTextureWidth !== null ) {
|
|
if ( p_uniforms.boneTextureWidth !== null ) {
|
|
|
|
|
|
- _gl.uniform1i( p_uniforms.boneTextureWidth, object.boneTextureWidth );
|
|
|
|
|
|
+ _gl.uniform1i( p_uniforms.boneTextureWidth, object.skeleton.boneTextureWidth );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
if ( p_uniforms.boneTextureHeight !== null ) {
|
|
if ( p_uniforms.boneTextureHeight !== null ) {
|
|
|
|
|
|
- _gl.uniform1i( p_uniforms.boneTextureHeight, object.boneTextureHeight );
|
|
|
|
|
|
+ _gl.uniform1i( p_uniforms.boneTextureHeight, object.skeleton.boneTextureHeight );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -4346,7 +4346,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( p_uniforms.boneGlobalMatrices !== null ) {
|
|
if ( p_uniforms.boneGlobalMatrices !== null ) {
|
|
|
|
|
|
- _gl.uniformMatrix4fv( p_uniforms.boneGlobalMatrices, false, object.boneMatrices );
|
|
|
|
|
|
+ _gl.uniformMatrix4fv( p_uniforms.boneGlobalMatrices, false, object.skeleton.boneMatrices );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -4510,10 +4510,10 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
}
|
|
}
|
|
|
|
|
|
// uv repeat and offset setting priorities
|
|
// uv repeat and offset setting priorities
|
|
- // 1. color map
|
|
|
|
- // 2. specular map
|
|
|
|
- // 3. normal map
|
|
|
|
- // 4. bump map
|
|
|
|
|
|
+ // 1. color map
|
|
|
|
+ // 2. specular map
|
|
|
|
+ // 3. normal map
|
|
|
|
+ // 4. bump map
|
|
|
|
|
|
var uvScaleMap;
|
|
var uvScaleMap;
|
|
|
|
|
|
@@ -4807,7 +4807,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
offset = i * 2;
|
|
offset = i * 2;
|
|
|
|
|
|
- uniform._array[ offset ] = value[ i ].x;
|
|
|
|
|
|
+ uniform._array[ offset ] = value[ i ].x;
|
|
uniform._array[ offset + 1 ] = value[ i ].y;
|
|
uniform._array[ offset + 1 ] = value[ i ].y;
|
|
|
|
|
|
}
|
|
}
|
|
@@ -4826,7 +4826,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
offset = i * 3;
|
|
offset = i * 3;
|
|
|
|
|
|
- uniform._array[ offset ] = value[ i ].x;
|
|
|
|
|
|
+ uniform._array[ offset ] = value[ i ].x;
|
|
uniform._array[ offset + 1 ] = value[ i ].y;
|
|
uniform._array[ offset + 1 ] = value[ i ].y;
|
|
uniform._array[ offset + 2 ] = value[ i ].z;
|
|
uniform._array[ offset + 2 ] = value[ i ].z;
|
|
|
|
|
|
@@ -4846,7 +4846,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
offset = i * 4;
|
|
offset = i * 4;
|
|
|
|
|
|
- uniform._array[ offset ] = value[ i ].x;
|
|
|
|
|
|
+ uniform._array[ offset ] = value[ i ].x;
|
|
uniform._array[ offset + 1 ] = value[ i ].y;
|
|
uniform._array[ offset + 1 ] = value[ i ].y;
|
|
uniform._array[ offset + 2 ] = value[ i ].z;
|
|
uniform._array[ offset + 2 ] = value[ i ].z;
|
|
uniform._array[ offset + 3 ] = value[ i ].w;
|
|
uniform._array[ offset + 3 ] = value[ i ].w;
|
|
@@ -5663,7 +5663,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
_gl.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );
|
|
_gl.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glFormat, glFormat, glType, cubeImage[ i ] );
|
|
|
|
|
|
} else {
|
|
} else {
|
|
-
|
|
|
|
|
|
+
|
|
var mipmap, mipmaps = cubeImage[ i ].mipmaps;
|
|
var mipmap, mipmaps = cubeImage[ i ].mipmaps;
|
|
|
|
|
|
for( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {
|
|
for( var j = 0, jl = mipmaps.length; j < jl; j ++ ) {
|
|
@@ -5995,7 +5995,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
function allocateBones ( object ) {
|
|
function allocateBones ( object ) {
|
|
|
|
|
|
- if ( _supportsBoneTextures && object && object.useVertexTexture ) {
|
|
|
|
|
|
+ if ( _supportsBoneTextures && object && object.skeleton && object.skeleton.useVertexTexture ) {
|
|
|
|
|
|
return 1024;
|
|
return 1024;
|
|
|
|
|
|
@@ -6005,7 +6005,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
// ( for example when prebuilding shader
|
|
// ( for example when prebuilding shader
|
|
// to be used with multiple objects )
|
|
// to be used with multiple objects )
|
|
//
|
|
//
|
|
- // - leave some extra space for other uniforms
|
|
|
|
|
|
+ // - leave some extra space for other uniforms
|
|
// - limit here is ANGLE's 254 max uniform vectors
|
|
// - limit here is ANGLE's 254 max uniform vectors
|
|
// (up to 54 should be safe)
|
|
// (up to 54 should be safe)
|
|
|
|
|
|
@@ -6016,11 +6016,11 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( object !== undefined && object instanceof THREE.SkinnedMesh ) {
|
|
if ( object !== undefined && object instanceof THREE.SkinnedMesh ) {
|
|
|
|
|
|
- maxBones = Math.min( object.bones.length, maxBones );
|
|
|
|
|
|
+ maxBones = Math.min( object.skeleton.bones.length, maxBones );
|
|
|
|
|
|
- if ( maxBones < object.bones.length ) {
|
|
|
|
|
|
+ if ( maxBones < object.skeleton.bones.length ) {
|
|
|
|
|
|
- console.warn( "WebGLRenderer: too many bones - " + object.bones.length + ", this GPU supports just " + maxBones + " (try OpenGL instead of ANGLE)" );
|
|
|
|
|
|
+ console.warn( "WebGLRenderer: too many bones - " + object.skeleton.bones.length + ", this GPU supports just " + maxBones + " (try OpenGL instead of ANGLE)" );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -6113,8 +6113,8 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
_glExtensionCompressedTextureS3TC = _gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || _gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || _gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );
|
|
_glExtensionCompressedTextureS3TC = _gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || _gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || _gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );
|
|
|
|
|
|
_glExtensionElementIndexUint = _gl.getExtension( 'OES_element_index_uint' );
|
|
_glExtensionElementIndexUint = _gl.getExtension( 'OES_element_index_uint' );
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
if ( _glExtensionTextureFloat === null ) {
|
|
if ( _glExtensionTextureFloat === null ) {
|
|
|
|
|
|
console.log( 'THREE.WebGLRenderer: Float textures not supported.' );
|
|
console.log( 'THREE.WebGLRenderer: Float textures not supported.' );
|
|
@@ -6184,7 +6184,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
_gl.blendFunc( _gl.SRC_ALPHA, _gl.ONE_MINUS_SRC_ALPHA );
|
|
_gl.blendFunc( _gl.SRC_ALPHA, _gl.ONE_MINUS_SRC_ALPHA );
|
|
|
|
|
|
_gl.viewport( _viewportX, _viewportY, _viewportWidth, _viewportHeight );
|
|
_gl.viewport( _viewportX, _viewportY, _viewportWidth, _viewportHeight );
|
|
-
|
|
|
|
|
|
+
|
|
_gl.clearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha );
|
|
_gl.clearColor( _clearColor.r, _clearColor.g, _clearColor.b, _clearAlpha );
|
|
|
|
|
|
};
|
|
};
|