-
Posts
24,625 -
Joined
-
Last visited
Content Type
Blogs
Forums
Store
Gallery
Videos
Downloads
Everything posted by Josh
-
0.9.7 Added tool to flip normal maps on the U/V axis in the texture editor. Finished the decal shader code. It now supports color, normal, metallic-roughness, and emission textures. Normal blending should be working correctly now.
-
Testing dreikblack's prefab boxes scene on an AMD 6600, with the latest updates: 0.9.6: 1120 0.9.7: 1075 That's only a 4.2% difference. That difference gets a bit smaller if I comment out the shadow code in both sets of shaders, so it appears that sampling from different bindless textures can have a very small impact on performance (about 1%) vs. the more restricted texture array approach I used previously. There's probably some very small overhead when converting the bindless texture handle into a sampler object, but at the same time the increased flexibility allows techniques that result in very large performance gains over conventional methods.
-
0.9.7 Implemented more aggressive compression layout of entity data and reverted to two-byte entity indices, but multiplied by two so the engine still supports 65000 objects. Colors are now packed into the primary 4x4 matrix which will eliminate an extra shader storage buffer read unless emission color or texture mapping settings are in use, which is rare. More extensive testing was done on mesh layers, mesh layers with imposters, and other shader combos.
-
Also tested on an AMD 6600, memory in task manager was stable at 135 mb.
-
The object returned by LoadMap includes a list of entities. The directional light will be in that list. https://www.ultraengine.com/learn/Map
-
There is a way to do occlusion culling using the depth buffer that I hope to add in the future.
-
In 0.9.7, entity color is stored in a separate 4x4 matrix, and only gets read if a flag indicates the color is not 1,1,1,1. Most of the time this does not happen, but lights do often have a different color. Reading an extra 4x4 matrix in a storage buffer in a fragment shader does make a difference. I think I am going to use some more aggressive compression and try to fit the color into the main 4x4 matrix to prevent the extra read. I don't think this is a complete explanation, but it will have a noticeable effect.
-
It appears that the LIGHT_DECAL case block of code in Shaders/PBR/Lighting.glsl does make the shader slower, even if no decals are in use. 687 vs 712, or 3.5% difference.
-
If I disable camera lighting, 0.9.7 is slightly faster: for (auto entity : scene->entities) { if (entity->As<Camera>()) entity->As<Camera>()->SetLighting(false); } If I disable light shadows, 0.9.7 is a little slower than 0.9.6. So that indicates to me some data access in the lighting shader code is a little bit less optimal in 0.9.7 perhaps, but it has nothing to do with shadow maps / bindless textures. for (auto entity : scene->entities) { if (entity->As<Light>()) entity->SetShadows(false); }
-
One big change between 0.9.6 and 0.9.7 is that 0.9.6 uses a single array texture to store all shadow maps in, and 0.9.7 uses separate shadow maps with bindless textures. This was done to provide control over the size of each light's shadow map. If I disable the directional light then both scenes run at the exact same speed in both versions of the engine. for (auto entity : scene->entities) { if (entity->As<Light>()) entity->SetHidden(true); } I do not know if there is any substantial difference in performance between these approaches. I don't think there should be. The difference in performance I am seeing is about 6.5%.
-
Testing this sample now: https://discord.com/channels/1175951843118031049/1175951843612954786/1270584299317362765 0.9.6: 620 0.9.7: 575
-
0.9.6 is still inconsistent. Sometimes I hear the fan spin up really high at start and the framerate is 3100, other times it runs at the same speed as 0.9.7. Version 0.9.7 is still twice as fast as the Vulkan build from the beginning of the year.
-
Actually, the 0.9.6 build is inconsistent. Sometimes it will start off at a higher speed and stay there, and sometimes it will be slightly slower than 0.9.7. It seems like this has more to do with the driver and OS than anything. Restarting now, maybe that will give better results after...
-
Changing the draw ID size from 4 to 2 had no effect on the framerate. I suspect some small change in the vertex shader accounts for this...
-
This thread is for performance testing of the version 0.9.7 beta. I am running the previous version 0.9.6 alongside my builds from source code. Starting with the instanced geometry benchmark: https://github.com/UltraEngine/Benchmarks/blob/main/Project Files/Ultra Engine/Source/Instanced Geometry.cpp I got rid of the ortho camera and sprite, and I am using Fraps to measure framerate. 0.9.6: 3100 0.9.7: 2560 This could be due to the instance buffer, which is now using 4 bytes instead of 2, or it could be due to some small shader change. Testing on a GEForce 1080 with Nvidia driver 560.70. @Dreikblack
-
Component text fields do not save pasted text in the Editor
Josh replied to Dreikblack's topic in Bug Reports
Okay, I think I got it. Change is uploaded. If it happens again, please tell me exactly where you clicked to make it occur. -
Component text fields do not save pasted text in the Editor
Josh replied to Dreikblack's topic in Bug Reports
Almost got it, not quite there... -
Component text fields do not save pasted text in the Editor
Josh replied to Dreikblack's topic in Bug Reports
I think this is fixed. Build goes up in a few minutes... -
-
I do not know the exact cause, but when I recompiled the culling compute shader it worked correctly. It does include other shaders, so some critical bit of information must have been missing.
-
This stuff is always tricky because it's a double-blind process, since both culling and rendering are done on the GPU...
-
Probably due to the terrain decal layers value not getting read correctly in the vertex shader...
-
After the shader modification, It looks like mesh layers only appear on terrain patches with an X and Z position above zero...
-
There's a checkbox in the Appearance options. Static lights will use one shadow map for all static objects, and another for dynamic objects. This can greatly reduce the amount of shadow polygons that have to be drawn when an object moves: https://www.ultraengine.com/learn/Entity_Staticize In that example, only the spinning fan has to be drawn when the shadow is updated each frame. The rest of the scene is just copied from the static shadow map. id Tech does something similar to this, I think.
- 1 reply
-
- 1