Browse Source

Remove ImmediateRenderObject. (#22643)

Michael Herzog 3 years ago
parent
commit
d65e0af066

+ 0 - 119
docs/api/en/extras/objects/ImmediateRenderObject.html

@@ -1,119 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../../" />
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Object3D] &rarr;
-
-		<h1>[name]</h1>
-
-		<p class="desc">
-			This experimental class provides a fast code path for rendering meshes with frequently updated
-			geometry data. When the renderer encounters an instance of [name], it only takes care about
-			the most primitive rendering operations (e.g. binding vertex attributes, determining correct shader
-			program or perfoming the actual draw call). Features like view frustum culling, wireframe rendering
-			or using multiple materials are not supported. Besides [name] can only be used to render triangles.
-		</p>
-
-		<p class="desc">
-			[name] does not work with instances of [page:BufferGeometry]. The
-			raw geometry data have to be maintained as properties of the [name].
-		</p>
-
-		<p class="desc">
-			Using [name] makes only sense if you are updating your geometry data per frame. You can then
-			benefit of a faster code path compared to the default mesh redering logic.
-		</p>
-
-		<h2>Examples</h2>
-		<p>
-			[example:webgl_marchingcubes Marching Cubes]
-		</p>
-
-		<h2>Constructor</h2>
-
-
-		<h3>[name]( [param:Material material] )</h3>
-		<p>
-		[page:Material material] — The material of the [name].
-		</p>
-
-		<h2>Properties</h2>
-		<p>See the base [page:Object3D] class for common properties.</p>
-
-		<h3>[property:Boolean material]</h3>
-		<p>
-			The material of the [name]. Assigning multiple materials is not supported.
-		</p>
-
-		<h3>[property:Boolean hasPositions]</h3>
-		<p>
-			Whether position data are defined or not. Default is *false*.
-		</p>
-
-		<h3>[property:Boolean hasNormals]</h3>
-		<p>
-			Whether normal data are defined or not. Default is *false*.
-		</p>
-
-		<h3>[property:Boolean hasColors]</h3>
-		<p>
-			Whether color data are defined or not. Default is *false*.
-		</p>
-
-		<h3>[property:Boolean hasUvs]</h3>
-		<p>
-			Whether texture coordinates are defined or not. Default is *false*.
-		</p>
-
-		<h3>[property:Float32Array positionArray]</h3>
-		<p>
-			The buffer holding position data. Default is *null*.
-		</p>
-
-		<h3>[property:Float32Array normalArray]</h3>
-		<p>
-			The buffer holding normal data. Default is *null*.
-		</p>
-
-		<h3>[property:Float32Array colorArray]</h3>
-		<p>
-			The buffer holding color data. Default is *null*.
-		</p>
-
-		<h3>[property:Float32Array uvArray]</h3>
-		<p>
-			The buffer holding texture coordinates. Default is *null*.
-		</p>
-
-		<h3>[property:Integer count]</h3>
-		<p>
-			The number of primitives to be rendered. Default is *0*.
-			This property will be set to *0* after each rendering so you usually
-			set it in the implementatio of [page:.render]().
-		</p>
-
-		<h2>Methods</h2>
-
-		<p>See the base [page:Object3D] class for common methods.</p>
-
-		<h3>[method:null render]([param:Function renderCallback])</h3>
-		<p>
-		renderCallback -- A function to render the generated geometry data.
-		</p>
-		<p>
-		This method needs to be implemented by the deriving class of [name]. You normally want to implement the
-		vertex buffer update logic and execute *renderCallback* at the end of your implementation.
-		</p>
-
-		<h2>Source</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-		</p>
-	</body>
-</html>

+ 0 - 7
docs/api/en/renderers/WebGLRenderer.html

@@ -417,13 +417,6 @@
 		<h3>[method:null renderBufferDirect]( [param:Camera camera], [param:Scene scene], [param:BufferGeometry geometry], [param:Material material], [param:Object3D object], [param:Object group] )</h3>
 		<p>Render a buffer geometry group using the camera and with the specified material.</p>
 
