Josh Posted September 18, 2022 Author Share Posted September 18, 2022 Okay, the background panel is just covering the whole screen, so this will fix it: ui->background->SetColor(0, 0, 0, 0); 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 More sharing options...
SpiderPig Posted September 18, 2022 Share Posted September 18, 2022 7 minutes ago, Josh said: Okay, the background panel is just covering the whole screen, so this will fix it: ui->background->SetColor(0, 0, 0, 0); That made it black but there doesn't seem to be any transparency. Link to comment Share on other sites More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 You need both of these lines of code: uicam->SetClearMode(CLEAR_DEPTH); ui->background->SetColor(0, 0, 0, 0); 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 More sharing options...
SpiderPig Posted September 18, 2022 Share Posted September 18, 2022 4 minutes ago, Josh said: You need both of these lines of code: uicam->SetClearMode(CLEAR_DEPTH); ui->background->SetColor(0, 0, 0, 0); Ah CLEAR_DEPTH not CLEAR_COLOR. That worked. Thanks. Link to comment Share on other sites More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 Another update is uploaded. This fixes some bugs in the GI code when the camera moves around. It's very stable now and should be working perfectly. 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 More sharing options...
SpiderPig Posted September 18, 2022 Share Posted September 18, 2022 How should we set up the lighting? The objects below have no materials set they just have random colours. All I have is a directional light. Link to comment Share on other sites More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 What are you trying to do? 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 More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 camera->SetVXRT(true) enables GI. 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 More sharing options...
SpiderPig Posted September 18, 2022 Share Posted September 18, 2022 7 minutes ago, Josh said: What are you trying to do? Just setup some basic nice lighting. Everything seems too dark. Isn't there some environment stuff I have to set up? Link to comment Share on other sites More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 Add a skybox for happy good fortune. 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 More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 Another update uploaded. This fixes some problems with GI voxelization when the camera gets far from the center. Test program: main.cpp 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 More sharing options...
reepblue Posted September 18, 2022 Share Posted September 18, 2022 That example really lags on my GTX 1050 with 4GB of VRAM. I also find the AO fading in and out very strange and distracting. Hopefully it just you didn't get that far. Also noticed you have doubled the default voxel resolution. Setting this back to 64 helps but makes the AO fading more obvious. Perhaps I should be running this on a stronger card, but this PC is just more convenient. Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 In debug or release mode? 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 More sharing options...
reepblue Posted September 18, 2022 Share Posted September 18, 2022 Release. I don't have fraps for the framerate, but the Xbox Gamebar thing is reporting 27 frames per second with 98% GPU usage. Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 The 98% number is very good. That framerate is probably what you can expect on that card, but it's a lot better than what you would get with RTX on the same GPU. On a 1660, which has about twice as many cores, I'm getting 85 FPS. The effect has a limited area around the camera, but the idea is to later add additional stages, so what you see now is the first stage, and then another volume around the camera is used for further away objects. 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 More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 I got it up to 95 FPS with one small optimization I forgot about. 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 More sharing options...
reepblue Posted September 18, 2022 Share Posted September 18, 2022 Yeah, that's what I expect. One idea for that can happen older GPUs we can do a generic cubemap builder and set it to the world's skybox. This way the reflections are as good as the ones in Leadwerks, but without complicating your current reflection system. I did this with Leadwerks years ago, and hopefully now we can do this without talking to the graphics api. The question is if you want to have this as an engine feature or have this done by somebody like me. I really think something like a world->BakeGlobalCubemap() function would be nice. Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 With cube map reflections, I don't know if it is possible to come up with a general-purpose routine because the results will vary wildly depending on the camera near range and the geometry of the scene. For example, if you are inside a house looking out a window, all the objects outdoors would be reflecting the interior of the house...or all the objects inside the house would be reflecting the sky they can't see. Leadwerks was effective at solving this problem, at the cost of requiring precise placement of volumes. (I think Doom 2016 also did something very similar.) 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 More sharing options...
reepblue Posted September 18, 2022 Share Posted September 18, 2022 2 minutes ago, Josh said: Leadwerks was effective at solving this problem, at the cost of requiring precise placement of volumes. (I think Doom 2016 also did something very similar.) I don't see the addition of reflection volumes a bad thing really. If it can work with the current system, I wouldn't mind the finer control for things like that. 100% automation can only get you so far imo. I'm not sure if you'd want to consider also doing a onetime GI raytrace within those volumes like Leadwerks, but I'm mostly concerned about the reflections at the moment. Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
SpiderPig Posted September 18, 2022 Share Posted September 18, 2022 Small issue with a text field, the text changes colour when pressing the 2nd letter. #include "UltraEngine.h" #include "ComponentSystem.h" int main(int argc, const char* argv[]) { //Get the displays auto displays = GetDisplays(); //Create a window auto window = CreateWindow("Ultra Engine", 0, 0, 1280 * displays[0]->scale, 720 * displays[0]->scale, displays[0], WINDOW_CENTER | WINDOW_TITLEBAR); //Create a world auto world = CreateWorld(); //Create a framebuffer auto framebuffer = CreateFramebuffer(window); //Create a camera auto camera = CreateCamera(world); camera->SetClearColor(0.125); camera->SetFOV(70); camera->SetPosition(0, 0, -3); auto uicam = CreateCamera(world, PROJECTION_ORTHOGRAPHIC); uicam->SetClearMode(CLEAR_DEPTH); uicam->SetRenderLayers(RENDERLAYER_1); uicam->SetPosition(framebuffer->size.x / 2, framebuffer->size.y / 2); auto ui = CreateInterface(world, LoadFont("Fonts/arial.ttf"), framebuffer->size); ui->SetRenderLayers(RENDERLAYER_1); ui->background->SetColor(0, 0, 0, 0); auto text_Box = CreateTextField(0, 0, 200, 50, ui->root); //Create a light auto light = CreateLight(world, LIGHT_DIRECTIONAL); light->SetRotation(35, 45, 0); //Create a box auto box = CreateBox(world); //Entity component system auto actor = CreateActor(box); auto component = actor->AddComponent<Mover>(); component->rotation.y = 45; //Main loop while (window->Closed() == false and window->KeyDown(KEY_ESCAPE) == false) { while (PeekEvent()) { ui->ProcessEvent(WaitEvent()); } world->Update(); world->Render(framebuffer); } return 0; } Link to comment Share on other sites More sharing options...
Josh Posted September 18, 2022 Author Share Posted September 18, 2022 It seems like 0.25 is the biggest size you should use for voxels. It looks quite good at that resolution. We can also conclude this is not for low-end cards. I am curious to see how this would perform on something like a 1080. This is a little awkward, because in every other area the engine provides such fast performance. All my performance gains in other areas were made by shifting more work to the GPU and preventing the CPU from forming a bottleneck, but this feature is 100% GPU-limited. I will need to think about this. 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 More sharing options...
reepblue Posted September 18, 2022 Share Posted September 18, 2022 1 hour ago, SpiderPig said: Small issue with a text field, the text changes colour when pressing the 2nd letter. I was also seeing this with the Text areas too. 58 minutes ago, Josh said: We can also conclude this is not for low-end cards. I am curious to see how this would perform on something like a 1080. This is a little awkward, because in every other area the engine provides such fast performance. All my performance gains in other areas were made by shifting more work to the GPU and preventing the CPU from forming a bottleneck, but this feature is 100% GPU-limited. I will need to think about this. I agree that Voxel Raytracing should only before hardware that supports it. However, there should be things we can do to make sure customers with lower end cards can still get decent results. If I have to go around placing GI probes everywhere, I wouldn't really mind although it kind of goes against your design goal a bit. Cyclone - Ultra Game System - Component Preprocessor - Tex2TGA - Darkness Awaits Template (Leadwerks) If you like my work, consider supporting me on Patreon! Link to comment Share on other sites More sharing options...
Josh Posted September 19, 2022 Author Share Posted September 19, 2022 7 hours ago, SpiderPig said: Small issue with a text field, the text changes colour when pressing the 2nd letter. This is a feature that simulates losing your vision because you are typing too much. 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 More sharing options...
Josh Posted September 19, 2022 Author Share Posted September 19, 2022 BTW, this is actually the code you want for pixel-perfect drawing: uicam->SetPosition(float(framebuffer->size.x) * 0.5f, float(framebuffer->size.y) * 0.5f); With integer division the border of the text field gets cut off. The height of the framebuffer must be an odd number. 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 More sharing options...
klepto2 Posted September 19, 2022 Share Posted September 19, 2022 I now have used WinDbg to get more details about the annoying GUARD_PAGE error and this is more detailed: (36c8.4f68): Guard page violation - code 80000001 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. *** WARNING: Unable to verify checksum for GUARD_ERROR_d.exe VCRUNTIME140D!memcpy+0x27f: 00007ffa`d786156f c4a17e7f8c0900ffffff vmovdqu ymmword ptr [rcx+r9-100h],ymm1 ds:0000014c`f5828000=00 And the StackTrace: VCRUNTIME140D!memcpy(void)+0x27f [D:\a\_work\1\s\src\vctools\crt\vcruntime\src\string\amd64\memcpy.asm @ 385] GUARD_ERROR_d!UltraRender::RenderContext::TransferData+0xcbd GUARD_ERROR_d!UltraRender::RenderContext::Render+0x557 GUARD_ERROR_d!UltraRender::RenderContext::Render+0x1f7 GUARD_ERROR_d!UltraRender::RenderingThreadManager::Update+0x1d62 GUARD_ERROR_d!UltraCore::ThreadManager::EntryPoint+0xae GUARD_ERROR_d!UltraEngine::Thread::thread_function+0xaa ucrtbased!thread_start<unsigned int (void * parameter = 0x0000014c`db315fe0)+0xb0 [minkernel\crts\ucrt\src\appcrt\startup\thread.cpp @ 97] KERNEL32!BaseThreadInitThunk+0x14 ntdll!RtlUserThreadStart+0x21 If you need more info we can arrange a remote debug session for tomorrow, today i am to busy. Windows 10 Pro 64-Bit-Version NVIDIA Geforce 1080 TI Link to comment Share on other sites More sharing options...
Recommended Posts