Posts

2017 Mid-Year Update

I recall that I mentioned in one of my earlier posts, I would make a post about the implementation of Screen Space Directional Occlusion. I apologise for not having the time to do that, but I've now embarked on a journey to learn all of the essentials I need to understand before I delve deep into Computer Graphics.  I've been following a couple of MIT OpenCourseWare courses, and I've also purchased a couple of books, of which the most recent is "Real Time Rendering", the Third Edition. It's an amazing book, comprehensively covering a multitude of topics concerning the basics of real time rendering for interactive applications. I recommend it to anyone interested in real time rendering :) This was just a quick update for anyone who's following this blog (though according to the recent activity there's practically no one following the blog, so I guess that means this entire post is just me talking to myself???). See ya!

Global Illumination -- which technique should you use?

Image
Global illumination is a process that simulates indirect lighting. In the real world, light bounces around. Rays of light bounce off of walls and keep bouncing, and they don't stop. Unless we can simulate this, we'll never be able to render realistic lighting. However, due to the limitations of our present-day technology, we don't even have an efficient algorithm that simulates two bounces of light. I mean, yeah, we've got Global Illumination with Voxel Cone Tracing , but it lags a lot on mid-end devices and it isn't exactly an ideal solution for games that are targeted at consoles and mid-end computers. Ambient Occlusion techniques (SSAO being the most popular one) aren't considered to be part of Global Illumination, although they're often lumped together. Recently we reviewed SSDO (screen-space directional occlusion), which efficiently simulates a single bounce of light. We also have Light Propagation Volumes (LPV) which is used in some of the most popul

Screen Space Directional Occlusion -- Is it worth it?

Image
I don't pretend to be some sort of expert on computer graphics, but I just thought I'd share a couple of my thoughts on screen-space directional occlusion (SSDO). This is a (rather old) successor to the ever-popular SSAO (screen-space ambient occlusion), and SSDO has a couple of improvements. I recently read the research paper and tried to wrap my 14-year-old mind around it (to no avail). I'm still trying to understand it, but I think I know enough to tell if it's worth moving from SSAO to SSDO. The latest version of CryEngine still lists SSDO as one of the main features on their website. I think that's more than enough reason to consider implementing SSDO. But what improvements does SSDO bring? Why should you prefer it over SSAO? 1) It adds directional shadows and indirect colour bleeding 2) Does not introduce any new artifacts 3) It's done in screen-space, so it doesn't depend on the number of polygons in the scene. Here's a description of SSDO

Screen-Space Ambient Occlusion -- VICTORY!

Image
Yesterday, I managed to implement screen-space ambient occlusion. Next up: global illumination with voxel cone tracing. Or maybe screen-space directional occlusion. Nah, I think it'll be the former. No. of samples: 64 (a little overkill, but whatever) Radius: 3 Hey, there, dragon! You lookin' pretty nice today! Oh, yeah, and I used John Chapman's tutorial (as well as learnopengl.com's tutorial). To remove the noise pattern (I used a noise texture to randomly rotate the normal-oriented hemispherical sample kernels), I applied a single-pass Gaussian blur with a blur radius of 2. See you again! P.S. I used LWJGL, because Java is the language I'm most fluent in.