Upcoming features - 0.6.0
Posted: September 11th, 2020, 11:53 pm
DXGL 0.6.0 will be intended to have a few technical upgrades over the 0.5.x series, as follows:
Complete rewrite of backend
Due to inefficiencies and complexity of the current render backend, this will be rewritten for 0.6.0. After release 0.5.20 the source repository will have a "0.5" branch which will be supported only for bugfixes and retired once 0.6.x reaches feature parity.
Removal of deprecated OpenGL functionality
While DXGL was originally intended to target OpenGL 2.x, it has been developed using many features in OpenGL that are considered deprecated, like matrix states. Functionality that is deprecated and unnecessary to support OpenGL 2.x will be completely removed, and what is necessary will be used only on OpenGL 2.x systems from this point forward.
Support for OpenGL "core" contexts
Currently, DXGL uses the default context provided by Windows to support OpenGL. While on most systems this gives a "compatibility" version of the highest supported GL version, some systems may have issues with this approach. As such, the shader system has been updated to support both legacy versions (GLSL 1.10 through 1.30) and modern versions (GLSL 1.30 through 4.60) with adjustments to ensure language compatibility (replace attribute with in, varying with in or out depending on the shader stage, and providing an out variable for the fragment stage). This will allow shaders to be able to be loaded in "core" contexts. In addition, client side vertex arrays are not supported in OpenGL 3.1 and later "core" contexts, and thus will have to be transitioned to VBOs.
Optimizations in the shader system
Currently, DXGL's handling of shaders is a bit rudimentary and applies all shader uniforms and attributes on every draw call. Since this causes immense slowdowns especially in Direct3D content, this will be rewritten to minimize the overhead involved.
There will be an intermediate 0.5.19 release of DXGL containing a subset of the features planned for 0.6.0.
GLSL updates [DONE]
As mentioned in the 0.6.0 feature set, the generated GLSL shaders used by DXGL will support all versions of GLSL from the original 1.10 through the current 4.60.
x64 support [DONE]
Currently, DXGL is built only for the 32-bit x86 platform. Since DLL files must match the platform of the executable, a 64-bit x64 build will be added. Since only the ddraw components was officially released for 64-bit Windows there is no guarantee the Direct3D portion will work properly.
64-bit builds of DXGL will use separate profile entries from the 32-bit version, and may be installed in the platform-specific Program Files directory. This will allow it to be installed alongside the normal 32-bit version, however in the future these versions may be distributed together. DXGL Config will be updated to verify the platform of the target executable when adding a profile.
System requirements update [DONE]
DXGL has been built with different tiers of system requirements for a while. However, in light of the change in system requirements for the Visual C++ 2015-2022 Redistributable, the minimum Windows version supported by that build is now Windows 7 SP1. Installers for maintenance versions 0.5.21 and later have been updated to reflect this.
Complete rewrite of backend
Due to inefficiencies and complexity of the current render backend, this will be rewritten for 0.6.0. After release 0.5.20 the source repository will have a "0.5" branch which will be supported only for bugfixes and retired once 0.6.x reaches feature parity.
Removal of deprecated OpenGL functionality
While DXGL was originally intended to target OpenGL 2.x, it has been developed using many features in OpenGL that are considered deprecated, like matrix states. Functionality that is deprecated and unnecessary to support OpenGL 2.x will be completely removed, and what is necessary will be used only on OpenGL 2.x systems from this point forward.
Support for OpenGL "core" contexts
Currently, DXGL uses the default context provided by Windows to support OpenGL. While on most systems this gives a "compatibility" version of the highest supported GL version, some systems may have issues with this approach. As such, the shader system has been updated to support both legacy versions (GLSL 1.10 through 1.30) and modern versions (GLSL 1.30 through 4.60) with adjustments to ensure language compatibility (replace attribute with in, varying with in or out depending on the shader stage, and providing an out variable for the fragment stage). This will allow shaders to be able to be loaded in "core" contexts. In addition, client side vertex arrays are not supported in OpenGL 3.1 and later "core" contexts, and thus will have to be transitioned to VBOs.
Optimizations in the shader system
Currently, DXGL's handling of shaders is a bit rudimentary and applies all shader uniforms and attributes on every draw call. Since this causes immense slowdowns especially in Direct3D content, this will be rewritten to minimize the overhead involved.
There will be an intermediate 0.5.19 release of DXGL containing a subset of the features planned for 0.6.0.
GLSL updates [DONE]
As mentioned in the 0.6.0 feature set, the generated GLSL shaders used by DXGL will support all versions of GLSL from the original 1.10 through the current 4.60.
x64 support [DONE]
Currently, DXGL is built only for the 32-bit x86 platform. Since DLL files must match the platform of the executable, a 64-bit x64 build will be added. Since only the ddraw components was officially released for 64-bit Windows there is no guarantee the Direct3D portion will work properly.
64-bit builds of DXGL will use separate profile entries from the 32-bit version, and may be installed in the platform-specific Program Files directory. This will allow it to be installed alongside the normal 32-bit version, however in the future these versions may be distributed together. DXGL Config will be updated to verify the platform of the target executable when adding a profile.
System requirements update [DONE]
DXGL has been built with different tiers of system requirements for a while. However, in light of the change in system requirements for the Visual C++ 2015-2022 Redistributable, the minimum Windows version supported by that build is now Windows 7 SP1. Installers for maintenance versions 0.5.21 and later have been updated to reflect this.