Beispiel #1
0
        public void Initialize()
        {
            targetCamera = GetComponent <Camera>();

            if (!ReferenceEquals(targetCamera.activeTexture, null))
            {
                targetRT                  = new RenderTexture(targetCamera.activeTexture.width / 2, targetCamera.activeTexture.height / 2, 0, RenderTextureFormat.ARGB32);
                targetRT.anisoLevel       = 1;
                targetRT.antiAliasing     = 1;
                targetRT.volumeDepth      = 0;
                targetRT.useMipMap        = false;
                targetRT.autoGenerateMips = false;
                targetRT.Create();
                targetRT.filterMode = FilterMode.Point; //might need a way to access both point and bilinear

                downscaledDepthRT                  = new RenderTexture(targetCamera.activeTexture.width / 2, targetCamera.activeTexture.height / 2, 0, RenderTextureFormat.RFloat);
                downscaledDepthRT.anisoLevel       = 1;
                downscaledDepthRT.antiAliasing     = 1;
                downscaledDepthRT.volumeDepth      = 0;
                downscaledDepthRT.useMipMap        = false;
                downscaledDepthRT.autoGenerateMips = false;
                downscaledDepthRT.Create();

                downscaledDepthRT.filterMode = FilterMode.Point;

                downscaleDepthMaterial = new Material(ShaderLoaderClass.FindShader("EVE/DownscaleDepth"));

                isInitialized = true;
            }
        }
Beispiel #2
0
        public void Apply()
        {
            CelestialBody celestialBody = Tools.GetCelestialBody(body);

            if (celestialBody != null)
            {
                GameObject go = new GameObject();
                materialPQS          = go.AddComponent <MaterialPQS>();
                macroMat             = materialPQS.Apply(celestialBody, cityLightsMaterial, ShaderLoaderClass.FindShader("EVE/TerrainCityLight"), true, false);
                macroMat.name        = materialName;
                macroMat.renderQueue = (int)Tools.Queue.Geometry + 1;
            }
            Transform transform = Tools.GetScaledTransform(body);

            if (transform != null)
            {
                Renderer r = transform.GetComponent <Renderer>();
                if (r != null)
                {
                    scaledMat = new Material(ShaderLoaderClass.FindShader("EVE/PlanetCityLight"));

                    cityLightsMaterial.ApplyMaterialProperties(scaledMat);
                    scaledMat.SetTexture("_MainTex", r.material.GetTexture("_MainTex"));
                    scaledMat.name        = materialName;
                    scaledMat.renderQueue = (int)Tools.Queue.Geometry + 1;
                    OverlayRenderer.Add(r.gameObject, scaledMat);

                    ScaledCityComponent sc    = transform.gameObject.AddComponent <ScaledCityComponent>();
                    FieldInfo           field = typeof(Sun).GetFields(BindingFlags.Instance | BindingFlags.NonPublic).First(
                        f => f.Name == "scaledSunLight");
                    Light slight = (Light)field.GetValue(Sun.Instance);

                    sc.Apply(scaledMat, slight);
                }
            }


            LocalCityComponent lsc = FlightCamera.fetch.mainCamera.gameObject.AddComponent <LocalCityComponent>();
            Light light            = Sun.Instance.GetComponent <Light>();

            lsc.Apply(macroMat, light);

            ApplyToMainMenu();

            GameEvents.onGameSceneLoadRequested.Add(SceneLoaded);
            if (HighLogic.LoadedScene == GameScenes.MAINMENU)
            {
                ApplyToMainMenu();
            }
        }
Beispiel #3
0
        public void Init()
        {
            material = new Material(ShaderLoaderClass.FindShader("EVE/CompositeDeferredClouds"));

            Quad.Create(gameObject, 2, Color.white, Vector3.up, Mathf.Infinity);

            shadowMR = gameObject.AddComponent <MeshRenderer>();
            material.SetOverrideTag("IgnoreProjector", "True");
            shadowMR.sharedMaterial = material;

            shadowMR.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off;
            shadowMR.receiveShadows    = false;
            shadowMR.enabled           = true;
            material.SetFloat(ShaderProperties.rendererEnabled_PROPERTY, 0f);

            gameObject.layer = (int)Tools.Layer.Local;
        }