Antarctica: Technical Details

m (added category:antartica + formatting)
(Links)
Line 31: Line 31:
=== Links ===
=== Links ===
-
* [[Renderer:Debug And Profiling]]
+
* [[antartica:Debug And Profiling]]
-
* [[Renderer:Performance]]
+
* [[antartica:Performance]]
-
* [[Renderer:Know_Drivers_Bug]]
+
* [[antartica:Know_Drivers_Bug]]
[[category:antartica]]
[[category:antartica]]

Revision as of 18:32, 15 December 2014

This page describes the new renderer (sometimes referred as Antartica engine or pipeline) used in STK.

The new renderer is using (almost) exclusively function from the core GL 3.3+ spec in order to take advantage of modern hardware feature. While it uses irrlicht graph traversal and irrlicht material manager to some extend, all meaningfull GL calls are done by this new renderer. Irrlicht's code is only used for context creation, framebuffer creation/binding, texture loading, and some offscreen rendering like minimap generation and kart selection viewer. It should be possible to completly handle the framebuffer creation and binding (it's already done for shadow map because of Irrlicht's lack of textures arrays), but texture loading requires some support from irrlicht, in order to be able to load our mesh.

It was decided to move from irrlicht OpenGL path when it appeared that Irrlicht wasn't designed to handle a light prepass renderer at all. Actually Irrlicht is designed to be compatible with a wide range of hardware and software combination (even unaccelerated rendering) and thus does not map very well to a full shader pipeline : for instance, there is no way to use custom vertex attributes in a shader, and texture/framebuffer are limited to GL_TEXTURE_2D. It turned out to be much easier to write a new renderer from scratch instead of patching our copy of Irrlicht (massive) codebase.


The main features of our renderer

See here for more information http://http.developer.nvidia.com/GPUGems3/gpugems3_ch24.html

First STK renders only normals (and soon glossiness) data to a single rendertarget. Light diffuse and specular are then computed used only this buffer, and then the second geometry pass occurs, provided with the diffuse and specular data. This kind of renderer (which is used in Cry Engine 3+) is similar to deffered shading (used in Unreal Engine 4 and Frostbite 2+) but with a different trade off : the bandwidth requirement is lowered as only a single intermediate render target is written to at the cost of an extra geometry pass.

See more information here http://seblagarde.wordpress.com/


Planned features

Links

Retrieved from "http://supertuxkart.sourceforge.net/Antarctica:_Technical_Details"

User Tools