├── Packages └── manifest.json ├── ProjectSettings ├── ProjectVersion.txt ├── ClusterInputManager.asset ├── EditorBuildSettings.asset ├── NetworkManager.asset ├── TimeManager.asset ├── AudioManager.asset ├── EditorSettings.asset ├── TagManager.asset ├── DynamicsManager.asset ├── UnityConnectSettings.asset ├── Physics2DSettings.asset ├── NavMeshAreas.asset ├── GraphicsSettings.asset ├── QualitySettings.asset ├── InputManager.asset └── ProjectSettings.asset ├── UnityPackageManager └── manifest.json ├── doc └── starmap_cover.png ├── Assets ├── Materials │ ├── star.png │ ├── StarGS.mat.meta │ ├── Star.prefab.meta │ ├── StarParticle.mat.meta │ ├── StarParticle.mat │ ├── StarGS.mat │ ├── Star.prefab │ └── star.png.meta ├── Scripts │ ├── Editor.meta │ ├── Test.meta │ ├── StarData.cs.meta │ ├── Editor │ │ ├── StarDataEditor.cs.meta │ │ └── StarDataEditor.cs │ ├── StarmapGSRenderer.cs.meta │ ├── StarmapMeshRenderer.cs.meta │ ├── Starmap.cs.meta │ ├── Test │ │ ├── ColorFromTempTest.cs.meta │ │ ├── GeometryshaderTest.cs.meta │ │ ├── ColorFromTempTest.cs │ │ └── GeometryshaderTest.cs │ ├── StarData.cs │ ├── StarmapGSRenderer.cs │ ├── Starmap.cs │ └── StarmapMeshRenderer.cs ├── Scenes │ ├── s1.unity.meta │ └── s1.unity ├── Shaders │ ├── GSStarScreenAware.shader.meta │ ├── GSStar.shader.meta │ ├── GSStar.shader │ └── GSStarScreenAware.shader ├── Scenes.meta ├── Scripts.meta ├── Shaders.meta └── Materials.meta ├── .gitignore ├── LICENSE └── README.md /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | } 4 | } 5 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2017.4.7f1 2 | -------------------------------------------------------------------------------- /UnityPackageManager/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | } 4 | } 5 | -------------------------------------------------------------------------------- /doc/starmap_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nothke/StarMap/HEAD/doc/starmap_cover.png -------------------------------------------------------------------------------- /Assets/Materials/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nothke/StarMap/HEAD/Assets/Materials/star.png -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d783f08afd916eb448b55d0466209a72 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/s1.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a069909f0f34904bbe4bc1ae946fae7 3 | timeCreated: 1502806726 4 | licenseType: Free 5 | DefaultImporter: 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Shaders/GSStarScreenAware.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5abfba2c92cbfc94c995a926698f454c 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 594d6e098748a0746b64a83c23e7464e 3 | folderAsset: yes 4 | timeCreated: 1502815996 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5de6a720caa3aab45be1a35c4c8760cb 3 | folderAsset: yes 4 | timeCreated: 1502815957 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6edef95f57fa9114da039b7a984fcdb8 3 | folderAsset: yes 4 | timeCreated: 1502810567 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f260d263d0e93304999c2eb3edb37bbd 3 | folderAsset: yes 4 | timeCreated: 1502816005 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scripts/Test.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 15f99c5765900b74499a23c7cbe8a2a5 3 | folderAsset: yes 4 | timeCreated: 1502815979 5 | licenseType: Free 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Shaders/GSStar.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5616b4e548f8d0a4895666f30f61ba23 3 | timeCreated: 1502810648 4 | licenseType: Free 5 | ShaderImporter: 6 | defaultTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /Assets/Materials/StarGS.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7f34dad3e25a6d946b47723a6c2862ce 3 | timeCreated: 1502806763 4 | licenseType: Free 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/Star.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 600d2a964f5f2f341a6d1c5225e925be 3 | timeCreated: 1502802063 4 | licenseType: Free 5 | NativeFormatImporter: 6 | mainObjectFileID: 100100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Materials/StarParticle.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1be02fb9de4d0fe428fc1e2926c76490 3 | timeCreated: 1502802422 4 | licenseType: Free 5 | NativeFormatImporter: 6 | mainObjectFileID: 2100000 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Scripts/StarData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1efa49decc9c8fc4288a47f7799c701f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Editor/StarDataEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4de3d841bad04d8478cdb6ddb72a3f99 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/StarmapGSRenderer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e66d362ac302e6c409c1ccb4bf7785f7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/StarmapMeshRenderer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00398872f215a9c419c3d9c6bca16b79 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Starmap.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 90fd38a3d2db436488b4d3430bdf3c08 3 | timeCreated: 1502801051 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Scripts/Test/ColorFromTempTest.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c77d8fb6f479a64186bc3248f029ca3 3 | timeCreated: 1502824700 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Scripts/Test/GeometryshaderTest.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 809e26e341788ac4abce194f8df4974a 3 | timeCreated: 1502808819 4 | licenseType: Free 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /Assets/Scripts/Test/ColorFromTempTest.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | using StarMap; 6 | 7 | public class ColorFromTempTest : MonoBehaviour 8 | { 9 | [Range(0, 15000)] 10 | public float temperature = 1000; 11 | 12 | Camera _camera; 13 | new Camera camera { get { if (!_camera) _camera = GetComponent(); return _camera; } } 14 | 15 | void Update() 16 | { 17 | camera.backgroundColor = Starmap.GetColorFromTemperature(temperature); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_DefaultBehaviorMode: 0 10 | m_SpritePackerMode: 0 11 | m_SpritePackerPaddingPower: 1 12 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd 13 | m_ProjectGenerationRootNamespace: 14 | m_UserGeneratedProjectSuffix: 15 | m_CollabEditorSettings: 16 | inProgressEnabled: 1 17 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /[Ll]ibrary/ 2 | /[Tt]emp/ 3 | /[Oo]bj/ 4 | /[Bb]uild/ 5 | /[Bb]uilds/ 6 | /Assets/AssetStoreTools* 7 | 8 | # Visual Studio 2015 cache directory 9 | /.vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | 26 | # Unity3D generated meta files 27 | *.pidb.meta 28 | 29 | # Unity3D Generated File On Crash Reports 30 | sysinfo.txt 31 | 32 | # Builds 33 | *.apk 34 | *.unitypackage 35 | 36 | # Custom 37 | hygdata_v3.csv 38 | /Assets/StarData/ 39 | /Assets/StarData.meta -------------------------------------------------------------------------------- /Assets/Scripts/StarData.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | namespace StarMap 6 | { 7 | [System.Serializable] 8 | public struct Star 9 | { 10 | public string name; 11 | public Vector3 position; 12 | public float magnitude; 13 | public float colorIndex; 14 | } 15 | 16 | [CreateAssetMenu(menuName = "StarData")] 17 | public class StarData : ScriptableObject 18 | { 19 | [SerializeField] 20 | public Star[] stars; 21 | 22 | public void LoadFromDatabase(float magnitudeLimit) 23 | { 24 | stars = Starmap.LoadFromDatabase(magnitudeLimit); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_EnablePCM: 1 18 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 19 | m_AutoSimulation: 1 20 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | m_TestInitMode: 0 11 | CrashReportingSettings: 12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 13 | m_Enabled: 0 14 | m_CaptureEditorExceptions: 1 15 | UnityPurchasingSettings: 16 | m_Enabled: 0 17 | m_TestMode: 0 18 | UnityAnalyticsSettings: 19 | m_Enabled: 0 20 | m_InitializeOnStartup: 1 21 | m_TestMode: 0 22 | m_TestEventUrl: 23 | m_TestConfigUrl: 24 | UnityAdsSettings: 25 | m_Enabled: 0 26 | m_InitializeOnStartup: 1 27 | m_TestMode: 0 28 | m_EnabledPlatforms: 4294967295 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /Assets/Scripts/Editor/StarDataEditor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEditor; 5 | 6 | namespace StarMap 7 | { 8 | [CustomEditor(typeof(StarData))] 9 | public class StarDataEditor : Editor 10 | { 11 | public float magnitudeLimit = 7; 12 | 13 | public override void OnInspectorGUI() 14 | { 15 | StarData data = target as StarData; 16 | 17 | magnitudeLimit = EditorGUILayout.FloatField("Magnitude Limit", magnitudeLimit); 18 | 19 | if (GUILayout.Button("Generate Data")) 20 | { 21 | data.LoadFromDatabase(magnitudeLimit); 22 | } 23 | 24 | if (data.stars == null) 25 | { 26 | GUILayout.Label("No stars"); 27 | } 28 | else 29 | { 30 | string count = data.stars.Length.ToString(); 31 | EditorGUILayout.LabelField("Stars loaded: " + count); 32 | 33 | EditorUtility.SetDirty(data); 34 | } 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 nothke 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Assets/Scripts/Test/GeometryshaderTest.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public class GeometryshaderTest : MonoBehaviour 6 | { 7 | public Material material; 8 | 9 | private void Start() 10 | { 11 | Mesh m = new Mesh(); 12 | 13 | int vertNum = 3; 14 | 15 | Vector3[] vertices = new Vector3[vertNum]; 16 | //Color[] colors = new Color[3]; 17 | //int triLength = vertNum + (3 - vertNum % 3); 18 | //int[] triangles = new int[triLength]; 19 | 20 | vertices[0] = Vector3.zero; 21 | vertices[1] = Vector3.right; 22 | vertices[2] = Vector3.right * 2; 23 | 24 | int[] triangles = new int[] 25 | { 26 | 0, 0, 0, 27 | 1, 1, 1, 28 | 2, 2, 2 29 | }; 30 | 31 | /*for (int i = 0; i < vertNum; i++) 32 | { 33 | vertices[i] = stars[i].position.normalized * 100; 34 | //colors[i] = new Color(0, 0, 0, stars[i].magnitude); 35 | triangles[i] = i; 36 | }*/ 37 | 38 | m.vertices = vertices; 39 | //m.colors = colors; 40 | m.triangles = triangles; 41 | 42 | gameObject.AddComponent().sharedMesh = m; 43 | gameObject.AddComponent().material = material; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AlwaysShowColliders: 0 28 | m_ShowColliderSleep: 1 29 | m_ShowColliderContacts: 0 30 | m_ShowColliderAABB: 0 31 | m_ContactArrowScale: 0.2 32 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 33 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 34 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 35 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 36 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 37 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | m_SettingNames: 89 | - Humanoid 90 | -------------------------------------------------------------------------------- /Assets/Scripts/StarmapGSRenderer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | 4 | namespace StarMap 5 | { 6 | public class StarmapGSRenderer : MonoBehaviour 7 | { 8 | public StarData starData; 9 | public Material material; 10 | 11 | public float distance = 100; 12 | public bool cullBelowHorizon = false; 13 | 14 | void Start() 15 | { 16 | if (!starData) 17 | { 18 | Debug.LogError("No StarData asset assigned to the renderer", this); 19 | 20 | enabled = false; 21 | return; 22 | } 23 | 24 | var stars = new List(starData.stars); 25 | 26 | var splits = Starmap.SplitToMax(stars, Starmap.MESH_STAR_COUNT_LIMIT); 27 | 28 | foreach (var chunk in splits) 29 | { 30 | Mesh m = GenerateStarsAsGeometryMesh(chunk); 31 | 32 | GameObject go = new GameObject("Stars"); 33 | go.AddComponent().sharedMesh = m; 34 | go.AddComponent().material = material; 35 | go.transform.SetParent(gameObject.transform, false); 36 | } 37 | 38 | } 39 | 40 | Mesh GenerateStarsAsGeometryMesh(Star[] stars) 41 | { 42 | Mesh m = new Mesh(); 43 | 44 | Vector3[] vertices = new Vector3[stars.Length]; 45 | Color[] colors = new Color[stars.Length]; 46 | 47 | int[] triangles = new int[stars.Length * 3]; 48 | 49 | for (int i = 0; i < stars.Length; i++) 50 | { 51 | /*if (cullBelowHorizon && 52 | transform.TransformDirection(stars[i].position).y < 0) 53 | continue;*/ 54 | 55 | vertices[i] = stars[i].position.normalized * distance; 56 | 57 | colors[i] = Starmap.GetColorFromColorIndex(stars[i].colorIndex); 58 | colors[i].a = Starmap.GetScaleFromMagnitude(stars[i].magnitude); 59 | 60 | triangles[i * 3] = i; 61 | triangles[i * 3 + 1] = i; 62 | triangles[i * 3 + 2] = i; 63 | } 64 | 65 | m.vertices = vertices; 66 | m.colors = colors; 67 | m.triangles = triangles; 68 | 69 | return m; 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | -------------------------------------------------------------------------------- /Assets/Materials/StarParticle.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: StarParticle 10 | m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 2800000, guid: 5b81c185a20885940b732a50f7b110a1, type: 3} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0.5 64 | - _GlossyReflections: 1 65 | - _InvFade: 0.76 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 79 | -------------------------------------------------------------------------------- /Assets/Materials/StarGS.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: StarGS 10 | m_Shader: {fileID: 4800000, guid: 5abfba2c92cbfc94c995a926698f454c, type: 3} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _SpriteTex: 58 | m_Texture: {fileID: 2800000, guid: 5b81c185a20885940b732a50f7b110a1, type: 3} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | m_Floats: 62 | - _BaseSize: 0.094 63 | - _BumpScale: 1 64 | - _Cutoff: 0.5 65 | - _DetailNormalMapScale: 1 66 | - _DstBlend: 0 67 | - _GlossMapScale: 1 68 | - _Glossiness: 0.5 69 | - _GlossyReflections: 1 70 | - _MaxClipSize: 5 71 | - _Metallic: 0 72 | - _Mode: 0 73 | - _OcclusionStrength: 1 74 | - _Parallax: 0.02 75 | - _Size: 1.47 76 | - _SmoothnessTextureChannel: 0 77 | - _SpecularHighlights: 1 78 | - _SrcBlend: 1 79 | - _UVSec: 0 80 | - _ZWrite: 1 81 | m_Colors: 82 | - _Color: {r: 1, g: 1, b: 1, a: 1} 83 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 84 | -------------------------------------------------------------------------------- /Assets/Materials/Star.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1136319223531290} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1136319223531290 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 4643351961045708} 22 | - component: {fileID: 33958858938209986} 23 | - component: {fileID: 23988744692685568} 24 | m_Layer: 0 25 | m_Name: Star 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!4 &4643351961045708 32 | Transform: 33 | m_ObjectHideFlags: 1 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | m_GameObject: {fileID: 1136319223531290} 37 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 38 | m_LocalPosition: {x: 0, y: 0, z: 0} 39 | m_LocalScale: {x: 1, y: 1, z: 1} 40 | m_Children: [] 41 | m_Father: {fileID: 0} 42 | m_RootOrder: 0 43 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 44 | --- !u!23 &23988744692685568 45 | MeshRenderer: 46 | m_ObjectHideFlags: 1 47 | m_PrefabParentObject: {fileID: 0} 48 | m_PrefabInternal: {fileID: 100100000} 49 | m_GameObject: {fileID: 1136319223531290} 50 | m_Enabled: 1 51 | m_CastShadows: 1 52 | m_ReceiveShadows: 1 53 | m_MotionVectors: 1 54 | m_LightProbeUsage: 1 55 | m_ReflectionProbeUsage: 1 56 | m_Materials: 57 | - {fileID: 2100000, guid: 1be02fb9de4d0fe428fc1e2926c76490, type: 2} 58 | m_StaticBatchInfo: 59 | firstSubMesh: 0 60 | subMeshCount: 0 61 | m_StaticBatchRoot: {fileID: 0} 62 | m_ProbeAnchor: {fileID: 0} 63 | m_LightProbeVolumeOverride: {fileID: 0} 64 | m_ScaleInLightmap: 1 65 | m_PreserveUVs: 1 66 | m_IgnoreNormalsForChartDetection: 0 67 | m_ImportantGI: 0 68 | m_SelectedEditorRenderState: 3 69 | m_MinimumChartSize: 4 70 | m_AutoUVMaxDistance: 0.5 71 | m_AutoUVMaxAngle: 89 72 | m_LightmapParameters: {fileID: 0} 73 | m_SortingLayerID: 0 74 | m_SortingLayer: 0 75 | m_SortingOrder: 0 76 | --- !u!33 &33958858938209986 77 | MeshFilter: 78 | m_ObjectHideFlags: 1 79 | m_PrefabParentObject: {fileID: 0} 80 | m_PrefabInternal: {fileID: 100100000} 81 | m_GameObject: {fileID: 1136319223531290} 82 | m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} 83 | -------------------------------------------------------------------------------- /Assets/Materials/star.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b81c185a20885940b732a50f7b110a1 3 | timeCreated: 1502826957 4 | licenseType: Free 5 | TextureImporter: 6 | fileIDToRecycleName: {} 7 | serializedVersion: 4 8 | mipmaps: 9 | mipMapMode: 0 10 | enableMipMap: 1 11 | sRGBTexture: 1 12 | linearTexture: 0 13 | fadeOut: 0 14 | borderMipMap: 0 15 | mipMapsPreserveCoverage: 0 16 | alphaTestReferenceValue: 0.5 17 | mipMapFadeDistanceStart: 1 18 | mipMapFadeDistanceEnd: 3 19 | bumpmap: 20 | convertToNormalMap: 0 21 | externalNormalMap: 0 22 | heightScale: 0.25 23 | normalMapFilter: 0 24 | isReadable: 0 25 | grayScaleToAlpha: 0 26 | generateCubemap: 6 27 | cubemapConvolution: 0 28 | seamlessCubemap: 0 29 | textureFormat: 1 30 | maxTextureSize: 2048 31 | textureSettings: 32 | serializedVersion: 2 33 | filterMode: -1 34 | aniso: -1 35 | mipBias: -1 36 | wrapU: -1 37 | wrapV: -1 38 | wrapW: -1 39 | nPOTScale: 1 40 | lightmap: 0 41 | compressionQuality: 50 42 | spriteMode: 0 43 | spriteExtrude: 1 44 | spriteMeshType: 1 45 | alignment: 0 46 | spritePivot: {x: 0.5, y: 0.5} 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spritePixelsToUnits: 100 49 | alphaUsage: 1 50 | alphaIsTransparency: 0 51 | spriteTessellationDetail: -1 52 | textureType: 0 53 | textureShape: 1 54 | maxTextureSizeSet: 0 55 | compressionQualitySet: 0 56 | textureFormatSet: 0 57 | platformSettings: 58 | - buildTarget: DefaultTexturePlatform 59 | maxTextureSize: 2048 60 | textureFormat: -1 61 | textureCompression: 2 62 | compressionQuality: 50 63 | crunchedCompression: 0 64 | allowsAlphaSplitting: 0 65 | overridden: 0 66 | - buildTarget: Standalone 67 | maxTextureSize: 2048 68 | textureFormat: -1 69 | textureCompression: 2 70 | compressionQuality: 50 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | - buildTarget: Android 75 | maxTextureSize: 2048 76 | textureFormat: -1 77 | textureCompression: 2 78 | compressionQuality: 50 79 | crunchedCompression: 0 80 | allowsAlphaSplitting: 0 81 | overridden: 0 82 | - buildTarget: WebGL 83 | maxTextureSize: 2048 84 | textureFormat: -1 85 | textureCompression: 2 86 | compressionQuality: 50 87 | crunchedCompression: 0 88 | allowsAlphaSplitting: 0 89 | overridden: 0 90 | spriteSheet: 91 | serializedVersion: 2 92 | sprites: [] 93 | outline: [] 94 | physicsShape: [] 95 | spritePackingTag: 96 | userData: 97 | assetBundleName: 98 | assetBundleVariant: 99 | -------------------------------------------------------------------------------- /Assets/Shaders/GSStar.shader: -------------------------------------------------------------------------------- 1 | Shader "Geometry/Star" 2 | { 3 | Properties 4 | { 5 | _SpriteTex ("Base (RGB)", 2D) = "white" {} 6 | _Size ("Size", Range(0, 3)) = 0.5 7 | } 8 | 9 | SubShader 10 | { 11 | 12 | 13 | Pass 14 | { 15 | Blend One One 16 | ZWrite Off 17 | 18 | Tags 19 | { 20 | "RenderType"="Transparent" 21 | "IgnoreProjector"="True" 22 | } 23 | 24 | LOD 200 25 | 26 | CGPROGRAM 27 | #pragma target 5.0 28 | #pragma vertex VS_Main 29 | #pragma fragment FS_Main 30 | #pragma geometry GS_Main 31 | #include "UnityCG.cginc" 32 | 33 | // ************************************************************** 34 | // Data structures * 35 | // ************************************************************** 36 | struct GS_INPUT 37 | { 38 | float4 pos : POSITION; 39 | float3 normal : NORMAL; 40 | float2 tex0 : TEXCOORD0; 41 | float4 col : COLOR; 42 | }; 43 | 44 | struct FS_INPUT 45 | { 46 | float4 pos : POSITION; 47 | float2 tex0 : TEXCOORD0; 48 | float4 col : COLOR; 49 | }; 50 | 51 | 52 | // ************************************************************** 53 | // Vars * 54 | // ************************************************************** 55 | 56 | float _Size; 57 | float4x4 _VP; 58 | Texture2D _SpriteTex; 59 | SamplerState sampler_SpriteTex; 60 | 61 | // ************************************************************** 62 | // Shader Programs * 63 | // ************************************************************** 64 | 65 | // Vertex Shader ------------------------------------------------ 66 | GS_INPUT VS_Main(appdata_full v) 67 | { 68 | GS_INPUT output = (GS_INPUT)0; 69 | 70 | output.pos = mul(unity_ObjectToWorld, v.vertex); 71 | output.normal = v.normal; 72 | output.tex0 = float2(0, 0); 73 | output.col = v.color; 74 | 75 | return output; 76 | } 77 | 78 | 79 | 80 | // Geometry Shader ----------------------------------------------------- 81 | [maxvertexcount(4)] 82 | void GS_Main(point GS_INPUT p[1], inout TriangleStream triStream) 83 | { 84 | float3 up = UNITY_MATRIX_IT_MV[1].xyz; 85 | float3 right = -UNITY_MATRIX_IT_MV[0].xyz; 86 | 87 | float halfS = 0.5f * _Size * p[0].col.a; 88 | 89 | float4 v[4]; 90 | v[0] = float4(p[0].pos + halfS * right - halfS * up, 1.0f); 91 | v[1] = float4(p[0].pos + halfS * right + halfS * up, 1.0f); 92 | v[2] = float4(p[0].pos - halfS * right - halfS * up, 1.0f); 93 | v[3] = float4(p[0].pos - halfS * right + halfS * up, 1.0f); 94 | 95 | FS_INPUT pIn; 96 | 97 | pIn.col = p[0].col; 98 | 99 | pIn.pos = UnityObjectToClipPos(v[0]); 100 | pIn.tex0 = float2(1.0f, 0.0f); 101 | triStream.Append(pIn); 102 | 103 | pIn.pos = UnityObjectToClipPos(v[1]); 104 | pIn.tex0 = float2(1.0f, 1.0f); 105 | triStream.Append(pIn); 106 | 107 | pIn.pos = UnityObjectToClipPos(v[2]); 108 | pIn.tex0 = float2(0.0f, 0.0f); 109 | triStream.Append(pIn); 110 | 111 | pIn.pos = UnityObjectToClipPos(v[3]); 112 | pIn.tex0 = float2(0.0f, 1.0f); 113 | triStream.Append(pIn); 114 | } 115 | 116 | 117 | 118 | // Fragment Shader ----------------------------------------------- 119 | float4 FS_Main(FS_INPUT input) : COLOR 120 | { 121 | return _SpriteTex.Sample(sampler_SpriteTex, input.tex0) * input.col * 2; 122 | } 123 | 124 | ENDCG 125 | } 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /Assets/Shaders/GSStarScreenAware.shader: -------------------------------------------------------------------------------- 1 | Shader "Geometry/Star - Screen Aware" 2 | { 3 | Properties 4 | { 5 | _SpriteTex("Base (RGB)", 2D) = "white" {} 6 | _BaseSize("Base Size", Range(0, 3)) = 0.0 7 | _Size("Size", Range(0, 3)) = 0.5 8 | _MaxClipSize("Maximum Screen Size", Float) = 3 9 | } 10 | 11 | SubShader 12 | { 13 | 14 | 15 | Pass 16 | { 17 | Blend One One 18 | ZWrite Off 19 | 20 | Tags 21 | { 22 | "RenderType" = "Transparent" 23 | "IgnoreProjector" = "True" 24 | } 25 | 26 | LOD 200 27 | 28 | CGPROGRAM 29 | #pragma target 5.0 30 | #pragma vertex VS_Main 31 | #pragma fragment FS_Main 32 | #pragma geometry GS_Main 33 | #include "UnityCG.cginc" 34 | 35 | // ************************************************************** 36 | // Data structures * 37 | // ************************************************************** 38 | struct GS_INPUT 39 | { 40 | float4 pos : POSITION; 41 | float3 normal : NORMAL; 42 | float2 tex0 : TEXCOORD0; 43 | float4 col : COLOR; 44 | }; 45 | 46 | struct FS_INPUT 47 | { 48 | float4 pos : POSITION; 49 | float2 tex0 : TEXCOORD0; 50 | float4 col : COLOR; 51 | }; 52 | 53 | 54 | // ************************************************************** 55 | // Vars * 56 | // ************************************************************** 57 | 58 | float _MaxClipSize; 59 | float _Size; 60 | float _BaseSize; 61 | 62 | //float4x4 _VP; 63 | Texture2D _SpriteTex; 64 | SamplerState sampler_SpriteTex; 65 | 66 | // ************************************************************** 67 | // Shader Programs * 68 | // ************************************************************** 69 | 70 | // Vertex Shader ------------------------------------------------ 71 | GS_INPUT VS_Main(appdata_full v) 72 | { 73 | GS_INPUT output = (GS_INPUT)0; 74 | 75 | output.pos = mul(unity_ObjectToWorld, v.vertex); 76 | output.normal = v.normal; 77 | output.tex0 = float2(0, 0); 78 | output.col = v.color; 79 | 80 | return output; 81 | } 82 | 83 | 84 | 85 | // Geometry Shader ----------------------------------------------------- 86 | [maxvertexcount(4)] 87 | void GS_Main(point GS_INPUT p[1], inout TriangleStream triStream) 88 | { 89 | float3 up = UNITY_MATRIX_IT_MV[1].xyz; 90 | float3 right = -UNITY_MATRIX_IT_MV[0].xyz; 91 | 92 | //float4 clipPos = UnityObjectToClipPos(p[0].pos); 93 | 94 | float halfS = 0.5f * (_BaseSize + _Size * p[0].col.a); 95 | 96 | // calculate distance in clipspace 97 | float3 clipA = UnityObjectToClipPos(p[0].pos - right); 98 | float3 clipB = UnityObjectToClipPos(p[0].pos + right); 99 | 100 | float clipWidth = abs(clipB - clipA); 101 | //float screenWidth = abs(clipB - clipA); 102 | //screenWidth = clamp(1, 1000000, screenWidth); 103 | //float w = screenWidth; 104 | //if (w < 5) halfS = 5; 105 | //halfS *= w; 106 | 107 | //halfS *= screenWidth * 2; 108 | 109 | halfS *= clamp(1, _MaxClipSize, clipWidth); 110 | 111 | float4 v[4]; 112 | v[0] = float4(p[0].pos + halfS * right - halfS * up, 1.0f); 113 | v[1] = float4(p[0].pos + halfS * right + halfS * up, 1.0f); 114 | v[2] = float4(p[0].pos + -halfS * right - halfS * up, 1.0f); 115 | v[3] = float4(p[0].pos + -halfS * right + halfS * up, 1.0f); 116 | 117 | FS_INPUT pIn; 118 | 119 | float4 cp = UnityObjectToClipPos(p[0].pos); 120 | 121 | pIn.col = p[0].col; 122 | float dx = 1 / _ScreenParams.x * 1000 * halfS; 123 | float dy = 1 / _ScreenParams.y * 1000 * halfS; 124 | 125 | pIn.pos = cp + float4(dx,-dy,0,0); 126 | pIn.tex0 = float2(1.0f, 0.0f); 127 | triStream.Append(pIn); 128 | 129 | pIn.pos = cp + float4(dx, dy, 0, 0); 130 | pIn.tex0 = float2(1.0f, 1.0f); 131 | triStream.Append(pIn); 132 | 133 | pIn.pos = cp + float4(-dx, -dy, 0, 0); 134 | pIn.tex0 = float2(0.0f, 0.0f); 135 | triStream.Append(pIn); 136 | 137 | pIn.pos = cp + float4(-dx, dy, 0, 0); 138 | pIn.tex0 = float2(0.0f, 1.0f); 139 | triStream.Append(pIn); 140 | } 141 | 142 | 143 | 144 | // Fragment Shader ----------------------------------------------- 145 | float4 FS_Main(FS_INPUT input) : COLOR 146 | { 147 | return _SpriteTex.Sample(sampler_SpriteTex, input.tex0) * input.col * 2; 148 | } 149 | 150 | ENDCG 151 | } 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # StarMap 2 | Rendering of stars in the night sky using the HYG database http://astronexus.com/node/34 3 | 4 |

5 | 6 |

7 | 8 | It uses a geometry shader (or optionally a baked billboard mesh) to render thousands of stars as billboard sprites at little cost. You can use it as a background in your space or sailing game or.. anything else. 9 | 10 | ## Features 11 | * Automatically creates renderers on loading the scene, so the star data can be very small. 12 | * Star's size is based on magnitude and can be limited according to the camera's field of view. When zooming in you will not see a white blob across your entire screen, nor will the stars completely disappear if the fov is too high. This only works if using geometry shader rendering. 13 | * Zooming in also does not result in seeing awful compression artifacts or pixels, as would if you were using a skybox. 14 | * Realistic star colors depending on the star's temperature. 15 | * Since geometry shaders are not supported on all platforms, a static billboard mesh renderer is provided too. 16 | * Mesh rendering method has an option for cubic splitting, which divides the star field into 6 separate meshes. This improves performance since only those sides that are visible are rendered (frustum culling). 17 | * Option to cull all stars below the horizon, for example if you are making a night game on ground, without dynamic time of day. 18 | * Example scene provided 19 | 20 | ## Requirements 21 | You need to download hygdata_v3.csv from https://github.com/astronexus/HYG-Database, and put it in the Project folder. 22 | 23 | ## How to use 24 | ### 1: Building StarData asset 25 | First you need to build a StarData asset. This asset will hold the data about the stars picked from the HYG database, depending on the star magnitude limit (basically, the number of stars), without the need to read the HYG database text every time. Additionally, when the game is built, this data will be packed within your game, and loaded much faster than the entire database. 26 | 1. To create the StarData asset, right click anywhere in any folder inside your project and select `Create > StarData`. 27 | 2. When you select this asset, click the 'Generate Data' button, it will pick all stars from the HYG database lower than the magnitude limit chosen. The magnitude, is the brightness of the stars and the higher the number, the more stars will be included. 28 | 3. When the generation is complete, you will be shown how many stars has been picked in the inspector. 29 | 30 | ### 2: Chose your rendering method 31 | To render the stars, one of the rendering components needs to be added to the scene: 32 | #### StarmapGSRenderer 33 | The StarmapGSRenderer renders the stars with a geometry shader as billboards for each vertex. The benefit of a geometry shader is that it requires less memory, and it can be dinamically resized on the GPU. Although it might not be supported on some platforms. It has not been tested on SRP either. 34 | #### StarmapMeshRenderer 35 | The StarmapMeshRenerer renders the stars as a non-dynamic mesh, with quads - permanently pointing towards the center. All parameters like magnitude and size can be setup within the component, and have tooltips (if you hover over parameters), which explain what each parameter does. It is recommended to use a Particle additive shader material, although, you can use any custom shader that supports vertex color. 36 | 37 | ### 3: Now add your renderer to the scene 38 | 1. Add your chosen renderer to a GameObject centered at 0,0,0. 39 | 2. Add the StarData you made in step 1. 40 | 3. Assign the material 41 | * For StarmapGSRenderer, you need to use the material with one of the Geometry/Star shaders. It is recommended to use the 'Star - Screen Aware' shader as it will dynamically resize with the field of view. 42 | * For StarmapMeshRenderer, you should use the particle additive shader, or a custom transparent additive shader that has a vertex color support 43 | 4. The distance parameter is how far from the center the stars will be rendered at. Note that they will not be rendered if they are beyond the cameras far plane. 44 | 5. Edit parameters 45 | * For the StarmapGSRenderer, most parameters are in the material inspector. 46 | * For StarmapMeshRenderer, parameters are in the inspector. 47 | 6. When you start the game, the stars should now be generated! 48 | 49 | ## Notes 50 | The project is currently hardcoded to only accept hygdata_v3.csv, but see the Starmap class to plug your own custom data. 51 | To make the stars always be visible 'in infinity' a good solution is to make a script that will make the transform of the starmap follow the camera all the time. 52 | -------------------------------------------------------------------------------- /Assets/Scripts/Starmap.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | using System.IO; 6 | 7 | namespace StarMap 8 | { 9 | public static class Starmap 10 | { 11 | const string DATABASE_FILENAME = "hygdata_v3.csv"; 12 | public const int MESH_STAR_COUNT_LIMIT = 65534 / 4; 13 | 14 | public static Star[] LoadFromDatabase(float magnitudeLimit) 15 | { 16 | List pickedLines = new List(); 17 | 18 | string[] lines = File.ReadAllLines(DATABASE_FILENAME); 19 | 20 | // Look for stars that are below magnitude 21 | for (int i = 2; i < lines.Length; i++) // start from 2 to skip caption line and Sun 22 | { 23 | var magStr = lines[i].Split(',')[13]; 24 | 25 | float mag = float.Parse(magStr); 26 | if (i == 50) Debug.Log(mag); 27 | 28 | if (mag < magnitudeLimit) 29 | pickedLines.Add(lines[i]); 30 | } 31 | 32 | Debug.Log("Found " + pickedLines.Count + " stars"); 33 | 34 | int starNum = pickedLines.Count; 35 | 36 | Star[] stars = new Star[starNum]; 37 | 38 | for (int i = 0; i < starNum; i++) 39 | { 40 | var split = pickedLines[i].Split(','); 41 | 42 | Star star = new Star(); 43 | star.magnitude = float.Parse(split[13]); 44 | float x = float.Parse(split[17]); 45 | float y = float.Parse(split[18]); 46 | float z = float.Parse(split[19]); 47 | 48 | star.position = new Vector3(x, z, y); 49 | 50 | float ci = 2800; 51 | float.TryParse(split[16], out ci); 52 | star.colorIndex = ci; 53 | 54 | stars[i] = star; 55 | } 56 | 57 | return stars; 58 | } 59 | 60 | public static float GetScaleFromMagnitude(float magnitude) 61 | { 62 | float size = 1 - (magnitude) * 0.2f; 63 | 64 | return Mathf.Clamp(size, 0.1f, 10); 65 | } 66 | 67 | public static Color GetColorFromColorIndex(float B_V) 68 | { 69 | return GetColorFromTemperature(GetTemperatureFromColorIndex(B_V)); 70 | } 71 | 72 | public static float GetTemperatureFromColorIndex(float B_V) 73 | { 74 | // From https://en.wikipedia.org/wiki/Color_index#cite_note-PyAstronomy-6 75 | return 4600 * (1 / ((0.92f * B_V) + 1.7f) + 1 / ((0.92f * B_V) + 0.62f)); 76 | } 77 | 78 | public static Color GetColorFromTemperature(float temp) 79 | { 80 | // from http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/ 81 | 82 | temp = temp / 100; 83 | 84 | // RED 85 | 86 | float r, g, b; 87 | 88 | if (temp <= 66) 89 | { 90 | r = 255; 91 | } 92 | else 93 | { 94 | r = temp - 60; 95 | r = 329.698727446f * (Mathf.Pow(r, -0.1332047592f)); 96 | 97 | r = Mathf.Clamp(r, 0, 255); 98 | } 99 | 100 | // GREEN 101 | 102 | if (temp <= 66) 103 | { 104 | g = temp; 105 | g = 99.4708025861f * Mathf.Log(g) - 161.1195681661f; 106 | 107 | g = Mathf.Clamp(g, 0, 255); 108 | } 109 | else 110 | { 111 | g = temp - 60; 112 | g = 288.1221695283f * Mathf.Pow(g, -0.0755148492f); 113 | 114 | g = Mathf.Clamp(g, 0, 255); 115 | } 116 | 117 | // BLUE 118 | 119 | if (temp >= 66) 120 | { 121 | b = 255; 122 | } 123 | else 124 | { 125 | if (temp <= 19) 126 | { 127 | b = 0; 128 | } 129 | else 130 | { 131 | b = temp - 10; 132 | b = 138.5177312231f * Mathf.Log(b) - 305.0447927307f; 133 | 134 | b = Mathf.Clamp(b, 0, 255); 135 | } 136 | } 137 | 138 | return new Color(r / 255, g / 255, b / 255); 139 | } 140 | 141 | public static List SplitToMax(List input, int maxCount) 142 | { 143 | var stars = new List(); 144 | 145 | for (int si = 0; si < input.Count; si += maxCount) 146 | { 147 | int sct = input.Count - si; 148 | if (sct > maxCount) sct = maxCount; 149 | stars.Add(input.GetRange(si, sct).ToArray()); 150 | } 151 | 152 | return stars; 153 | } 154 | 155 | public static List GetStarsCulledBelowHorizon(Star[] stars, Vector3 zenithDirection, float cullBelowHorizonOffset = 0) 156 | { 157 | List starsList = new List(); 158 | 159 | for (int i = 0; i < stars.Length; i++) 160 | { 161 | Vector3 pos = stars[i].position.normalized; 162 | 163 | float dot = Vector3.Dot(pos, zenithDirection); 164 | if (dot > -cullBelowHorizonOffset) 165 | starsList.Add(stars[i]); 166 | } 167 | 168 | return starsList; 169 | } 170 | } 171 | } 172 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 4 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 4 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 0 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 4 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 70 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 2 136 | antiAliasing: 2 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 4 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 0 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 4 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSM: 5 183 | PSP2: 2 184 | Samsung TV: 2 185 | Standalone: 5 186 | Tizen: 2 187 | Web: 5 188 | WebGL: 3 189 | WiiU: 5 190 | Windows Store Apps: 5 191 | XboxOne: 5 192 | iPhone: 2 193 | tvOS: 2 194 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /Assets/Scripts/StarmapMeshRenderer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | 4 | namespace StarMap 5 | { 6 | public class StarmapMeshRenderer : MonoBehaviour 7 | { 8 | public StarData starData; 9 | public Material material; 10 | 11 | [Tooltip("How far will the stars be rendered from the origin")] 12 | public float distance = 100; 13 | [Tooltip("0 are brightest stars and falling off with magnitude")] 14 | public AnimationCurve sizeByMagnitudeCurve = new AnimationCurve( 15 | new Keyframe(0, 4f), 16 | new Keyframe(7, 1f)); 17 | [Tooltip("If true, magnitude will be saved into alpha, " + 18 | "so dimmer stars will be more transparent if using a shader " + 19 | "with vertex color such as a particle shader.")] 20 | public bool magnitudeAffectsAlpha = true; 21 | [Tooltip("Stars below the horizon will not be spawned. " + 22 | "If you intend to rotate the sky, like in case you have a time of day, " + 23 | "you should disable this.")] 24 | public bool cullBelowHorizon = false; 25 | [Tooltip("Since the stars exactly on the horizon could be visible, we want to have a little bit of margin. Only relevant if cullBelowHorizon is true.")] 26 | [Range(0, 1)] 27 | public float cullBelowHorizonOffset = 0.05f; 28 | [Tooltip("Cubic splitting will divide the stars into 6 separate meshes. This improves performance since only those sides that are visible are rendered (frustum culling). " + 29 | "You will probably want to have this option always on.")] 30 | public bool useCubicSplitting = true; 31 | 32 | void Start() 33 | { 34 | if (!starData) 35 | { 36 | Debug.LogError("No StarData asset assigned to the renderer", this); 37 | 38 | enabled = false; 39 | return; 40 | } 41 | 42 | Star[] stars = starData.stars; 43 | 44 | List starsList = cullBelowHorizon ? 45 | starsList = Starmap.GetStarsCulledBelowHorizon(stars, transform.InverseTransformDirection(Vector3.up), cullBelowHorizonOffset) : 46 | starsList = new List(stars); 47 | 48 | 49 | if (useCubicSplitting) 50 | { 51 | var cubicSplitStars = CubicSplit(starsList); 52 | 53 | foreach (var cs in cubicSplitStars) 54 | { 55 | var splits = Starmap.SplitToMax(cs, Starmap.MESH_STAR_COUNT_LIMIT); 56 | 57 | foreach (var chunk in splits) 58 | { 59 | Mesh m = GenerateStarsAsStaticQuadsMesh(chunk); 60 | 61 | GameObject go = new GameObject("Stars"); 62 | go.AddComponent().sharedMesh = m; 63 | go.AddComponent().material = material; 64 | go.transform.SetParent(gameObject.transform, false); 65 | } 66 | } 67 | } 68 | else 69 | { 70 | var splits = Starmap.SplitToMax(starsList, Starmap.MESH_STAR_COUNT_LIMIT); 71 | 72 | foreach (var chunk in splits) 73 | { 74 | Mesh m = GenerateStarsAsStaticQuadsMesh(chunk); 75 | 76 | GameObject go = new GameObject("Stars"); 77 | go.AddComponent().sharedMesh = m; 78 | go.AddComponent().material = material; 79 | go.transform.SetParent(gameObject.transform, false); 80 | } 81 | } 82 | } 83 | 84 | List[] CubicSplit(List stars) 85 | { 86 | List[] cs = new List[6]; 87 | 88 | for (int i = 0; i < cs.Length; i++) 89 | cs[i] = new List(); 90 | 91 | for (int i = 0; i < stars.Count; i++) 92 | { 93 | int index = GetCubeMapIndex(stars[i].position); 94 | cs[index].Add(stars[i]); 95 | } 96 | 97 | return cs; 98 | } 99 | 100 | int GetCubeMapIndex(Vector3 pos) 101 | { 102 | float absX = Mathf.Abs(pos.x); 103 | float absY = Mathf.Abs(pos.y); 104 | float absZ = Mathf.Abs(pos.z); 105 | 106 | bool isXPositive = pos.x > 0; 107 | bool isYPositive = pos.y > 0; 108 | bool isZPositive = pos.z > 0; 109 | 110 | if (isXPositive && absX >= absY && absX >= absZ) 111 | return 0; 112 | else if (!isXPositive && absX >= absY && absX >= absZ) 113 | return 1; 114 | else if (isYPositive && absY >= absX && absY >= absZ) 115 | return 2; 116 | else if (!isYPositive && absY >= absX && absY >= absZ) 117 | return 3; 118 | else if (isZPositive && absZ >= absX && absZ >= absY) 119 | return 4; 120 | else if (!isZPositive && absZ >= absX && absZ >= absY) 121 | return 5; 122 | else 123 | return 0; 124 | } 125 | 126 | Mesh GenerateStarsAsStaticQuadsMesh(Star[] stars) 127 | { 128 | Mesh m = new Mesh(); 129 | 130 | int vertexCount = stars.Length * 4; 131 | Vector3[] vertices = new Vector3[vertexCount]; 132 | Color[] colors = new Color[vertexCount]; 133 | Vector2[] uvs = new Vector2[vertexCount]; 134 | 135 | int[] triangles = new int[stars.Length * 6]; 136 | 137 | Vector2 uv0 = new Vector2(0, 0); 138 | Vector2 uv1 = new Vector2(1, 0); 139 | Vector2 uv2 = new Vector2(0, 1); 140 | Vector2 uv3 = new Vector2(1, 1); 141 | 142 | for (int i = 0; i < stars.Length; i++) 143 | { 144 | Vector3 v = stars[i].position.normalized * distance; 145 | Vector3 dir = stars[i].position.normalized; 146 | 147 | Vector3 up = Vector3.ProjectOnPlane(Vector3.up, dir).normalized; 148 | Vector3 rt = Vector3.Cross(up, dir); 149 | 150 | float size = sizeByMagnitudeCurve.Evaluate(stars[i].magnitude); 151 | up *= 0.5f * size; 152 | rt *= 0.5f * size; 153 | 154 | int i0 = i * 4 + 0; 155 | int i1 = i * 4 + 1; 156 | int i2 = i * 4 + 2; 157 | int i3 = i * 4 + 3; 158 | 159 | vertices[i0] = v - rt - up; 160 | vertices[i1] = v + rt - up; 161 | vertices[i2] = v - rt + up; 162 | vertices[i3] = v + rt + up; 163 | 164 | uvs[i0] = uv0; 165 | uvs[i1] = uv1; 166 | uvs[i2] = uv2; 167 | uvs[i3] = uv3; 168 | 169 | Color c = Starmap.GetColorFromColorIndex(stars[i].colorIndex); 170 | if (magnitudeAffectsAlpha) 171 | c.a = Starmap.GetScaleFromMagnitude(stars[i].magnitude); 172 | colors[i0] = colors[i1] = colors[i2] = colors[i3] = c; 173 | 174 | triangles[i * 6 + 0] = i0; 175 | triangles[i * 6 + 1] = i2; 176 | triangles[i * 6 + 2] = i1; 177 | triangles[i * 6 + 3] = i1; 178 | triangles[i * 6 + 4] = i2; 179 | triangles[i * 6 + 5] = i3; 180 | } 181 | 182 | m.vertices = vertices; 183 | m.colors = colors; 184 | m.uv = uvs; 185 | m.triangles = triangles; 186 | 187 | m.RecalculateBounds(); 188 | 189 | //m.bounds = new Bounds( 190 | //new Vector3(0, 0, 0), 191 | //new Vector3(distance * 2, distance * 2, distance * 2)); 192 | 193 | return m; 194 | } 195 | } 196 | } 197 | -------------------------------------------------------------------------------- /Assets/Scenes/s1.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 8 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481694, a: 1} 42 | --- !u!157 &3 43 | LightmapSettings: 44 | m_ObjectHideFlags: 0 45 | serializedVersion: 11 46 | m_GIWorkflowMode: 0 47 | m_GISettings: 48 | serializedVersion: 2 49 | m_BounceScale: 1 50 | m_IndirectOutputScale: 1 51 | m_AlbedoBoost: 1 52 | m_TemporalCoherenceThreshold: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 0 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 9 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_TextureWidth: 1024 61 | m_TextureHeight: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 0 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_ShowResolutionOverlay: 1 92 | m_LightingDataAsset: {fileID: 0} 93 | m_UseShadowmask: 1 94 | --- !u!196 &4 95 | NavMeshSettings: 96 | serializedVersion: 2 97 | m_ObjectHideFlags: 0 98 | m_BuildSettings: 99 | serializedVersion: 2 100 | agentTypeID: 0 101 | agentRadius: 0.5 102 | agentHeight: 2 103 | agentSlope: 45 104 | agentClimb: 0.4 105 | ledgeDropHeight: 0 106 | maxJumpAcrossDistance: 0 107 | minRegionArea: 2 108 | manualCellSize: 0 109 | cellSize: 0.16666667 110 | manualTileSize: 0 111 | tileSize: 256 112 | accuratePlacement: 0 113 | debug: 114 | m_Flags: 0 115 | m_NavMeshData: {fileID: 0} 116 | --- !u!1 &1111548728 117 | GameObject: 118 | m_ObjectHideFlags: 0 119 | m_PrefabParentObject: {fileID: 0} 120 | m_PrefabInternal: {fileID: 0} 121 | serializedVersion: 5 122 | m_Component: 123 | - component: {fileID: 1111548733} 124 | - component: {fileID: 1111548732} 125 | - component: {fileID: 1111548730} 126 | - component: {fileID: 1111548729} 127 | m_Layer: 0 128 | m_Name: Main Camera 129 | m_TagString: MainCamera 130 | m_Icon: {fileID: 0} 131 | m_NavMeshLayer: 0 132 | m_StaticEditorFlags: 0 133 | m_IsActive: 1 134 | --- !u!81 &1111548729 135 | AudioListener: 136 | m_ObjectHideFlags: 0 137 | m_PrefabParentObject: {fileID: 0} 138 | m_PrefabInternal: {fileID: 0} 139 | m_GameObject: {fileID: 1111548728} 140 | m_Enabled: 1 141 | --- !u!124 &1111548730 142 | Behaviour: 143 | m_ObjectHideFlags: 0 144 | m_PrefabParentObject: {fileID: 0} 145 | m_PrefabInternal: {fileID: 0} 146 | m_GameObject: {fileID: 1111548728} 147 | m_Enabled: 1 148 | --- !u!20 &1111548732 149 | Camera: 150 | m_ObjectHideFlags: 0 151 | m_PrefabParentObject: {fileID: 0} 152 | m_PrefabInternal: {fileID: 0} 153 | m_GameObject: {fileID: 1111548728} 154 | m_Enabled: 1 155 | serializedVersion: 2 156 | m_ClearFlags: 2 157 | m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} 158 | m_NormalizedViewPortRect: 159 | serializedVersion: 2 160 | x: 0 161 | y: 0 162 | width: 1 163 | height: 1 164 | near clip plane: 0.3 165 | far clip plane: 1000 166 | field of view: 60 167 | orthographic: 0 168 | orthographic size: 5 169 | m_Depth: -1 170 | m_CullingMask: 171 | serializedVersion: 2 172 | m_Bits: 4294967295 173 | m_RenderingPath: -1 174 | m_TargetTexture: {fileID: 0} 175 | m_TargetDisplay: 0 176 | m_TargetEye: 3 177 | m_HDR: 1 178 | m_AllowMSAA: 1 179 | m_AllowDynamicResolution: 0 180 | m_ForceIntoRT: 0 181 | m_OcclusionCulling: 1 182 | m_StereoConvergence: 10 183 | m_StereoSeparation: 0.022 184 | --- !u!4 &1111548733 185 | Transform: 186 | m_ObjectHideFlags: 0 187 | m_PrefabParentObject: {fileID: 0} 188 | m_PrefabInternal: {fileID: 0} 189 | m_GameObject: {fileID: 1111548728} 190 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 191 | m_LocalPosition: {x: 0, y: 1, z: -10} 192 | m_LocalScale: {x: 1, y: 1, z: 1} 193 | m_Children: [] 194 | m_Father: {fileID: 0} 195 | m_RootOrder: 0 196 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 197 | --- !u!1 &1507327064 198 | GameObject: 199 | m_ObjectHideFlags: 0 200 | m_PrefabParentObject: {fileID: 0} 201 | m_PrefabInternal: {fileID: 0} 202 | serializedVersion: 5 203 | m_Component: 204 | - component: {fileID: 1507327066} 205 | - component: {fileID: 1507327068} 206 | - component: {fileID: 1507327065} 207 | m_Layer: 0 208 | m_Name: StarMap 209 | m_TagString: Untagged 210 | m_Icon: {fileID: 0} 211 | m_NavMeshLayer: 0 212 | m_StaticEditorFlags: 0 213 | m_IsActive: 1 214 | --- !u!114 &1507327065 215 | MonoBehaviour: 216 | m_ObjectHideFlags: 0 217 | m_PrefabParentObject: {fileID: 0} 218 | m_PrefabInternal: {fileID: 0} 219 | m_GameObject: {fileID: 1507327064} 220 | m_Enabled: 1 221 | m_EditorHideFlags: 0 222 | m_Script: {fileID: 11500000, guid: e66d362ac302e6c409c1ccb4bf7785f7, type: 3} 223 | m_Name: 224 | m_EditorClassIdentifier: 225 | starData: {fileID: 11400000, guid: 97382b912fcf831449b5f3dbbc8a7725, type: 2} 226 | material: {fileID: 2100000, guid: 7f34dad3e25a6d946b47723a6c2862ce, type: 2} 227 | distance: 100 228 | cullBelowHorizon: 0 229 | --- !u!4 &1507327066 230 | Transform: 231 | m_ObjectHideFlags: 0 232 | m_PrefabParentObject: {fileID: 0} 233 | m_PrefabInternal: {fileID: 0} 234 | m_GameObject: {fileID: 1507327064} 235 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 236 | m_LocalPosition: {x: 0, y: 0, z: 0} 237 | m_LocalScale: {x: 1, y: 1, z: 1} 238 | m_Children: [] 239 | m_Father: {fileID: 0} 240 | m_RootOrder: 2 241 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 242 | --- !u!114 &1507327068 243 | MonoBehaviour: 244 | m_ObjectHideFlags: 0 245 | m_PrefabParentObject: {fileID: 0} 246 | m_PrefabInternal: {fileID: 0} 247 | m_GameObject: {fileID: 1507327064} 248 | m_Enabled: 0 249 | m_EditorHideFlags: 0 250 | m_Script: {fileID: 11500000, guid: 00398872f215a9c419c3d9c6bca16b79, type: 3} 251 | m_Name: 252 | m_EditorClassIdentifier: 253 | starData: {fileID: 11400000, guid: 97382b912fcf831449b5f3dbbc8a7725, type: 2} 254 | material: {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} 255 | distance: 500 256 | sizeByMagnitudeCurve: 257 | serializedVersion: 2 258 | m_Curve: 259 | - serializedVersion: 2 260 | time: 0 261 | value: 4 262 | inSlope: 0 263 | outSlope: 0 264 | tangentMode: 0 265 | - serializedVersion: 2 266 | time: 7 267 | value: 1 268 | inSlope: 0 269 | outSlope: 0 270 | tangentMode: 0 271 | m_PreInfinity: 2 272 | m_PostInfinity: 2 273 | m_RotationOrder: 4 274 | magnitudeAffectsAlpha: 1 275 | cullBelowHorizon: 1 276 | cullBelowHorizonOffset: 0.05 277 | useCubicSplitting: 1 278 | --- !u!1 &1622128334 279 | GameObject: 280 | m_ObjectHideFlags: 0 281 | m_PrefabParentObject: {fileID: 0} 282 | m_PrefabInternal: {fileID: 0} 283 | serializedVersion: 5 284 | m_Component: 285 | - component: {fileID: 1622128336} 286 | - component: {fileID: 1622128335} 287 | m_Layer: 0 288 | m_Name: Directional Light 289 | m_TagString: Untagged 290 | m_Icon: {fileID: 0} 291 | m_NavMeshLayer: 0 292 | m_StaticEditorFlags: 0 293 | m_IsActive: 1 294 | --- !u!108 &1622128335 295 | Light: 296 | m_ObjectHideFlags: 0 297 | m_PrefabParentObject: {fileID: 0} 298 | m_PrefabInternal: {fileID: 0} 299 | m_GameObject: {fileID: 1622128334} 300 | m_Enabled: 1 301 | serializedVersion: 8 302 | m_Type: 1 303 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 304 | m_Intensity: 1 305 | m_Range: 10 306 | m_SpotAngle: 30 307 | m_CookieSize: 10 308 | m_Shadows: 309 | m_Type: 2 310 | m_Resolution: -1 311 | m_CustomResolution: -1 312 | m_Strength: 1 313 | m_Bias: 0.05 314 | m_NormalBias: 0.4 315 | m_NearPlane: 0.2 316 | m_Cookie: {fileID: 0} 317 | m_DrawHalo: 0 318 | m_Flare: {fileID: 0} 319 | m_RenderMode: 0 320 | m_CullingMask: 321 | serializedVersion: 2 322 | m_Bits: 4294967295 323 | m_Lightmapping: 4 324 | m_AreaSize: {x: 1, y: 1} 325 | m_BounceIntensity: 1 326 | m_ColorTemperature: 6570 327 | m_UseColorTemperature: 0 328 | m_ShadowRadius: 0 329 | m_ShadowAngle: 0 330 | --- !u!4 &1622128336 331 | Transform: 332 | m_ObjectHideFlags: 0 333 | m_PrefabParentObject: {fileID: 0} 334 | m_PrefabInternal: {fileID: 0} 335 | m_GameObject: {fileID: 1622128334} 336 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 337 | m_LocalPosition: {x: 0, y: 3, z: 0} 338 | m_LocalScale: {x: 1, y: 1, z: 1} 339 | m_Children: [] 340 | m_Father: {fileID: 0} 341 | m_RootOrder: 1 342 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 343 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | productGUID: 7653d784be9125d44b70fa979bb1055f 8 | AndroidProfiler: 0 9 | defaultScreenOrientation: 4 10 | targetDevice: 2 11 | useOnDemandResources: 0 12 | accelerometerFrequency: 60 13 | companyName: DefaultCompany 14 | productName: Starmap 15 | defaultCursor: {fileID: 0} 16 | cursorHotspot: {x: 0, y: 0} 17 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 18 | m_ShowUnitySplashScreen: 1 19 | m_ShowUnitySplashLogo: 1 20 | m_SplashScreenOverlayOpacity: 1 21 | m_SplashScreenAnimation: 1 22 | m_SplashScreenLogoStyle: 1 23 | m_SplashScreenDrawMode: 0 24 | m_SplashScreenBackgroundAnimationZoom: 1 25 | m_SplashScreenLogoAnimationZoom: 1 26 | m_SplashScreenBackgroundLandscapeAspect: 1 27 | m_SplashScreenBackgroundPortraitAspect: 1 28 | m_SplashScreenBackgroundLandscapeUvs: 29 | serializedVersion: 2 30 | x: 0 31 | y: 0 32 | width: 1 33 | height: 1 34 | m_SplashScreenBackgroundPortraitUvs: 35 | serializedVersion: 2 36 | x: 0 37 | y: 0 38 | width: 1 39 | height: 1 40 | m_SplashScreenLogos: [] 41 | m_SplashScreenBackgroundLandscape: {fileID: 0} 42 | m_SplashScreenBackgroundPortrait: {fileID: 0} 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_MobileMTRendering: 0 53 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 54 | iosShowActivityIndicatorOnLoading: -1 55 | androidShowActivityIndicatorOnLoading: -1 56 | tizenShowActivityIndicatorOnLoading: -1 57 | iosAppInBackgroundBehavior: 0 58 | displayResolutionDialog: 1 59 | iosAllowHTTPDownload: 1 60 | allowedAutorotateToPortrait: 1 61 | allowedAutorotateToPortraitUpsideDown: 1 62 | allowedAutorotateToLandscapeRight: 1 63 | allowedAutorotateToLandscapeLeft: 1 64 | useOSAutorotation: 1 65 | use32BitDisplayBuffer: 1 66 | disableDepthAndStencilBuffers: 0 67 | defaultIsFullScreen: 1 68 | defaultIsNativeResolution: 1 69 | runInBackground: 0 70 | captureSingleScreen: 0 71 | muteOtherAudioSources: 0 72 | Prepare IOS For Recording: 0 73 | Force IOS Speakers When Recording: 0 74 | submitAnalytics: 1 75 | usePlayerLog: 1 76 | bakeCollisionMeshes: 0 77 | forceSingleInstance: 0 78 | resizableWindow: 0 79 | useMacAppStoreValidation: 0 80 | macAppStoreCategory: public.app-category.games 81 | gpuSkinning: 0 82 | graphicsJobs: 0 83 | xboxPIXTextureCapture: 0 84 | xboxEnableAvatar: 0 85 | xboxEnableKinect: 0 86 | xboxEnableKinectAutoTracking: 0 87 | xboxEnableFitness: 0 88 | visibleInBackground: 1 89 | allowFullscreenSwitch: 1 90 | graphicsJobMode: 0 91 | macFullscreenMode: 2 92 | d3d9FullscreenMode: 1 93 | d3d11FullscreenMode: 1 94 | xboxSpeechDB: 0 95 | xboxEnableHeadOrientation: 0 96 | xboxEnableGuest: 0 97 | xboxEnablePIXSampling: 0 98 | n3dsDisableStereoscopicView: 0 99 | n3dsEnableSharedListOpt: 1 100 | n3dsEnableVSync: 0 101 | ignoreAlphaClear: 0 102 | xboxOneResolution: 0 103 | xboxOneMonoLoggingLevel: 0 104 | xboxOneLoggingLevel: 1 105 | xboxOneDisableEsram: 0 106 | videoMemoryForVertexBuffers: 0 107 | psp2PowerMode: 0 108 | psp2AcquireBGM: 1 109 | wiiUTVResolution: 0 110 | wiiUGamePadMSAA: 1 111 | wiiUSupportsNunchuk: 0 112 | wiiUSupportsClassicController: 0 113 | wiiUSupportsBalanceBoard: 0 114 | wiiUSupportsMotionPlus: 0 115 | wiiUSupportsProController: 0 116 | wiiUAllowScreenCapture: 1 117 | wiiUControllerCount: 0 118 | m_SupportedAspectRatios: 119 | 4:3: 1 120 | 5:4: 1 121 | 16:10: 1 122 | 16:9: 1 123 | Others: 1 124 | bundleVersion: 1.0 125 | preloadedAssets: [] 126 | metroInputSource: 0 127 | m_HolographicPauseOnTrackingLoss: 1 128 | xboxOneDisableKinectGpuReservation: 0 129 | xboxOneEnable7thCore: 0 130 | vrSettings: 131 | cardboard: 132 | depthFormat: 0 133 | enableTransitionView: 0 134 | daydream: 135 | depthFormat: 0 136 | useSustainedPerformanceMode: 0 137 | hololens: 138 | depthFormat: 1 139 | protectGraphicsMemory: 0 140 | useHDRDisplay: 0 141 | targetPixelDensity: 0 142 | resolutionScalingMode: 0 143 | applicationIdentifier: {} 144 | buildNumber: {} 145 | AndroidBundleVersionCode: 1 146 | AndroidMinSdkVersion: 16 147 | AndroidTargetSdkVersion: 0 148 | AndroidPreferredInstallLocation: 1 149 | aotOptions: 150 | stripEngineCode: 1 151 | iPhoneStrippingLevel: 0 152 | iPhoneScriptCallOptimization: 0 153 | ForceInternetPermission: 0 154 | ForceSDCardPermission: 0 155 | CreateWallpaper: 0 156 | APKExpansionFiles: 0 157 | keepLoadedShadersAlive: 0 158 | StripUnusedMeshComponents: 0 159 | VertexChannelCompressionMask: 160 | serializedVersion: 2 161 | m_Bits: 238 162 | iPhoneSdkVersion: 988 163 | iOSTargetOSVersionString: 164 | tvOSSdkVersion: 0 165 | tvOSRequireExtendedGameController: 0 166 | tvOSTargetOSVersionString: 167 | uIPrerenderedIcon: 0 168 | uIRequiresPersistentWiFi: 0 169 | uIRequiresFullScreen: 1 170 | uIStatusBarHidden: 1 171 | uIExitOnSuspend: 0 172 | uIStatusBarStyle: 0 173 | iPhoneSplashScreen: {fileID: 0} 174 | iPhoneHighResSplashScreen: {fileID: 0} 175 | iPhoneTallHighResSplashScreen: {fileID: 0} 176 | iPhone47inSplashScreen: {fileID: 0} 177 | iPhone55inPortraitSplashScreen: {fileID: 0} 178 | iPhone55inLandscapeSplashScreen: {fileID: 0} 179 | iPadPortraitSplashScreen: {fileID: 0} 180 | iPadHighResPortraitSplashScreen: {fileID: 0} 181 | iPadLandscapeSplashScreen: {fileID: 0} 182 | iPadHighResLandscapeSplashScreen: {fileID: 0} 183 | appleTVSplashScreen: {fileID: 0} 184 | tvOSSmallIconLayers: [] 185 | tvOSLargeIconLayers: [] 186 | tvOSTopShelfImageLayers: [] 187 | tvOSTopShelfImageWideLayers: [] 188 | iOSLaunchScreenType: 0 189 | iOSLaunchScreenPortrait: {fileID: 0} 190 | iOSLaunchScreenLandscape: {fileID: 0} 191 | iOSLaunchScreenBackgroundColor: 192 | serializedVersion: 2 193 | rgba: 0 194 | iOSLaunchScreenFillPct: 100 195 | iOSLaunchScreenSize: 100 196 | iOSLaunchScreenCustomXibPath: 197 | iOSLaunchScreeniPadType: 0 198 | iOSLaunchScreeniPadImage: {fileID: 0} 199 | iOSLaunchScreeniPadBackgroundColor: 200 | serializedVersion: 2 201 | rgba: 0 202 | iOSLaunchScreeniPadFillPct: 100 203 | iOSLaunchScreeniPadSize: 100 204 | iOSLaunchScreeniPadCustomXibPath: 205 | iOSDeviceRequirements: [] 206 | iOSURLSchemes: [] 207 | iOSBackgroundModes: 0 208 | iOSMetalForceHardShadows: 0 209 | metalEditorSupport: 1 210 | metalAPIValidation: 1 211 | iOSRenderExtraFrameOnPause: 0 212 | appleDeveloperTeamID: 213 | iOSManualSigningProvisioningProfileID: 214 | tvOSManualSigningProvisioningProfileID: 215 | appleEnableAutomaticSigning: 0 216 | AndroidTargetDevice: 0 217 | AndroidSplashScreenScale: 0 218 | androidSplashScreen: {fileID: 0} 219 | AndroidKeystoreName: 220 | AndroidKeyaliasName: 221 | AndroidTVCompatibility: 1 222 | AndroidIsGame: 1 223 | androidEnableBanner: 1 224 | m_AndroidBanners: 225 | - width: 320 226 | height: 180 227 | banner: {fileID: 0} 228 | androidGamepadSupportLevel: 0 229 | resolutionDialogBanner: {fileID: 0} 230 | m_BuildTargetIcons: [] 231 | m_BuildTargetBatching: [] 232 | m_BuildTargetGraphicsAPIs: [] 233 | m_BuildTargetVRSettings: [] 234 | openGLRequireES31: 0 235 | openGLRequireES31AEP: 0 236 | webPlayerTemplate: APPLICATION:Default 237 | m_TemplateCustomTags: {} 238 | wiiUTitleID: 0005000011000000 239 | wiiUGroupID: 00010000 240 | wiiUCommonSaveSize: 4096 241 | wiiUAccountSaveSize: 2048 242 | wiiUOlvAccessKey: 0 243 | wiiUTinCode: 0 244 | wiiUJoinGameId: 0 245 | wiiUJoinGameModeMask: 0000000000000000 246 | wiiUCommonBossSize: 0 247 | wiiUAccountBossSize: 0 248 | wiiUAddOnUniqueIDs: [] 249 | wiiUMainThreadStackSize: 3072 250 | wiiULoaderThreadStackSize: 1024 251 | wiiUSystemHeapSize: 128 252 | wiiUTVStartupScreen: {fileID: 0} 253 | wiiUGamePadStartupScreen: {fileID: 0} 254 | wiiUDrcBufferDisabled: 0 255 | wiiUProfilerLibPath: 256 | playModeTestRunnerEnabled: 0 257 | actionOnDotNetUnhandledException: 1 258 | enableInternalProfiler: 0 259 | logObjCUncaughtExceptions: 1 260 | enableCrashReportAPI: 0 261 | cameraUsageDescription: 262 | locationUsageDescription: 263 | microphoneUsageDescription: 264 | switchNetLibKey: 265 | switchSocketMemoryPoolSize: 6144 266 | switchSocketAllocatorPoolSize: 128 267 | switchSocketConcurrencyLimit: 14 268 | switchScreenResolutionBehavior: 2 269 | switchUseCPUProfiler: 0 270 | switchApplicationID: 0x01004b9000490000 271 | switchNSODependencies: 272 | switchTitleNames_0: 273 | switchTitleNames_1: 274 | switchTitleNames_2: 275 | switchTitleNames_3: 276 | switchTitleNames_4: 277 | switchTitleNames_5: 278 | switchTitleNames_6: 279 | switchTitleNames_7: 280 | switchTitleNames_8: 281 | switchTitleNames_9: 282 | switchTitleNames_10: 283 | switchTitleNames_11: 284 | switchPublisherNames_0: 285 | switchPublisherNames_1: 286 | switchPublisherNames_2: 287 | switchPublisherNames_3: 288 | switchPublisherNames_4: 289 | switchPublisherNames_5: 290 | switchPublisherNames_6: 291 | switchPublisherNames_7: 292 | switchPublisherNames_8: 293 | switchPublisherNames_9: 294 | switchPublisherNames_10: 295 | switchPublisherNames_11: 296 | switchIcons_0: {fileID: 0} 297 | switchIcons_1: {fileID: 0} 298 | switchIcons_2: {fileID: 0} 299 | switchIcons_3: {fileID: 0} 300 | switchIcons_4: {fileID: 0} 301 | switchIcons_5: {fileID: 0} 302 | switchIcons_6: {fileID: 0} 303 | switchIcons_7: {fileID: 0} 304 | switchIcons_8: {fileID: 0} 305 | switchIcons_9: {fileID: 0} 306 | switchIcons_10: {fileID: 0} 307 | switchIcons_11: {fileID: 0} 308 | switchSmallIcons_0: {fileID: 0} 309 | switchSmallIcons_1: {fileID: 0} 310 | switchSmallIcons_2: {fileID: 0} 311 | switchSmallIcons_3: {fileID: 0} 312 | switchSmallIcons_4: {fileID: 0} 313 | switchSmallIcons_5: {fileID: 0} 314 | switchSmallIcons_6: {fileID: 0} 315 | switchSmallIcons_7: {fileID: 0} 316 | switchSmallIcons_8: {fileID: 0} 317 | switchSmallIcons_9: {fileID: 0} 318 | switchSmallIcons_10: {fileID: 0} 319 | switchSmallIcons_11: {fileID: 0} 320 | switchManualHTML: 321 | switchAccessibleURLs: 322 | switchLegalInformation: 323 | switchMainThreadStackSize: 1048576 324 | switchPresenceGroupId: 0x01004b9000490000 325 | switchLogoHandling: 0 326 | switchReleaseVersion: 0 327 | switchDisplayVersion: 1.0.0 328 | switchStartupUserAccount: 0 329 | switchTouchScreenUsage: 0 330 | switchSupportedLanguagesMask: 0 331 | switchLogoType: 0 332 | switchApplicationErrorCodeCategory: 333 | switchUserAccountSaveDataSize: 0 334 | switchUserAccountSaveDataJournalSize: 0 335 | switchApplicationAttribute: 0 336 | switchCardSpecSize: 4 337 | switchCardSpecClock: 25 338 | switchRatingsMask: 0 339 | switchRatingsInt_0: 0 340 | switchRatingsInt_1: 0 341 | switchRatingsInt_2: 0 342 | switchRatingsInt_3: 0 343 | switchRatingsInt_4: 0 344 | switchRatingsInt_5: 0 345 | switchRatingsInt_6: 0 346 | switchRatingsInt_7: 0 347 | switchRatingsInt_8: 0 348 | switchRatingsInt_9: 0 349 | switchRatingsInt_10: 0 350 | switchRatingsInt_11: 0 351 | switchLocalCommunicationIds_0: 0x01004b9000490000 352 | switchLocalCommunicationIds_1: 353 | switchLocalCommunicationIds_2: 354 | switchLocalCommunicationIds_3: 355 | switchLocalCommunicationIds_4: 356 | switchLocalCommunicationIds_5: 357 | switchLocalCommunicationIds_6: 358 | switchLocalCommunicationIds_7: 359 | switchParentalControl: 0 360 | switchAllowsScreenshot: 1 361 | switchDataLossConfirmation: 0 362 | switchSupportedNpadStyles: 3 363 | switchSocketConfigEnabled: 0 364 | switchTcpInitialSendBufferSize: 32 365 | switchTcpInitialReceiveBufferSize: 64 366 | switchTcpAutoSendBufferSizeMax: 256 367 | switchTcpAutoReceiveBufferSizeMax: 256 368 | switchUdpSendBufferSize: 9 369 | switchUdpReceiveBufferSize: 42 370 | switchSocketBufferEfficiency: 4 371 | ps4NPAgeRating: 12 372 | ps4NPTitleSecret: 373 | ps4NPTrophyPackPath: 374 | ps4ParentalLevel: 11 375 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 376 | ps4Category: 0 377 | ps4MasterVersion: 01.00 378 | ps4AppVersion: 01.00 379 | ps4AppType: 0 380 | ps4ParamSfxPath: 381 | ps4VideoOutPixelFormat: 0 382 | ps4VideoOutInitialWidth: 1920 383 | ps4VideoOutBaseModeInitialWidth: 1920 384 | ps4VideoOutReprojectionRate: 120 385 | ps4PronunciationXMLPath: 386 | ps4PronunciationSIGPath: 387 | ps4BackgroundImagePath: 388 | ps4StartupImagePath: 389 | ps4SaveDataImagePath: 390 | ps4SdkOverride: 391 | ps4BGMPath: 392 | ps4ShareFilePath: 393 | ps4ShareOverlayImagePath: 394 | ps4PrivacyGuardImagePath: 395 | ps4NPtitleDatPath: 396 | ps4RemotePlayKeyAssignment: -1 397 | ps4RemotePlayKeyMappingDir: 398 | ps4PlayTogetherPlayerCount: 0 399 | ps4EnterButtonAssignment: 1 400 | ps4ApplicationParam1: 0 401 | ps4ApplicationParam2: 0 402 | ps4ApplicationParam3: 0 403 | ps4ApplicationParam4: 0 404 | ps4DownloadDataSize: 0 405 | ps4GarlicHeapSize: 2048 406 | ps4ProGarlicHeapSize: 2560 407 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 408 | ps4pnSessions: 1 409 | ps4pnPresence: 1 410 | ps4pnFriends: 1 411 | ps4pnGameCustomData: 1 412 | playerPrefsSupport: 0 413 | restrictedAudioUsageRights: 0 414 | ps4UseResolutionFallback: 0 415 | ps4ReprojectionSupport: 0 416 | ps4UseAudio3dBackend: 0 417 | ps4SocialScreenEnabled: 0 418 | ps4ScriptOptimizationLevel: 0 419 | ps4Audio3dVirtualSpeakerCount: 14 420 | ps4attribCpuUsage: 0 421 | ps4PatchPkgPath: 422 | ps4PatchLatestPkgPath: 423 | ps4PatchChangeinfoPath: 424 | ps4PatchDayOne: 0 425 | ps4attribUserManagement: 0 426 | ps4attribMoveSupport: 0 427 | ps4attrib3DSupport: 0 428 | ps4attribShareSupport: 0 429 | ps4attribExclusiveVR: 0 430 | ps4disableAutoHideSplash: 0 431 | ps4videoRecordingFeaturesUsed: 0 432 | ps4contentSearchFeaturesUsed: 0 433 | ps4attribEyeToEyeDistanceSettingVR: 0 434 | ps4IncludedModules: [] 435 | monoEnv: 436 | psp2Splashimage: {fileID: 0} 437 | psp2NPTrophyPackPath: 438 | psp2NPSupportGBMorGJP: 0 439 | psp2NPAgeRating: 12 440 | psp2NPTitleDatPath: 441 | psp2NPCommsID: 442 | psp2NPCommunicationsID: 443 | psp2NPCommsPassphrase: 444 | psp2NPCommsSig: 445 | psp2ParamSfxPath: 446 | psp2ManualPath: 447 | psp2LiveAreaGatePath: 448 | psp2LiveAreaBackroundPath: 449 | psp2LiveAreaPath: 450 | psp2LiveAreaTrialPath: 451 | psp2PatchChangeInfoPath: 452 | psp2PatchOriginalPackage: 453 | psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui 454 | psp2KeystoneFile: 455 | psp2MemoryExpansionMode: 0 456 | psp2DRMType: 0 457 | psp2StorageType: 0 458 | psp2MediaCapacity: 0 459 | psp2DLCConfigPath: 460 | psp2ThumbnailPath: 461 | psp2BackgroundPath: 462 | psp2SoundPath: 463 | psp2TrophyCommId: 464 | psp2TrophyPackagePath: 465 | psp2PackagedResourcesPath: 466 | psp2SaveDataQuota: 10240 467 | psp2ParentalLevel: 1 468 | psp2ShortTitle: Not Set 469 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF 470 | psp2Category: 0 471 | psp2MasterVersion: 01.00 472 | psp2AppVersion: 01.00 473 | psp2TVBootMode: 0 474 | psp2EnterButtonAssignment: 2 475 | psp2TVDisableEmu: 0 476 | psp2AllowTwitterDialog: 1 477 | psp2Upgradable: 0 478 | psp2HealthWarning: 0 479 | psp2UseLibLocation: 0 480 | psp2InfoBarOnStartup: 0 481 | psp2InfoBarColor: 0 482 | psp2ScriptOptimizationLevel: 0 483 | psmSplashimage: {fileID: 0} 484 | splashScreenBackgroundSourceLandscape: {fileID: 0} 485 | splashScreenBackgroundSourcePortrait: {fileID: 0} 486 | spritePackerPolicy: 487 | webGLMemorySize: 256 488 | webGLExceptionSupport: 1 489 | webGLNameFilesAsHashes: 0 490 | webGLDataCaching: 0 491 | webGLDebugSymbols: 0 492 | webGLEmscriptenArgs: 493 | webGLModulesDirectory: 494 | webGLTemplate: APPLICATION:Default 495 | webGLAnalyzeBuildSize: 0 496 | webGLUseEmbeddedResources: 0 497 | webGLUseWasm: 0 498 | webGLCompressionFormat: 1 499 | scriptingDefineSymbols: {} 500 | platformArchitecture: {} 501 | scriptingBackend: {} 502 | incrementalIl2cppBuild: {} 503 | additionalIl2CppArgs: 504 | scriptingRuntimeVersion: 0 505 | apiCompatibilityLevelPerPlatform: {} 506 | m_RenderingPath: 1 507 | m_MobileRenderingPath: 1 508 | metroPackageName: Starmap 509 | metroPackageVersion: 510 | metroCertificatePath: 511 | metroCertificatePassword: 512 | metroCertificateSubject: 513 | metroCertificateIssuer: 514 | metroCertificateNotAfter: 0000000000000000 515 | metroApplicationDescription: Starmap 516 | wsaImages: {} 517 | metroTileShortName: 518 | metroCommandLineArgsFile: 519 | metroTileShowName: 0 520 | metroMediumTileShowName: 0 521 | metroLargeTileShowName: 0 522 | metroWideTileShowName: 0 523 | metroDefaultTileSize: 1 524 | metroTileForegroundText: 2 525 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 526 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 527 | a: 1} 528 | metroSplashScreenUseBackgroundColor: 0 529 | platformCapabilities: {} 530 | metroFTAName: 531 | metroFTAFileTypes: [] 532 | metroProtocolName: 533 | metroCompilationOverrides: 1 534 | tizenProductDescription: 535 | tizenProductURL: 536 | tizenSigningProfileName: 537 | tizenGPSPermissions: 0 538 | tizenMicrophonePermissions: 0 539 | tizenDeploymentTarget: 540 | tizenDeploymentTargetType: -1 541 | tizenMinOSVersion: 1 542 | n3dsUseExtSaveData: 0 543 | n3dsCompressStaticMem: 1 544 | n3dsExtSaveDataNumber: 0x12345 545 | n3dsStackSize: 131072 546 | n3dsTargetPlatform: 2 547 | n3dsRegion: 7 548 | n3dsMediaSize: 0 549 | n3dsLogoStyle: 3 550 | n3dsTitle: GameName 551 | n3dsProductCode: 552 | n3dsApplicationId: 0xFF3FF 553 | stvDeviceAddress: 554 | stvProductDescription: 555 | stvProductAuthor: 556 | stvProductAuthorEmail: 557 | stvProductLink: 558 | stvProductCategory: 0 559 | XboxOneProductId: 560 | XboxOneUpdateKey: 561 | XboxOneSandboxId: 562 | XboxOneContentId: 563 | XboxOneTitleId: 564 | XboxOneSCId: 565 | XboxOneGameOsOverridePath: 566 | XboxOnePackagingOverridePath: 567 | XboxOneAppManifestOverridePath: 568 | XboxOnePackageEncryption: 0 569 | XboxOnePackageUpdateGranularity: 2 570 | XboxOneDescription: 571 | XboxOneLanguage: 572 | - enus 573 | XboxOneCapability: [] 574 | XboxOneGameRating: {} 575 | XboxOneIsContentPackage: 0 576 | XboxOneEnableGPUVariability: 0 577 | XboxOneSockets: {} 578 | XboxOneSplashScreen: {fileID: 0} 579 | XboxOneAllowedProductIds: [] 580 | XboxOnePersistentLocalStorageSize: 0 581 | xboxOneScriptCompiler: 0 582 | vrEditorSettings: 583 | daydream: 584 | daydreamIconForeground: {fileID: 0} 585 | daydreamIconBackground: {fileID: 0} 586 | cloudServicesEnabled: {} 587 | facebookSdkVersion: 7.9.4 588 | apiCompatibilityLevel: 2 589 | cloudProjectId: 590 | projectName: 591 | organizationId: 592 | cloudEnabled: 0 593 | enableNativePlatformBackendsForNewInputSystem: 0 594 | disableOldInputManagerSupport: 0 595 | --------------------------------------------------------------------------------