-		<h3>[method:null renderBufferImmediate]( [param:Object3D object], [param:WebGLProgram program] )</h3>
-		<p>object - an instance of [page:Object3D]<br />
-		program - an instance of [page:WebGLProgram]<br />
-
-		Renders an instance of [page:ImmediateRenderObject]. Gets called by renderObjectImmediate().
-		</p>
-
 		<h3>[method:null resetState]()</h3>
 		<p>Can be used to reset the internal WebGL state. This method is mostly relevant for applications which share a single WebGL context across multiple WebGL libraries.</p>
 

+ 0 - 110
docs/api/ko/extras/objects/ImmediateRenderObject.html

@@ -1,110 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../../" />
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Object3D] &rarr;
-
-		<h1>[name]</h1>
-
-		<p class="desc">
-			이 실험 클래스는 자주 업데이트되는 기하학 데이터로 메쉬를 렌더링하기 위한 빠른 코드 패스를 제공합니다. 렌더러가 [name]의 인스턴스를 만나면, 가장 원시적인 렌더링 작업(예: 바인딩 꼭짓점 속성, 정확한 셰이더 프로그램 결정 또는 실제 드로우 콜 수행)에만 신경을 씁니다. 뷰 펑퍼텀 도금, 와이어프레임 렌더링 또는 다중 재료 사용과 같은 기능은 지원되지 않습니다. [name]은 삼각형을 렌더링하는 데에만 사용할 수 있습니다.
-		</p>
-
-		<p class="desc">
-			[name]는 [page:BufferGeometry] 인스턴스와 함께 작동되지 않습니다. 원시 기하학 데이터가 [name]의 프로퍼티로 저장돼야 합니다.
-		</p>
-
-		<p class="desc">
-			[name]은 기하학 데이터를 프레임마다 업데이트할 때만 작동합니다. 기본 메쉬 렌더링 로직에 비해 빠른 코드 패스를 경험할 수 있습니다.
-		</p>
-
-		<h2>예제</h2>
-		<p>
-			[example:webgl_marchingcubes Marching Cubes]
-		</p>
-
-		<h2>생성자</h2>
-
-
-		<h3>[name]( [param:Material material] )</h3>
-		<p>
-		[page:Material material] — [name]의 재질.
-		</p>
-
-		<h2>프로퍼티</h2>
-		<p>일반 프로퍼니틑 기본 [page:Object3D] 클래스를 참고하세요.</p>
-
-		<h3>[property:Boolean material]</h3>
-		<p>
-			[name]의 재질. 여러 재질을 할당하는 것은 지원되지 않습니다.
-		</p>
-
-		<h3>[property:Boolean hasPositions]</h3>
-		<p>
-			위치 데이터가 정의되었는지입니다. 기본값은 *false*입니다.
-		</p>
-
-		<h3>[property:Boolean hasNormals]</h3>
-		<p>
-			법선 데이터가 정의되었는지입니다. 기본값은 *false*입니다.
-		</p>
-
-		<h3>[property:Boolean hasColors]</h3>
-		<p>
-			색상 데이터가 정의되었는지입니다. 기본값은 *false*입니다.
-		</p>
-
-		<h3>[property:Boolean hasUvs]</h3>
-		<p>
-			텍스쳐 좌표가 정의되었는지입니다. 기본값은 *false*입니다.
-		</p>
-
-		<h3>[property:Float32Array positionArray]</h3>
-		<p>
-			위치 데이터를 담고 있는 버퍼입니다. 기본값은 *null*입니다.
-		</p>
-
-		<h3>[property:Float32Array normalArray]</h3>
-		<p>
-			법선 데이터를 담고 있는 버퍼입니다. 기본값은 *null*입니다.
-		</p>
-
-		<h3>[property:Float32Array colorArray]</h3>
-		<p>
-			색상 데이터를 담고 있는 버퍼입니다. 기본값은 *null*입니다.
-		</p>
-
-		<h3>[property:Float32Array uvArray]</h3>
-		<p>
-			텍스쳐 좌표를 담고 있는 버퍼입니다. 기본값은 *null*입니다.
-		</p>
-
-		<h3>[property:Integer count]</h3>
-		<p>
-			렌더링될 개체의 수입니다. 기본값은 *0*입니다.
-			매 렌더링 이후에 이 프로퍼티는 *0*으로 설정될 것이기 때문에 [page:.render]() 실행 범위 안에 주로 설정하곤 합니다.
-		</p>
-
-		<h2>메서드</h2>
-
-		<p>일반 메서드는 기본 [page:Object3D] 클래스를 참고하세요.</p>
-
-		<h3>[method:null render]([param:Function renderCallback])</h3>
-		<p>
-		renderCallback -- 생성된 기하학 데이터를 렌더링하는 함수입니다.
-		</p>
-		<p>
-		이 메서드는 [name]의 파생클래스에서 상속받아야합니다. 일반적으로 실행 마지막 부분에 꼭짓점 버퍼 업데이트 로직을 구현하고 *renderCallback*을 사용합니다.
-
-		<h2>소스코드</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-		</p>
-	</body>
-</html>

