public GBufferRenderer(IGraphicsService graphicsService, SceneNodeRenderer sceneNodeRenderer, DecalRenderer decalRenderer) { _clearGBufferRenderer = new ClearGBufferRenderer(graphicsService); _sceneNodeRenderer = sceneNodeRenderer; _decalRenderer = decalRenderer; // This filter is used to downsample the depth buffer (GBuffer0). _downsampleFilter = PostProcessHelper.GetDownsampleFilter(graphicsService); }
/// <summary> /// Initializes a new instance of the <see cref="ShadowMapRenderer"/> class using the specified /// scene node renderer. /// </summary> /// <param name="sceneNodeRenderer"> /// The renderer for shadow-casting objects. A <see cref="RenderCallback"/> is created /// automatically which calls the specified renderer. /// </param> /// <exception cref="ArgumentNullException"> /// <paramref name="sceneNodeRenderer"/> is <see langword="null"/>. /// </exception> public ShadowMapRenderer(SceneNodeRenderer sceneNodeRenderer) { if (sceneNodeRenderer == null) { throw new ArgumentNullException("sceneNodeRenderer"); } _renderCallback = context => { var query = context.Scene.Query <ShadowCasterQuery>(context.CameraNode, context); if (query.ShadowCasters.Count == 0) { return(false); } sceneNodeRenderer.Render(query.ShadowCasters, context); return(true); }; AddDefaultRenderers(_renderCallback); }