Browse Source

[143] - address pr comments

Remove incorrect lru readme sig
Restore previous lru callback
Set error on tile during calculateError
Remove tiles.cached.distance
Remove bonus .max
Address orthographic nan from within the priority function
Dave Buchhofer 4 years ago
parent
commit
13c4553e92
4 changed files with 10 additions and 16 deletions
  1. 1 1
      README.md
  2. 5 10
      src/base/TilesRendererBase.js
  3. 2 2
      src/three/DebugTilesRenderer.js
  4. 2 3
      src/three/TilesRenderer.js

+ 1 - 1
README.md

@@ -622,7 +622,7 @@ The maximum percentage of [minSize](#minSize) to unload during a given frame.
 ### .unloadPriorityCallback
 ### .unloadPriorityCallback
 
 
 ```js
 ```js
-unloadPriorityCallback = null : ( itemA, itemB ) => Number
+unloadPriorityCallback = null : ( item ) => Number
 ```
 ```
 
 
 Function to derive the unload priority of the given item. Higher priority values get unloaded first.
 Function to derive the unload priority of the given item. Higher priority values get unloaded first.

+ 5 - 10
src/base/TilesRendererBase.js

@@ -24,7 +24,7 @@ const priorityCallback = ( a, b ) => {
 		// tiles which have greater error next
 		// tiles which have greater error next
 		return a.__error - b.__error;
 		return a.__error - b.__error;
 
 
-	} else {
+	} else if ( a.__distanceFromCamera !== b.__distanceFromCamera ) {
 
 
 		// and finally visible tiles which have equal error (ex: if geometricError === 0)
 		// and finally visible tiles which have equal error (ex: if geometricError === 0)
 		// should prioritize based on distance.
 		// should prioritize based on distance.
@@ -32,6 +32,8 @@ const priorityCallback = ( a, b ) => {
 
 
 	}
 	}
 
 
+	return 0;
+
 };
 };
 
 
 /**
 /**
@@ -39,14 +41,7 @@ const priorityCallback = ( a, b ) => {
  * @param {Tile} tile
  * @param {Tile} tile
  * @returns number
  * @returns number
  */
  */
-const lruPriorityCallback = ( tile ) => {
-
-	const defaultPriority = 1 / ( tile.__depthFromRenderedParent + 1 );
-	const errorPriority = 1 / ( tile.__error + 1 );
-	const priority = defaultPriority - errorPriority;
-	return priority;
-
-};
+const lruPriorityCallback = ( tile ) => 1 / ( tile.__depthFromRenderedParent + 1 );
 
 
 export class TilesRendererBase {
 export class TilesRendererBase {
 
 
@@ -227,7 +222,7 @@ export class TilesRendererBase {
 
 
 		// Expected to be set during calculateError()
 		// Expected to be set during calculateError()
 		tile.__distanceFromCamera = Infinity;
 		tile.__distanceFromCamera = Infinity;
-		tile.__error = 0.0;
+		tile.__error = Infinity;
 
 
 		tile.__inFrustum = false;
 		tile.__inFrustum = false;
 		tile.__isLeaf = false;
 		tile.__isLeaf = false;

+ 2 - 2
src/three/DebugTilesRenderer.js

@@ -115,7 +115,7 @@ export class DebugTilesRenderer extends TilesRenderer {
 
 
 			return {
 			return {
 
 
-				distanceToCamera: targetTile.cached.distance,
+				distanceToCamera: targetTile.__distanceFromCamera,
 				geometricError: targetTile.geometricError,
 				geometricError: targetTile.geometricError,
 				screenSpaceError: targetTile.__error,
 				screenSpaceError: targetTile.__error,
 				depth: targetTile.__depth,
 				depth: targetTile.__depth,
@@ -274,7 +274,7 @@ export class DebugTilesRenderer extends TilesRenderer {
 
 
 							// We don't update the distance if the geometric error is 0.0 so
 							// We don't update the distance if the geometric error is 0.0 so
 							// it will always be black.
 							// it will always be black.
-							const val = Math.min( tile.cached.distance / maxDistance, 1 );
+							const val = Math.min( tile.__distanceFromCamera / maxDistance, 1 );
 							c.material.color.setRGB( val, val, val );
 							c.material.color.setRGB( val, val, val );
 							break;
 							break;
 
 

+ 2 - 3
src/three/TilesRenderer.js

@@ -802,14 +802,13 @@ export class TilesRenderer extends TilesRendererBase {
 
 
 					const pixelSize = info.pixelSize;
 					const pixelSize = info.pixelSize;
 					error = tile.geometricError / ( pixelSize * invScale );
 					error = tile.geometricError / ( pixelSize * invScale );
-					// TODO: distance not updated while in orthographic views
 
 
 				} else {
 				} else {
 
 
 					const distance = boundingBox.distanceToPoint( tempVector );
 					const distance = boundingBox.distanceToPoint( tempVector );
 					const scaledDistance = distance * invScale;
 					const scaledDistance = distance * invScale;
 					const sseDenominator = info.sseDenominator;
 					const sseDenominator = info.sseDenominator;
-					error = Math.max( 0.01, tile.geometricError ) / ( scaledDistance * sseDenominator );
+					error = tile.geometricError / ( scaledDistance * sseDenominator );
 
 
 					minDistance = Math.min( minDistance, scaledDistance );
 					minDistance = Math.min( minDistance, scaledDistance );
 
 
@@ -819,8 +818,8 @@ export class TilesRenderer extends TilesRendererBase {
 
 
 			}
 			}
 
 
-			tile.cached.distance = minDistance;
 			tile.__distanceFromCamera = minDistance;
 			tile.__distanceFromCamera = minDistance;
+			tile.__error = maxError;
 
 
 			return maxError;
 			return maxError;