+ 0 - 118
docs/api/zh/extras/objects/ImmediateRenderObject.html

@@ -1,118 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh">
-	<head>
-		<meta charset="utf-8" />
-		<base href="../../../../" />
-		<script src="page.js"></script>
-		<link type="text/css" rel="stylesheet" href="page.css" />
-	</head>
-	<body>
-		[page:Object3D] &rarr;
-
-		<h1>即时渲染对象([name])</h1>
-
-		<p class="desc">
-			This experimental class provides a fast code path for rendering meshes with frequently updated
-			geometry data. When the renderer encounters an instance of [name], it only takes care about
-			the most primitive rendering operations (e.g. binding vertex attributes, determining correct shader
-			program or perfoming the actual draw call). Features like view frustum culling, wireframe rendering
-			or using multiple materials are not supported. Besides [name] can only be used to render triangles.
-		</p>
-
-		<p class="desc">
-			[name] does not work with instances of [page:BufferGeometry]. The
-			raw geometry data have to be maintained as properties of the [name].
-		</p>
-
-		<p class="desc">
-			Using [name] makes only sense if you are updating your geometry data per frame. You can then
-			benefit of a faster code path compared to the default mesh redering logic.
-		</p>
-
-		<h2>例子</h2>
-		<p>
-			[example:webgl_marchingcubes Marching Cubes]
-		</p>
-
-		<h2>构造函数(Constructor)</h2>
-
-		<h3>[name]( [param:Material material] )</h3>
-		<p>
-		[page:Material material] — The material of the [name].
-		</p>
-
-		<h2>Properties</h2>
-		<p>See the base [page:Object3D] class for common properties.</p>
-
-		<h3>[property:Boolean material]</h3>
-		<p>
-			The material of the [name]. Assigning multiple materials is not supported.
-		</p>
-
-		<h3>[property:Boolean hasPositions]</h3>
-		<p>
-			Whether position data are defined or not. Default is *false*.
-		</p>
-
-		<h3>[property:Boolean hasNormals]</h3>
-		<p>
-			Whether normal data are defined or not. Default is *false*.
-		</p>
-
-		<h3>[property:Boolean hasColors]</h3>
-		<p>
-			Whether color data are defined or not. Default is *false*.
-		</p>
-
-		<h3>[property:Boolean hasUvs]</h3>
-		<p>
-			Whether texture coordinates are defined or not. Default is *false*.
-		</p>
-
-		<h3>[property:Float32Array positionArray]</h3>
-		<p>
-			The buffer holding position data. Default is *null*.
-		</p>
-
-		<h3>[property:Float32Array normalArray]</h3>
-		<p>
-			The buffer holding normal data. Default is *null*.
-		</p>
-
-		<h3>[property:Float32Array colorArray]</h3>
-		<p>
-			The buffer holding color data. Default is *null*.
-		</p>
-
-		<h3>[property:Float32Array uvArray]</h3>
-		<p>
-			The buffer holding texture coordinates. Default is *null*.
-		</p>
-
-		<h3>[property:Integer count]</h3>
-		<p>
-			The number of primitives to be rendered. Default is *0*.
-			This property will be set to *0* after each rendering so you usually
-			set it in the implementatio of [page:.render]().
-		</p>
-
-		<h2>方法(Methods)</h2>
-
-		<p>See the base [page:Object3D] class for common methods.</p>
-
-		<h3>[method:null render]([param:Function renderCallback])</h3>
-		<p>
-		renderCallback -- A function to render the generated geometry data.
-		</p>
-		<p>
-		This method needs to be implemented by the deriving class of [name]. You normally want to implement the
-		vertex buffer update logic and execute *renderCallback* at the end of your implementation.
-		</p>
-
-		<h2>源码(Source)</h2>
-
-		<p>
-			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
-		</p>
-	</body>
-</html>

