Hi there! Something I find myself wanting to do often is implement custom shadow rendering outside of what seems to be the intended way of doing it using the SRP API, but which also seems frustratingly close to being possible. Here's an example: I have a custom light class to circumvent limitations with using the native light class. I want to draw a shadow map for this "light". I find ScriptableRenderContext.DrawShadows (and CreateShadowRendererList in 2023 which looks even better). Great! I just need to pass it a ShadowDrawingSettings struct Problem 1: ShadowDrawingSettings must be passed a light index or it wont work. I don't have a light index because I am not using native lights. Even if I am using native lights, I can run into problems if I do a prepass over all cameras to find all visible lights with the intention of updating them only once (which leaves me without valid light indices because there is no singular visibleLights list to derive an index from). Alright, I guess I'll fall back to using CommandBuffer.DrawRendererList and draw my shadow casters that way instead. Problem 2: To gather a RendererList, I need to supply a CullingResult, but there seems to be no way to filter out shadow casters only (and I also need to create a dummy camera because I can't get a CullingResult without one). The only way I found to "fix" this is to filter renderers using Renderer.renderingLayerMask by setting up a layer for shadow casters. This means that enabling/disabling shadows is really user unfriendly though, and also means that the shadow caster flags no longer do anything. Question 1: Why does DrawShadows need to know about some light index? What information could it possibly need that I couldn't just pass along myself? I really feel like this hugely limits what kind of render pipeline you can create yourself if it is tied to how native lights (that you cannot modify) work. Question 1: Why can't I when I call ScriptableRenderContext.Cull or CommandBuffer.DrawRendererList tell it to only cull or draw shadow casters? This seems like it would be incredibly powerful, letting the user fully utilize the shadow caster flags and render shadow maps which can be used for many other purposes other than just supplying native lights with shadows. FilteringSettings has a field for excluding motion vector objects. It would be awesome if it also had a field for filtering shadow casters (non-shadow casters only, static shadow casters only or all shadow casters for example). There is CullingOptions.ShadowCasters which can be set on ScriptableCullingParameters, but it doesn't seem to work in this way because it does not cull non-shadow casters. In my mind, any "DrawShadows" function just needs a few things: A list of things to draw (be it CullingResults or a RendererList derived from CullingResults) Additional filtering options (already exists) Shader pass tag override (possible if you use DrawRenderers but not DrawShadows) And the rest is set by the user (view/projection matrices, render target etc).