Jump to content

Release Notes


Josh
 Share

Recommended Posts

0.9.9

  • Added initial implementation of screenshot tool.
  • Added screenshot publishing (Steam only)
  • Added Publish Video tool (Steam only)
  • Like 2

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

This update adds the Tile class, which is used for 2D drawing. A new shader family is required.

This has not been tested with render-to-texture (it will probably draw upside down) or complex multiple camera setups.

Example:

#include "UltraEngine.h"

using namespace UltraEngine;

int main(int argc, const char* argv[]) {

    auto displays = GetDisplays();
    auto window = CreateWindow("", 0, 0, 1280, 720, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR);
    auto framebuffer = CreateFramebuffer(window);
    auto world = CreateWorld();

    //Create a camera
    auto camera = CreateCamera(world);
    camera->SetClearColor(0.125);
    camera->SetLighting(false);

    auto rect = CreateTile(camera, 100, 100, false);
    rect->SetColor(0, 1, 1, 1);

    auto mtl = CreateMaterial();
    mtl->SetTransparent(true);
    mtl->SetTexture(LoadTexture("Materials/Decals/default.dds"));
    rect->SetMaterial(mtl);
    rect->SetColor(0, 1, 1, 1);
    rect->SetPosition(1, 1);
    
    auto font = LoadFont("Fonts/arial.ttf");
    auto rect2 = CreateTile(camera, font, 24, "Hello, how are you today?\nI am feeling good\n2D is cool", TEXT_CENTER | TEXT_MIDDLE, 1.5);

    while (window->Closed() == false and window->KeyHit(KEY_ESCAPE) == false)
    {
        auto pos = window->GetMousePosition();

        rect2->SetPosition(pos.x, pos.y);
        rect2->SetRotation(Millisecs() / 100.0f);
        rect2->SetClipRegion(100, 100, framebuffer->size.x - 200, framebuffer->size.y - 200);

        world->Update();
        world->Render(framebuffer);
    }
    return 0;
}

 

  • Like 1
  • Upvote 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

GUI system now can be created on a camera instead of on a world, for 3D rendering., and will use the new 2D drawing system.

Some wireframe boxes are one pixel off and still need adjustment.

Here is an example that shows a GUI automatically resizing when the window is recreated.

#include "UltraEngine.h"

using namespace UltraEngine;

int main(int argc, const char* argv[])
{
    //Get the displays
    auto displays = GetDisplays();

    //Create window
    auto window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[0]);

    //Create framebuffer
    auto framebuffer = CreateFramebuffer(window);

    //Create world
    auto world = CreateWorld();

    //Create main camera
    auto camera = CreateCamera(world);
    camera->SetPosition(0, 0, -3);
    camera->SetClearColor(0, 0, 1);

    //Create a model
    auto box = CreateBox(world);

    //Create a light
    auto light = CreateBoxLight(world);
    light->SetRange(-5, 5);
    light->SetRotation(34, 45, 0);

    //Load a font
    auto font = LoadFont("Fonts/arial.ttf");

    //Create user interface with a semi-transparent background    
    shared_ptr<Interface> ui;
    ui = CreateInterface(camera, font, framebuffer->size);
    ui->background->SetColor(0, 0, 0, 0.5);

    //Create widget
    auto sz = ui->root->ClientSize();
    auto treeview = CreateTreeView(10, 10, sz.x - 20, sz.y - 20, ui->root, TREEVIEW_DRAGANDDROP | TREEVIEW_DRAGINSERT);
    treeview->SetLayout(1, 1, 1, 1);

    auto node = treeview->root->AddNode("Node 1");
    node->AddNode("Subnode 1");
    node->AddNode("Subnode 2");
    node->AddNode("Subnode 3");

    node = treeview->root->AddNode("Node 2");
    node->AddNode("Subnode 1");
    node->AddNode("Subnode 2");
    node->AddNode("Subnode 3");

    node = treeview->root->AddNode("Node 3");
    node->AddNode("Subnode 1");
    node->AddNode("Subnode 2");
    node->AddNode("Subnode 3");

    while (true)
    {
        if (window->KeyHit(KEY_SPACE))
        {
            window = CreateWindow("Ultra Engine", 0, 0, 800, 600, displays[0]);
            framebuffer = CreateFramebuffer(window);
        }

        if (window->KeyHit(KEY_ESCAPE)) break;
        box->Turn(0, 1, 0);

        while (PeekEvent())
        {
            const Event ev = WaitEvent();
            switch (ev.id)
            {
            case EVENT_WINDOWCLOSE:
                if (ev.source == window)
                {
                    return 0;
                }
                break;
            default:
                if (ui) ui->ProcessEvent(ev);
                break;
            }
        }

        world->Update();
        world->Render(framebuffer);
    }
    return 0;
}

 

  • Thanks 1
  • Upvote 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

  • 3D GUI system is updated, should now be pixel-perfect, and working in combination with post effects and render-to-texture.
  • A shader update is required.
  • Upvote 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

