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

WebGPURenderer: QuadMesh extended from Mesh (#27875)

* WebGPURenderer: QuadMesh extended from Mesh

* PostProcessing: Added renderAsync()
sunag 1 год назад
Родитель
Сommit
a3bf3208df
2 измененных файлов с 19 добавлено и 27 удалено
  1. 7 23
      examples/jsm/objects/QuadMesh.js
  2. 12 4
      examples/jsm/renderers/common/PostProcessing.js

+ 7 - 23
examples/jsm/objects/QuadMesh.js

@@ -23,41 +23,25 @@ class QuadGeometry extends BufferGeometry {
 
 
 const _geometry = new QuadGeometry();
 const _geometry = new QuadGeometry();
 
 
-class QuadMesh {
+class QuadMesh extends Mesh {
 
 
 	constructor( material = null ) {
 	constructor( material = null ) {
 
 
-		this._mesh = new Mesh( _geometry, material );
+		super( _geometry, material );
 
 
-	}
-
-	dispose() {
-
-		this._mesh.geometry.dispose();
-
-	}
-
-	async renderAsync( renderer ) {
-
-		await renderer.renderAsync( this._mesh, _camera );
-
-	}
-
-	get material() {
-
-		return this._mesh.material;
+		this.camera = _camera;
 
 
 	}
 	}
 
 
-	set material( value ) {
+	renderAsync( renderer ) {
 
 
-		this._mesh.material = value;
+		return renderer.renderAsync( this, _camera );
 
 
 	}
 	}
 
 
-	get render() {
+	render( renderer ) {
 
 
-		return this.renderAsync;
+		renderer.render( this, _camera );
 
 
 	}
 	}
 
 

+ 12 - 4
examples/jsm/renderers/common/PostProcessing.js

@@ -1,7 +1,7 @@
-import { vec4, MeshBasicNodeMaterial } from '../../nodes/Nodes.js';
+import { vec4, NodeMaterial } from '../../nodes/Nodes.js';
 import QuadMesh from '../../objects/QuadMesh.js';
 import QuadMesh from '../../objects/QuadMesh.js';
 
 
-const quadMesh = new QuadMesh( new MeshBasicNodeMaterial() );
+const quadMesh = new QuadMesh( new NodeMaterial() );
 
 
 class PostProcessing {
 class PostProcessing {
 
 
@@ -12,11 +12,19 @@ class PostProcessing {
 
 
 	}
 	}
 
 
-	async render() {
+	render() {
 
 
 		quadMesh.material.fragmentNode = this.outputNode;
 		quadMesh.material.fragmentNode = this.outputNode;
 
 
-		await quadMesh.render( this.renderer );
+		quadMesh.render( this.renderer );
+
+	}
+
+	renderAsync() {
+
+		quadMesh.material.fragmentNode = this.outputNode;
+
+		return quadMesh.renderAsync( this.renderer );
 
 
 	}
 	}