void Initialize() { renderData = new WaterRenderData(); renderData.unitLength = 1000.0f; butterFlyTex = WaterSysHelper.CreateRenderTexture((int)Mathf.Log(renderData.dataArray[0].width, 2), renderData.dataArray[0].width, RenderTextureFormat.ARGBFloat); waveCompute = WaterSysHelper.LoadComputeShader(WaterSysType.WaveComputeShaderName); waveKernel = waveCompute.FindKernel(WaterSysType.WaveComputeKernel); waveTexture = WaterSysHelper.LoadComputeShader(WaterSysType.WaveTextureComputerShaderName); waveTextureKernel = waveTexture.FindKernel(WaterSysType.WaveTextureKernel); waveNormalKernel = waveTexture.FindKernel(WaterSysType.WaveTextureNormalKernel); butterFlyCS = WaterSysHelper.LoadComputeShader(WaterSysType.ButterFlyComputerShaderName); butterflyKernel = butterFlyCS.FindKernel(WaterSysType.ButterFlyComuteKernel); FFTCompute = WaterSysHelper.LoadComputeShader(WaterSysType.WaveFFTComputerShaderName); FFTKernel = FFTCompute.FindKernel(WaterSysType.WaveFFTKernel); FFTHorizontalKernel = FFTCompute.FindKernel(WaterSysType.WaveFFT_HorizontalKernel); FFT2DKernel = FFTCompute.FindKernel(WaterSysType.WaveFFT2DKernel); FFT2DHorizontalKernel = FFTCompute.FindKernel(WaterSysType.WaveFFT2D_HorizontalKernel); pingpongTex = WaterSysHelper.CreateRenderTexture(512, 512); FoamUpdateShader = WaterSysHelper.LoadShader(WaterSysType.WaveFoamUpdateShaderName); foamBlitMat = new Material(FoamUpdateShader); displacement = renderData.displacementMapDataArray[0]; }
public WaterRenderData() { dataArray = new RenderTexture[LodNum]; displacementDataArray = new RenderTexture[LodNum]; normalDataArray = new RenderTexture[LodNum]; displacementMapDataArray = new RenderTexture[LodNum]; foamJacobianDataArray = new RenderTexture[LodNum]; waveFoamJxy = new RenderTexture[LodNum]; waveFoam = new RenderTexture[LodNum]; waveFoamUpdate = new RenderTexture[LodNum]; for (int i = 0; i < LodNum; ++i) { dataArray[i] = WaterSysHelper.CreateRenderTexture(TextureSize, TextureSize); displacementDataArray[i] = WaterSysHelper.CreateRenderTexture(TextureSize, TextureSize); normalDataArray[i] = WaterSysHelper.CreateRenderTexture(TextureSize, TextureSize, filterMode: FilterMode.Bilinear); displacementMapDataArray[i] = WaterSysHelper.CreateRenderTexture(TextureSize, TextureSize); foamJacobianDataArray[i] = WaterSysHelper.CreateRenderTexture(TextureSize, TextureSize); waveFoamJxy[i] = WaterSysHelper.CreateRenderTexture(TextureSize, TextureSize); waveFoam[i] = WaterSysHelper.CreateRenderTexture(TextureSize, TextureSize, filterMode: FilterMode.Bilinear); waveFoamUpdate[i] = WaterSysHelper.CreateRenderTexture(TextureSize, TextureSize, filterMode: FilterMode.Trilinear); } }