Jump to content

Next Steps

Josh

823 views

I've got the basic GI algorithm working but it needs a lot of work to be correct. I tend to do very well when the exact outcome is well-defined, but I am not as good at dealing with open-ended "artistic" programming. I may end up outsourcing the details of the GI shader to someone else, but the underlying data management is solid enough that I am not scared of it anymore.

There's a lot of aspects of the design I'm not scared of anymore. We worked out smart pointers (including Lua integration), physically-based rendering, and most importantly the crazy ideas I had for the super efficient architecture work really well.

At this point I think I am going to put the GI on hold, since I could play around with that endlessly, and focus on getting a new build out to the beta subscribers. We're going to just use a single skybox for ambient and specular reflections right now, and when it's ready GI and environment probes will provide that. 

After that I think I will focus on the physics and navigation systems, exposing the entire API to Lua, and getting some of the outsourced work started. There's a few things I plan to farm out:

  • Visual Studio Code Lua debugger
  • GI details
  • Weather system
  • Water and clouds systems

Everything else is pretty well under my control. This started out as an idea for an impossible design, but everything has fallen into place pretty neatly.

  • Like 5


13 Comments


Recommended Comments

  • Weather system +++
  • Water and clouds systems  +++
  • Road builder system ? It 's a must in an infinite world ;)

So yes it's a challenge to build weather system in LE4.5 but just as good as waiting for LE5 ?!

I wonder how long will be LE4 in course after LE5 comes out....Just like nobody still use LE3 what ?

Share this comment


Link to comment

Yes, roads too. That comes with the terrain system, which I still have a lot of questions about.

Leadwerks 4.6 or 4.7 will probably be the last 4.x version.

  • Sad 1

Share this comment


Link to comment
1 hour ago, Rick said:

Any plans for the networking side of things?

I think that is pretty much done and ready to roll out.

  • Like 1

Share this comment


Link to comment
40 minutes ago, Josh said:

I think that is pretty much done and ready to roll out.

I don't recall, were these commands exposed to Lua?

Share this comment


Link to comment
36 minutes ago, Rick said:

I don't recall, were these commands exposed to Lua?

I honestly don’t remember. Documentation has not been written, and the beta branch was rolled back so we can do a small update next week

  • Like 1

Share this comment


Link to comment

I have a random question: will Turbo continue to incorporate libraries/tools Leadwerks has now?  I'm thinking specifically Steam SDK but also libcurl, GameAnalytics and anything else currently in Leadwerks.  Is there anything that might be cut?

Share this comment


Link to comment
4 minutes ago, gamecreator said:

I have a random question: will Turbo continue to incorporate libraries/tools Leadwerks has now?  I'm thinking specifically Steam SDK but also libcurl, GameAnalytics and anything else currently in Leadwerks.  Is there anything that might be cut?

All of that will be included. No need to remove any of those.

  • Like 3

Share this comment


Link to comment
Quote

After that I think I will focus on the physics and navigation systems, exposing the entire API to Lua...

With Turbo and its extreme lightning cowabunga speed capabilities :D, do you plan to have dynamic navmesh generation to be an available feature like shown in the early LE3 dev videos? 

 

  • Like 1

Share this comment


Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Blog Entries

    • By Josh in Josh's Dev Blog 10
      Current generation graphics hardware only supports up to a 32-bit floating point depth buffer, and that isn't adequate for large-scale rendering because there isn't enough precision to make objects appear in the correct order and prevent z-fighting.

      After trying out a few different approaches I found that the best way to support large-scale rendering is to allow the user to create several cameras. The first camera should have a range of 0.1-1000 meters, the second would use the same near / far ratio and start where the first one left off, with a depth range of 1000-10,000 meters. Because the ratio of near to far ranges is what matters, not the actual distance, the numbers can get very big very fast. A third camera could be added with a range out to 100,000 kilometers!
      The trick is to set the new Camera::SetClearMode() command to make it so only the furthest-range camera clears the color buffer. Additional cameras clear the depth buffer and then render on top of the previous draw. You can use the new Camera::SetOrder() command to ensure that they are drawn in the order you want.
      auto camera1 = CreateCamera(world); camera1->SetRange(0.1,1000); camera1->SetClearMode(CLEAR_DEPTH); camera1->SetOrder(1); auto camera2 = CreateCamera(world); camera2->SetRange(1000,10000); camera2->SetClearMode(CLEAR_DEPTH); camera2->SetOrder(2); auto camera3 = CreateCamera(world); camera3->SetRange(10000,100000000); camera3->SetClearMode(CLEAR_COLOR | CLEAR_DEPTH); camera3->SetOrder(3); Using this technique I was able to render the Earth, sun, and moon to-scale. The three objects are actually sized correctly, at the correct distance. You can see that from Earth orbit the sun and moon appear roughly the same size. The sun is much bigger, but also much further away, so this is exactly what we would expect.

      You can also use these features to render several cameras in one pass to show different views. For example, we can create a rear-view mirror easily with a second camera:
      auto mirrorcam = CreateCamera(world); mirrorcam->SetParent(maincamera); mirrorcam->SetRotation(0,180,0); mirrorcam=>SetClearMode(CLEAR_COLOR | CLEAR_DEPTH); //Set the camera viewport to only render to a small rectangle at the top of the screen: mirrorcam->SetViewport(framebuffer->GetSize().x/2-200,10,400,50); This creates a "picture-in-picture" effect like what is shown in the image below:

      Want to render some 3D HUD elements on top of your scene? This can be done with an orthographic camera:
      auto uicam = CreateCamera(world); uicam=>SetClearMode(CLEAR_DEPTH); uicam->SetProjectionMode(PROJECTION_ORTHOGRAPHIC); This will make 3D elements appear on top of your scene without clearing the previous render result. You would probably want to move the UI camera far away from the scene so only your HUD elements appear in the last pass.
    • By tipforeveryone in tipforeveryone's Blog 12
      I spent a whole week for learning UE4 with cpp, yep, UE4 is a great engine for sure, but I found out that my mind could not understand the way UE4 works easily. It is too complex and made me tired. Then I returned to my Leadwerks project and felt so familiar. Soooo... sweet, everything is simple as it is
      It felt like I have had a long trip to UE city then return to my hometown. I miss Leadwerks indeed.
      Last year, I thought I could only use Leadwerks with LUA and never touch its CPP side. But I tried my best, learned Cpp for 8 months. Now I am not a cpp pro but I am confident in using this language. At least I can rewrite my whole project in CPP instead. this 3-years project helped me to understand my potential and interest in gamedev.
      I wish Josh be successful in progress of making Turbo, a new hope for much better Leadwerks.
      To all people who are using Leadwerks and help me these years, love you.
      ...
      Peace!
    • By Josh in Josh's Dev Blog 2
      Still a lot of things left to do. Now that I have very large-scale rendering working, people want to fill it up with very big terrains. A special system will be required to handle this, which adds another layer to the terrain system. Also, I want to resume work on the voxel GI system, as I feel these results are much better than the performance penalty of ray-tracing. There are a few odds and ends like AI navigation and cascaded shadow maps to finish up.
      I am planning to have the engine more or less finished in the spring, and begin work on the new editor. Our workflow isn't going to change much. The new editor is just going to be a more refined version of what we already have, although it is a complete new program written from scratch, this time in C++.
      It's kind of overwhelming but I have confidence in the whole direction and strategy of this new product.
×
×
  • Create New...