コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }