Exemplo n.º 1
0
        void Start()
        {
            _prevOffset      = Vector3.zero;
            particleBuffer   = new ComputeBuffer(numberOfParticles, Marshal.SizeOf(typeof(ParticleData)));
            connectionBuffer = new ComputeBuffer(numberOfParticles, Marshal.SizeOf(typeof(ConnectionData)));
            var pData = new ParticleData[numberOfParticles];
            var cData = new ConnectionData[numberOfParticles];

            for (int i = 0; i < pData.Length; i++)
            {
                //pData[i].Velocity = Random.insideUnitSphere;
                //pData[i].Position = Random.insideUnitSphere;
                float   xSpeed   = Random.Range(-0.2f, 0.2f);
                float   ySpeed   = Random.Range(-0.2f, 0.2f);
                float   zSpeed   = Random.Range(-0.2f, 0.2f);
                Vector3 speedVec = Random.insideUnitSphere * speedScale;
                //pData[i].Velocity = new Vector3(xSpeed, ySpeed, zSpeed);
                pData[i].Velocity = new Vector3(speedVec.x, speedVec.y, speedVec.z);
                //pData[i].Velocity = new Vector3(0,0,0);
                //float yPos = Random.Range(0.1f, 1f);
                //float zPos = Random.Range(0.1f, 1f);
                Vector3 spherePosition = Random.insideUnitSphere * SphereSize;
                //Vector3 position = new Vector3(yPos*2, -xPos*2, 0);
                Vector3 position = new Vector3(spherePosition.x, spherePosition.y, spherePosition.z);
                pData[i].Position = position;
                // Set Up Connection Data
            }

            for (int i = 0; i < cData.Length; i++)
            {
                cData[i].Start   = new Vector3(0, 0, 0);
                cData[i].End     = new Vector3(0, 0, 0);
                cData[i].Connect = 0;
            }

            // コンピュートバッファに初期値データをセット
            particleBuffer.SetData(pData);
            connectionBuffer.SetData(cData);

            pData = null;
            cData = null;
            // パーティクルをレンダリングするマテリアルを作成
            particleRenderMat           = new Material(ParticleRenderShader);
            particleRenderMat.hideFlags = HideFlags.HideAndDontSave;

            lineRenderMat           = new Material(LineRenderShader);
            lineRenderMat.hideFlags = HideFlags.HideAndDontSave;
        }
Exemplo n.º 2
0
        // Start is called before the first frame update
        void Start()
        {
            _prevOffset    = Vector3.zero;
            particleBuffer = new ComputeBuffer(numberOfParticles, Marshal.SizeOf(typeof(ParticleData)));
            var pData = new ParticleData[numberOfParticles];

            for (int i = 0; i < pData.Length; i++)
            {
                Vector3 speedVec = Random.insideUnitSphere * speedScale;
                pData[i].Velocity = new Vector3(speedVec.x, speedVec.y, speedVec.z);
                Vector3 spherePosition = Random.insideUnitSphere * SphereSize;
                Vector3 position       = new Vector3(spherePosition.x, spherePosition.y, spherePosition.z);
                pData[i].Position = position;
            }
            particleBuffer.SetData(pData);
            pData                       = null;
            particleRenderMat           = new Material(ParticleRenderShader);
            particleRenderMat.hideFlags = HideFlags.HideAndDontSave;
        }