public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
            {
                if (renderingData.cameraData.camera != Camera.main)
                {
                    return;
                }

                VolumeStack         stack      = VolumeManager.instance.stack;
                PUnderwaterOverride underwater = stack.GetComponent <PUnderwaterOverride>();
                PWetLensOverride    wetLens    = stack.GetComponent <PWetLensOverride>();

                bool willRenderUnderwater = underwater.intensity.value > 0;
                bool willRenderWetLens    = wetLens.strength.value * wetLens.intensity.value > 0;

                if (!willRenderUnderwater && !willRenderWetLens)
                {
                    return;
                }

                ConfigureMaterial(ref renderingData, underwater, wetLens);

                CommandBuffer           cmd = CommandBufferPool.Get(PROFILER_TAG);
                RenderTextureDescriptor cameraTargetDescriptor = renderingData.cameraData.cameraTargetDescriptor;

                cameraTargetDescriptor.depthBufferBits = 0;
                cmd.GetTemporaryRT(temporaryRenderTexture.id, cameraTargetDescriptor);

                Material material = willRenderUnderwater ? underwaterMaterial : wetLensMaterial;

                Blit(cmd, cameraTarget, temporaryRenderTexture.Identifier(), material, 0);
                Blit(cmd, temporaryRenderTexture.Identifier(), cameraTarget);

                context.ExecuteCommandBuffer(cmd);
                CommandBufferPool.Release(cmd);
            }
 SkySettings GetSkySetting(VolumeStack stack)
 {
     var visualEnv = stack.GetComponent<VisualEnvironment>();
     int skyID = visualEnv.skyType;
     Type skyType;
     if(m_SkyTypesDict.TryGetValue(skyID, out skyType))
     {
         return (SkySettings)stack.GetComponent(skyType);
     }
     else
     {
         return null;
     }
 }
        internal static SkySettings GetSkySetting(VolumeStack stack)
        {
            var  visualEnv = stack.GetComponent <VisualEnvironment>();
            int  skyID     = visualEnv.skyType.value;
            Type skyType;

            if (skyTypesDict.TryGetValue(skyID, out skyType))
            {
                return((SkySettings)stack.GetComponent(skyType));
            }
            else
            {
                if (skyID == (int)SkyType.Procedural && logOnce)
                {
                    Debug.LogError("You are using the deprecated Procedural Sky in your Scene. You can still use it but, to do so, you must install it separately. To do this, open the Package Manager window and import the 'Procedural Sky' sample from the HDRP package page, then close and re-open your project without saving.");
                    logOnce = false;
                }

                return(null);
            }
        }
    private void GatherOverrides()
    {
        var sunProps = stack.GetComponent <SunlightProperties>();

        if (sunProps.lattitude.overrideState)
        {
            sunlightParameters.orientationParameters.lattitude = sunProps.lattitude.value;
        }
        if (sunProps.YAxis.overrideState)
        {
            sunlightParameters.orientationParameters.yAxis = sunProps.YAxis.value;
        }
        if (sunProps.timeOfDay.overrideState)
        {
            sunlightParameters.orientationParameters.timeOfDay = sunProps.timeOfDay.value;
        }

        //If overridden intensity is constant, otherwise drive by curve
        if (sunProps.intensity.overrideState)
        {
            sunlightParameters.lightParameters.intensity = sunProps.intensity;
        }
        else
        {
            sunlightParameters.lightParameters.intensity = sunlightParameters.intensityCurve.Evaluate(sunlightParameters.orientationParameters.timeOfDay);
        }
        //If overridden intensity is constant, otherwise driven by gradient
        if (sunProps.color.overrideState)
        {
            sunlightParameters.lightParameters.colorFilter = sunProps.color;
        }
        else
        {
            sunlightParameters.lightParameters.colorFilter = sunlightParameters.colorGradient.Evaluate(sunlightParameters.orientationParameters.timeOfDay / 24);
        }

        if (sunProps.indirectMultiplier.overrideState)
        {
            sunlightParameters.lightParameters.indirectIntensity = sunProps.indirectMultiplier;
        }
        if (sunProps.cookieTexture.overrideState)
        {
            sunlightParameters.lightParameters.lightCookie = sunProps.cookieTexture;
        }
        if (sunProps.cookieSize.overrideState)
        {
            sunlightParameters.lightParameters.cookieSize = sunProps.cookieSize;
        }
        if (sunProps.shadowResolution.overrideState)
        {
            sunlightParameters.lightParameters.shadowResolution = sunProps.shadowResolution;
        }
    }
    public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)
    {
        if (material == null || !renderingData.cameraData.postProcessEnabled)
        {
            return;
        }

        VolumeStack stack = VolumeManager.instance.stack;

        outlineEffect = stack.GetComponent <OutlineEffect>();

        if (outlineEffect == null || !outlineEffect.IsActive())
        {
            return;
        }

        CommandBuffer buffer = CommandBufferPool.Get(OUTLINE_EFFECT_TAG);

        Render(buffer, ref renderingData);

        context.ExecuteCommandBuffer(buffer);
        CommandBufferPool.Release(buffer);
    }
        private void GatherOverrides()
        {
            modifiedOrientationParameters = SunlightOrientationParameters.DeepCopy(sunlightParameters.orientationParameters);

            if (stack == null)
            {
                return;
            }

            var sunProps = stack.GetComponent <SunlightProperties>();

            if (sunlightParameters.lightParameters == null || modifiedOrientationParameters == null)
            {
                return;
            }

            if (sunProps.lattitude.overrideState)
            {
                modifiedOrientationParameters.lattitude = sunProps.lattitude.value;
            }
            if (sunProps.YAxis.overrideState)
            {
                modifiedOrientationParameters.yAxis = sunProps.YAxis.value;
            }

            if (Application.isPlaying)
            {
                //modifiedOrientationParameters.timeOfDay = Manager.Get<TimeOfDayManager>().timeOfDay;
                modifiedOrientationParameters.timeOfDay = Globals.GetFloat("TimeOfDay", Globals.Scope.Global);
            }

            //If overridden in volumes intensity is constant, otherwise driven by curve * intensity
            modifiedLightParameters = LightParameters.DeepCopy(sunlightParameters.lightParameters);

            if (sunProps.intensity.overrideState)
            {
                modifiedLightParameters.intensity = sunProps.intensity.value;
            }
            else if (sunlightParameters.intensityCurve != null)
            {
                modifiedLightParameters.intensity = sunlightParameters.intensityCurve.Evaluate(sunlightParameters.orientationParameters.timeOfDay) * sunlightParameters.lightParameters.intensity;
            }
            else if (sunlightParameters.intensityCurve == null)
            {
                modifiedLightParameters.intensity = sunlightParameters.lightParameters.intensity;
            }

            //If overridden intensity is constant, otherwise driven by gradient
            if (sunProps.color.overrideState)
            {
                modifiedLightParameters.colorFilter = sunProps.color.value;
            }
            else if (sunlightParameters.colorGradient != null)
            {
                modifiedLightParameters.colorFilter = sunlightParameters.colorGradient.Evaluate(sunlightParameters.orientationParameters.timeOfDay / 24);
            }

            if (sunProps.indirectMultiplier.overrideState)
            {
                modifiedLightParameters.indirectIntensity = sunProps.indirectMultiplier.value;
            }
            if (sunProps.cookieTexture.overrideState)
            {
                modifiedLightParameters.lightCookie = sunProps.cookieTexture.value;
            }
            if (sunProps.cookieSize.overrideState)
            {
                modifiedLightParameters.cookieSize = sunProps.cookieSize.value;
            }
            if (sunProps.shadowResolution.overrideState)
            {
                modifiedLightParameters.shadowResolution = sunProps.shadowResolution.value;
            }
            if (sunProps.shadowTint.overrideState)
            {
                modifiedLightParameters.shadowTint = sunProps.shadowTint.value;
            }
            if (sunProps.penumbraTint.overrideState)
            {
                modifiedLightParameters.penumbraTint = sunProps.penumbraTint.value;
            }
        }
