Upcoming Events
Southwest Gaming Expo
11/20 - 11/22 @ Dallas, TX

Workshop on Network and Systems Support for Games (NetGames 2009)
11/23 - 11/25 @ Paris, France

ICIDS 2009 Interactive Storytelling
12/9 - 12/11 @ Guimarães, Portugal

Global Game Jam
1/29 - 1/31  

More events...


Quick Stats
6618 people currently visiting GDNet.
2341 articles in the reference section.

Help us fight cancer!
Join SETI Team GDNet!



Link to us

Link to us

  Intel sponsors gamedev.net search:   
Frostbite Rendering Architecture and Real-Time Procedural Shading and Texturing Techniques
Posted March 13 10:45 PM by Richard Fine
This was an hour-long session presented by Natalya Tatarchuk from ATI and Johan Andersson from DICE. Natalya opened with a brief review of procedural textures, enumerating some of their benefits - they're smaller, resolution independent, and often don't require UV coordinates to be created and stored - and then handed over to Johan who spoke about the details of DICE's Frostbite rendering engine, the next-generation engine they are using for Battlefield: Bad Company. After showing us a trailer for the game - rendered in-engine - Johan dove into the architecture of the engine.

All rendering systems in Frostbite - be they characters, buildings, vehicles, terrain, etc - all make their render calls via a platform-independent "shader subsystem." This subsystem is responsible for handling all the shaders used by the game, managing combinations and state switches. Rather than explicitly dealing with vertex or pixel shaders, Frostbite has the more general concept of a "surface shader," as per the Renderman terminology. These shaders are graph-based, such that they can be built by artists who drag and drop components onto a canvas and wire them together; the system then takes care of generating appropriate vertex and pixel shaders from the graph.

Two particular features were noted to help them manage the growing complexity of some of the shaders. Firstly, a generic "script node" exists in their system, allowing them to replace the really in-depth mathematical constructions - things that would be painful to achieve with the building blocks approach - with text-based scripts (appeared to be in HLSL). Secondly, they have the concept of 'instance shaders' - shader graphs that can be packaged as a single node and used in other graphs. Johan showed an example of a 'general purpose material' node that had a large number of inputs and a fairly involved graph network inside it.

Johan also showed off the terrain texturing system, using a technique he referred to as "procedural shader splatting" - like regular texture splatting, it seems, but using procedural shaders instead of regular textures - and he also showed off the undergrowth rendering which is achieved using instancing.

Natalya returned to the microphone to finish the talk with a brief demonstration showing realtime procedural rendering of a snow effect over a mountainscape, using fractional Brownian motion noise to generate displacements.
 
 
Menu
 Back to GDC 2007
 See more Programming
 Discuss this article