Jump to content

Recommended Posts

Posted

0.9.9

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

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
  • Thanks 1

Let's build cool stuff and have fun. :)

Posted

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.
  • Like 1

Let's build cool stuff and have fun. :)

Posted

0.9.9

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

Let's build cool stuff and have fun. :)

Posted

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

Let's build cool stuff and have fun. :)

Posted

0.9.9

  • Fixed bug where removing post effect would not remove the right one.
  • Fixed SSAO bug with transparency when refraction is not in use.
  • Only the editor is updated at this time.
  • Like 1

Let's build cool stuff and have fun. :)

Posted

0.9.9

  • Removed TEXTURE_CLAMP_U, TEXTURE_CLAMP_V, TEXTURE_CLAMP_UV, and TEXTURE_CLAMPUVW since we now have a separate Texture::SetClampMode command.
  • Fixed terrain heightmaps not working with latest revision of texture system.
  • Fixed loading and saving of RAW, R32, R16, R32F, and R16F pixmaps;.
  • Removed TIF, PCX, GIF, image formats from file dialogs in the editor because these are not common formats and just get in the way.
  • Terrain heightmaps can now be saved in either DDS or RAW formats.
  • Added load terrain heightmap dialog, for specifying the minimum and maximum elevation of a non-float heightmap.
  • Terrain::LoadHeightmap now takes an optional Vec2 range argument for rescaling the loaded height data.
  • Bug fixes.

Only the editor is updated at this time.

  • Like 1

Let's build cool stuff and have fun. :)

Posted

0.9.9

  • World::SetShadowQuality now accepts a float value. 1.0 is default. 0.5 is 50% resolution. 2.0 is 200% resolution. You might want to check what your current setting is in the options dialog.
  • Fixed bug where texture clamping was not being performed on texture buffer attachments.
  • Full update.
  • Like 2

Let's build cool stuff and have fun. :)

Guest
This topic is now closed to further replies.
×
×
  • Create New...