+ 0 - 7
docs/api/zh/renderers/WebGLRenderer.html

@@ -371,13 +371,6 @@
 		<h3>[method:null renderBufferDirect]( [param:Camera camera], [param:Scene scene], [param:BufferGeometry geometry], [param:Material material], [param:Object3D object], [param:Object group] )</h3>
 		<p>使用相机和指定材质渲染缓冲几何组。</p>
 
-		<h3>[method:null renderBufferImmediate]( [param:Object3D object], [param:WebGLProgram program] )</h3>
-		<p>object - an instance of [page:Object3D]<br />
-		program - an instance of [page:WebGLProgram]<br />
-
-		Renders an instance of [page:ImmediateRenderObject],由renderObjectImmediate对象调用。
-		</p>
-
 		<h3>[method:null resetState]()</h3>
 		<p>Can be used to reset the internal WebGL state. This method is mostly relevant for applications which share a single WebGL context across multiple WebGL libraries.</p>
 

+ 0 - 9
docs/list.json

@@ -132,10 +132,6 @@
 				"SplineCurve": "api/en/extras/curves/SplineCurve"
 			},
 
-			"Extras / Objects": {
-				"ImmediateRenderObject": "api/en/extras/objects/ImmediateRenderObject"
-			},
-
 			"Geometries": {
 				"BoxGeometry": "api/en/geometries/BoxGeometry",
 				"CircleGeometry": "api/en/geometries/CircleGeometry",
@@ -641,10 +637,6 @@
 				"SplineCurve": "api/zh/extras/curves/SplineCurve"
 			},
 