Editor will now automatically insert C++ and header files into Visual Studio projects when a new component is added in the editor. This feature can be disabled in Options > General > Modify Visual Studio files. The vcxproj and vcxproj.filters flles get backed up in the project's /Backup folder before they are modified.

The ComponentSystem.h header does not yet get updated automatically. Tomorrow?

  • Like 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

If the above setting is enabled, then the ComponentSystem.h file will get automatically generated any time a new header file is added.

  • Thanks 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

  • Added File > Open Code Editor menu item.
  • Added new toolbar button group.

At this point, all the features I want in the full release are implemented. Now I will switch over to fixing bugs and writing documentation.

  • Upvote 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

  • Replaced the selection overlay and label in the editor viewports with 2D tiles. This simplified some of my complicated multi-camera code, and as a bonus it eliminated a grid rendering bug I only saw on AMD cards. A shader update is required.
  • Added texture anisotropy setting in Tools > Options.
  • Like 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

  • Fixed render screenshot tool not working.
  • Fixed selection size labesl not visible.
  • Fixed cut tool indicator not visible.
  • Fixed drag-to-select indicator not visible.
  • Like 1
  • Thanks 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

Added "Save as Model" menu item in scene browser right-click menu. Right click on any node and select "Save as Model". All selected objects will be saved. If there is no single top-level model, a new one will be created, positioned at the center bottom of the selected objects.

  • Like 2
  • Thanks 1
  • Upvote 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

  • Some improvements were made for support of non-latin alphabets in Lua.
  • Double-clicking on a Lua file in the asset browser will now open VS code with the current project loaded.
  • Added object icons to Create menu.
  • Added ability to save to TEXTURE_ALPHA format.
  • Added program log, found in C:/ProgramData/Ultra Engine/log.txt
  • Added setting to flush log immediately after write (in General options)

image.png.8d5b5c5dd673c335dc68a2d75d507cb9.png 

  • Thanks 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

  • Revised the way post-processing effects work internally, as there were some problems in the previous two builds.
  • Fixed a bug when the world settings window closing would not activate the main window.
  • Thanks 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

  • Added Camera::EnablePostEffect(int index) and Camera::DisablePostEffect().
  • The return type of CreateMenu will now be cast to a Widget, making it more consistent with the rest of the API. If you need to cast it to a menu, you can add ->As<Menu>() at the end of the CreateMenu() command.
  • Lua binding of Camera::AddPostEffect will now return 1 for the first effect added instead of zero.
  • Variious bug fixes.
  • Like 1

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

  • New C++ projects will include the "Leadwerks.h" header and use an environment variable called "LEADWERKS" for the install path. Existing projects should still compile seamlessly.
  • Program settings moved to C:/ProgramData/Leadwerks. Everything should go seamlessly.

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

  • Default shadow map size is now 512 x 512 for lights other than directional.
  • World::SetShadowQuality temporarily disabled.
  • Bug fixes.

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

0.9.9

The PBR shader family now supports a separate opacity map, and the way decals blend is modified. Decals will only override color, normal, and AO/metal/roughness if the decal material has a texture in that slot. If it does not have a texture, it will not override the underlying color value. This allows you to do things like decals that change normals but do not affect the color, or only affect metal/roughness/occlusion.

The material painting blending does not yet work this way, but I plan to revise that as well.

  • Like 2

My job is to make tools you love, with the features you want, and performance you can't live without.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...