示例#1
0
    void InitComputeShader()
    {
        particleCount = starDataAssets.starDataList.Count;

        mWarpCount = Mathf.CeilToInt((float)particleCount / WARP_SIZE);

        // initialize the particles
        Particle[] particleArray = new Particle[starDataAssets.starDataList.Count];

        for (int i = 0; i < particleCount; i++)
        {
            StarDataAssets.StarData starData = starDataAssets.starDataList[i];

            float hDeg = (360f / 24f) * (starData.ra.x + starData.ra.y / 60f + starData.ra.z / 3600f);

            int hsSgn = 1;

            float decX = starData.dec.x;

            if (decX < 0)
            {
                decX *= -1;
                hsSgn = -1;
            }

            float sDeg = (decX + starData.dec.y / 60f + starData.dec.z / 3600f) * hsSgn;

            particleArray[i].hDeg = hDeg;

            particleArray[i].sDeg = sDeg;

            Color col;
            col   = starData.spectTypeColor;
            col.a = 1.0f - 0.25f * starData.vMag;

            particleArray[i].color       = col;
            particleArray[i].colorBuffer = col;

            particleArray[i].size = 1f - starData.vMag;
        }

        // create compute buffer
        particleBuffer = new ComputeBuffer(particleCount, SIZE_PARTICLE);

        particleBuffer.SetData(particleArray);

        // find the id of the kernel
        mComputeShaderKernelID = computeShader.FindKernel("CSParticle");

        // bind the compute buffer to the shader and the compute shader
        computeShader.SetBuffer(mComputeShaderKernelID, "particleBuffer", particleBuffer);
        material.SetBuffer("particleBuffer", particleBuffer);
    }
示例#2
0
    static void Open()
    {
        StarLineDataAssets starLineDataAsset = CreateInstance <StarLineDataAssets>();
        StarDataAssets     starDataAssets    = Resources.Load <StarDataAssets>("StarDataAsset");

        string path = EditorUtility.OpenFilePanel("星座データを選んでね", "", "");

        if (path.Length != 0)
        {
            string[] lines = File.ReadAllLines(path);

            int cnt = 0;

            foreach (string strLine in lines)
            {
                cnt++;

                string[] strLineArr = strLine.Split(',');

                StarDataAssets.StarData starDataFirst  = null;
                StarDataAssets.StarData starDataSecond = null;

                starDataFirst  = starDataAssets.starDataList.Find(c => c.hipNum == int.Parse(strLineArr[1]));
                starDataSecond = starDataAssets.starDataList.Find(c => c.hipNum == int.Parse(strLineArr[2]));

                Vector2 posFirst  = getStarPos(starDataFirst);
                Vector2 posSecond = getStarPos(starDataSecond);

                starLineDataAsset.starLineDataList.Add(
                    new StarLineDataAssets.StarLineData(
                        strLineArr[0],
                        posFirst.x,
                        posFirst.y,
                        posSecond.x,
                        posSecond.y
                        )
                    );
            }
        }

        AssetDatabase.CreateAsset(starLineDataAsset, "Assets/Resources/StarLineDataAsset.asset");
        AssetDatabase.Refresh();
    }
示例#3
0
    static Vector2 getStarPos(StarDataAssets.StarData starData)
    {
        if (starData == null)
        {
            return(Vector3.zero);
        }

        float hDeg = (360f / 24f) * (starData.ra.x + starData.ra.y / 60f + starData.ra.z / 3600f);

        int hsSgn = 1;

        float decX = starData.dec.x;

        if (decX < 0)
        {
            decX *= -1;
            hsSgn = -1;
        }

        float sDeg = (decX + starData.dec.y / 60f + starData.dec.z / 3600f) * hsSgn;

        return(new Vector2(hDeg, sDeg));
    }