Wednesday, July 10, 2013

GPU Pro 4

I received my copy of GPU Pro 4 this evening. At first glance, the following chapters "Tiled Forward Shading" and "Forward+: A Step Toward Film-Style Shading in Real Time" seems particularly interesting to me since that would be the lighting/shading approach i will be exploring for MageDx in the future. I can foresee a fun weekend ahead reading through the entire book. :)

Monday, July 8, 2013

Experimenting with Screen Space Local Reflections

Recently, i just completed Dead Space 3 (which is a pretty good game imo) and noticed that in the game, the reflections on the floors and walls seems to be utilizing Screen Space Local Reflections (SSLR), a rendering technique that first appeared in Crysis 2. SSLR, with its rather modest computation cost, provides real-time local reflections for all on-screen objects that would otherwise be prohibitively expensive to compute using traditional reflection rendering approaches. 

Over the weekend, i had some free time and motivation (finally!) to research and implement SSLR. My initial incomplete implementation of SSLR yields some nice results. Below is a pair of screenshots showing a scene with SSLR off/on. Stay tuned for more posts detailing my implementation of SSLR.

Screen space local reflections (SSLR) off

Screen space local reflections (SSLR) on

Saturday, September 8, 2012

SIGGRAPH 2012 Advances in Real-Time Rendering in Games Presentations Slides

SIGGRAPH 2012 Advances in Real-Time Rendering in Games presentations slides are finally up online and can be found here. So many interesting presentations, you just gonna have to read them all!

Monday, July 30, 2012

Scalable Ambient Obscurance

This morning while browsing for random stuff, I found this new interesting article named Scalable Ambient Obscurance. In the paper, they mentioned a performance increase of up to 7x at resolution 2560x1600 and higher occlusion quality when compared to previous screen space ambient occlusion implementations. The publishing of the article came at a great time because I am looking to replace my old SSAO implementation with one that is more efficient and higher quality. Maybe one of these days when I have the free time, I will try implementing it into MageDx.

On a side note, I realized it is almost one year since my last post. I have been pretty busy this past year working on one of the many games developed by Zealot Digital. Despite the busy work schedule, I still do work on MageDx occasionally. In fact, recently I just finished implementing another graphical feature, so stay tune for another update post soon.

Sunday, July 31, 2011

Fast Approximate Anti-Aliasing (FXAA)

For the past one year, screen space anti-aliasing techniques has been receiving more research attention, mostly due to the rapid adoption of deferred lighting/shading (where MSAA is not always applicable) in modern rendering engines. The latest variant of these techniques such as MLAA, DLAA, and FXAA delivers comparable quality anti-aliasing at lower performance cost than traditional MSAA.

Since i have switched from a traditional forward renderer to a light pre-pass renderer in MageDx, FXAA seems to be the ideal anti-aliasing solution that i have been looking for.

My implementation which is based on FXAA 3.11, uses the settings FXAA_PC, FXAA_QUALITY__PRESET 20 and all input constants set to their default values. Below are 2 comparison screenshots with FXAA enabled/disabled.

Comparison of a scene with and without FXAA

FXAA works well on alphatested polygon edges

Sunday, December 19, 2010

Fast Skin Shading Revisited

A screenshot of the free 3D human head scan model provided by Infinite-Realities rendered in MageDx

Sometime last week, i stumbled upon this website called Infinite-Realities and found out that they are offering a free download of their 3D head scan model. Incidentally around the same time last year, i was working on a skin rendering implementation and was looking around for a detailed 3D human head model (Though in the end i have to make do with an ogre look-alike head). So over the weekend, i decided to download the 3D head scan model and revisit my skin rendering implementation with it.

The first improvement i made on the skin rendering was the addition of the stretch correction map mentioned in GPU Gems 3. Because the distance of a surface in texel space and world space can be different, a naive blur in texture space will cause over blurring of texels around curves surfaces such as around the ears and the nose. The stretch correction map compensates for this over blurring by reducing the blur kernel width around curves surfaces.

The second improvement made was actually a bug fix on the computation of the kelemen/szirmay-kalos specular term. It turns out i was inverting the y-coordinate while sampling into the beckmann distribution texture.

The skin rendering looks more impressive when in motion therefore i have uploaded a video which you can view below. Enjoy!