Exemplo n.º 1
0
        public Texture GetTexture(ProbeSettings.Mode targetMode)
        {
            switch (targetMode)
            {
            case ProbeSettings.Mode.Baked: return(m_BakedTexture);

            case ProbeSettings.Mode.Custom: return(m_CustomTexture);

            case ProbeSettings.Mode.Realtime: return(m_RealtimeTexture);

            default: throw new ArgumentOutOfRangeException();
            }
        }
        public static Texture CreateRenderTargetForMode(HDProbe probe, ProbeSettings.Mode targetMode)
        {
            Texture target   = null;
            var     hd       = (HDRenderPipeline)RenderPipelineManager.currentPipeline;
            var     settings = probe.settings;

            switch (targetMode)
            {
            case ProbeSettings.Mode.Realtime:
            {
                switch (settings.type)
                {
                case ProbeSettings.ProbeType.PlanarProbe:
                    target = HDRenderUtilities.CreatePlanarProbeRenderTarget(
                        (int)hd.renderPipelineSettings.lightLoopSettings.planarReflectionTextureSize
                        );
                    break;

                case ProbeSettings.ProbeType.ReflectionProbe:
                    target = HDRenderUtilities.CreateReflectionProbeRenderTarget(
                        (int)hd.renderPipelineSettings.lightLoopSettings.reflectionCubemapSize
                        );
                    break;
                }
                break;
            }

            case ProbeSettings.Mode.Baked:
            case ProbeSettings.Mode.Custom:
            {
                switch (settings.type)
                {
                case ProbeSettings.ProbeType.PlanarProbe:
                    target = HDRenderUtilities.CreatePlanarProbeRenderTarget(
                        (int)hd.renderPipelineSettings.lightLoopSettings.planarReflectionTextureSize
                        );
                    break;

                case ProbeSettings.ProbeType.ReflectionProbe:
                    target = HDRenderUtilities.CreateReflectionProbeTarget(
                        (int)hd.renderPipelineSettings.lightLoopSettings.reflectionCubemapSize
                        );
                    break;
                }
                break;
            }
            }

            return(target);
        }
        public static void AssignRenderData(
            HDProbe probe,
            HDProbe.RenderData renderData,
            ProbeSettings.Mode targetMode
            )
        {
            switch (targetMode)
            {
            case ProbeSettings.Mode.Baked: probe.bakedRenderData = renderData; break;

            case ProbeSettings.Mode.Custom: probe.customRenderData = renderData; break;

            case ProbeSettings.Mode.Realtime: probe.realtimeRenderData = renderData; break;
            }
        }
        static Texture CreateAndSetRenderTargetIfRequired(HDProbe probe, ProbeSettings.Mode targetMode)
        {
            var     settings = probe.settings;
            Texture target   = probe.GetTexture(targetMode);

            if (target != null)
            {
                return(target);
            }

            target = CreateRenderTargetForMode(probe, targetMode);

            probe.SetTexture(targetMode, target);
            return(target);
        }
Exemplo n.º 5
0
        public Texture SetTexture(ProbeSettings.Mode targetMode, Texture texture)
        {
            if (targetMode == ProbeSettings.Mode.Realtime && !(texture is RenderTexture))
            {
                throw new ArgumentException("'texture' must be a RenderTexture for the Realtime mode.");
            }

            switch (targetMode)
            {
            case ProbeSettings.Mode.Baked: return(m_BakedTexture = texture);

            case ProbeSettings.Mode.Custom: return(m_CustomTexture = texture);

            case ProbeSettings.Mode.Realtime: return(m_RealtimeTexture = (RenderTexture)texture);

            default: throw new ArgumentOutOfRangeException();
            }
        }