Просмотр исходного кода

WebGPURenderer: Make wireframe update more flexible. (#32908)

Michael Herzog 3 недель назад
Родитель
Сommit
1251d168d7
1 измененных файлов с 16 добавлено и 1 удалено
  1. 16 1
      src/renderers/common/Geometries.js

+ 16 - 1
src/renderers/common/Geometries.js

@@ -18,6 +18,20 @@ function getWireframeVersion( geometry ) {
 
 }
 
+/**
+ * Returns the wireframe ID for the given geometry.
+ *
+ * @private
+ * @function
+ * @param {BufferGeometry} geometry - The geometry.
+ * @return {number} The ID.
+ */
+function getWireframeId( geometry ) {
+
+	return ( geometry.index !== null ) ? geometry.index.id : geometry.attributes.position.id;
+
+}
+
 /**
  * Returns a wireframe index attribute for the given geometry.
  *
@@ -65,6 +79,7 @@ function getWireframeIndex( geometry ) {
 
 	const attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );
 	attribute.version = getWireframeVersion( geometry );
+	attribute.__id = getWireframeId( geometry );
 
 	return attribute;
 
@@ -347,7 +362,7 @@ class Geometries extends DataMap {
 
 				wireframes.set( geometry, wireframeAttribute );
 
-			} else if ( wireframeAttribute.version !== getWireframeVersion( geometry ) ) {
+			} else if ( wireframeAttribute.version !== getWireframeVersion( geometry ) || wireframeAttribute.__id !== getWireframeId( geometry ) ) {
 
 				this.attributes.delete( wireframeAttribute );
 

粤ICP备19079148号