Thanks for the detailed explanation. I wonder if I understood it after reading that Ubisoft's pdf and so on...I suggest reading this GDC presentation by Jalal Eddine El Mansouri. It has detailed description of the checkerboard rendering technique: http://www.gdcvault.com/play/1022990/Rendering-Rainbow-Six-Siege
As far as I know this particular kind of checkerboard rendering was invented a few years ago at Ubisoft. Of course every new rendering technique borrows/adapts ideas from others, so it is hard to say who exactly invented it. Killzone Shadow Fall's interlacing (1080p 60 fps multiplayer mode on PS4) was similar, but a slightly less advanced technique. I believe Drobot's research (he was also working for Killzone SF before joining Ubisoft) influenced the whole real time rendering field. His 2014 article (https://michaldrobot.com/2014/08/13/hraa-siggraph-2014-slides-available/) is a must read. This technique used both MSAA subsample tricks and temporal reconstruction. Brian Karis' (Epic/Unreal) temporal supersampling article was also highly influential (https://de45xmedrsdbp.cloudfront.net/Resources/files/TemporalAA_small-59732822.pdf). Jalal's presentation also mentions my research (as a reference): http://advances.realtimerendering.c...siggraph2015_combined_final_footer_220dpi.pdf. Our 8xMSAA trick (two samples per pixel) could be seen as subpixel checkerboarding (regarding to antialiasing).
Rainbow Six Siege was released one year ago on Xbox One and PS4. It used 1080p checkerboard rendering. 4K obviously makes pixels 4x smaller, making checkerboarding even more valid technique. Even if reprojection fails (= areas not visible last frame), 4K checkerboard still results in 2x higher pixel density than 1080p.
Yes. You need per sample frequency shading if you are going to use the common (2xMSAA) way of implementing it. You don't need programmable sampling patterns, since you can shift the render target by one pixel to the left (0<->1 pixel alternating projection matrix x offset). The standard 2xMSAA pattern is exactly what you want (https://msdn.microsoft.com/en-us/library/windows/desktop/ff476218(v=vs.85).aspx). 2xMSAA checkerboarding requires one pixel wider render target (first or last row is alternatively discarded). Jalal's presentation has some images about this.
DirectX 10 added support for sample frequency shading (SV_SampleIndex). DX10 also added support for reading individual samples from MSAA textures (Texture2DMS.Load). Any DirectX 10 compatible hardware is able to perform checkerboard rendering. Last gen consoles had DX9 feature sets, didn't support per sample shading and didn't have standardized MSAA patterns. As there were no DX10 consoles, this makes Xbox One and PS4 the first consoles capable of this technique.
- This technique takes 2 x 2 pixels patterns as samples to work with.
- It is like MSAA x 2.
- Those two 2x2 patterns are the odd one and the even one, like numbers.
- Say you have a 4 x 4 chess board (a square);
odd 2x2 pattern to the left, even 2x2 pattern to the right.
- They are in solid blocks of 4 (2x2)
- But, if you split them and you combine them, it's like a checkers game board you get something like this
The black squares are from different colours in an actual game, not just black.
- It is much much better than upscaling because it adds geometry to the scene, it just doesn't keep the geometry like upscaling.
- The PS4 Pro does it in hardware, which makes it even better --Jonathan Blow commented once that it might come at a cost in some titles.
Finally, now that you mention it.. Is this technique available to other apis other than D3D 10 and above?
Last edited: