Skip to content

Instantly share code, notes, and snippets.

@jbinvnt
Created March 31, 2023 19:20
Show Gist options
  • Save jbinvnt/2d21e0dfc45dbec05ca2f19d741c38f8 to your computer and use it in GitHub Desktop.
Save jbinvnt/2d21e0dfc45dbec05ca2f19d741c38f8 to your computer and use it in GitHub Desktop.
Initial GSoC 2023 Draft Proposal Header

GSoC 2023 OpenSCAD Proposal: OpenGL Modernization

Background

[...]

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.

[...]

Project Information

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

Project Summary

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment