提交 59e8e47d 编写于 作者: S sunag

compile node material per object

上级 cfd07dd0
......@@ -24,12 +24,11 @@ class WebGPUBindings {
if ( data === undefined ) {
const pipeline = this.pipelines.get( object );
const material = object.material;
const nodeBuilder = this.nodes.get( material );
// each material defines an array of bindings (ubos, textures, samplers etc.)
const nodeBuilder = this.nodes.get( object );
const bindings = nodeBuilder.getBindings();
// setup (static) binding layout and (dynamic) binding group
......
......@@ -57,7 +57,7 @@ class WebGPURenderPipelines {
// get shader
const nodeBuilder = this.nodes.get( material );
const nodeBuilder = this.nodes.get( object );
// shader modules
......@@ -788,22 +788,15 @@ class WebGPURenderPipelines {
function onMaterialDispose( event ) {
const properties = this.properties;
const nodes = this.nodes;
const shaderModules = this.shaderModules;
const material = event.target;
const materialProperties = properties.get( material );
const nodeBuilder = nodes.get( material );
material.removeEventListener( 'dispose', materialProperties.disposeCallback );
properties.remove( material );
nodes.remove( material );
shaderModules.vertex.delete( nodeBuilder.vertexShader );
shaderModules.fragment.delete( nodeBuilder.fragmentShader );
// @TODO: still needed remove bindings and pipeline
// @TODO: still needed remove nodes, bindings and pipeline
}
......
......@@ -13,15 +13,15 @@ class WebGPUNodes {
}
get( material ) {
get( object ) {
let nodeBuilder = this.builders.get( material );
let nodeBuilder = this.builders.get( object );
if ( nodeBuilder === undefined ) {
nodeBuilder = new WebGPUNodeBuilder( material, this.renderer ).build();
nodeBuilder = new WebGPUNodeBuilder( object.material, this.renderer ).build();
this.builders.set( material, nodeBuilder );
this.builders.set( object, nodeBuilder );
}
......@@ -29,9 +29,9 @@ class WebGPUNodes {
}
remove( material ) {
remove( object ) {
this.builders.delete( material );
this.builders.delete( object );
}
......@@ -45,7 +45,7 @@ class WebGPUNodes {
const material = object.material;
const nodeBuilder = this.get( material );
const nodeBuilder = this.get( object );
const nodeFrame = this.nodeFrame;
nodeFrame.material = material;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册