Explorar el Código

SoftwareRenderer: Added Sprite support.

Mr.doob hace 11 años
padre
commit
314067bef1
Se han modificado 1 ficheros con 46 adiciones y 2 borrados
  1. 46 2
      examples/js/renderers/SoftwareRenderer.js

+ 46 - 2
examples/js/renderers/SoftwareRenderer.js

@@ -38,6 +38,10 @@ THREE.SoftwareRenderer = function () {
 
 	var projector = new THREE.Projector();
 
+	var vector1 = new THREE.Vector3();
+	var vector2 = new THREE.Vector3();
+	var vector3 = new THREE.Vector3();
+
 	this.domElement = canvas;
 
 	this.autoClear = true;
@@ -132,7 +136,46 @@ THREE.SoftwareRenderer = function () {
 					element.v2.positionScreen,
 					element.v3.positionScreen,
 					shader, element, material
-				)
+				);
+
+			} else if ( element instanceof THREE.RenderableSprite ) {
+
+				var scaleX = element.scale.x * 0.5;
+				var scaleY = element.scale.y * 0.5;
+
+				vector1.copy( element );
+				vector1.x -= scaleX;
+				vector1.y += scaleY;
+
+				vector2.copy( element );
+				vector2.x -= scaleX;
+				vector2.y -= scaleY;
+
+				vector3.copy( element );
+				vector3.x += scaleX;
+				vector3.y += scaleY;
+
+				drawTriangle(
+					vector1, vector2, vector3,
+					shader, element, material
+				);
+
+				vector1.copy( element );
+				vector1.x += scaleX;
+				vector1.y += scaleY;
+
+				vector2.copy( element );
+				vector2.x -= scaleX;
+				vector2.y -= scaleY;
+
+				vector3.copy( element );
+				vector3.x += scaleX;
+				vector3.y -= scaleY;
+
+				drawTriangle(
+					vector1, vector2, vector3,
+					shader, element, material
+				);
 
 			}
 
@@ -179,7 +222,8 @@ THREE.SoftwareRenderer = function () {
 
 			if ( material instanceof THREE.MeshBasicMaterial ||
 			     material instanceof THREE.MeshLambertMaterial ||
-			     material instanceof THREE.MeshPhongMaterial ) {
+			     material instanceof THREE.MeshPhongMaterial ||
+			     material instanceof THREE.SpriteMaterial ) {
 
 				var string;