void Start() { _texPw = new Texture2D(n, n, TextureFormat.RGBA32, false, true); _texEtaX = new Texture2D(n, n, TextureFormat.RGBA32, false, true); _texEtaY = new Texture2D(n, n, TextureFormat.RGBA32, false, true); _cPw = _texPw.GetPixels(); _cEtaX = _texEtaX.GetPixels(); _cEtaY = _texEtaY.GetPixels(); displacementMat.SetFloat("_L", L); floatDecoderMat.SetFloat("_L", L); floatDecoderMat.SetTexture("_XTex", _texEtaX); floatDecoderMat.SetTexture("_YTex", _texEtaY); floatDecoderMat.SetTexture("_ZTex", _texPw); _texUvw = new RenderTexture(n, n, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); displacementMat.mainTexture = _texUvw; _k = new K(n, L); _phillips = new Phillips(_k, wind.magnitude, wind.normalized); _h0 = new H0(_phillips); _w = new W(_k); _h = new H(_h0, _w); _eta = new Eta(n, _k, _h); _fft = new FFT(n); _pw = new float[2 * n * n]; _etaX = new float[_pw.Length]; _etaY = new float[_pw.Length]; }
void Start() { _texPw = new Texture2D(n, n, TextureFormat.RGBA32, false, true); _texEtaX = new Texture2D(n, n, TextureFormat.RGBA32, false, true); _texEtaY = new Texture2D(n, n , TextureFormat.RGBA32, false, true); _cPw = _texPw.GetPixels(); _cEtaX = _texEtaX.GetPixels(); _cEtaY = _texEtaY.GetPixels(); displacementMat.SetFloat("_L", L); floatDecoderMat.SetFloat("_L", L); floatDecoderMat.SetTexture("_XTex", _texEtaX); floatDecoderMat.SetTexture("_YTex", _texEtaY); floatDecoderMat.SetTexture("_ZTex", _texPw); _texUvw = new RenderTexture(n, n, 0, RenderTextureFormat.ARGBFloat, RenderTextureReadWrite.Linear); displacementMat.mainTexture = _texUvw; _k = new K(n, L); _phillips = new Phillips(_k, wind.magnitude, wind.normalized); _h0 = new H0(_phillips); _w = new W(_k); _h = new H(_h0, _w); _eta = new Eta(n, _k, _h); _fft = new FFT(n); _pw = new float[2 * n * n]; _etaX = new float[_pw.Length]; _etaY = new float[_pw.Length]; }
public H(H0 H0, W W) { this.H0 = H0; this.W = W; N = H0.N; this._h = new float[2 * N * N]; _Jump(0f); }
public H(H0 H0, W W) { this.H0 = H0; this.W = W; N = H0.N; this._h = new float[2 * N * N]; _Jump(0f); }
private void _Jump(float t) { _t = t; for (var y = 0; y < N; y++) { for (var x = 0; x < N; x++) { var theta = W[x, y] * t; var c = Mathf.Cos(theta); var s = Mathf.Sin(theta); var hp = H0[x, y]; var hm = H0.ConjMinusK(x, y); var i = 2 * (x + y * N); _h[i] = (hp.x + hm.x) * c + (hm.y - hp.y) * s; _h[i + 1] = (hp.y + hm.y) * c + (hp.x - hm.x) * s; } } }