[...]
Last summer, I was a Google Summer of Code contributor for OpenSCAD. My 2022 project can be viewed here. That helped me gain familiarity with the rendering codebase, which I expect would help me ramp up more quickly on the project I'm proposing this year.
[...]
OpenSCAD mainly still relies on legacy "fixed-function" or "immediate mode" OpenGL to render the user's 3D model. With this older method, the vertices and shading color of surfaces are specified on an individual triangle basis.
Other parts of the OpenSCAD codebase provide the groundwork to instead use the newer approach of utilizing Vertex Buffer Objects (VBOs) to hold data that the GPU will use to render. This modern method enables the use of programmable GLSL shaders that can dynamically alter the appearance of objects. My 2022 GSoC project added support for these shaders. Still, there is a large set of additional work required in order to enable a robust rollout of these new capabilities.
Project Title |
---|
OpenGL Modernization |
The project would undertake the necessary code restructuring to facilitate OpenSCAD's transition to rendering with modern OpenGL. An important early step will be adding clear deliniation between code paths that result in underlying calls to the two different rendering methods. This groundwork would then grow into developer-controlled flags that would enable the eventual deprecation of the legacy fixed-function calls. Part of the process will involve assessing the readability and testability of higher-level rendering classes and performing refactoring in line with guidance from other developers. Another key area of focus includes assessing and implementing any remaining workarounds needed to replicate the information exchanged between OpenCSG and the legacy rendering classes.