Jump to content

Next Steps

Josh

832 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 Marcousik in Marcousik's Creations Blog 5
      I updated the moto I was working on and now the physics let having fun with this.
       
    • By Josh in Josh's Dev Blog 7
      A new build is available on the beta branch on Steam.
      Updated to Visual Studio 2019. Updated to latest version of OpenVR and Steamworks SDK. Fixed object tracking with seated VR mode. Note that the way seated VR works now is a little different, you need to use the VR orientation instead of just positioning the camera (see below). Added VR:SetRotation() so you can rotate the world around in VR. The VRPlayer script has rotation added to the left controller. Press the touchpad to turn left and right. Any arbitrary rotation will work, including roll and pitch. Here are the offset commands:
      static void VR::SetOffset(const Vec3& position); static void VR::SetOffset(const float x, const float y, const float z); static void VR::SetOffset(const float x, const float y, const float z, const float pitch, const float yaw, const float roll); static void VR::SetOffset(const Vec3& position, const Vec3& rotation); static void VR::SetOffset(const Vec3& position, const Quat& rotation); static Vec3 VR::GetOffset(); static Vec3 VR::GetRotation(); static Quat VR::GetQuaternion();  
    • By Josh in Josh's Dev Blog 24
      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.
×
×
  • Create New...