
- #Ogre engine rendering driver#
- #Ogre engine rendering code#
Rendering code makes up roughly 8% of our codebase. The OpenMW code is structured using different subsystems, and this change will, for the most part, affect only the “mwrender” subsystem. The good news is that Ogre3D is a rendering engine and we’re only using it as such.
Pre-emptive FAQ Q: How long will the switch take? So we are in fact happy about this change, as we do not have the manpower to maintain support for two different rendering systems, and most of our developers are working on Linux and thus unable to test the Direct3D renderer anyway. In addition to that, we have found some OpenMW bugs only manifesting themselves when the Direct3D backend is used. Unfortunately this is not quite true writing shaders does not work in a render system agnostic way. In an ideal world this would result in greater choice for the user while requiring no extra effort from the OpenMW team. Ogre3D having inbuilt support for OpenGL and DirectX may be considered one of its strong points. One notable difference is OpenSceneGraph supporting OpenGL only. A detailed roadmap for the port will be posted in the near future, and updated regularly so you can follow along the progress. We’ve carefully evaluated all needed features and verified that they can be found in the OSG source code, or can be easily added by a plugin. In light of these issues, we’ve looked around for alternatives and found the OpenSceneGraph, which appears a perfect fit for the features required by Morrowind and OpenMW, while also delivering high performance. OpenMW currently ignores this property, because the Ogre3D 1.x skeleton system does not support non-uniform scaling.
NPC width scaling: NPCs in Morrowind have a “weight” property, which should be scaling the NPC on its local X-axis. Material stencil support: The NIF format used by Morrowind can specify “stencil settings”, but the Ogre3D material backend does not support these settings. This is also an issue well understood by the Ogre3D team, and a “Resource System Redesign” project addressing these points has been started in 2013, but is unfortunately not completed yet. Another problem is that all resources are expected to have a unique name, which leads to some unnecessary work on our side, and could rarely cause user-defined resources to conflict with internal resources. Resource system: Ogre3D forces the use of a global resource manager, but we need one resource manager per document in OpenCS. On top of these concerns with the latest Ogre3D versions, we’ve also had some longstanding issues: We will be doing that extensively in OpenMW, especially considering user-authored modifications, so we would rather have a more flexible and easier to use material system. #Ogre engine rendering driver#
Material system: Ogre 2.1 features a redesigned material system written with AZDO (Approaching Zero Driver Overhead) optimizations in mind, but at the cost of making custom materials difficult to write.Even though OpenMW was never meant to run on hardware that originally ran Morrowind, we concluded that it is still too early to drop OpenGL2 support, as it would affect a significant portion of our users. OpenG元 requirement: The Ogre3D 2.1 branch has dropped support for OpenGL2 hardware.This feature is no longer supported in the 2.x series, so we would have to implement complicated workarounds.
Tag points: We are using an Ogre3D feature called “Tag Points” to stitch together the various parts of Morrowind’s segmented bodies. However, we have some fundamental concerns about this port: The original plan was to port OpenMW to use Ogre3D 2.x, which is a big undertaking since the programming interface changes are significant. This comes down to scene management and render API bottlenecks in the Ogre3D 1.x series, which are well understood by the Ogre3D team and have since been addressed in the 2.x series. One blocker for our 1.0 release is the poor framerate compared to vanilla Morrowind. There isn’t one particular show-stopper, but rather the culmination of many different issues. After much discussion, we have settled on the second option. However, to get OpenMW into a polished state and to add the last few missing features, we have difficult tasks ahead of us that would either require creating a fork of Ogre3D that behaves the way we need it to, or switch to a more suitable engine. Thanks to Ogre3D, you can already play a more or less complete game of Morrowind in OpenMW, today, and that is an incredible feat in and of itself. Over the course of our alpha versions, Ogre3D has proven extremely useful, enabling rapid development. Now, the OpenMW team is announcing the move away from this engine. Ogre3D is the rendering engine used by OpenMW since our very first release. Announcing switch to OpenSceneGraph - scrawl