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); }
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); }
public ScreenDecalRender() { _input = Effect.Map <Sprite.IShaderInput>(true); }