|
@@ -46,6 +46,8 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
_diffuseColor = new THREE.Color(),
|
|
|
_emissiveColor = new THREE.Color(),
|
|
|
|
|
|
+ _lightColor = new THREE.Color(),
|
|
|
+
|
|
|
_patterns = {}, _imagedatas = {},
|
|
|
|
|
|
_near, _far,
|
|
@@ -359,25 +361,19 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( light instanceof THREE.AmbientLight ) {
|
|
|
|
|
|
- _ambientLight.r += lightColor.r;
|
|
|
- _ambientLight.g += lightColor.g;
|
|
|
- _ambientLight.b += lightColor.b;
|
|
|
+ _ambientLight.add( lightColor );
|
|
|
|
|
|
} else if ( light instanceof THREE.DirectionalLight ) {
|
|
|
|
|
|
// for particles
|
|
|
|
|
|
- _directionalLights.r += lightColor.r;
|
|
|
- _directionalLights.g += lightColor.g;
|
|
|
- _directionalLights.b += lightColor.b;
|
|
|
+ _directionalLights.add( lightColor );
|
|
|
|
|
|
} else if ( light instanceof THREE.PointLight ) {
|
|
|
|
|
|
// for particles
|
|
|
|
|
|
- _pointLights.r += lightColor.r;
|
|
|
- _pointLights.g += lightColor.g;
|
|
|
- _pointLights.b += lightColor.b;
|
|
|
+ _pointLights.add( lightColor );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -390,7 +386,8 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
for ( var l = 0, ll = _lights.length; l < ll; l ++ ) {
|
|
|
|
|
|
var light = _lights[ l ];
|
|
|
- var lightColor = light.color;
|
|
|
+
|
|
|
+ _lightColor.copy( light.color );
|
|
|
|
|
|
if ( light instanceof THREE.DirectionalLight ) {
|
|
|
|
|
@@ -402,9 +399,7 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
amount *= light.intensity;
|
|
|
|
|
|
- color.r += lightColor.r * amount;
|
|
|
- color.g += lightColor.g * amount;
|
|
|
- color.b += lightColor.b * amount;
|
|
|
+ color.add( _lightColor.multiplyScalar( amount ) );
|
|
|
|
|
|
} else if ( light instanceof THREE.PointLight ) {
|
|
|
|
|
@@ -420,9 +415,7 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
amount *= light.intensity;
|
|
|
|
|
|
- color.r += lightColor.r * amount;
|
|
|
- color.g += lightColor.g * amount;
|
|
|
- color.b += lightColor.b * amount;
|
|
|
+ color.add( _lightColor.multiplyScalar( amount ) );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -586,9 +579,7 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( material.vertexColors === THREE.FaceColors ) {
|
|
|
|
|
|
- _diffuseColor.r *= element.color.r;
|
|
|
- _diffuseColor.g *= element.color.g;
|
|
|
- _diffuseColor.b *= element.color.b;
|
|
|
+ _diffuseColor.multiply( element.color );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -596,29 +587,18 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( material.wireframe === false && material.shading == THREE.SmoothShading && element.vertexNormalsLength == 3 ) {
|
|
|
|
|
|
- _color1.r = _color2.r = _color3.r = _ambientLight.r;
|
|
|
- _color1.g = _color2.g = _color3.g = _ambientLight.g;
|
|
|
- _color1.b = _color2.b = _color3.b = _ambientLight.b;
|
|
|
+ _color1.copy( _ambientLight );
|
|
|
+ _color2.copy( _ambientLight );
|
|
|
+ _color3.copy( _ambientLight );
|
|
|
|
|
|
calculateLight( element.v1.positionWorld, element.vertexNormalsModel[ 0 ], _color1 );
|
|
|
calculateLight( element.v2.positionWorld, element.vertexNormalsModel[ 1 ], _color2 );
|
|
|
calculateLight( element.v3.positionWorld, element.vertexNormalsModel[ 2 ], _color3 );
|
|
|
|
|
|
- _color1.r = _color1.r * _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color1.g = _color1.g * _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color1.b = _color1.b * _diffuseColor.b + _emissiveColor.b;
|
|
|
-
|
|
|
- _color2.r = _color2.r * _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color2.g = _color2.g * _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color2.b = _color2.b * _diffuseColor.b + _emissiveColor.b;
|
|
|
-
|
|
|
- _color3.r = _color3.r * _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color3.g = _color3.g * _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color3.b = _color3.b * _diffuseColor.b + _emissiveColor.b;
|
|
|
-
|
|
|
- _color4.r = ( _color2.r + _color3.r ) * 0.5;
|
|
|
- _color4.g = ( _color2.g + _color3.g ) * 0.5;
|
|
|
- _color4.b = ( _color2.b + _color3.b ) * 0.5;
|
|
|
+ _color1.multiply( _diffuseColor ).add( _emissiveColor );
|
|
|
+ _color2.multiply( _diffuseColor ).add( _emissiveColor );
|
|
|
+ _color3.multiply( _diffuseColor ).add( _emissiveColor );
|
|
|
+ _color4.addColors( _color2, _color3 ).multiplyScalar( 0.5 );
|
|
|
|
|
|
_image = getGradientTexture( _color1, _color2, _color3, _color4 );
|
|
|
|
|
@@ -626,15 +606,11 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- _color.r = _ambientLight.r;
|
|
|
- _color.g = _ambientLight.g;
|
|
|
- _color.b = _ambientLight.b;
|
|
|
+ _color.copy( _ambientLight );
|
|
|
|
|
|
calculateLight( element.centroidModel, element.normalModel, _color );
|
|
|
|
|
|
- _color.r = _color.r * _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color.g = _color.g * _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color.b = _color.b * _diffuseColor.b + _emissiveColor.b;
|
|
|
+ _color.multiply( _diffuseColor ).add( _emissiveColor );
|
|
|
|
|
|
material.wireframe === true
|
|
|
? strokePath( _color, material.wireframeLinewidth, material.wireframeLinecap, material.wireframeLinejoin )
|
|
@@ -693,9 +669,7 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( material.vertexColors === THREE.FaceColors ) {
|
|
|
|
|
|
- _color.r *= element.color.r;
|
|
|
- _color.g *= element.color.g;
|
|
|
- _color.b *= element.color.b;
|
|
|
+ _color.multiply( element.color );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -710,13 +684,18 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
_near = camera.near;
|
|
|
_far = camera.far;
|
|
|
|
|
|
- _color1.r = _color1.g = _color1.b = 1 - smoothstep( v1.positionScreen.z, _near, _far );
|
|
|
- _color2.r = _color2.g = _color2.b = 1 - smoothstep( v2.positionScreen.z, _near, _far );
|
|
|
- _color3.r = _color3.g = _color3.b = 1 - smoothstep( v3.positionScreen.z, _near, _far );
|
|
|
+ var depth;
|
|
|
+
|
|
|
+ depth = 1 - smoothstep( v1.positionScreen.z, _near, _far );
|
|
|
+ _color1.setRGB( depth, depth, depth );
|
|
|
+
|
|
|
+ depth = 1 - smoothstep( v2.positionScreen.z, _near, _far )
|
|
|
+ _color2.setRGB( depth, depth, depth );
|
|
|
|
|
|
- _color4.r = ( _color2.r + _color3.r ) * 0.5;
|
|
|
- _color4.g = ( _color2.g + _color3.g ) * 0.5;
|
|
|
- _color4.b = ( _color2.b + _color3.b ) * 0.5;
|
|
|
+ depth = 1 - smoothstep( v3.positionScreen.z, _near, _far );
|
|
|
+ _color3.setRGB( depth, depth, depth );
|
|
|
+
|
|
|
+ _color4.addColors( _color2, _color3 ).multiplyScalar( 0.5 );
|
|
|
|
|
|
_image = getGradientTexture( _color1, _color2, _color3, _color4 );
|
|
|
|
|
@@ -724,11 +703,13 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
} else if ( material instanceof THREE.MeshNormalMaterial ) {
|
|
|
|
|
|
+ var normal;
|
|
|
+
|
|
|
if ( material.shading == THREE.FlatShading ) {
|
|
|
|
|
|
- _color.r = 0.5 * element.normalModelView.x + 0.5;
|
|
|
- _color.g = 0.5 * element.normalModelView.y + 0.5;
|
|
|
- _color.b = 0.5 * element.normalModelView.z + 0.5;
|
|
|
+ normal = element.normalModelView;
|
|
|
+
|
|
|
+ _color.setRGB( normal.x, normal.y, normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
|
|
|
|
|
|
material.wireframe === true
|
|
|
? strokePath( _color, material.wireframeLinewidth, material.wireframeLinecap, material.wireframeLinejoin )
|
|
@@ -736,24 +717,16 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
} else if ( material.shading == THREE.SmoothShading ) {
|
|
|
|
|
|
- _vector3.copy( element.vertexNormalsModelView[ uv1 ] );
|
|
|
- _color1.r = 0.5 * _vector3.x + 0.5;
|
|
|
- _color1.g = 0.5 * _vector3.y + 0.5;
|
|
|
- _color1.b = 0.5 * _vector3.z + 0.5;
|
|
|
+ normal = element.vertexNormalsModelView[ uv1 ];
|
|
|
+ _color1.setRGB( normal.x, normal.y, normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
|
|
|
|
|
|
- _vector3.copy( element.vertexNormalsModelView[ uv2 ] );
|
|
|
- _color2.r = 0.5 * _vector3.x + 0.5;
|
|
|
- _color2.g = 0.5 * _vector3.y + 0.5;
|
|
|
- _color2.b = 0.5 * _vector3.z + 0.5;
|
|
|
+ normal = element.vertexNormalsModelView[ uv2 ];
|
|
|
+ _color2.setRGB( normal.x, normal.y, normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
|
|
|
|
|
|
- _vector3.copy( element.vertexNormalsModelView[ uv3 ] );
|
|
|
- _color3.r = 0.5 * _vector3.x + 0.5;
|
|
|
- _color3.g = 0.5 * _vector3.y + 0.5;
|
|
|
- _color3.b = 0.5 * _vector3.z + 0.5;
|
|
|
+ normal = element.vertexNormalsModelView[ uv3 ];
|
|
|
+ _color3.setRGB( normal.x, normal.y, normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
|
|
|
|
|
|
- _color4.r = ( _color2.r + _color3.r ) * 0.5;
|
|
|
- _color4.g = ( _color2.g + _color3.g ) * 0.5;
|
|
|
- _color4.b = ( _color2.b + _color3.b ) * 0.5;
|
|
|
+ _color4.addColors( _color2, _color3 ).multiplyScalar( 0.5 );
|
|
|
|
|
|
_image = getGradientTexture( _color1, _color2, _color3, _color4 );
|
|
|
|
|
@@ -798,9 +771,7 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( material.vertexColors === THREE.FaceColors ) {
|
|
|
|
|
|
- _diffuseColor.r *= element.color.r;
|
|
|
- _diffuseColor.g *= element.color.g;
|
|
|
- _diffuseColor.b *= element.color.b;
|
|
|
+ _diffuseColor.multiply( element.color );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -808,30 +779,20 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( material.wireframe === false && material.shading == THREE.SmoothShading && element.vertexNormalsLength == 4 ) {
|
|
|
|
|
|
- _color1.r = _color2.r = _color3.r = _color4.r = _ambientLight.r;
|
|
|
- _color1.g = _color2.g = _color3.g = _color4.g = _ambientLight.g;
|
|
|
- _color1.b = _color2.b = _color3.b = _color4.b = _ambientLight.b;
|
|
|
+ _color1.copy( _ambientLight );
|
|
|
+ _color2.copy( _ambientLight );
|
|
|
+ _color3.copy( _ambientLight );
|
|
|
+ _color4.copy( _ambientLight );
|
|
|
|
|
|
calculateLight( element.v1.positionWorld, element.vertexNormalsModel[ 0 ], _color1 );
|
|
|
calculateLight( element.v2.positionWorld, element.vertexNormalsModel[ 1 ], _color2 );
|
|
|
calculateLight( element.v4.positionWorld, element.vertexNormalsModel[ 3 ], _color3 );
|
|
|
calculateLight( element.v3.positionWorld, element.vertexNormalsModel[ 2 ], _color4 );
|
|
|
|
|
|
- _color1.r = _color1.r * _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color1.g = _color1.g * _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color1.b = _color1.b * _diffuseColor.b + _emissiveColor.b;
|
|
|
-
|
|
|
- _color2.r = _color2.r * _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color2.g = _color2.g * _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color2.b = _color2.b * _diffuseColor.b + _emissiveColor.b;
|
|
|
-
|
|
|
- _color3.r = _color3.r * _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color3.g = _color3.g * _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color3.b = _color3.b * _diffuseColor.b + _emissiveColor.b;
|
|
|
-
|
|
|
- _color4.r = _color4.r * _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color4.g = _color4.g * _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color4.b = _color4.b * _diffuseColor.b + _emissiveColor.b;
|
|
|
+ _color1.multiply( _diffuseColor ).add( _emissiveColor );
|
|
|
+ _color2.multiply( _diffuseColor ).add( _emissiveColor );
|
|
|
+ _color3.multiply( _diffuseColor ).add( _emissiveColor );
|
|
|
+ _color4.multiply( _diffuseColor ).add( _emissiveColor );
|
|
|
|
|
|
_image = getGradientTexture( _color1, _color2, _color3, _color4 );
|
|
|
|
|
@@ -845,15 +806,11 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- _color.r = _ambientLight.r;
|
|
|
- _color.g = _ambientLight.g;
|
|
|
- _color.b = _ambientLight.b;
|
|
|
+ _color.copy( _ambientLight );
|
|
|
|
|
|
calculateLight( element.centroidModel, element.normalModel, _color );
|
|
|
|
|
|
- _color.r = _color.r * _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color.g = _color.g * _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color.b = _color.b * _diffuseColor.b + _emissiveColor.b;
|
|
|
+ _color.multiply( _diffuseColor ).add( _emissiveColor );
|
|
|
|
|
|
drawQuad( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, _v4x, _v4y );
|
|
|
|
|
@@ -865,9 +822,7 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
} else {
|
|
|
|
|
|
- _color.r = _diffuseColor.r + _emissiveColor.r;
|
|
|
- _color.g = _diffuseColor.g + _emissiveColor.g;
|
|
|
- _color.b = _diffuseColor.b + _emissiveColor.b;
|
|
|
+ _color.addColors( _diffuseColor, _emissiveColor );
|
|
|
|
|
|
drawQuad( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, _v4x, _v4y );
|
|
|
|
|
@@ -883,9 +838,7 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
if ( material.vertexColors === THREE.FaceColors ) {
|
|
|
|
|
|
- _color.r *= element.color.r;
|
|
|
- _color.g *= element.color.g;
|
|
|
- _color.b *= element.color.b;
|
|
|
+ _color.multiply( element.color );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -897,11 +850,12 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
} else if ( material instanceof THREE.MeshNormalMaterial ) {
|
|
|
|
|
|
+ var normal;
|
|
|
+
|
|
|
if ( material.shading == THREE.FlatShading ) {
|
|
|
|
|
|
- _color.r = 0.5 * element.normalModelView.x + 0.5;
|
|
|
- _color.g = 0.5 * element.normalModelView.y + 0.5;
|
|
|
- _color.b = 0.5 * element.normalModelView.z + 0.5;
|
|
|
+ normal = element.normalModelView;
|
|
|
+ _color.setRGB( normal.x, normal.y, normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
|
|
|
|
|
|
drawQuad( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, _v4x, _v4y );
|
|
|
|
|
@@ -911,25 +865,17 @@ THREE.CanvasRenderer = function ( parameters ) {
|
|
|
|
|
|
} else if ( material.shading == THREE.SmoothShading ) {
|
|
|
|
|
|
- _vector3.copy( element.vertexNormalsModelView[ 0 ] );
|
|
|
- _color1.r = 0.5 * _vector3.x + 0.5;
|
|
|
- _color1.g = 0.5 * _vector3.y + 0.5;
|
|
|
- _color1.b = 0.5 * _vector3.z + 0.5;
|
|
|
-
|
|
|
- _vector3.copy( element.vertexNormalsModelView[ 1 ] );
|
|
|
- _color2.r = 0.5 * _vector3.x + 0.5;
|
|
|
- _color2.g = 0.5 * _vector3.y + 0.5;
|
|
|
- _color2.b = 0.5 * _vector3.z + 0.5;
|
|
|
-
|
|
|
- _vector3.copy( element.vertexNormalsModelView[ 3 ] );
|
|
|
- _color3.r = 0.5 * _vector3.x + 0.5;
|
|
|
- _color3.g = 0.5 * _vector3.y + 0.5;
|
|
|
- _color3.b = 0.5 * _vector3.z + 0.5;
|
|
|
-
|
|
|
- _vector3.copy( element.vertexNormalsModelView[ 2 ] );
|
|
|
- _color4.r = 0.5 * _vector3.x + 0.5;
|
|
|
- _color4.g = 0.5 * _vector3.y + 0.5;
|
|
|
- _color4.b = 0.5 * _vector3.z + 0.5;
|
|
|
+ normal = element.vertexNormalsModelView[ 0 ];
|
|
|
+ _color1.setRGB( normal.x, normal.y, normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
|
|
|
+
|
|
|
+ normal = element.vertexNormalsModelView[ 1 ];
|
|
|
+ _color2.setRGB( normal.x, normal.y, normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
|
|
|
+
|
|
|
+ normal = element.vertexNormalsModelView[ 3 ];
|
|
|
+ _color3.setRGB( normal.x, normal.y, normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
|
|
|
+
|
|
|
+ normal = element.vertexNormalsModelView[ 2 ];
|
|
|
+ _color4.setRGB( normal.x, normal.y, normal.z ).multiplyScalar( 0.5 ).addScalar( 0.5 );
|
|
|
|
|
|
_image = getGradientTexture( _color1, _color2, _color3, _color4 );
|
|
|
|