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.
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.
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.
Sunday, December 19, 2010
Fast Skin Shading Revisited
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!
Saturday, October 9, 2010
Lone Wolf Never Dies
Back in 2006, i joined a game company called Ksatria Gameworks and worked on my first commercial game project named "Lone Wolf: Flight From The Dark". Sadly, due to insufficient funding, the project was cancelled in 2009. It has been close to two years since, the company is no longer around and all the team members have moved on to bigger and better things in life. But there is still a place where remnants of the lone wolf project still lives on...on youtube! Apparently, videos of the lone wolf project that was previously available on the official website was uploaded to youtube as well and till now they are still viewable! All hail the power of the internet!
I have gathered all the video links and posted them below for those who are interested in viewing them...though you might want to skip the first minute for a couple of the videos below. (Ex-Ksatrians will know the reason why :))
Enjoy!
I have gathered all the video links and posted them below for those who are interested in viewing them...though you might want to skip the first minute for a couple of the videos below. (Ex-Ksatrians will know the reason why :))
Enjoy!
Sunday, May 16, 2010
Ambient Lighting Using Irradiance Environment Maps
Back when i was developing MageDx Tech Demo I & II, i had implemented the scene's ambient lighting using a precomputed diffuse convoluted environment map generated from a static HDR skybox. This solution worked fine until i have added dynamic sky to the engine. The precomputed diffuse convoluted environment map in this case is no longer valid for the scene because of the dynamic nature of the new sky lighting. As a simple temporary workaround, i have used a constant grey color to represent the ambient lighting for the entire scene.
Over the weekend, i had some free time to spare so i thought it would be a good time to revisit this problem and implement a solution for it. After thinking through some potential solutions, i ended up implementing a slimmed-down version of a rendering technique known as Irradiance Volumes.
In my implementation, instead of generating a grid of irradiance samples over the entire scene as described in the paper, i have just one sample measuring the irradiance from only the dynamic sky. This sample is updated whenever the sun moves beyond a certain threshold. Objects in the scene then samples from this irradiance sample using their world normal to get the ambient lighting contribution from the sky. Below is a screenshot showing the same scene in different ambient lighting conditions.
Over the weekend, i had some free time to spare so i thought it would be a good time to revisit this problem and implement a solution for it. After thinking through some potential solutions, i ended up implementing a slimmed-down version of a rendering technique known as Irradiance Volumes.
In my implementation, instead of generating a grid of irradiance samples over the entire scene as described in the paper, i have just one sample measuring the irradiance from only the dynamic sky. This sample is updated whenever the sun moves beyond a certain threshold. Objects in the scene then samples from this irradiance sample using their world normal to get the ambient lighting contribution from the sky. Below is a screenshot showing the same scene in different ambient lighting conditions.

Ambient lighting in the scene under different sky lighting conditions
Because the irradiance sample is sampled using the world normal of an object (or in this case the per-pixel normal from a normalmap transformed to world space), the bumpy details of normal mapping are retained for objects in shadowed areas.

A constant grey color is used to represent the ambient lighting for the scene, objects in the shadows looks flat and dull

The same scene with objects sampling from the irradiance sample for ambient lighting. Notice how the details of normal mapping is still visible in shadowed areas

A constant grey color is used to represent the ambient lighting for the scene, objects in the shadows looks flat and dull

The same scene with objects sampling from the irradiance sample for ambient lighting. Notice how the details of normal mapping is still visible in shadowed areas
Although my implementation is not a full accurate ambient solution, it works well enough for the small outdoor scenes that i have been using so far. Perhaps in the future i might revisit and improve on this solution when i start having more complicated scenes.
Thursday, May 6, 2010
PhysX Cloth Physics
Cloth physics belongs to one of those features that i have been wanting to implement after seeing how they operate in games such as Mirror's Edge and Batman Arkham Asylum. So after spending a few hours coding after work for about a week or two, i finally managed to integrate cloth into MageDx using PhysX. In addition to traditional cloth simulation, i have also incorporated softbody and metal deformations, both using PhysX cloth as well. As usual i have uploaded a video showcasing cloth simulation in MageDx which you can find below. Note that the low framerate in the video was caused by FRAPS video capturing while running the tech demo and under normal circumstances the framerate is a steady >60 FPS. Anyway, enjoy the video!
Subscribe to:
Posts (Atom)



