46 lines
798 B
JavaScript
46 lines
798 B
JavaScript
|
import WebGPUBinding from './WebGPUBinding.js';
|
||
|
import { getFloatLength } from './WebGPUBufferUtils.js';
|
||
|
|
||
|
import { GPUBindingType } from './constants.js';
|
||
|
|
||
|
class WebGPUUniformBuffer extends WebGPUBinding {
|
||
|
|
||
|
constructor( name, buffer = null ) {
|
||
|
|
||
|
super( name );
|
||
|
|
||
|
this.bytesPerElement = Float32Array.BYTES_PER_ELEMENT;
|
||
|
this.type = GPUBindingType.UniformBuffer;
|
||
|
this.visibility = GPUShaderStage.VERTEX;
|
||
|
|
||
|
this.usage = GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST;
|
||
|
|
||
|
this.buffer = buffer;
|
||
|
this.bufferGPU = null; // set by the renderer
|
||
|
|
||
|
}
|
||
|
|
||
|
getByteLength() {
|
||
|
|
||
|
return getFloatLength( this.buffer.byteLength );
|
||
|
|
||
|
}
|
||
|
|
||
|
getBuffer() {
|
||
|
|
||
|
return this.buffer;
|
||
|
|
||
|
}
|
||
|
|
||
|
update() {
|
||
|
|
||
|
return true;
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
WebGPUUniformBuffer.prototype.isUniformBuffer = true;
|
||
|
|
||
|
export default WebGPUUniformBuffer;
|