瀏覽代碼

Playground: Fix `PreviewEditor` (#28223)

* Playground: Fix `PreviewEditor`

* add antialias
sunag 1 年之前
父節點
當前提交
b175d49fca
共有 1 個文件被更改,包括 11 次插入9 次删除
  1. 11 9
      playground/editors/PreviewEditor.js

+ 11 - 9
playground/editors/PreviewEditor.js

@@ -2,8 +2,9 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
 import { ViewHelper } from 'three/addons/helpers/ViewHelper.js';
 import { ViewHelper } from 'three/addons/helpers/ViewHelper.js';
 import { Element, LabelElement, SelectInput } from 'flow';
 import { Element, LabelElement, SelectInput } from 'flow';
 import { BaseNodeEditor } from '../BaseNodeEditor.js';
 import { BaseNodeEditor } from '../BaseNodeEditor.js';
-import { MeshBasicNodeMaterial, float } from 'three/nodes';
-import { WebGLRenderer, PerspectiveCamera, Scene, Mesh, DoubleSide, SphereGeometry, BoxGeometry, PlaneGeometry, TorusKnotGeometry } from 'three';
+import { MeshBasicNodeMaterial, vec4 } from 'three/nodes';
+import { PerspectiveCamera, Scene, Mesh, DoubleSide, SphereGeometry, BoxGeometry, PlaneGeometry, TorusKnotGeometry } from 'three';
+import WebGPURenderer from 'three/addons/renderers/webgpu/WebGPURenderer.js';
 import { setInputAestheticsFromType } from '../DataTypeLib.js';
 import { setInputAestheticsFromType } from '../DataTypeLib.js';
 
 
 const sceneDict = {};
 const sceneDict = {};
@@ -57,7 +58,7 @@ export class PreviewEditor extends BaseNodeEditor {
 		super( 'Preview', null, width );
 		super( 'Preview', null, width );
 
 
 		const material = new MeshBasicNodeMaterial();
 		const material = new MeshBasicNodeMaterial();
-		material.colorNode = float();
+		material.colorNode = vec4( 0, 0, 0, 1 );
 		material.side = DoubleSide;
 		material.side = DoubleSide;
 		material.transparent = true;
 		material.transparent = true;
 
 
@@ -77,7 +78,7 @@ export class PreviewEditor extends BaseNodeEditor {
 
 
 		const inputElement = setInputAestheticsFromType( new LabelElement( 'Input' ), 'Color' ).onConnect( () => {
 		const inputElement = setInputAestheticsFromType( new LabelElement( 'Input' ), 'Color' ).onConnect( () => {
 
 
-			material.colorNode = inputElement.getLinkedObject() || float();
+			material.colorNode = inputElement.getLinkedObject() || vec4( 0, 0, 0, 1 );
 			material.dispose();
 			material.dispose();
 
 
 		}, true );
 		}, true );
@@ -89,9 +90,10 @@ export class PreviewEditor extends BaseNodeEditor {
 
 
 		previewElement.dom.addEventListener( 'wheel', e => e.stopPropagation() );
 		previewElement.dom.addEventListener( 'wheel', e => e.stopPropagation() );
 
 
-		const renderer = new WebGLRenderer( {
+		const renderer = new WebGPURenderer( {
 			canvas,
 			canvas,
-			alpha: true
+			alpha: true,
+			antialias: true
 		} );
 		} );
 
 
 		renderer.autoClear = false;
 		renderer.autoClear = false;
@@ -140,7 +142,7 @@ export class PreviewEditor extends BaseNodeEditor {
 
 
 	}
 	}
 
 
-	update() {
+	async update() {
 
 
 		const { viewHelper, material, renderer, camera, sceneInput } = this;
 		const { viewHelper, material, renderer, camera, sceneInput } = this;
 
 
@@ -159,8 +161,8 @@ export class PreviewEditor extends BaseNodeEditor {
 
 
 		}
 		}
 
 
-		renderer.clear();
-		renderer.render( scene, camera );
+		await renderer.clearAsync();
+		await renderer.renderAsync( scene, camera );
 
 
 		viewHelper.render( renderer );
 		viewHelper.render( renderer );