private void BuildShadowSettings()
        {
            m_ShadowSettings             = UnityEngine.Experimental.Rendering.LightweightPipeline.ShadowSettings.Default;
            m_ShadowSettings.screenSpace = SystemInfo.graphicsDeviceType != GraphicsDeviceType.OpenGLES2;
            m_ShadowSettings.directionalLightCascadeCount = (m_ShadowSettings.screenSpace) ? m_Asset.CascadeCount : 1;

            m_ShadowSettings.shadowAtlasWidth       = m_Asset.ShadowAtlasResolution;
            m_ShadowSettings.shadowAtlasHeight      = m_Asset.ShadowAtlasResolution;
            m_ShadowSettings.maxShadowDistance      = m_Asset.ShadowDistance;
            m_ShadowSettings.shadowmapTextureFormat = SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.Shadowmap)
                ? RenderTextureFormat.Shadowmap
                : RenderTextureFormat.Depth;

            m_ShadowSettings.screenspaceShadowmapTextureFormat = SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.R8)
                    ? RenderTextureFormat.R8
                    : RenderTextureFormat.ARGB32;

            switch (m_ShadowSettings.directionalLightCascadeCount)
            {
            case 1:
                m_ShadowSettings.directionalLightCascades = new Vector3(1.0f, 0.0f, 0.0f);
                break;

            case 2:
                m_ShadowSettings.directionalLightCascades = new Vector3(m_Asset.Cascade2Split, 1.0f, 0.0f);
                break;

            default:
                m_ShadowSettings.directionalLightCascades = m_Asset.Cascade4Split;
                break;
            }
        }
        private void BuildShadowSettings(LightweightPipelineAsset pipelineAsset)
        {
            // Until we can have keyword stripping forcing single cascade hard shadows on gles2
            bool supportsScreenSpaceShadows = SystemInfo.graphicsDeviceType != GraphicsDeviceType.OpenGLES2;

            m_ShadowSettings = ShadowSettings.Default;
            m_ShadowSettings.supportsDirectionalShadows = pipelineAsset.SupportsDirectionalShadows;
            m_ShadowSettings.screenSpace = m_ShadowSettings.supportsDirectionalShadows && supportsScreenSpaceShadows;
            m_ShadowSettings.directionalLightCascadeCount = (m_ShadowSettings.screenSpace) ? pipelineAsset.CascadeCount : 1;

            m_ShadowSettings.directionalShadowAtlasWidth  = pipelineAsset.DirectionalShadowAtlasResolution;
            m_ShadowSettings.directionalShadowAtlasHeight = pipelineAsset.DirectionalShadowAtlasResolution;
            m_ShadowSettings.maxShadowDistance            = pipelineAsset.ShadowDistance;

            switch (m_ShadowSettings.directionalLightCascadeCount)
            {
            case 1:
                m_ShadowSettings.directionalLightCascades = new Vector3(1.0f, 0.0f, 0.0f);
                break;

            case 2:
                m_ShadowSettings.directionalLightCascades = new Vector3(pipelineAsset.Cascade2Split, 1.0f, 0.0f);
                break;

            default:
                m_ShadowSettings.directionalLightCascades = pipelineAsset.Cascade4Split;
                break;
            }

            m_ShadowSettings.supportsLocalShadows  = pipelineAsset.SupportsLocalShadows;
            m_ShadowSettings.localShadowAtlasWidth = m_ShadowSettings.localShadowAtlasHeight = pipelineAsset.LocalShadowAtlasResolution;
            m_ShadowSettings.supportsSoftShadows   = pipelineAsset.SupportsSoftShadows;

            m_ShadowSettings.bufferBitCount = 16;

            m_ShadowSettings.shadowmapTextureFormat = SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.Shadowmap)
                ? RenderTextureFormat.Shadowmap
                : RenderTextureFormat.Depth;

            m_ShadowSettings.screenspaceShadowmapTextureFormat = SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.R8)
                ? RenderTextureFormat.R8
                : RenderTextureFormat.ARGB32;
        }
        private void BuildShadowSettings(LightweightPipelineAsset pipelineAsset)
        {
            // Until we can have keyword stripping forcing single cascade hard shadows on gles2
            bool supportsScreenSpaceShadows = SystemInfo.graphicsDeviceType != GraphicsDeviceType.OpenGLES2;
            bool supportsLocalShadows       = Application.isMobilePlatform || Application.platform == RuntimePlatform.WebGLPlayer;

            m_ShadowSettings = ShadowSettings.Default;
            m_ShadowSettings.directionalShadowQuality = (LightShadows)pipelineAsset.ShadowSetting;

            m_ShadowSettings.screenSpace = supportsScreenSpaceShadows;
            m_ShadowSettings.directionalLightCascadeCount = (m_ShadowSettings.screenSpace) ? pipelineAsset.CascadeCount : 1;

            m_ShadowSettings.directionalShadowAtlasWidth  = pipelineAsset.ShadowAtlasResolution;
            m_ShadowSettings.directionalShadowAtlasHeight = pipelineAsset.ShadowAtlasResolution;
            m_ShadowSettings.maxShadowDistance            = pipelineAsset.ShadowDistance;
            m_ShadowSettings.shadowmapTextureFormat       = SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.Shadowmap)
                ? RenderTextureFormat.Shadowmap
                : RenderTextureFormat.Depth;

            m_ShadowSettings.screenspaceShadowmapTextureFormat = SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.R8)
                ? RenderTextureFormat.R8
                : RenderTextureFormat.ARGB32;

            switch (m_ShadowSettings.directionalLightCascadeCount)
            {
            case 1:
                m_ShadowSettings.directionalLightCascades = new Vector3(1.0f, 0.0f, 0.0f);
                break;

            case 2:
                m_ShadowSettings.directionalLightCascades = new Vector3(pipelineAsset.Cascade2Split, 1.0f, 0.0f);
                break;

            default:
                m_ShadowSettings.directionalLightCascades = pipelineAsset.Cascade4Split;
                break;
            }

            // Until we can have keyword stripping we disable local light shadows on mobile
            m_ShadowSettings.localLightsShadowQuality = (supportsLocalShadows) ? LightShadows.Hard : LightShadows.None;
        }
Beispiel #4
0
        private void BuildShadowSettings()
        {
            m_ShadowSettings = ShadowSettings.Default;
            m_ShadowSettings.directionalLightCascadeCount = m_Asset.CascadeCount;

            m_ShadowSettings.shadowAtlasWidth  = m_Asset.ShadowAtlasResolution;
            m_ShadowSettings.shadowAtlasHeight = m_Asset.ShadowAtlasResolution;
            m_ShadowSettings.maxShadowDistance = m_Asset.ShadowDistance;

            switch (m_ShadowSettings.directionalLightCascadeCount)
            {
            case 1:
                m_ShadowSettings.directionalLightCascades = new Vector3(1.0f, 0.0f, 0.0f);
                break;

            case 2:
                m_ShadowSettings.directionalLightCascades = new Vector3(m_Asset.Cascade2Split, 1.0f, 0.0f);
                break;

            default:
                m_ShadowSettings.directionalLightCascades = m_Asset.Cascade4Split;
                break;
            }
        }