import { RenderPass }	from "../framework/RenderPass.js";

import Shader			from "../framework/WebGpu.js";


export class SpectrumPass extends RenderPass {

	async create( ) {

		this.shader		= new Shader( this.device );

		await this.shader.setup( "shaders/ocean_spectrum_new.wgsl" );

		this.shader.setVariable( "h0Real", this.pipeline.memory.h0Real );

		this.shader.setVariable( "h0Imag", this.pipeline.memory.h0Imag );

		this.shader.setVariable( "spectrumReal", this.pipeline.memory.spectrumReal );

		this.shader.setVariable( "spectrumImag", this.pipeline.memory.spectrumImag );

		this.shader.setVariable( "params", this.pipeline.memory.computeParams );

	}


	bindBuffers( ) {

		const memory			= this.pipeline.memory;

		this.shader.setVariable( "params", memory.computeParams );

	}


	async execute( ) {

		const groups	= Math.ceil( this.pipeline.gridSize / 8 );

		await this.shader.execute( groups, groups, 1 );

	}

}
