浏览代码

Add ambient color for palette

Mu Daosheng 11 年之前
父节点
当前提交
745502aff3
共有 2 个文件被更改,包括 12 次插入12 次删除
  1. 11 11
      examples/js/renderers/SoftwareRenderer.js
  2. 1 1
      examples/software_geometry_earth.html

+ 11 - 11
examples/js/renderers/SoftwareRenderer.js

@@ -245,10 +245,10 @@ THREE.SoftwareRenderer = function ( parameters ) {
 		context.fillRect( 0, 0, canvasWidth, canvasHeight );
 		context.fillRect( 0, 0, canvasWidth, canvasHeight );
 	}
 	}
 
 
-    function getPalette( color, bSimulateSpecular ) {
-        var diffuseR = color.r * 149;
-        var diffuseG = color.g * 149;
-        var diffuseB = color.b * 149;
+    function getPalette( material, bSimulateSpecular ) {
+        var diffuseR = material.ambient.r + material.color.r * 255;
+        var diffuseG = material.ambient.g + material.color.g * 255;
+        var diffuseB = material.ambient.b + material.color.b * 255;
         var palette = new Array(256);
         var palette = new Array(256);
         
         
         if ( bSimulateSpecular ) {
         if ( bSimulateSpecular ) {
@@ -399,13 +399,13 @@ THREE.SoftwareRenderer = function ( parameters ) {
                 if ( material instanceof THREE.MeshLambertMaterial ) {             
                 if ( material instanceof THREE.MeshLambertMaterial ) {             
                     // Generate color palette
                     // Generate color palette
                     if ( !material.palette ) {
                     if ( !material.palette ) {
-                        material.palette = getPalette( material.color, false );
+                        material.palette = getPalette( material, false );
                     }
                     }
                     
                     
                 } else if ( material instanceof THREE.MeshPhongMaterial ) {             
                 } else if ( material instanceof THREE.MeshPhongMaterial ) {             
                     // Generate color palette
                     // Generate color palette
                     if ( !material.palette ) {
                     if ( !material.palette ) {
-                        material.palette = getPalette( material.color, true );
+                        material.palette = getPalette( material, true );
                     }
                     }
                 }
                 }
 
 
@@ -523,11 +523,11 @@ THREE.SoftwareRenderer = function ( parameters ) {
         // UV values
         // UV values
         
         
         var tu1 = face.uvs[0].x; 
         var tu1 = face.uvs[0].x; 
-        var tv1 = face.uvs[0].y; 
+        var tv1 = 1-face.uvs[0].y; 
         var tu2 = face.uvs[1].x; 
         var tu2 = face.uvs[1].x; 
-        var tv2 = face.uvs[1].y; 
+        var tv2 = 1-face.uvs[1].y; 
         var tu3 = face.uvs[2].x; 
         var tu3 = face.uvs[2].x; 
-        var tv3 = face.uvs[2].y; 
+        var tv3 = 1-face.uvs[2].y; 
         
         
         // Normal values
         // Normal values
         var n1 = face.vertexNormalsModel[0], n2 = face.vertexNormalsModel[1], n3 = face.vertexNormalsModel[2];        
         var n1 = face.vertexNormalsModel[0], n2 = face.vertexNormalsModel[1], n3 = face.vertexNormalsModel[2];        
@@ -767,7 +767,7 @@ THREE.SoftwareRenderer = function ( parameters ) {
 								var u = cx1 * scale;
 								var u = cx1 * scale;
 								var v = cx2 * scale;                                        
 								var v = cx2 * scale;                                        
                                 
                                 
-								shader( data, offset * 4, cxtu, 1-cxtv, cxnz * 255, face, material );                                
+								shader( data, offset * 4, cxtu, cxtv, cxnz * 255, face, material );                                
 							}
 							}
 
 
 							cx1 += dy12;
 							cx1 += dy12;
@@ -821,7 +821,7 @@ THREE.SoftwareRenderer = function ( parameters ) {
 									var v = cx2 * scale;
 									var v = cx2 * scale;
 
 
 									zbuffer[ offset ] = z;                                    
 									zbuffer[ offset ] = z;                                    
-									shader( data, offset * 4, cxtu, 1-cxtv, cxnz * 255, face, material );
+									shader( data, offset * 4, cxtu, cxtv, cxnz * 255, face, material );
 
 
 								}
 								}
 
 

+ 1 - 1
examples/software_geometry_earth.html

@@ -70,7 +70,7 @@
 
 
 					var geometry = new THREE.SphereGeometry( 200, 20, 20 );
 					var geometry = new THREE.SphereGeometry( 200, 20, 20 );
 
 
-					var material = new THREE.MeshPhongMaterial( { map: texture, overdraw: 0.5 } );
+					var material = new THREE.MeshLambertMaterial( { map: texture, overdraw: 0.5 } );
 					var mesh = new THREE.Mesh( geometry, material );
 					var mesh = new THREE.Mesh( geometry, material );
 					group.add( mesh );
 					group.add( mesh );