// Tell if we need to show a warning for rendering opaque object and we're in deferred.
        bool ShowOpaqueObjectWarning()
        {
            // Only opaque objects are concerned
            RenderQueueRange currentRange = CustomPass.GetRenderQueueRangeFromRenderQueueType((CustomPass.RenderQueueType)m_RenderQueue.intValue);
            var  allOpaque = HDRenderQueue.k_RenderQueue_AllOpaque;
            bool customPassQueueContainsOpaqueObjects = currentRange.upperBound >= allOpaque.lowerBound && currentRange.lowerBound <= allOpaque.upperBound;

            if (!customPassQueueContainsOpaqueObjects)
            {
                return(false);
            }

            // Only Deferred rendering
            if (HDRenderPipeline.currentAsset.currentPlatformRenderPipelineSettings.supportedLitShaderMode != RenderPipelineSettings.SupportedLitShaderMode.DeferredOnly)
            {
                return(false);
            }

            return(true);
        }
Example #2
0
        CustomPassDrawer GetCustomPassDrawer(SerializedProperty pass, CustomPass reference, int listIndex)
        {
            CustomPassDrawer drawer;

            if (customPassDrawers.TryGetValue(reference, out drawer))
            {
                return(drawer);
            }

            var customPass = m_Volume.customPasses[listIndex];

            if (customPass == null)
            {
                return(null);
            }

            foreach (var drawerType in TypeCache.GetTypesWithAttribute(typeof(CustomPassDrawerAttribute)))
            {
                var attr = drawerType.GetCustomAttributes(typeof(CustomPassDrawerAttribute), true)[0] as CustomPassDrawerAttribute;
                if (attr.targetPassType == customPass.GetType())
                {
                    drawer = Activator.CreateInstance(drawerType) as CustomPassDrawer;
                    drawer.SetPass(customPass);
                    break;
                }
                if (attr.targetPassType.IsAssignableFrom(customPass.GetType()))
                {
                    drawer = Activator.CreateInstance(drawerType) as CustomPassDrawer;
                    drawer.SetPass(customPass);
                }
            }

            customPassDrawers[reference] = drawer;

            return(drawer);
        }
Example #3
0
 internal void SetPass(CustomPass pass) => m_CustomPass = pass;
 public override void Create()
 {
     blitPass = new CustomPass(name, settings);
 }
 private static void RenderPostProcess<T>(CommandBuffer cmd, HDCamera hdCamera, CameraSensorBase sensor, RTHandle sensorColorBuffer, CustomPass pass, T data, CubemapFace cubemapFace = CubemapFace.Unknown)
     where T : PostProcessData
 {
     var postProcessPass = pass as IPostProcessRenderer;
     postProcessPass?.Render(cmd, hdCamera, sensor, sensorColorBuffer, data, cubemapFace);
 }
Example #6
0
        private static void RenderPostProcess <T>(PostProcessPassContext ctx, CameraSensorBase sensor, CustomPass pass, T data, CubemapFace cubemapFace = CubemapFace.Unknown) where T : PostProcessData
        {
            var postProcessPass = pass as IPostProcessRenderer;

            postProcessPass?.Render(ctx, sensor, data, cubemapFace);
        }