first commit
This commit is contained in:
50
passes/RowFFTPass.js
Normal file
50
passes/RowFFTPass.js
Normal file
@@ -0,0 +1,50 @@
|
||||
import { RenderPass } from "/framework/RenderPass.js";
|
||||
|
||||
import Shader from "/framework/WebGpu.js";
|
||||
|
||||
|
||||
export class RowFFTPass extends RenderPass {
|
||||
|
||||
async create( ) {
|
||||
|
||||
this.shader = new Shader( this.device );
|
||||
|
||||
await this.shader.setup( "shaders/fft_row.wgsl" );
|
||||
|
||||
const oceanBlock = this.pipeline.getBlockByName( "ocean" );
|
||||
|
||||
const spectrumPass = oceanBlock.getPass( "Spectrum" );
|
||||
|
||||
const spectrumReal = spectrumPass.shader.getBuffer( "spectrumReal" );
|
||||
|
||||
const spectrumImag = spectrumPass.shader.getBuffer( "spectrumImag" );
|
||||
|
||||
await this.shader.setBuffer( "inputReal", spectrumReal );
|
||||
|
||||
await this.shader.setBuffer( "inputImag", spectrumImag );
|
||||
|
||||
this.shader.setVariable( "outputReal", this.pipeline.memory.rowReal );
|
||||
|
||||
this.shader.setVariable( "outputImag", this.pipeline.memory.rowImag );
|
||||
|
||||
this.shader.setVariable( "params", this.pipeline.memory.computeParams );
|
||||
|
||||
}
|
||||
|
||||
|
||||
bindBuffers( ) {
|
||||
|
||||
this.shader.setVariable( "params", this.pipeline.memory.computeParams );
|
||||
|
||||
}
|
||||
|
||||
|
||||
async execute( ) {
|
||||
|
||||
const groups = this.pipeline.gridSize;
|
||||
|
||||
await this.shader.execute( groups, 1, 1 );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user