Skip to main content

Vulkan and open source engines

It is weird, but even when Vulkan has embraced the open source philosophy (open drivers, tools, etc), Im not seeing too much enthusiasm to adopt it in open source game engines. I have been following mostly Godot and Urho3D, yet Ogre3D and Irrlicht doesnt seems to be rushing to implement the new renderers.

It is worth to mention that Godot promissed they would delay the long needed refactoring of its 3D renderer until Vulkan release, but now they say they wont be using it, favoring GL ES 3 instead. The other engines seems to be dealing with lack of man power (Urho3D leader left the work on hands of community, as he is not working on Vulkan renderer right now) and base code designed for older APIs, specifically, DirectX 9. Lot of work is required to adapt this code base, not only for Vulkan, but for DirectX 12 too. Well, nobody said that developing a game engine was easy.

The advantages of Vulkan have been widely detailed. From engine point of view, it would centralize all renderers in only one, if you are willing to discard DirectX 12 and really obsolete hardware, thus reducing the work required to maintain and develop one renderer for each platform. Also, Vulkan would support not so old hardware that is not fully DX 12 compatible (I hope so). Anyway, discarding Microsoft's API is a decision not to be taken lightly.

Historically, open source engines have been slow to adopt new rendering APIs, but, discarding it in favor of an old one? That's a weird strategy. Letting volunteers develop the new renderer? Usually leads to code that never gets integrated into the main branch, or even gets lost, leading to duplicated efforts. Let's hope this trend changes in a near future.


  1. Vulkan only gives a performance boost in certain specific types of rendering work, the type most games will not benefit from, but for those that do it will be wonderful, however this means that generic engines will be slow to implement it.

  2. This comment has been removed by the author.

  3. Right, not every game benefits from Vulkan/Dx12 low overhead approach, probably just the gaphic intensive ones. But Id rather prefer that the engine offers support for it.


Post a Comment

Popular posts from this blog

Unity3d isometric camera tutorial

I had pending this since a month ago, so Im forcing myself to post it today. The goal is to provide a fully functional isometric like system that you can use with few or none modifications in your own game. So, lets get started.

Start Unity3d and in your scene, add an empty GameObject, we will call it target. Create a camera object and drag it to target to make it child. The result looks like this:

Now select Camera and set the values to this:

For a true isometric like feeling, ortho projection is essential. You could use perspective, but it is not the same. Play with Size to suit your needs (we will be using this later, when implementing zoom).

Now, lets create an script named CameraController, or whatever, and drag it to target GameObject. Lets implement scrolling, the easier part: go to Update() and add the following code:

if (Input.GetKeyDown(KeyCode.W)) {
            dir = UP;
        } else if (Input.GetKeyDown(KeyCode.S)) {
            dir = DOWN;
        } else if (Input.GetKeyD…

TPS with free look tutorial, version 2 (and bugs)

After working a bit to improve the third person camera system I mentioned a couple of days ago, I found a few problems that I could fix, and other I cant. Here is the updated code:

public class PlayerControl : MonoBehaviour {

    public GameObject pivot;
    Animator anim;
    int direction = 0;
    int FORWARD  = 1;
    int BACKWARD = 2;
    int LEFT = 3;
    int RIGHT = 4;

    // Use this for initialization
    void Start () {
        //cam = gameObject.GetComponent<Camera> ();
        //Cursor.visible = false;
        //Cursor.lockState = CursorLockMode.Locked;
        anim = gameObject.GetComponent<Animator> ();

    // Update is called once per frame
    void Update () {
        Vector3 rot;

        if (Input.GetKeyDown (KeyCode.W)) {
            direction = FORWARD;
        } else if (Input.GetKeyDown (KeyCode.S)) {
            //go back
            direction = BACKWARD;
        } else if (Input.GetKeyDown (KeyCode.A)) {
            direction = LEFT;
        } …

Tutorial: building a modular character

Building character models with body parts have been an obsession for me in the last weeks. I have googled, asked, googled, and asked again, played with Unity3d editor, tested code, and so on. You can see the result of my work in the previous post. First of all, I have to say that what I achieved is mostly derived from this thread and the sample posted there. My code is a copy&paste of that sample. Also, you can find a more extense solution in this forum thread.

First, lets start with the model, which obviously, is divided in the required sections. Lets say we have head, torso and legs. Each part must be exported to a separate fbx file, but it must include the skeleton. Then, export the skeleton without geometry to another fbx.

Im going to assume that you want to instantiate all components, and even player, at runtime, from a  C# script (no Unity editor involved, except for creating prefab an position marker), so, we will place the sections, the skeleton and everything…