Esempio n. 1
0
        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;
        }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        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;
 }