Abstract: Developing a 3D graphics engine is hard. A 3D graphics engine has to be fast and has to be very flexible for being used in multiples projects. By writing a graphics engine in Smalltalk, we gain a huge flexibility for free. However, Smalltalk is not a fast programming language as C++. Newer low-level graphics APIs such as Vulkan, Direct3D 12 and Metal allows to communicate very fast with the graphics card by mapping memory buffers present in the graphics processing unit in the CPU address space. For Woden 2, we extended Smalltalk to get more performance in some critical sections, such as the math library. With these extensions we are able to write directly to the graphics card memory and to avoid marshalling/unmarshalling overhead. We made an abstraction layer for low-level graphics APIs (Vulkan, Direct3D 12 and Metal) in C that we are calling via FFI. For programming the GPU, we made a custom shader language with a compiler written in Smalltalk. This custom shader language can be compiled into graphics API specific shader languages for being executed by the GPU. This talk is about the challenges of the new architecture behind Woden 2, and about building an integrated environment for 3D graphics software development.
Bio: Ronie Salgado is the main architect behind Woden, a 3D graphics engine that won the third place in ESUG 2014, 11th innovation technology awards.