Jump to content


  • Content Count

  • Joined

  • Last visited

Community Reputation

7,912 Excellent

About Josh

  • Rank
    Advanced Member

Profile Information

  • Gender
  • Location
    San Francisco, CA

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I will have an interesting blog soon about the two different types of data we store in the new engine, and why two different methods are needed to send that data to the GPU with Vulkan. Good material for a GDC lecture!

  2. To my surprise, my first attempt at Vulkan pipeline barriers seems to have worked perfectly.

    1. gamecreator


      How have you not learned after all these years?  Nothing that seems to work ever truly works for long.  😏

    2. khotan


      Nice work Sir Josh !

  3. Josh

    Buffers in Vulkan

    To my surprise, my first attempt at pipeline barriers seems to have worked perfectly.
  4. The controller may be NULL until it loads in. Make sure it exists before you apply the material.
  5. Apply an invisible material to the parent. It’s a blend setting. )
  6. Josh

    Buffers in Vulkan

    I've now got the Vulkan renderer drawing multiple different models in one single pass. This is done by merging all mesh geometry into one single vertex and indice buffer and using indirect drawing. I implemented this originally in OpenGL and was able to translate the technique over to Vulkan. This can allow an entire scene to be drawn in just one or a few draw calls. This will make a tremendous improvement in performance in complex scenes like The Zone. In that scene in Leadwerks the slow step is the rendering routine on the CPU churning through thousands of OpenGL commands, and this design effectively eliminates that entire bottleneck. There is no depth buffer in use in the above image, so some triangles appear on top of others they are behind. Vulkan provides a lot of control when transferring memory into VRAM, and as a result we saw an 80% performance improvement over OpenGL in our first performance comparison. I have set up a system that uses staging buffers to transfer bits of memory from the CPU into shared memory buffers on the GPU. Another interesting capability is the ability to transfer multiple chunks of data between buffers in just one command. However, that control comes at a cost of complexity. At the moment, the above code works fine on Intel graphics but crashes on my discrete Nvidia card. This makes sense because of the way Vulkan handles memory. You have to explicitly synchronize memory yourself using a pipeline barrier. Since Intel graphics just uses system memory I don't think it will have any problems with memory synchronization like a discrete card will. That will be the next step, and it is really a complex topic, but my usage of it will be limited, so I think in the end my own code will turn out to be pretty simple. I expect Vulkan 2.0 will probably introduce a lot of simplified paths that will become the default, because this stuff is really just too hard for both beginners and experts. There’s no reason for memory to not be synced automatically and you’re just playing with fire otherwise.
  7. Can you help me with the thread ? I try to use Leadwerks with c++

  8. I've been working on some difficult buffer stuff in Vulkan that is at the core of our performance gains.

    1. Show previous comments  4 more
    2. Josh


      I am estimating six weeks from the time I started, April 24. It definitely looks like this was worthwhile though.

    3. Josh
    4. Lethal Raptor Games

      Lethal Raptor Games

      Far out that's some heavy stuff! :P

  9. One common mistake is when people create a project with no map called "start,map", thinking that the game will just load whichever was the last map they had open in the editor.
  10. The only reason I was even doing it is because the editor will need this. What do you plan to use that for? I don’t know a lot of games that would use such a detailed interface element.
  11. This has never been supported. There might have been an unfinished script for this while the GUI system was in beta.
  12. This is not meant to be supported.
  13. Beta subscribers can download the Vulkan vs. OpenGL benchmark here: https://www.leadwerks.com/community/topic/19016-vulkan-vs-opengl-benchmark/

  14. Beta subscribers can try the benchmark here:
  15. Yes, there are still speed gains that Vulkan provided. Most of the performance increase we are seeing here is due to a new architecture, but Vulkan did increase performance an addition 80% on top of what was already achieved. So apparently there was additional driver overhead that could be removed. I did not expect Vulkan would increase performance so much, but I guess since we are already very optimal we were able to really take advantage of the reduced overhead.
  • Create New...