Files
WebGPU-FFT-Ocean-Demo/framework/Mesh.js
2025-12-31 14:22:45 +01:00

60 lines
818 B
JavaScript

export class Mesh {
constructor( ) {
this.shaders = [];
this.instanceCount = 1;
}
addShader( shader, options = { } ) {
this.shaders.push( {
shader,
options
} );
return this;
}
setInstanceCount( count ) {
this.instanceCount = count;
return this;
}
draw( passEncoder ) {
for ( const entry of this.shaders ) {
const shader = entry.shader;
const opts = entry.options || { };
const instances = opts.instances != null ? opts.instances : this.instanceCount;
// When no explicit vertex count is provided, rely on the shader's indexCount
const vertexCount = opts.vertexCount != null ? opts.vertexCount : ( shader.indexCount || 0 );
if ( vertexCount <= 0 ) {
continue;
}
shader.encodeRender( passEncoder, vertexCount, instances );
}
}
}