Пример #1
0
        public HdrTechnique() : base(GraphicDeviceFactory.Device)
        {
            Service.Set <HdrTechnique>(this);
            this._state = EngineState.Lighting.Hdr;

            var device = GraphicDeviceFactory.Device;

            Format[] formats   = { Format.R16G16B16A16_FLOAT, Format.R16G16B16A16_UNORM, Format.R8G8B8A8_TYPELESS };
            Format[] lumFormat = { Format.R16_FLOAT, Format.R16_UNORM, Format.R8G8B8A8_TYPELESS };
            for (int i = 0; i < formats.Length; i++)
            {
                if (device.CheckFormatSupport(formats[i], BindFlags.RenderTarget, ResourceType.Texture2D))
                {
                    _hdrFormat = formats[i];
                    break;
                }
            }


            CreateResources();
            ComputeSamples();

            device.BackBuffer.Resized += OMBackBuffer_Resized;

            _pointSampler = GraphicDeviceFactory.Device.CreateSamplerState(new SamplerDesc(true)
            {
                AddressU    = TextureAddressMode.Border,
                AddressV    = TextureAddressMode.Border,
                Filter      = Filter.MinMagMipPoint,
                BorderColor = new Color4(0, 0, 0, 0)
            });
            _linearSampler = GraphicDeviceFactory.Device.CreateSamplerState(new SamplerDesc(true)
            {
                AddressU    = TextureAddressMode.Clamp,
                AddressV    = TextureAddressMode.Clamp,
                Filter      = Filter.MinMagMipLinear,
                BorderColor = new Color4(0)
            });
            _quadRender = Service.Require <Sprite>();

            _map   = effect.Map <IHdrMap>(true);
            _input = effect.Map <Sprite.IShaderInput>(true);
        }
Пример #2
0
        public void RenderTexture(GraphicDevice device, Texture2D texture, int x = 0, int y = 0, int width = 256, int height = 256)
        {
            if (untranformed == null)
            {
                untranformed = Igneel.Rendering.Effect.GetEffect <RenderQuadEffect>(GraphicDeviceFactory.Device);
                input        = untranformed.Map <Igneel.Rendering.Sprite.IShaderInput>();
            }

            var sprite = Service.Require <Sprite>();

            device.PS.SetResource(0, texture);
            device.PS.SetSampler(0, SamplerState.Linear);

            sprite.Begin();
            sprite.SetTrasform(input, new Igneel.Rectangle(x, y, width, height), Igneel.Matrix.Identity);
            sprite.DrawQuad(untranformed);
            sprite.End();

            device.PS.SetResource(0, null);
        }
Пример #3
0
 public ScreenDecalRender()
 {
     _input = Effect.Map <Sprite.IShaderInput>(true);
 }