Jump to content

Josh

Staff
  • Posts

    24,629
  • Joined

  • Last visited

Everything posted by Josh

  1. Josh

    Jump Delay

    You need this: https://www.ultraengine.com/learn/Entity_GetAirborne
  2. The following post-processing effects are provided: Bloom FXAA SSAO Outline Screen-space reflection and refraction are provided as rendering features that can be enabled with a command. The system also supports user-defined post-processing effects.
  3. There's an FXAA post-processing effect in the shaders folder: https://www.ultraengine.com/learn/Camera_AddPostEffect The VR camera is not accessible yet. I want to get the first version out before going into more depth.
  4. You can disable asynchronous rendering like the editor does, use a 2D GUI, or make the extra display windows a separate process and communicate with them through UDP or some other method.
  5. I'm going to move this because it isn't clear what exactly is being reported.
  6. What are you trying to do that requires this? This design seems very strange and does not sound like any 3D application I have ever seen. The editor renders to multiple framebuffers, but rendering performance is not much of a concern because it is not a real-time app. Additionally, it disables asynchronous rendering in the engine initialization settings, which gives it overall slower rendering performance (if it was continuously rendering, which it is not), but lower latency, so it is more responsive to user input.
  7. I would expect real-time rendering to two framebuffers to be terrible, because the rendering thread has to stop and sync with the culling thread to handle the changed world it is working with.
  8. VR integration is finished. Removed settings.openxr parameter. Instead, call GetHmd() before the first call to World::Render(). Documentation here: https://www.ultraengine.com/learn/VrDevice?lang=cpp Hmd::SetOffset supports rotation as well as position. Don't create a camera when using VR, it will be done automatically. Example: #include "UltraEngine.h" using namespace UltraEngine; int main(int argc, const char* argv[]) { shared_ptr<Hmd> hmd; shared_ptr<Camera> camera; //Load the FreeImage texture plugin auto plugin = LoadPlugin("Plugins/FITextureLoader"); //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow("Ultra Engine", 0, 0, 1280, 720, displays[0], WINDOW_CLIENTCOORDS | WINDOW_CENTER | WINDOW_TITLEBAR); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); //Create a world auto world = CreateWorld(); //Get the VR headset hmd = GetHmd(world); //Create a camera if not in VR mode if (not hmd) camera = CreateCamera(world); //Environment maps auto specmap = LoadTexture("https://github.com/UltraEngine/Assets/raw/main/Materials/Environment/footprint_court/specular.dds"); auto diffmap = LoadTexture("https://github.com/UltraEngine/Assets/raw/main/Materials/Environment/footprint_court/diffuse.dds"); world->SetEnvironmentMap(specmap, ENVIRONMENTMAP_BACKGROUND); world->SetEnvironmentMap(specmap, ENVIRONMENTMAP_SPECULAR); world->SetEnvironmentMap(diffmap, ENVIRONMENTMAP_DIFFUSE); //Create a light auto light = CreateBoxLight(world); light->SetRotation(55, 35, 0); light->SetRange(-10, 10); light->SetColor(2); //Load a model to display auto model = LoadModel(world, "https://github.com/UltraEngine/Documentation/raw/master/Assets/Models/Characters/cyber_samurai.glb"); model->Turn(0, 180, 0, true); model->SetPosition(0, 0.25, 0); model->SetScale(0.9); //Add a floor auto floor = CreateBox(world, 5, 1, 5); floor->SetPosition(0, -0.5, 0); auto mtl = CreateMaterial(); mtl->SetTexture(LoadTexture("https://github.com/UltraEngine/Documentation/raw/master/Assets/Materials/Developer/griid_gray.dds")); floor->SetMaterial(mtl); shared_ptr<Model> controllermodel[2]; //Position and rotation offset: //hmd->SetOffset(Vec3(2, 0, 0), Vec3(0,90,0)); //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { if (hmd) { for (int n = 0; n < 2; ++n) { if (hmd->controllers[n]->Connected()) { //How to attach stuff to the controllers: //if (not controllermodel[n]) controllermodel[n] = CreateBox(world, 0.1); //if (n == 1) controllermodel[n]->SetColor(0, 0, 1); //controllermodel[n]->Attach(hmd->controllers[n]); } } } world->Update(); world->Render(framebuffer, false); } return 0; }
  9. See "Synchronization": https://www.ultraengine.com/learn/projectmanager
  10. Yeah, I just wanted to put this out first and then see how people use it. A few years ago people were insisting that multiple components would allow things like this to be broken down into multiple reusable pieces, although I agree it seems convoluted to me.
  11. Does your project need to be updated? I changed the way the sky rendering works, so the sky shaders were updated.
  12. Josh

    Sliding

    There is a deceleration parameter in the entity player input method.
  13. Right now it just handles a camera and movement controls. Since Ultra supports multiple components, I was not sure if animation should be part of the same code or if it should be a separate component.
  14. Currently it doesn't even handle animation, but I am planning on using that robot character to demonstrate animation with. I was not sure how the components should be broken down, but I think having a default single component that handles as much as possible is the correct approach, and then if someone wants to separate it into more sub-parts that can also be an option.
  15. My next piece of advice would have been to delete the userdata.dat file, or just the whole ProgramData/Ultra Engine folder.
  16. Try deleting this file: C:\ProgramData\Ultra Engine\clientsettings.json ProgramData is a hidden folder.
  17. I created a Discord server for casual chat: https://discord.gg/qTVR55BgGt Although I have had concerns over the effect of Discord on developer communities, and I prefer the forum for detailed discussions, Discord is convenient for casual daily chat and most of all streaming and voice conferencing. Guidelines are posted in the welcome channel for what should be the limitations of its usage. I won't delete this server. Discord has only gotten more popular since we tried it before, and I think it is just an expected feature nowadays. I plan to remove the chat bar from the main forum page in a few days. (The chat messages here have always been set to auto-delete after a week.)
  18. The default channel is 0.9.0, which is a stable build. This means it does not receive updates. The dev channel receives updates. This means you always have the today's latest build, but it is possible that errors and breaks could occur. See this comment for instructions how to change the channel you are using: Periodically, different stable version releases will be created and added to the channel list. The next stable release will be 0.9.1, which will coincide with the first release on Steam. User-created extensions can also add new functionality and interface elements to the editor.
  19. Bonus pro tip: Don't have a failing hard drive.
  20. Press "Uninstall": Select the channel you want to use. The dev channel continuously receives updates. Versioned channels are stable and do not receive new updates:
  21. Removed the grid background from the flowgraph editor window, as I found this is what was making it sluggish. Although the rendering was done as efficiently as possible, only drawing a few big images to tile across the window, it seems simple image drawing can be quite slow in GDI. Maybe some of these tips can be tried out in the future: https://www.codeproject.com/Tips/66909/Rendering-fast-with-GDI-What-to-do-and-what-not-to Also fixed it so flowgraph node positions are scaled when saved to and loaded from a map file, so their positions will be consistent at different DPIs.
  22. The delayload parameter should be in linker settings, not in the C++ compiler settings.
  23. If you get this error when compiling a C++ program in release mode, disable "whole program optimization" in the C++ > Optimization project settings. I think the OpenVR lib is causing this. I am making this change in the template files....
  24. I think it is just for Steam developers.
  25. Exposed Program.project member. Project class has these properties: path: read-only string name: read-only string properties: C++ table with all the contents of Ultra.json. Save(): method to save Ultra.json file. You can use this to store any per-project settings. For example: if type(program.project.properties["addons"] ~= "userdata") then program.project.properties["addons"] = {} end if type(program.project.properties["addons"]["sketchfab"] ~= "userdata") then program.project.properties["addons"]["sketchfab"] = {} end table.insert(program.project.properties["addons"]["sketchfab"], itemid) program.project:Save()
×
×
  • Create New...