-			"附件 / 物体": {
-				"ImmediateRenderObject": "api/zh/extras/objects/ImmediateRenderObject"
-			},
-
 			"几何体": {
 				"BoxGeometry": "api/zh/geometries/BoxGeometry",
 				"CircleGeometry": "api/zh/geometries/CircleGeometry",
@@ -980,7 +972,6 @@
 		"레퍼런스": {
 
 			"애니메이션": {
-				"AnimationAction": "api/ko/animation/AnimationAction",
 				"AnimationAction": "api/ko/animation/AnimationAction",
 				"AnimationClip": "api/ko/animation/AnimationClip",
 				"AnimationMixer": "api/ko/animation/AnimationMixer",

+ 0 - 12
editor/js/libs/tern-threejs/threejs.js

@@ -1499,18 +1499,6 @@
       "!doc": "Creates a wireframe object that shows the edges of another object's geometry. To draw a  wireframe image showing only \"hard\" edges (edges between non-coplanar faces), see [page:EdgesHelper].",
       "!type": "fn(object: +THREE.Object3D, color: +THREE.Color)"
     },
-    "ImmediateRenderObject": {
-      "!url": "http://threejs.org/docs/#Reference/extras/objects/ImmediateRenderObject",
-      "prototype": {
-        "!proto": "THREE.Object3D.prototype",
-        "render": {
-          "!type": "fn(renderCallback: function)",
-          "!doc": "This function needs to be overridden to start the creation of the object and should call renderCallback when finished."
-        }
-      },
-      "!doc": "base class for immediate rendering objects.",
-      "!type": "fn()"
-    },
     "AmbientLight": {
       "!url": "http://threejs.org/docs/#Reference/lights/AmbientLight",
       "prototype": {

+ 6 - 0
src/Three.Legacy.js

@@ -1957,3 +1957,9 @@ export function Font() {
 	console.error( 'THREE.Font has been moved to /examples/jsm/loaders/FontLoader.js' );
 
 }
+
+export function ImmediateRenderObject() {
+
+	console.error( 'THREE.ImmediateRenderObject has been removed.' );
+
+}

+ 0 - 1
src/Three.js

@@ -125,7 +125,6 @@ export { Vector2 } from './math/Vector2.js';
 export { Quaternion } from './math/Quaternion.js';
 export { Color } from './math/Color.js';
 export { SphericalHarmonics3 } from './math/SphericalHarmonics3.js';
-export { ImmediateRenderObject } from './extras/objects/ImmediateRenderObject.js';
 export { SpotLightHelper } from './helpers/SpotLightHelper.js';
 export { SkeletonHelper } from './helpers/SkeletonHelper.js';
 export { PointLightHelper } from './helpers/PointLightHelper.js';

+ 0 - 31
src/extras/objects/ImmediateRenderObject.js

@@ -1,31 +0,0 @@
-import { Object3D } from '../../core/Object3D.js';
-
-class ImmediateRenderObject extends Object3D {
-
-	constructor( material ) {
-
-		super();
-
-		this.material = material;
-		this.render = function ( /* renderCallback */ ) {};
-
-		this.hasPositions = false;
-		this.hasNormals = false;
-		this.hasColors = false;
-		this.hasUvs = false;
-
-		this.positionArray = null;
-		this.normalArray = null;
-		this.colorArray = null;
-		this.uvArray = null;
-
-		this.count = 0;
-
-	}
-
-}
-
-ImmediateRenderObject.prototype.isImmediateRenderObject = true;
-
-
-export { ImmediateRenderObject };

+ 14 - 110
src/renderers/WebGLRenderer.js

@@ -660,77 +660,6 @@ function WebGLRenderer( parameters = {} ) {
 
 	// Buffer rendering
 
-	function renderObjectImmediate( object, program ) {
-
-		object.render( function ( object ) {
-
-			_this.renderBufferImmediate( object, program );
-
-		} );
-
-	}
-
-	this.renderBufferImmediate = function ( object, program ) {
-
-		bindingStates.initAttributes();
-
-		const buffers = properties.get( object );
-
-		if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();
-		if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();
-		if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();
-		if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();
-
-		const programAttributes = program.getAttributes();
-
-		if ( object.hasPositions ) {
-
-			_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );
-			_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );
-
-			bindingStates.enableAttribute( programAttributes.position.location );
-			_gl.vertexAttribPointer( programAttributes.position.location, 3, _gl.FLOAT, false, 0, 0 );
-
-		}
-
-		if ( object.hasNormals ) {
-
-			_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );
-			_gl.bufferData( _gl.ARRAY_BUFFER, object.normalArray, _gl.DYNAMIC_DRAW );
-
-			bindingStates.enableAttribute( programAttributes.normal.location );
-			_gl.vertexAttribPointer( programAttributes.normal.location, 3, _gl.FLOAT, false, 0, 0 );
-
-		}
-
-		if ( object.hasUvs ) {
-
-			_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );
-			_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );
-
-			bindingStates.enableAttribute( programAttributes.uv.location );
-			_gl.vertexAttribPointer( programAttributes.uv.location, 2, _gl.FLOAT, false, 0, 0 );
-
-		}
-
-		if ( object.hasColors ) {
-
-			_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );
-			_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );
-
-			bindingStates.enableAttribute( programAttributes.color.location );
-			_gl.vertexAttribPointer( programAttributes.color.location, 3, _gl.FLOAT, false, 0, 0 );
-
-		}
-
-		bindingStates.disableUnusedAttributes();
-
-		_gl.drawArrays( _gl.TRIANGLES, 0, object.count );
-
-		object.count = 0;
-
-	};
-
 	this.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {
 
 		if ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)
@@ -1166,17 +1095,6 @@ function WebGLRenderer( parameters = {} ) {
 
 				}
 
