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); }
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(); }
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)); }