// 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); }
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); }
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); }
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); }