The Textures Shading Cache – An Approach to Asynchronous Interactive Illumination

In computer graphics rendering refers to the process of synthesizing an image from a mathematical description of a scene. Traditionally, interactive applications based on GPU- accelerated rasterization utilize techniques that approximate the effects of light within a scene, sacrificing correctness (realism) in favour of maintaining interactivity [2, 3, 4]. In order to increase the realism of rendered images, light- transport algorithms that correctly simulate the propagation of light in a scene are increasingly being used in interactive rendering. These algorithms push the computational bottleneck in interactive visualization towards the shading of pixels in an image and can, especially on low-end GPUs, negatively impact interactivity.

Figure 1. Basic scene, rendered using the method followed [or] adopted in the study

This project explores the effects of decoupling physically correct shading computations from the traditional rasterization-based rendering process, through the creation of a texture cache (see Figure 2). This cache is kept updated asynchronously at run-time. A simple scheduler determines which shading computations are to be computed asynchronously, and which would be executed in lock-step with frame rendering, through the traditional approach. This was done with the aim of achieving a stable frame rate without dips (sudden drops in frame rate) or stuttering (irregular delays between frames), whilst preserving image quality. A solution was implemented in C++ using the OpenGL API for the traditional renderer. Moreover, a path tracer [1] was built using Nvidia Optix for the asynchronous calculations. A texture atlas is used as the texture cache, where each primitive in the scene is allocated a space within this atlas during run-time.

The proposed solution was evaluated thoroughly to assess the effectiveness of the concept with respect to both performance and image quality. Three modes were evaluated, in particular: decoupling of all the shader computations as illustrated in Figure 1; decoupling only of the texture and bounce-lighting computations; decoupling only the bounce- lighting calculations. The performance of each mode was evaluated, measuring both frames per second and memory usage. Furthermore, the quality of the images produced was also determined using standard image-quality metrics HDR- VDP and SSIM against high-quality versions of the scenes rendered offline.

Figure 2. Texture cache output for the scene portrayed in the accompanying image


[1] James T. Kajiya. 1986. The rendering equation. SIGGRAPH Comput. Graph. 20, 4 (Aug. 1986), 143–150. DOI:https://doi. org/10.1145/15886.15902

[2] Bui Tuong Phong. 1975. Illumination for computer generated pictures. Commun. ACM 18, 6 (June 1975), 311–317. DOI:https://doi. org/10.1145/360825.360839

[3] Lance Williams. 1978. Casting curved shadows on curved surfaces. SIGGRAPH Comput. Graph. 12, 3 (August 1978), 270–274. DOI:

[4] Tobias Ritschel, Thorsten Grosch, and Hans-Peter Seidel. 2009. Approximating dynamic global illumination in image space. In Proceedings of the 2009 symposium on Interactive 3D graphics and games (I3D ‘09). Association for Computing Machinery, New York, NY, USA, 75– 82. DOI:

Student: Aidan Cauchi
Course: B.Sc. IT (Hons.) Computing Science
Supervisor: Dr. Sandro Spina
Co-supervisor: Dr. Keith Bugeja