示例#1
0
        public void Render(IGameContext gameContext, IRenderContext renderContext, ILightContext lightContext, IEnumerable <ILight> lights)
        {
            if (!_directionalLightEffect.IsReady)
            {
                return;
            }

            foreach (var ulight in lights)
            {
                var light = (IStandardDirectionalLight)ulight;

                var parameterSet = _directionalLightEffect.Asset.Effect.CreateParameterSet();
                parameterSet["Color"]?.SetValue(lightContext.DeferredColorMap);
                parameterSet["Normal"]?.SetValue(lightContext.DeferredNormalMap);
                parameterSet["Depth"]?.SetValue(lightContext.DeferredDepthMap);
                parameterSet["LightDirection"]?.SetValue(light.LightDirection);
                parameterSet["LightColor"]?.SetValue(light.LightColor.ToVector3());
                parameterSet["HalfPixel"]?.SetValue(lightContext.HalfPixel);

                _graphicsBlit.BlitMRT(
                    renderContext,
                    null,
                    new[] { lightContext.DiffuseLightRenderTarget, lightContext.SpecularLightRenderTarget },
                    _directionalLightEffect.Asset.Effect,
                    parameterSet,
                    lightContext.LightBlendState);
            }
        }
        public void Render(IGameContext gameContext, IRenderContext renderContext, ILightContext lightContext)
        {
            var parameterSet = _directionalLightEffect.Effect.CreateParameterSet();

            parameterSet["Color"]?.SetValue(lightContext.DeferredColorMap);
            parameterSet["Normal"]?.SetValue(lightContext.DeferredNormalMap);
            parameterSet["Depth"]?.SetValue(lightContext.DeferredDepthMap);
            parameterSet["LightDirection"]?.SetValue(LightDirection);
            parameterSet["LightColor"]?.SetValue(LightColor.ToVector3());
            parameterSet["HalfPixel"]?.SetValue(lightContext.HalfPixel);

            _graphicsBlit.BlitMRT(
                renderContext,
                null,
                new[] { lightContext.DiffuseLightRenderTarget, lightContext.SpecularLightRenderTarget },
                _directionalLightEffect.Effect,
                parameterSet,
                lightContext.LightBlendState);
        }