Thursday, April 26, 2012

DirectCompute on Intel® Ivy Bridge

Here is a blog entry I wrote on DirectCompute for INTEL working with an Ivy Bridge machine.

http://software.intel.com/en-us/articles/microsoft-directcompute-on-intel-ivy-bridge-processor-graphics/

Let me know what you think.

Sunday, April 15, 2012

Tile-based Deferred and Forward Lighting

DirectCompute opened up new abilities to apply lighting to a scene. In the last three years, dealing with many lights in screen-tiles on DirectX 11 GPUs became a popular discussion topic, following implementations in major PS3 games like "Blur" and "Uncharted".
As long as you look only at the cost of light rendering, dealing with lights per screen-tile can make a huge difference in memory bandwidth consumption. In best case, data is read from the G-Buffer once and wrote into the light or framebuffer once. This is a major improvement compared to the Deferred Lighting approaches on DirectX 9/10 GPUs.
As soon as you add shadows to the equation, the line gets more blurry. Assuming that a next-gen game that requires many dynamic lights also requires many dynamic shadows (see my blog entry below "Shadows - Thoughts on Ellipsoid Light Shadow Rendering"), all the Tiled-based approaches come with a higher cost of shadow rendering compared to the Deferred Lighting approaches for lower-end hardware.
With old-style Deferred Lighting, the shadows are applied with each light source. That means -from a memory bandwidth standpoint- writing into the light or framebuffer happens only once for the light and the shadow and many arithmetic instructions can be shared.
Any Tiled-Based approach will want to create all the shadow data before lighting. To do this, G-Buffer data need to be read for each light that is supposed to cast a shadow. Additionally for each light that is supposed to cast a shadow, the data need to be written into the light or framebuffer.
In other words, if each light casts a shadow, any Tiled-Based approach won't offer much gain anymore when compared to Deferred Lighting on DirectX 9/10 GPUs.
Following this train of thought, it would be better to stick with old-style Deferred Lighting, because it offers a fall-back path that is consistent throughout many hardware platforms.

That being said, I consider the introduction of Tiled-Based Forward rendering a major step forward, because it offers a consistent way to deal with "alpha-blended" objects. So far everyone created a separate lighting system to deal with objects that are not in the depth buffer. This lighting system was usually simpler and not capable to render many lights.
With Tiled-Based Forward rendering, we can replace the simpler system with a lighting system that deals with many lights on "alpha-blended" objects and make it more consistent with the lighting on objects that can be captured in the depth buffer.
That is exciting. Unfortunately this will still be only available on DirectX 11 hardware but it is a huge step forward.

Friday, February 10, 2012

Masterclass - GPU Programming

Game connection will offer another Masterclass with me on GDC:

http://www.game-connection.com/gameconn/content/gpu-programming

GDC / Catching up

Lot's of things are happening. Confetti will have three demos running on a PC on the booth:

1. RawK III that shows our latest version of our Global Illumination middleware, PostFX pipeline and Particle system
2. SpeedTree - we teamed up with SpeedTree and integrated our Skydome middleware into their demo
3. Sponza that demos our Global Illumination middleware in the typical Sponza scene

We updated our website with new movies and screenshots in preparation for GDC.

I will be offering my third Masterclass for graphics programmers on GDC (previous ones were in 2010 and 2011 in Paris).

Confetti helps to organize and sponsors an online conference at

http://altdevconf.org/

It is free and you can sign up for our talk -that will be given on Sunday 2pm- at

https://www4.gotomeeting.com/register/846958367

GPU Pro 3 should be available at GDC.

Monday, January 30, 2012

Reviving this blog

I started to revive this blog after posting for a while on AltDevBlogADay. I first brought my old posts over from AltDev and started working on a few new ones.
This also gives me a chance to differ between Confetti's blog and this private blog. Confetti's (www.conffx.com) blog will hold most of the time company related information and this blog will cover more technical information that might not have anything to do with what we do at Confetti.