Example #7
0
        /// <summary>Get a VolumeParameter from a VolumeComponent on the <see cref="selectedCameraVolumeStack"/></summary>
        /// <param name="field">The field info of the parameter.</param>
        /// <returns>The volume parameter.</returns>
        public VolumeParameter GetParameter(FieldInfo field)
        {
            VolumeStack stack = selectedCameraVolumeStack;

            return(stack == null ? null : GetParameter(stack.GetComponent(selectedComponentType), field));
        }
        private void GatherOverrides()
        {
            modifiedOrientationParameters = SunlightOrientationParameters.DeepCopy(sunlightParameters.orientationParameters);

            if (stack == null)
            {
                return;
            }

            var sunProps = stack.GetComponent <SunlightProperties>();

            if (sunlightParameters.lightParameters == null || modifiedOrientationParameters == null)
            {
                return;
            }

            if (sunProps.lattitude.overrideState)
            {
                modifiedOrientationParameters.lattitude = sunProps.lattitude.value;
            }
            if (sunProps.YAxis.overrideState)
            {
                modifiedOrientationParameters.yAxis = sunProps.YAxis.value;
            }
            if (sunProps.timeOfDay.overrideState)
            {
                modifiedOrientationParameters.timeOfDay = sunProps.timeOfDay.value;
            }

            //If overridden intensity is constant, otherwise drive by curve
            if (sunProps.intensity.overrideState)
            {
                sunlightParameters.lightParameters.intensity = sunProps.intensity;
            }
            else if (sunlightParameters.intensityCurve != null)
            {
                sunlightParameters.lightParameters.intensity = sunlightParameters.intensityCurve.Evaluate(sunlightParameters.orientationParameters.timeOfDay);
            }
            if (sunlightParameters.intensityCurve == null)
            {
                Debug.LogWarning("Sun intensity curve is null");
            }

            //If overridden intensity is constant, otherwise driven by gradient
            if (sunProps.color.overrideState)
            {
                sunlightParameters.lightParameters.colorFilter = sunProps.color;
            }
            else if (sunlightParameters.colorGradient != null)
            {
                sunlightParameters.lightParameters.colorFilter = sunlightParameters.colorGradient.Evaluate(sunlightParameters.orientationParameters.timeOfDay / 24);
            }

            if (sunProps.indirectMultiplier.overrideState)
            {
                sunlightParameters.lightParameters.indirectIntensity = sunProps.indirectMultiplier;
            }
            if (sunProps.cookieTexture.overrideState)
            {
                sunlightParameters.lightParameters.lightCookie = sunProps.cookieTexture;
            }
            if (sunProps.cookieSize.overrideState)
            {
                sunlightParameters.lightParameters.cookieSize = sunProps.cookieSize;
            }
            if (sunProps.shadowResolution.overrideState)
            {
                sunlightParameters.lightParameters.shadowResolution = sunProps.shadowResolution;
            }
        }