void UpdateDisplacementMap(float t, OceanParameter parameter) { if (h0Buffer == null || omegaBuffer == null || HKBuffer == null || DxBuffer == null || DyBuffer == null) { return; } // H(0) -> H(t), D(x,t), D(y,t) UpdateSpectrumShader.SetBuffer(0, "H0", h0Buffer); UpdateSpectrumShader.SetBuffer(0, "Omega", omegaBuffer); UpdateSpectrumShader.SetBuffer(0, "HK", HKBuffer); UpdateSpectrumShader.SetBuffer(0, "Dx", DxBuffer); UpdateSpectrumShader.SetBuffer(0, "Dy", DyBuffer); UpdateSpectrumShader.SetInt("Dimension", parameter.displaceMap_dimension); UpdateSpectrumShader.SetFloat("curTime", t); int GroupNum = parameter.displaceMap_dimension / OceanConst.THREAD_GROUP; UpdateSpectrumShader.Dispatch(0, GroupNum, GroupNum, 1); mFFT.EvaluteFFT(HKBuffer, ref HtBuffer); mFFT.EvaluteFFT(DxBuffer, ref DxtBuffer); mFFT.EvaluteFFT(DyBuffer, ref DytBuffer); }