Implementing Voxel Cone Tracing
[Updated on 25-2-2013: added a paragraph about lowering the voxel update frequency for faster dynamic update. The demo also added a combo box for choosing the update frequency] Introduction In last...
View ArticleAngle based SSAO
Introduction SSAO (Screen space ambient occlusion) is a common post processing effect that approximate how much light is occluded in a given surface by the surrounding objects. In this year SIGGRAPH,...
View ArticleShader Generator
Introduction In the last few weeks, I was busy with rewriting my iPhone engine so that it can also run on the Windows platform (so that I can use Visual Studio in stead of Xcode~) and most importantly,...
View ArticlePhoton Mapping Part 2
Introduction Continue with previous post, this post will describe how light map is calculated from the photon map. My light map stores incoming radiance of indirect lighting on a surface which are...
View ArticlePhoton Mapping Part 1
Introduction In this generation of computer graphics, global illumination (GI) is an important technique which calculate indirect lighting within a scene. Photon mapping is one of the GI technique...
View ArticleSoftware Rasterizer Part 2
Introduction Continue with the previous post, after filling the triangle with scan line or half-space algorithm, we also need to interpolate the vertex attributes across the triangle so that we can...
View ArticleSoftware Rasterizer Part 1
Introduction Software rasterizer can be used for occlusion culling, some games such as Killzone 3 use this to cull objects. So I decided to write one by myself. The steps are first to transform...
View ArticleLight Pre Pass Renderer on iPhone
Introduction About a month ago, I bought an iPhone 4s, so I write some code on my new toy. Although this device does not support multiple render target(MRT), it do support rendering to a floating point...
View ArticleExtracting dominant light from Spherical Harmonics
Introduction Spherical Harmonics(SH) functions can represent low frequency data such as diffuse lighting, where those high frequency details are lost after projected to SH. Luckily we can extract a...
View ArticleInverse Kinematics (2 joints) for foot placement
Introduction Game sometimes need to solve Inverse Kinematics (IK) for more realistic look like foot placement on a terrain. There are different methods to solve an IK problems, some are numerical...
View ArticleWriting an iPhone Game Engine (Part 7- Postmortem)
Introduction The first game that made with the iPhone game engine described in this series is released before Christmas on App Store, it is called Monster Bowling. You may surprise that the final...
View ArticleMicrofacet BRDF
Introduction In recent years, there are more and more papers talking about applying physically based BRDF in games. So I decided to spend some time to investigate it. For a BRDF to be physically...
View ArticleSpherical Harmonic Lighting
Introduction Spherical Harmonics(SH) functions are a set of orthogonal basis functions defined in spherical coordinates using imaginary numbers. In this post, we use the following conversion between...
View ArticleDual Quaternion
Introduction Continue to the last post which introduce Dual Number, it can be extended to Dual Quaternion. Dual Quaternion is similar to Quaternion with all the real numbers replaced by dual numbers:...
View ArticleDual Number
Introduction Recently, I read the “Spherical Skinning with Dual-Quaternions and QTangents” from Crytek. It raised my interest on the topic of “Dual Number” (which is related to Dual Quaternion). Dual...
View ArticleUsing PID Controller
Introduction Several weeks ago, I need to implement a game screen for user to choose a level. At that time, I read some post and article about using PID controller for controlling the behavior of a...
View ArticleWriting an iPhone Game Engine (Part 6- Performance)
Introduction Performance of a game is very important, it is important to maintain a constant frame rate of a game. So I will talk about how I keep track of the performance of the game. However, the...
View ArticleWriting an iPhone Game Engine (Part 5- Audio)
Introduction Every games should have an audio system. In my little engine, it supports 2 types of sound: 3D effects sounds and BGM. Separate this 2 types because the BGM can be decoded on hardware. A...
View ArticleWriting an iPhone Game Engine (Part 4- Streaming)
Introduction My game is an open world game. The player can freely explore the game world. It is impossible to load all the game objects when the game start, so my engine should be able to stream in the...
View ArticleWriting an iPhone Game Engine (Part 3- Scripting)
Adding script support to an engine has many benefits such as writing game play code without recompile the engine source code which may takes a long time. It also can draw a much clear boundary between...
View Article