Skip to content

Development Plans

Lance Putnam edited this page Dec 18, 2015 · 7 revisions

The purpose of this page is to list any code currently in development that may find it's way into the main repository.

Graphics

Isoline (Lance)

Like isosurface, but for 2D. Working, just needs to be cleaned up a bit.

Improved Shape Generation (Lance)

Current shape generation functions do not create normals or texture coordinates. A ShapeHint object could instead be passed into functions to encapsulate different mesh generation requirements.

Shader Generation (Lance)

For those accustomed to the highly-convenient, yet deprecated OpenGL fixed pipeline, it would be nice to have shaders for doing basic things like lighting, texture mapping, fog, etc. A shader generator would allow one to synthesize shader programs with the functionality they need. I currently have built a system that combines strings to build shader programs in a modular fashion. Functionality includes: pass-through, texture mapping, lighting (one light), fog, sky maps, and some post-processing effects (blur, bright-pass, grain).

PostProcess (Lance)

This is a class that encapsulates shader-based post-processing and feedback effects. Works fine for mono rendering, but needs some additions for stereo.

Mesh Instancing (Lance)

Add a flag to the Mesh class whether it should be stored on the GPU as a static VBO. Graphics would need to create and manage VBOs when needed. Another option would be to add a new MeshVBO object that could replace DisplayList.

Mesh Functions (Lance)

In progress:

  • baked lighting; one light working, but would like support for many
  • removal of thin triangles; useful for cleaning up marching cubes isosurface though currently O(n^2)!

I/O

Remove GLUT Dependency

It has already been replaced with Cocoa on OSX. As of at least OSX 10.9, GLUT is deprecated. Windows and Linux need a suitable replacement, like FreeGLUT or GLFW.

PROTOCOL

Byte Array Protocol (BAP) (Lance)

This is a simple protocol for sending byte data over serial. Initially used by Lance for teaching Arduino, it has matured into something both simple and robust. Could otherwise live in its own repo.

CSV (Lance)

This is a class for working with comma-separated value (CSV) files. Loading only at the moment.

SPATIAL

Parallel Transport (Lance)

Kind of an enhanced Frenet frame that minimizes twisting. Can be used for tubing and in theory smooth camera movement (not tested).

EXAMPLES

Math

  • interpolation functions
  • analytic surfaces
  • plane and space curves