first commit
This commit is contained in:
59
framework/Mesh.js
Normal file
59
framework/Mesh.js
Normal file
@@ -0,0 +1,59 @@
|
||||
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 );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user