-			} else if ( object.isImmediateRenderObject ) {
-
-				if ( sortObjects ) {
-
-					_vector3.setFromMatrixPosition( object.matrixWorld )
-						.applyMatrix4( _projScreenMatrix );
-
-				}
-
-				currentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );
-
 			} else if ( object.isMesh || object.isLine || object.isPoints ) {
 
 				if ( object.isSkinnedMesh ) {
@@ -1331,35 +1249,21 @@ function WebGLRenderer( parameters = {} ) {
 
 		material.onBeforeRender( _this, scene, camera, geometry, object, group );
 
-		if ( object.isImmediateRenderObject ) {
+		if ( material.transparent === true && material.side === DoubleSide ) {
 
-			const program = setProgram( camera, scene, geometry, material, object );
+			material.side = BackSide;
+			material.needsUpdate = true;
+			_this.renderBufferDirect( camera, scene, geometry, material, object, group );
 
-			state.setMaterial( material );
+			material.side = FrontSide;
+			material.needsUpdate = true;
+			_this.renderBufferDirect( camera, scene, geometry, material, object, group );
 
-			bindingStates.reset();
-
-			renderObjectImmediate( object, program );
+			material.side = DoubleSide;
 
 		} else {
 
-			if ( material.transparent === true && material.side === DoubleSide ) {
-
-				material.side = BackSide;
-				material.needsUpdate = true;
-				_this.renderBufferDirect( camera, scene, geometry, material, object, group );
-
-				material.side = FrontSide;
-				material.needsUpdate = true;
-				_this.renderBufferDirect( camera, scene, geometry, material, object, group );
-
-				material.side = DoubleSide;
-
-			} else {
-
-				_this.renderBufferDirect( camera, scene, geometry, material, object, group );
-
-			}
+			_this.renderBufferDirect( camera, scene, geometry, material, object, group );
 
 		}
 
@@ -1508,11 +1412,11 @@ function WebGLRenderer( parameters = {} ) {
 		const environment = material.isMeshStandardMaterial ? scene.environment : null;
 		const encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;
 		const envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );
-		const vertexAlphas = material.vertexColors === true && !! geometry && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
-		const vertexTangents = !! material.normalMap && !! geometry && !! geometry.attributes.tangent;
-		const morphTargets = !! geometry && !! geometry.morphAttributes.position;
-		const morphNormals = !! geometry && !! geometry.morphAttributes.normal;
-		const morphTargetsCount = ( !! geometry && !! geometry.morphAttributes.position ) ? geometry.morphAttributes.position.length : 0;
+		const vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;
+		const vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;
+		const morphTargets = !! geometry.morphAttributes.position;
+		const morphNormals = !! geometry.morphAttributes.normal;
+		const morphTargetsCount = !! geometry.morphAttributes.position ? geometry.morphAttributes.position.length : 0;
 
 		const materialProperties = properties.get( material );
 		const lights = currentRenderState.state.lights;

+ 0 - 36
test/unit/src/extras/objects/ImmediateRenderObject.tests.js

@@ -1,36 +0,0 @@
-/* global QUnit */
-
-import { ImmediateRenderObject } from '../../../../../src/extras/objects/ImmediateRenderObject';
-
-export default QUnit.module( 'Extras', () => {
-
-	QUnit.module( 'Objects', () => {
-
-		QUnit.module( 'ImmediateRenderObject', () => {
-
-			// INHERITANCE
-			QUnit.todo( "Extending", ( assert ) => {
-
-				assert.ok( false, "everything's gonna be alright" );
-
-			} );
-
-			// INSTANCING
-			QUnit.todo( "Instancing", ( assert ) => {
-
-				assert.ok( false, "everything's gonna be alright" );
-
-			} );
-
-			// PUBLIC STUFF
-			QUnit.todo( "isImmediateRenderObject", ( assert ) => {
-
-				assert.ok( false, "everything's gonna be alright" );
-
-			} );
-
-		} );
-
-	} );
-
-} );

+ 0 - 4
test/unit/three.source.unit.js

@@ -81,10 +81,6 @@ import './src/extras/curves/QuadraticBezierCurve.tests';
 import './src/extras/curves/QuadraticBezierCurve3.tests';
 import './src/extras/curves/SplineCurve.tests';
 
-//src/extras/objects
-import './src/extras/objects/ImmediateRenderObject.tests';
-
-
 //src/geometries
 import './src/geometries/BoxGeometry.tests';
 import './src/geometries/CircleGeometry.tests';