This web site is intended to showcase my portfolio. For referring to the documentation of Woden, you can go here: woden.ronie.cl
The World Dynamic Engine, or just Woden is a multimedia engine that I am writing in Pharo, a dialect of Smalltalk. The main focus in Woden is in 3D graphics.
Unlike other graphics engine, the code in Woden can be modified while it is running, without restarting the application. This is made possible by using the live programming capabilities of Pharo.
Woden was presented in ESUG 2014, 11th Innovation Technology Awards, where it won the third place. Source
Woden Roassal is the successor of Roassal 3D, a data visualization framework written in Pharo.
The AbstractGPU is a low-level 3D graphics API that I am designing to abstract around the major graphics API. It is well known that writing 3D graphics software that is both portable and efficient is a tedious software engineering problem. This problem is tedious because of the existence of two low-level graphics API and several incompatible versions of them. These graphics API are Direct3D (MS Windows only) and OpenGL (cross platform).
In theory OpenGL should be the portable and efficient alternative, but in the real world it is not. Because of the widespread usage of Direct3D in videogames for Windows, OpenGL drivers are not well optimized or debugged in comparison to Direct3D drivers. This problem, and the old architecture of OpenGL, makes developing 3D software that is portable and efficient, a tedious work.
Currently I am working in backends for OpenGL 4 and Direct3D 12. In the future I am planning to support Vulkan, and probably OpenGL ES 3.0.
As for the shaders, it is possible to use the shader language used by the backend (GLSL, HLSL, Shader Model Bytecode). In the future, it should be possible to use a custom shader language that is compiled into GLSL, HLSL or SpirV. The shader compiler is being implemented in Python and it is in an early stage of development. The shader compiler already has a basic optimizing compiling pipeline in place (Source code -> AST -> Structured SSA -> High level backend).
Please bear in mind that this project is in an early implementation stage. There are many features missing.
YAQE is a quake style level editor for Woden, Quake and Half-Life that I am writing. There are still many features missing, but it is already possible to make a simple room with it.
I have been writing some bindings to use some C libraries in Pharo.
The VirtualGPU is a DSL to perform numerical computations in the GPGPU in Pharo.
Please bear in mind that this project is in an early stage of development. There are many features missing.