Raytracing with Compute Shaders!

I was really excited to hear new for Godot 4! In July 2021, was watching the Godot Engine developer Q&A and had asked in chat about planned features for shaders.

Specifically, I asked about plans for Geometry Shaders and Tessellation Shaders, to which Hugo Locurcio (Calinou) responded about planned support for Compute Shaders in Godot 4!

I was extremely excited to finally be able to play around with compute shaders! Which is why when Godot 4 beta 1 finally released, I couldn’t contain my excitement and immediately jumped onto trying them out!

Raytracing!

Through some exploring and trying to figure out how compute shaders were integrated into the engine, I eventually got a better understanding of the RenderingDevice and RenderingServer classes in Godot 4.

I prefer solidifying my learning experiences by trying to make a personal project using whatever I have learnt. So, after researching some of the uses for compute shaders for a while, I landed on the excellent raytracing series by Kuri (2018), which used compute shaders in Unity to create its raytracer!

Figure 1. Raytraced Spheres by Kuri (2018)

I thought this would be a fun project to try and recreate, and so I got to work on raytracer!

Finally, I documented my experiences and shared what I had learnt by creating a tutorial for compute shaders in Godot 4. You can watch the video here:

Source Code

GitHub

References and Resources Used

Kuri, D. (2018, May 3). GPU Ray Tracing in Unity – Part 1. Three Eyed Games. http://blog.three-eyed-games.com/2018/05/03/gpu-ray-tracing-in-unity-part-1/

Möller, T., & Trumbore, B. (1997). Fast, Minimum Storage Ray-Triangle Intersection. Program of Computer Graphics. https://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/pubs/raytri_tam.pdf

Scratchapixel. (2014, August 15). Ray-Tracing a Polygon Mesh (Ray-Tracing a Polygon Mesh (Part 2)). https://www.scratchapixel.com/lessons/3d-basic-rendering/ray-tracing-polygon-mesh/ray-tracing-polygon-mesh-part-2

Whitaker, R. B. (2009, January 21). Creating a Specular Lighting Shader. RB Whitaker’s Wiki. http://rbwhitaker.wikidot.com/specular-lighting-shader