-
Posts
23,120 -
Joined
-
Last visited
Content Type
Blogs
Forums
Store
Gallery
Videos
Everything posted by Josh
-
Can't profile a video!
-
I wanted to talk to you guys about this topic. In the Vulkan renderer we had a transfer and render hook. I don't see any need for these two hooks anymore. Do you? What information needs to be passed to the hook? I think everything can be retrieved with functions: wglGetCurrentContext(); glGetIntegerv(GL_FRAMEBUFFER_BINDING, &fbo); At what point in the renderer should this hook be called? I am thinking after all objects are rendered, before post-processing effects. Should it be set per-camera instead of per-world perhaps?
-
The editor does not use a log file. Usually these don't help with crashes because once the crash occurs program execution stops. Are you having trouble with something?
-
I also want to note that the animations themselves seem to be coming through perfectly. The skeleton looks correct. So in the future I will be looking more closely at the skin bind matrices and initial orientation of the model, which seem wrong.
-
0.9.5 Update improves performance in debug build.
-
Lasts updates in beta branch reduced peromance a lot in debug
Josh replied to Dreikblack's topic in Bug Reports
Okay, this was being caused by all the Assert statements I had in the source. Constructing a WString from a const char apparently is pretty slow in debug builds. Once I removed that the change in framerate was more like 4000 -> 3000 in the debug build. -
Lasts updates in beta branch reduced peromance a lot in debug
Josh replied to Dreikblack's topic in Bug Reports
That does seem to be a big reduction in performance just based on a single panel being visible. I'm going from 4000 to 400 FPS when the space key is hit, in debug mode. I don't see the same change in release mode. #include "UltraEngine.h" using namespace UltraEngine; shared_ptr<Window> window; shared_ptr<Framebuffer> framebuffer; shared_ptr<World> menuWold; shared_ptr<Interface> ui; shared_ptr<Camera> uiCamera; shared_ptr<Widget> panel; shared_ptr<Icon> icon1; shared_ptr<Icon> icon2; bool isFirst = true; int main(int argc, const char* argv[]) { //Get the displays auto displays = GetDisplays(); //Create a window window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[0], WINDOW_DEFAULT); //Create a world menuWold = CreateWorld(); menuWold->RecordStats(); //Create a framebuffer framebuffer = CreateFramebuffer(window); //Create light auto light = CreateBoxLight(menuWold); light->SetRange(-10, 10); light->SetRotation(15, 15, 0); light->SetColor(2); //Create camera auto camera = CreateCamera(menuWold); camera->SetClearColor(0.125); camera->SetPosition(0, 0, -3); camera->SetFov(70); uiCamera = CreateCamera(menuWold, PROJECTION_ORTHOGRAPHIC); uiCamera->SetPosition((float)framebuffer->GetSize().x * 0.5f, (float)framebuffer->GetSize().y * 0.5f, 0); uiCamera->SetRenderLayers(2); uiCamera->SetClearMode(CLEAR_DEPTH); uiCamera->SetLighting(false); //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { if (window->KeyHit(KEY_SPACE)) { if (not ui) { auto default_font = LoadFont("Fonts\\arial.ttf"); ui = CreateInterface(menuWold, default_font, framebuffer->GetSize()); ui->SetRenderLayers(2); ui->root->SetColor(0.0f, 0.0f, 0.0f, 0.0f); panel = CreatePanel(10, 50, 64, 64, ui->root, PANEL_DEFAULT); icon1 = LoadIcon("https://raw.githubusercontent.com/UltraEngine/Documentation/master/Assets/Icons/help.svg"); panel->SetIcon(icon1); } } window->SetText("FPS: " + String(menuWold->renderstats.framerate)); menuWold->Update(); menuWold->Render(framebuffer, false); } return 0; } -
I believe this is fixed now.
-
Would also disable your directional light for testing.
-
0.9.5 Prefabs are back in, fixed reported bug in these.
-
I would also be looking at the rest of the render statistic values.
-
Adding the prefab works now, but still skipping if the prefab is in a map file...
-
At the moment this isn't really actionable information. What is different about your demo and the performance benchmark apps? Are you constantly streaming geometry in?
-
Can confirm, here is a test file that shows the problem test.zip
-
I've poked around in the file but I can't find anything that's unique about it that would be causing a problem when many other animated glTF files load correctly. There is a problem in my loader, because both Windows Object Viewer and the Babylon.js glTF viewer both load it correctly, but I don't know how to solve it. I recommend running this through Blender or whatever other method you were using that makes it export a model Ultra can load correctly. I am attaching the model here for future investigating, but I don't plan to continue working on this for now. Human_2.zip
-
If I drag him into a viewport, then scale and rotate him he actually looks fine. However, the moment animation is applied, he turns into The Thing:
-
Vulkan validation layers were quite slow, and there's also more code being executed in the driver in OpenGL. So the results you are posting right now are not surprising.
-
Spiderpig game model.
-
Typically your file format should start with some sort of identifier like "SPGM" for the first four bytes or so. This is usually how binary file formats are identified.
-
Multiple instances still running after crash to desktop.
Josh replied to CJO Games's topic in Bug Reports
Preview.exe has been rebuilt and may work better now. -
This may be fixed in 0.9.5 now.
-
Problem is resolved in 0.9.5, on the beta branch.
-
world->Render prevent render if it was before main loop
Josh replied to Dreikblack's topic in Bug Reports
A fix for this is available on Steam now. -
world->Render prevent render if it was before main loop
Josh replied to Dreikblack's topic in Bug Reports
I just checked and during the first render there are no cameras being used. I get a black screen until the program switched over to the main menu. I cannot find any cameras being created in loadingWorld. I think you want this: // LOADING loadingWorld = CreateWorld(); loadingUi = CreateInterface(loadingWorld, font, framebuffer->GetSize()); loadingUi->SetRenderLayers(2); loadingUi->root->SetColor(0.5f, 0.5f, 0.5f, 1.0f); float labelHeight = float(framebuffer->GetSize().y) * 0.2f; int centerX = float(framebuffer->GetSize().x) * 0.5f; int centerY = float(framebuffer->GetSize().y) * 0.5f; auto loadingLabel = CreateLabel("LOADING...", float(framebuffer->GetSize().x) * 0.05f, centerY - labelHeight * 0.5f, float(framebuffer->GetSize().x) * 0.95f, labelHeight, loadingUi->root, LABEL_CENTER | LABEL_MIDDLE); float fonstScale = labelHeight / 14.0f; loadingLabel->SetFontScale(fonstScale * 0.5f); loadingCamera = CreateCamera(loadingWorld, PROJECTION_ORTHOGRAPHIC); loadingCamera->SetPosition(float(framebuffer->GetSize().x) * 0.5f, float(framebuffer->GetSize().y) * 0.5f, 0); loadingCamera->SetRenderLayers(2); loadingCamera->SetClearMode(CLEAR_DEPTH); //CAUSES AN ISSUE loadingWorld->Render(framebuffer); -
I am mostly concerned at the prospect of the window client area changing size while rendering is happening on another thread. Will need to get out another monitor and test this some more...