public FourierTask(WaveSpectrumBufferCPU buffer, FourierCPU fourier, int index, int numGrids) : base(true) { if (m_index == -1) { throw new InvalidOperationException("Index can be -1. Fourier for multiple buffers is not being used"); } if (!(buffer is DisplacementBufferCPU)) //TODO - fix me { throw new InvalidOperationException("Fourier task currently only designed for displacement buffers"); } m_buffer = buffer as DisplacementBufferCPU; m_fourier = fourier; m_index = index; m_numGrids = numGrids; WaveSpectrumBufferCPU.Buffer b = m_buffer.GetBuffer(m_index); m_data = b.data; m_results = b.results; m_map = b.map; m_doublePacked = b.doublePacked; }
public void Reset(int index, int numGrids) { base.Reset(); if (this.m_index == -1) { throw new InvalidOperationException("Index can be -1. Fourier for multiple buffers is not being used"); } this.m_index = index; this.m_numGrids = numGrids; WaveSpectrumBufferCPU.Buffer buffer = this.m_buffer.GetBuffer(this.m_index); this.m_data = buffer.data; this.m_results = buffer.results; this.m_map = buffer.map; this.m_doublePacked = buffer.doublePacked; }
private WaveSpectrumBufferCPU.Buffer CreateBuffer(int size) { WaveSpectrumBufferCPU.Buffer buffer = new WaveSpectrumBufferCPU.Buffer(); buffer.doublePacked = true; buffer.data = new List <Vector4[]>(); buffer.data.Add(new Vector4[size * size]); buffer.data.Add(new Vector4[size * size]); buffer.results = new Color[size * size]; buffer.map = new Texture2D(size, size, TextureFormat.RGBAFloat, false, true); buffer.map.wrapMode = TextureWrapMode.Repeat; buffer.map.filterMode = FilterMode.Bilinear; buffer.map.hideFlags = HideFlags.HideAndDontSave; buffer.map.name = "Ceto Wave Spectrum CPU Buffer"; buffer.map.SetPixels(buffer.results); buffer.map.Apply(); return(buffer); }
public void Reset(WaveSpectrumCondition condition, float time) { if (condition.Key.SpectrumType != this.SpectrumType) { throw new InvalidOperationException("Trying to reset a Unified InitSpectrum task with wrong condition type = " + condition.Key.SpectrumType); } if (condition.Key.Size != this.Size) { throw new InvalidOperationException("Trying to reset a Unified InitSpectrum task with wrong condition size = " + condition.Key.Size); } base.Reset(); int num = this.Size * this.Size; if (this.m_spectrum01 == null) { this.m_spectrum01 = new Color[num]; } if (this.m_spectrum23 == null && this.NumGrids > 2) { this.m_spectrum23 = new Color[num]; } if (this.m_wtable == null) { this.m_wtable = new Color[num]; } this.TimeValue = time; this.Data0 = this.Buffer.GetReadBuffer(0); this.Data1 = this.Buffer.GetReadBuffer(1); this.Data2 = this.Buffer.GetReadBuffer(2); WaveSpectrumBufferCPU.Buffer buffer = this.Buffer.GetBuffer(0); WaveSpectrumBufferCPU.Buffer buffer2 = this.Buffer.GetBuffer(1); WaveSpectrumBufferCPU.Buffer buffer3 = this.Buffer.GetBuffer(2); if (buffer != null) { if (this.NumGrids > 2) { buffer.doublePacked = true; } else { buffer.doublePacked = false; } } if (buffer2 != null) { if (this.NumGrids > 1) { buffer2.doublePacked = true; } else { buffer2.doublePacked = false; } } if (buffer3 != null) { if (this.NumGrids > 3) { buffer3.doublePacked = true; } else { buffer3.doublePacked = false; } } if (this.LastUpdated != condition.LastUpdated) { this.LastUpdated = condition.LastUpdated; if (this.m_spectrum01 != null && condition.SpectrumData01 != null) { Array.Copy(condition.SpectrumData01, this.m_spectrum01, num); } if (this.m_spectrum23 != null && condition.SpectrumData23 != null) { Array.Copy(condition.SpectrumData23, this.m_spectrum23, num); } if (this.m_wtable != null && condition.WTableData != null) { Array.Copy(condition.WTableData, this.m_wtable, num); } } }
private WaveSpectrumBufferCPU.Buffer CreateBuffer(int size) { WaveSpectrumBufferCPU.Buffer buffer = new WaveSpectrumBufferCPU.Buffer(); buffer.doublePacked = true; buffer.data = new List<Vector4[]>(); buffer.data.Add(new Vector4[size * size]); buffer.data.Add(new Vector4[size * size]); buffer.results = new Color[size * size]; buffer.map = new Texture2D(size, size, TextureFormat.RGBAFloat, false, true); buffer.map.wrapMode = TextureWrapMode.Repeat; buffer.map.filterMode = FilterMode.Bilinear; buffer.map.hideFlags = HideFlags.HideAndDontSave; buffer.map.name = "Ceto Wave Spectrum CPU Buffer"; buffer.map.SetPixels(buffer.results); buffer.map.Apply(); return buffer; }