SurfaceFormat.HalfVector4 vs SurfaceFormat.Rgba64

i wont like to get a hdr color for emmisive buffer both 16bit floating point format give me differrent color output

—here is the shader
half4 emissive = tex2D(emissiveSampler, input.UV);

Out.RT3 = emissive *exp(0.7 * 10); // output to rendertarget

–here is the rendertarget i use


_emissiveBuffer = new RenderTarget2D(_device, _device.Viewport.Width, _device.Viewport.Height, false, SurfaceFormat.HalfVector4, DepthFormat.None, 0, RenderTargetUsage.DiscardContents);

_emissiveBuffer = new RenderTarget2D(_device, _device.Viewport.Width, _device.Viewport.Height, false, SurfaceFormat.Rgba64, DepthFormat.None, 0, RenderTargetUsage.DiscardContents);

SurfaceFormat.Rgba64 is a 16-bit unsigned integer per channel. As to why rendering to a float format doesn’t appear to work, I’m not sure why.

sry, it’s was my mistake i should not multiply entire half4 include alpha channel. i should only multiply emissive.rgb for my case to make it work. btw does monogame support vector4 for PreferredBackBufferFormat?

i try to do this it’s crash
graphics.PreferredBackBufferFormat = Microsoft.Xna.Framework.Graphics.SurfaceFormat.Vector4;

  1. wat is the different between Color.SRgb vs HalfVector4, they both give me the same color output.

3)i did check my GraphicsDevice.Adapter.SupportedDisplayModes. it’s said only support Color format, but i got different output when i put

graphics.PreferredBackBufferFormat = Microsoft.Xna.Framework.Graphics.SurfaceFormat.Color;

graphics.PreferredBackBufferFormat = Microsoft.Xna.Framework.Graphics.SurfaceFormat.HalfVector4;

why? gamma & exposure is same value.

Back buffer formats are to be displayed on the display device and must be an unsigned ARGB or RGB format. if it crashes, that is something we should fix. It is a preferred back buffer format, and as such may not be the actual format you get. This is how XNA worked.

sRGB and linear RGB differences explained.

i added no. 3 question can you pls explain to me?

I’m no expert in colour spaces, so I can’t answer that question. Perhaps someone else here might be able to shed some light on it.

I tried setting different backbuffer formats in XNA, but they all fell back to Color. In MG everything except Color crashed for me, but the solution is not as simple as catching and then retrying with Color. In the XNA docs it says if the preferred format is not available they find the supported format that is most like the preferred one… So it’s a bit hard to figure out what actually happens especially since you’d need a bunch of different devices to test this properly.