Rendering 3D Graphics on a 32×32 RGB LED Matrix Display with a Raspberry Pi and GeeXLab
0 Members and 1 Guest are viewing this topic.
Linked List Antialiasing and Edge Resamplingby Alex NankervisRenders the scene at a resolution lower than the screen resolution (1/10th x 1/10th resolution, in this case) and stores a linked list of fragments that touch each pixel, along with enough information about each fragment to reconstruct the edges of the triangle that produced it. A custom resolve shader then traverses the linked list of fragments for each pixel, and calculates coverage at a higher resolution. The end result combines the lower-resolution shading with full-resolution, antialiased edges (3x3 antialiasing in this example). Conservative rasterization of the scene geometry is used to ensure adequate coverage of fragments to produce the final, upscaled image.Compared to image post-processing techniques such as FXAA and MLAA, the performance leaves a bit to be desired and the implementation is fairly intrusive (requiring modifications to fragment and geometry shaders to implement conservative rasterization and the linked list of fragment data). However, this technique does have the advantages of separating the shading resolution from the output geometry resolution (for shading-heavy applications, you could reduce the shading workload while still keeping sharp geometry edges), allows for higher quality antialiasing than MSAA or image post-processing AA, and provides a straightforward avenue to implement order-independent transparency using the existing linked list and resolve shader infrastructure.Requires OpenGL 4.3