Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by Josh

  1. Is there a setting like “let the application choose”?
  2. Josh

    Lighting in Vulkan

    I have basic point lights working in the Vulkan renderer now. There are no shadows or any type of reflections yet. I need to work out how to set up a depth pre-pass. In OpenGL this is very simple, but in Vulkan it requires another complicated mess of code. Once I do that, I can add in other light types (spot, box, and directional) and pull in the PBR lighting shader code. Then I will add support for a cubemap skybox and reflections, and then I will upload another update to the beta. Shadows will use variance shadow maps by default. With these, all objects must cast a shadow, but our renderer is so fast that this is not a problem. I've had very good results with these in earlier experiments. I then want to complete my work on voxel-based global illumination and reflections. I looked into Nvidia RTX ray tracing but the performance is awful even with a GEForce 2080. My voxel approach should provide good results with fast performance. Once these features are in place, I may release the new engine on Steam as a programming SDK, until the new editor is ready.
  3. The Shape::Box() command takes additional paramters for offset, rotation, and scale.
  4. I just created 100,000 boxes and let them render. It was a test to see how fast the culling system was.
  5. I've done one test against Unity and performance was *significantly* faster in our new engine. Of course I want to wait until we are closer to release before I make these publicly available.
  6. Our new game engine will deliver the fastest performance of any game engine available.
  7. I'm also adding some easy Lua commands: LuaSetGlobal("mainwindow", window); LuaSetGlobal("maincontext", context);
  8. The Turbo:: namespace isn't actually needed. I'm not sure why I had that in my example.
  9. PreUpdate() NewtonUpdate() PostUpdate() The collision world is an extra world for storing collision objects in. The World class has a Simulation object that can be cast to a NewtonDynamicsSimulation object, which contains a member for the Newton world.
  10. Turning the lights back on. My OpenGL shader code will be easy to integrate. But I want to go slowly in small steps and test a lot, to make sure everything is very solid.
  11. Turbo Game Engine (Leadwerks 5) beta is updated with Vulkan support.

  12. If you are interested in selling non-exclusive rights to me for a one-time payment, I will make this into a DLC on Steam when it's finished.
  13. World::Update only calls NewtonUpdate when enough time has passed for a physics update to be needed.
  14. The beta of our new game engine has been updated with a new renderer built with the Vulkan graphics API, and all OpenGL code has been removed. Vulkan provides us with low-overhead rendering that delivers a massive increase in rendering performance. Early benchmarks indicate as much as a 10x improvement in speed over the Leadwerks 4 renderer. The new engine features an streamlined API with modern C++ features and an improved binding library for Lua. Here's a simple C++ program in Turbo: #include "Turbo.h" using namespace Turbo; int main(int argc, const char *argv[]) { //Create a window auto window = CreateWindow("MyGame", 0, 0, 1280, 720); //Create a rendering context auto context = CreateContext(window); //Set some Lua variables VirtualMachine::lua->set("mainwindow", window); VirtualMachine::lua->set("maincontext", context); //Create the world auto world = CreateWorld(); //Load a scene auto scene = LoadScene(world, "Maps/start.map"); while (window->KeyHit(KEY_ESCAPE) == false and window->Closed() == false) { world->Update(); world->Render(context); } return 0; } Early adopters can get access to beta builds with a subscription of just $4.99 a month, which can be canceled at any time. New updates will come more frequently now that the basic renderer is working.
  15. I'm preparing the new Turbo beta, with Vulkan support.

    1. TheConceptBoy
    2. gamecreator


      If it's anything like previous releases, you'll need a subscription to access it.

    3. Lethal Raptor Games
  16. The walls are chipped paint and the floor is clean geometric shapes. It will be interesting to see what the walls look like at high res.
  17. Oh here is an experimental feature that might help you: void Entity::SaveAnimationState(Stream* stream) bool Entity::LoadAnimationState(Stream* stream) You should be able to use that to broadcast animation data.
  18. For a competitive game that is used in E sports then obviously that requires more stringent protection.
  19. Josh

    Voxel Code

    Now what would be very interesting is if we can produce the same results as RTX with a fast voxel method and show them side by side. I have some ideas how this can be done. In order to increase the resolution we will need to use less memory, so that means storing a more complex sparse octree structure I in VRAM instead of just a 3D texture.
  20. You could encrypt the network data if you were worried. If doesn’t seem like a problem people should worry about. in general it is best for the server to make decisions because that keeps everyone in sync but if you need to I think it is fine to let clients. L4D and other big games work fine with this system.
  21. Couldn't you just tell the client "a grenade is exploding" and let it decide whether that incurs damage or not, and send that result to the host?
  22. Josh

    Voxel Code

    Now the thing that bothers me about this idea, and a few people have raised it, is that our whole selling point on the new engine is speed, and this contradicts that message. If "Turbo Game Engine" runs at 10 FPS, it's not very turbo, is it? And if not speed, why do people buy it? Well, now we are back to the Leadwerks marketing that says :"it's a nice program and lots of people like it, maybe you will like it too". So it might be that there is an opportunity to recreate these kinds of renderings with voxel GI code that runs much much faster. That would be a big selling point. Of course it would get buried and ignored unless the users make good use of it, create good screenshots and videos, and brag about how great their engine is.
  23. We already include a statement in the executable that should indicate to the driver to use the discrete GPU. #ifdef _WIN32 #include <windows.h> //Hack to force NVidia discrete card when integrated graphics are present: //http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf - Page 3 extern "C" { _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; _declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; } #endif It should just work.
  24. Josh

    Voxel Code

    I don’t know. There are too many unknowns. I think at some point I should take a month to experiment with this. nvidis is recommending a hybrid tenderer which is good because a full raytracer would eliminate all our speed advantages, since all the work would be performed on the GPU.
  • Create New...