private void Start() { flipXYZ = new bool3(true, false, false); wasVSync = false; meshPaths = GetFilePaths(); resolutionX = Screen.width; resolutionY = Screen.height; renderManager = new RenderManager(); worldLODs = new World[LOD_LEVELS]; GameObject child = new GameObject("fake-cam"); child.transform.SetParent(transform); child.transform.localPosition = Vector3.zero; child.transform.localRotation = Quaternion.identity; fakeCamera = child.AddComponent <Camera>(); fakeCamera.CopyFrom(GetComponent <Camera>()); fakeCamera.enabled = false; renderMode = ERenderMode.ScreenBuffer; ApplyRenderMode(); }
private void OnMenuClickRenderMode(Object sender, EventArgs e) { ToolStripItem item = (ToolStripItem)sender; ERenderMode rm = (ERenderMode)(Enum.Parse(typeof(ERenderMode), item.Text)); m_view.RenderMode = rm; }
public void applyGraphicsSettings() { if (Dedicator.isDedicated) { return; } if (GraphicsSettings.blend) { ERenderMode renderMode = GraphicsSettings.renderMode; if (renderMode != ERenderMode.FORWARD) { if (renderMode != ERenderMode.DEFERRED) { this.terrain.materialTemplate = null; Debug.LogError("Unknown render mode: " + GraphicsSettings.renderMode); } else { this.terrain.materialTemplate = Resources.Load <Material>("Materials/Landscapes/Landscape_Deferred"); } } else { this.terrain.materialTemplate = Resources.Load <Material>("Materials/Landscapes/Landscape_Forward"); } this.terrain.basemapDistance = 512f; } else { this.terrain.materialTemplate = Resources.Load <Material>("Materials/Landscapes/Landscape_Classic"); this.terrain.basemapDistance = 256f; } switch (GraphicsSettings.terrainQuality) { case EGraphicQuality.LOW: this.terrain.heightmapPixelError = 64f; break; case EGraphicQuality.MEDIUM: this.terrain.heightmapPixelError = 32f; break; case EGraphicQuality.HIGH: this.terrain.heightmapPixelError = 16f; break; case EGraphicQuality.ULTRA: this.terrain.heightmapPixelError = 8f; break; } }
public static void mapify() { RenderTexture temporary = RenderTexture.GetTemporary((int)Level.size, (int)Level.size, 32); temporary.name = "Texture"; Level.mapper.GetComponent<Camera>().targetTexture = temporary; bool fog = RenderSettings.fog; AmbientMode ambientMode = RenderSettings.ambientMode; Color ambientSkyColor = RenderSettings.ambientSkyColor; Color ambientEquatorColor = RenderSettings.ambientEquatorColor; Color ambientGroundColor = RenderSettings.ambientGroundColor; float heightmapPixelError = 0f; float heightmapPixelError2 = 0f; float basemapDistance = 0f; float basemapDistance2 = 0f; if (LevelGround.terrain != null) { heightmapPixelError = LevelGround.terrain.heightmapPixelError; heightmapPixelError2 = LevelGround.terrain2.heightmapPixelError; basemapDistance = LevelGround.terrain.basemapDistance; basemapDistance2 = LevelGround.terrain2.basemapDistance; } float lodBias = QualitySettings.lodBias; float @float = LevelLighting.sea.GetFloat("_Shininess"); Color color = LevelLighting.sea.GetColor("_SpecularColor"); ERenderMode renderMode = GraphicsSettings.renderMode; GraphicsSettings.renderMode = ERenderMode.FORWARD; GraphicsSettings.apply(); RenderSettings.fog = false; RenderSettings.ambientMode = 1; RenderSettings.ambientSkyColor = Palette.AMBIENT; RenderSettings.ambientEquatorColor = Palette.AMBIENT; RenderSettings.ambientGroundColor = Palette.AMBIENT; if (LevelGround.terrain != null) { LevelGround.terrain.heightmapPixelError = 1f; LevelGround.terrain2.heightmapPixelError = 1f; LevelGround.terrain.basemapDistance = 8192f; LevelGround.terrain2.basemapDistance = 8192f; } LevelLighting.sea.SetFloat("_Shininess", 500f); LevelLighting.sea.SetColor("_SpecularColor", Color.black); QualitySettings.lodBias = float.MaxValue; for (byte b = 0; b < Regions.WORLD_SIZE; b += 1) { for (byte b2 = 0; b2 < Regions.WORLD_SIZE; b2 += 1) { if (!LevelObjects.regions[(int)b, (int)b2]) { List<LevelObject> list = LevelObjects.objects[(int)b, (int)b2]; for (int i = 0; i < list.Count; i++) { list[i].enableCollision(); list[i].enableVisual(); list[i].disableSkybox(); } } if (!LevelGround.regions[(int)b, (int)b2]) { List<ResourceSpawnpoint> list2 = LevelGround.trees[(int)b, (int)b2]; for (int j = 0; j < list2.Count; j++) { list2[j].enable(); } } } } Level.mapper.GetComponent<Camera>().Render(); for (byte b3 = 0; b3 < Regions.WORLD_SIZE; b3 += 1) { for (byte b4 = 0; b4 < Regions.WORLD_SIZE; b4 += 1) { if (!LevelObjects.regions[(int)b3, (int)b4]) { List<LevelObject> list3 = LevelObjects.objects[(int)b3, (int)b4]; for (int k = 0; k < list3.Count; k++) { list3[k].disableCollision(); list3[k].disableVisual(); if (list3[k].isLandmarkQualityMet) { list3[k].enableSkybox(); } } } if (!LevelGround.regions[(int)b3, (int)b4]) { List<ResourceSpawnpoint> list4 = LevelGround.trees[(int)b3, (int)b4]; for (int l = 0; l < list4.Count; l++) { list4[l].disable(); } } } } GraphicsSettings.renderMode = renderMode; GraphicsSettings.apply(); RenderSettings.fog = fog; RenderSettings.ambientMode = ambientMode; RenderSettings.ambientSkyColor = ambientSkyColor; RenderSettings.ambientEquatorColor = ambientEquatorColor; RenderSettings.ambientGroundColor = ambientGroundColor; if (LevelGround.terrain != null) { LevelGround.terrain.heightmapPixelError = heightmapPixelError; LevelGround.terrain2.heightmapPixelError = heightmapPixelError2; LevelGround.terrain.basemapDistance = basemapDistance; LevelGround.terrain2.basemapDistance = basemapDistance2; } LevelLighting.sea.SetFloat("_Shininess", @float); LevelLighting.sea.SetColor("_SpecularColor", color); QualitySettings.lodBias = lodBias; RenderTexture.active = temporary; Texture2D texture2D = new Texture2D(temporary.width, temporary.height); texture2D.name = "Mapify"; texture2D.hideFlags = 61; texture2D.filterMode = 2; texture2D.ReadPixels(new Rect(0f, 0f, (float)temporary.width, (float)temporary.height), 0, 0); for (int m = 0; m < texture2D.width; m++) { for (int n = 0; n < texture2D.height; n++) { Color pixel = texture2D.GetPixel(m, n); if (pixel.a < 1f) { pixel.a = 1f; texture2D.SetPixel(m, n, pixel); } } } texture2D.Apply(); byte[] bytes = texture2D.EncodeToPNG(); ReadWrite.writeBytes(Level.info.path + "/Map.png", false, false, bytes); Object.DestroyImmediate(texture2D); }
private void Update() { if (benchmarkTime >= 0f) { if (Input.GetKeyDown(KeyCode.Escape)) { benchmarkTime = -1f; MouseLook.enabled = true; return; } BenchmarkPath.SampleAnimation(gameObject, benchmarkTime / 40f); gameObject.transform.position = gameObject.transform.position * (float3)worldLODs[0].Dimensions; benchmarkTime += Time.deltaTime; benchmarkFrames++; if (benchmarkTime > BenchmarkPath.length * 40f) { lastBenchmarkResultFPS = benchmarkFrames / (BenchmarkPath.length * 40f); benchmarkTime = -1f; MouseLook.enabled = true; } return; } if (Input.GetKeyDown(KeyCode.Escape)) { MouseLook.IsControlled = !MouseLook.IsControlled; } if (MouseLook.IsControlled) { MouseLook.DoUpdate(); } if (Input.GetKey(KeyCode.W)) { transform.position += transform.forward * Time.deltaTime * moveSpeed; } if (Input.GetKey(KeyCode.S)) { transform.position -= transform.forward * Time.deltaTime * moveSpeed; } if (Input.GetKey(KeyCode.A)) { transform.position -= transform.right * Time.deltaTime * moveSpeed; } if (Input.GetKey(KeyCode.D)) { transform.position += transform.right * Time.deltaTime * moveSpeed; } if (Screen.fullScreenMode <= FullScreenMode.FullScreenWindow) { var main = Display.main; if (Screen.width != main.systemWidth || Screen.height != main.systemHeight) { Screen.SetResolution(main.systemWidth, main.systemHeight, true); } } if (Input.GetKeyDown(KeyCode.Alpha1)) { renderMode = ERenderMode.ScreenBuffer; ApplyRenderMode(); } else if (Input.GetKeyDown(KeyCode.Alpha2)) { renderMode = ERenderMode.RayBufferTopDown; ApplyRenderMode(); } else if (Input.GetKeyDown(KeyCode.Alpha3)) { renderMode = ERenderMode.RayBufferLeftRight; ApplyRenderMode(); } else if (Input.GetKeyDown(KeyCode.Alpha4)) { resolutionX *= 2; resolutionY *= 2; } else if (Input.GetKeyDown(KeyCode.Alpha5)) { resolutionX /= 2; resolutionY /= 2; } else if (Input.GetKeyDown(KeyCode.Alpha6)) { benchmarkTime = 0f; benchmarkFrames = 0; MouseLook.enabled = false; renderMode = ERenderMode.ScreenBuffer; } float scroll = Input.mouseScrollDelta.y; if (scroll < 0f) { moveSpeed *= 0.9f; } else if (scroll > 0f) { moveSpeed *= 1.1f; } if (resolutionX > Screen.width) { resolutionX = Screen.width; } if (resolutionY > Screen.height) { resolutionY = Screen.height; } }