Project

General

Profile

Feature #1900

Feature #7: Next-gen renderer (codename "Gloom")

OpenGL 3.3 Core Profile

Added by skyjake over 6 years ago. Updated almost 4 years ago.

Status:
Closed
Priority:
Urgent
Assignee:
Deng Team
Category:
3rd party compatibility
Target version:
Start date:
2014-11-18
% Done:

100%

Tags:

Description

The OpenGL 2.1 Compatibility profile that Doomsday has been using hitherto is rapidly becoming a thing of the past. Modern OpenGL is evolving at a healthy pace, and OpenGL drivers have the best support for the more recent versions. I've done some tests that indicate that for instance with Intel HD Graphics, things like multisampled render buffers work better when using OpenGL 3.3 Core profile.

In practice, we should probably just target OpenGL 3.3, since the latest OpenGL is already at version 4.

By migrating to OpenGL 3.3, we'll be automatically doing most of the work required to support OpenGL ES 2.0.


Related issues

Related to Feature #1675: Switch to new Qt 5.4+ OpenGL APIs (from QGLWidget)Closed2013-10-24

Related to Feature #1623: ShadersProgressed2013-03-01

Related to Feature #1991: Qt 5.5 as minimum requirement for GUI, Qt 5.x for non-GUI buildClosed2015-03-10

History

#1 Updated by skyjake over 6 years ago

  • Parent task set to #7

#2 Updated by skyjake over 6 years ago

  • Related to Feature #1675: Switch to new Qt 5.4+ OpenGL APIs (from QGLWidget) added

#3 Updated by skyjake over 6 years ago

#4 Updated by skyjake over 6 years ago

It is also worth noting that the 3.3 core profile supports multisampled textures, removing the need for multisampled render buffers completely (no need to render first to a buffer and then blit to a texture).

#5 Updated by skyjake about 6 years ago

  • Status changed from New to In Progress
  • % Done changed from 0 to 10

#6 Updated by skyjake about 6 years ago

This work has been started in the opengl3.3 branch, although the crucial step of switching to QOpenGLWindow has not yet been tackled.

#7 Updated by skyjake almost 6 years ago

  • Target version changed from 42 to 2.0 – Home UI & Packages

#8 Updated by skyjake almost 6 years ago

  • Priority changed from Normal to High

#9 Updated by skyjake almost 6 years ago

  • Priority changed from High to Urgent

#10 Updated by skyjake almost 6 years ago

  • Related to Feature #1991: Qt 5.5 as minimum requirement for GUI, Qt 5.x for non-GUI build added

#11 Updated by skyjake almost 6 years ago

QOpenGLWindow and QOpenGLWidget were added in Qt 5.4, so the minimum required version of Qt would have to be 5.4. This would not be an issue with Windows and OS X, however Linux distros typically have somewhat older versions of Qt 5 available.

#12 Updated by skyjake about 5 years ago

  • Target version changed from 2.0 – Home UI & Packages to Rendering

#13 Updated by skyjake almost 5 years ago

  • Status changed from In Progress to Progressed

#14 Updated by skyjake over 4 years ago

  • % Done changed from 10 to 30

The low-level GL code now uses the new Qt 5.4 OpenGL APIs, which means switching to newer OpenGL API versions is possible.

#15 Updated by skyjake about 4 years ago

  • Target version changed from Rendering to 2.1 (Late 2018)

#16 Updated by skyjake almost 4 years ago

  • Status changed from Progressed to Resolved
  • % Done changed from 30 to 100

This has now been largely implemented. In practice, all drawing occurs via the DGL abstraction layer and the DGL shader that emulates the old fixed-function OpenGL API behavior. Performance is negatively affected by this additional layer, though. Some optimizations will be necessary before the 2.1 stable release.

This puts us in the right place to start work on next-gen map rendering (#7).

#17 Updated by skyjake almost 4 years ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF