Beispiel #1
0
    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];
    }
Beispiel #2
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);
     }
 }