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

WebGPURenderer: add Texture state tracking to `NodeMaterialObserver` (#29421)

* texture tracking

* rework

* lint

* rework 2

---------

Co-authored-by: aardgoose <angus.sawyer@email.com>
aardgoose 1 год назад
Родитель
Сommit
4fd53600e5
1 измененных файлов с 22 добавлено и 1 удалено
  1. 22 1
      src/materials/nodes/manager/NodeMaterialObserver.js

+ 22 - 1
src/materials/nodes/manager/NodeMaterialObserver.js

@@ -133,7 +133,15 @@ class NodeMaterialObserver {
 
 			if ( typeof value === 'object' && value.clone !== undefined ) {
 
-				data[ property ] = value.clone();
+				if ( value.isTexture === true ) {
+
+					data[ property ] = { id: value.id, version: value.version };
+
+				} else {
+
+					data[ property ] = value.clone();
+
+				}
 
 			} else {
 
@@ -182,10 +190,23 @@ class NodeMaterialObserver {
 
 				}
 
+			} else if ( mtlValue.isTexture === true ) {
+
+				if ( value.id !== mtlValue.id || value.version !== mtlValue.version ) {
+
+					value.id = mtlValue.id;
+					value.version = mtlValue.version;
+
+					return false;
+
+				}
+
 			} else if ( value !== mtlValue ) {
 
 				materialData[ property ] = mtlValue;
 
+				return false;
+
 			}
 
 		}

粤ICP备19079148号