For Blender 2.8 we are refactoring the OpenGL drawing system to replace legacy code and switch to OpenGL 3.3 core and OpenGL ES 3.0 minimum.
Once the underlying code has been refactored, we can more easily improve performance, add a PBR material workflow, bring OpenSubdiv to our Mac users, implement more viewport effects and so on.
The pared down OpenGL core profile is also much closer to Vulkan, should we want to support that in the future.
For Blender 2.77 we already require a minimum of OpenGL 2.1, which means support for VBOs and shaders is always available. We are continuously refactoring OpenGL in the master branch to replace features that are deprecated in modern OpenGL, while still keeping Blender functional. In the Blender 2.8 branch we have increased the minimum OpenGL requirements to allow more drastic changes. See T49012 for details.
There are various things to be done, but we still need to work out the designs before we can split up things into bite size tasks for more volunteers to get involved.
- Shaders: fixed function lighting and texturing replacement by GLSL
- Immediate mode and display list removal
- Matrix stacks and transform functions
- Derived mesh and vertex attribute handling
Tasks to work on are also listed in T49165
You can always find developers in our IRC channel: irc.freenode.net #blendercoders
Or join the viewport mailinglist: http://lists.blender.org/mailman/listinfo/bf-viewport
A script for regression testing exits in the tests repository. It can be used to automatically take screenshots of .blend files with an old and new Blender build and compare them.
When doing major refactoring you can for example compare all test .blends, to find any unexpected changes.
./opengl/test_regression.py /path/to/new/blender /path/to/old/blender */*.blend
When we switch to the OpenGL 3.3 core profile in Blender 2.8, addons that do OpenGL drawing will no longer be able to use deprecated functions. Old functions have already been removed from bpy.
We will give addon writers a way to draw into editors, but the exact API needs to be designed.