예제 #1
0
 internal void Simulate()
 {
     Shader.SetGlobalFloat("_WaterHeight", this._Water.transform.position.y);
     if (base.transform.position.x != this._Position.x || base.transform.position.z != this._Position.z)
     {
         this.RenderStaticDepthTexture();
         this.MoveSimulation();
         this._Position = base.transform.position;
     }
     if (this._Buffers[0].Verify(false) || this._Buffers[1].Verify(false))
     {
         this._Buffers[0].Clear(Color.clear, false, true);
         this._Buffers[1].Clear(Color.clear, false, true);
     }
     RipplesShader.SetPrimary(this._Buffers[0], this._RipplesMaterial);
     RipplesShader.SetSecondary(this._Buffers[1], this._RipplesMaterial);
     WaterRipplesData.ShaderModes shaderMode = WaterQualitySettings.Instance.Ripples.ShaderMode;
     if (shaderMode != WaterRipplesData.ShaderModes.ComputeShader)
     {
         if (shaderMode == WaterRipplesData.ShaderModes.PixelShader)
         {
             this.SimulatePixelShader();
         }
     }
     else
     {
         this.SimulateComputeShader();
     }
 }
예제 #2
0
 private static void SetTextureShaderVariable(string name, Texture value, Material material)
 {
     WaterRipplesData.ShaderModes shaderMode = WaterQualitySettings.Instance.Ripples.ShaderMode;
     if (shaderMode != WaterRipplesData.ShaderModes.ComputeShader)
     {
         if (shaderMode == WaterRipplesData.ShaderModes.PixelShader)
         {
             material.SetTexture(name, value);
         }
     }
     else
     {
         RipplesShader.Shader.SetTexture(RipplesShader.Kernel, name, value);
     }
 }