This thesis introduces a new method for simulating photon mapping in realtime. The method uses a variety of both CPU and GPU based algorithms for speeding up the different elements in global illumination. The idea behind the method is to calculate each illumination element individually in a progressive and efficient manner. This has been done by analyzing the photon mapping method and by selecting efficient methods, either CPU based or GPU based, which replaces the original photon mapping algorithms. We have chosen to focus on the indirect illumination and the caustics. In our method we first divide the photon map into several photon maps in order to make local updates possible. Then indirect illumination is added using light maps that are selectively updated by using selective photon tracing on the CPU. The final gathering step is calculated by using fragment programs and GPU based mipmapping. Caustics are calculated by using photon tracing on the CPU and the filtering which is performed on the GPU. Direct illumination is calculated by using shading on the GPU. We achieve real-time frame rates for simple scenes with up to 133.000 polygons. The scenes include standard methods for reflection and refraction and hard shadows. Furthermore, the scenes include our methods for progressively updated caustics and progressively updated indirect illumination. We have compared the image quality of our method to the standard photon mapping method and the results are very similar.