Jump to content

JMichael

Staff
  • Content Count

    16,743
  • Joined

  • Last visited

Everything posted by JMichael

  1. In cooperation with Northrop Grumman, our paper "Building Performant VR Applications for Multi-Domain Modeling and Simulation" has been accepted for publication at I/ITSEC 2020.

    1. aiaf

      aiaf

      will be available somewhere to read ?

    2. JMichael

      JMichael

      Yes, in December.

  2. Have you used Leadwerks 4?
  3. What specifically do you mean?
  4. Yes, and it will support Source Engine modding.
  5. No, 3DWS has not worked since Windows 7 was introduced, I think.
  6. So far the new Voxel ray tracing system I am working out is producing amazing results. I expect the end result will look like Minecraft RTX, but without the enormous performance penalty of RTX ray tracing. I spent the last several days getting the voxel update speed fast enough to handle dynamic reflections, but the more I dig into this the more complicated it becomes. Things like a door sliding open are fine, but small objects moving quickly can be a problem. The worst case scenario is when the player is carrying an object in front of them. In the video below, the update speed is fast, but the limited resolution of the voxel grid makes the reflections flash quite a lot. This is due to the reflection of the barrel itself. The gun does not contribute to the voxel data, and it looks perfectly fine as it moves around the scene, aside from the choppy reflection of the barrel in motion. The voxel resolution in the above video is set to about 6 centimeters. I don't see increasing the resolution as an option that will go very far. I think what is needed is a separation of dynamic and static objects. A sparse voxel octree will hold all static objects. This needs to be precompiled and it cannot change, but it will handle a large amount of geometry with low memory usage. For dynamic objects, I think a per-object voxel grid should be used. The voxel grid will move with the object, so reflections of moving objects will update instantaneously, eliminating the problem we see above. We are close to having a very good 1.0 version of this system, and I may wrap this up soon, with the current limitations. You can disable GI reflections on a per-object basis, which is what I would recommend doing with dynamic objects like the barrels above. The GI and reflections are still dynamic and will adjust to changes in the environment, like doors opening and closing, elevators moving, and lights moving and turning on and off. (If those barrels above weren't moving, showing their reflections would be absolutely no problem, as I have demonstrated in previous videos.) In general, I think ray tracing is going to be a feature you can take advantage of to make your games look incredible, but it is something you have to tune. The whole "Hey Josh I created this one weird situation just to cause problems and now I expect you to account for this scenario AAA developers would purposefully avoid" approach will not work with ray tracing. At least not in the 1.0 release. You're going to want to avoid the bad situations that can arise, but they are pretty easy to prevent. Perhaps I can combine screen-space reflections with voxels for reflections of dynamic objects before the first release. If you are smart about it, I expect your games will look like this: I had some luck with real-time compression of the voxel data into BC3 (DXT5) format. It adds some delay to the updating, but if we are not trying to show moving reflections much then that might be a good tradeoff. Having only 25% of the data being sent to the GPU each frame is good for performance. Another change I am going to make it a system that triggers voxel refreshes, instead of constantly updating it no matter what. If you sit still and nothing is moving, then the voxel data won't get recalculated and processed, which will make the performance even faster. This makes sense if we expect most of the data to not change each frame. I haven't run any performance benchmarks yet, but from what I am seeing I think the performance penalty for using this system will be basically zero, even on integrated graphics. Considering what a dramatic upgrade in visuals this provides, that is very impressive. In the future, I think I will be able to account for motion in voxel ray tracing, as well as high-definition polygon raytracing for sharp reflections, but it's not worth delaying the release of the engine. Hopefully in this article I showed there are many factors, and many approaches we are can use to try to optimize for different aspects of the effect. For the 1.0 release of our new engine, I think we want to emphasize performance above all else.
  7. Ambiguous questions gets ambiguous answers! 🤪
  8. Crowdfunding campaigns are a great way to kick off marketing for a game or product, with several benefits. Free promotion to your target audience. Early validation of an idea before you create the product. A successful crowdfunding campaign demonstrates organic consumer interest, which makes bloggers and journalists much more willing to give your project coverage. Oh yeah, there's also the financial aspect, but that's actually the least important part. If you make $10,000 in crowdfunding, you can leverage that campaign to make far more than that amount in sales of your final product. I did over a million dollars in sales on Steam starting with a $40,000 Kickstarter project. There are two types of crowdfunding projects. The first is something you don't really want to do unless you get paid enough to make it worthwhile. For this type of project you should set a goal for the minimum amount of money you would be able to finish the project for. There is more uncertainty with this type of campaign, but if you don't meet your goal you don't have to deliver anything. Failing early can be a good thing, because there's nothing worse than building a product and having nobody buy it. With the successful Leadwerks for Linux Kickstarter campaign, people were asking for Linux support and I said "Okay, put your money where your mouth is" and they did. The second type of project is something you would probably do anyways, and a crowdfunding campaign just gives you a way to test demand and make some extra cash early. For this type of project you should set a relatively low goal, something you think you can earn quickly. If your campaign fails, that puts you in an awkward position because then you have to either cancel the project or admit you didn't actually need the money. A successful campaign does put you on the hook with a delivery date and a firm description of the product, so make sure your goals are realistic and attainable within your planned time frame. For a campaign to be successful you need to prepare. Don't just kick off a campaign without having an existing fanbase. You need to build an email list of people interested in your project before the campaign starts. But if you haven't done that yet, there is another way... With my crowdfunding campaign for the new engine coming up in October, there is an opportunity for others to latch on to the success of the upcoming campaign. I have an extensive email list I don't use very often, and my more formal blog articles regularly get 20,000+ views. Plus I now have some reach on Steam, and a lot more customers than back in 2013. I expect my campaign will hit its target goal within the first few days. Once my goal is reached, it would be easy for me to post an announcement saying "Oh hey, check out these other projects built with my technology" and add links on my project page. Your project could link back to mine and to others, and we can create a network of projects utilizing the new game engine technology. I think my new campaign will be very successful, and jumping onto that will probably give you a better result than you would get otherwise. Another thing to consider is that with the new ray-tracing technology, even simple scenes look incredible. I think there is a temporary window of opportunity where games that utilize this type of technology will stand out and automatically get more attention because the graphics look so dramatically better. My final results will make your game look like the shot from Minecraft RTX below, but the voxel method I am using will run fast on all hardware: So if you have a game project made with the new engine, or something that would look good in the new engine, there is an opportunity to piggyback your crowdfunding campaign off of mine. What makes a good game pitch? Demonstrating gameplay, having a playable demo, a track record of past published games, and gameplay videos all make a much better case than pages of bullet points. (I like animated GIFs because they show a lot more than a static screenshot but they are dead simple and fun.) You need to inspire the audience to believe in your concept, and for them to believe in your ability to deliver. So put your best foot forward!
  9. You can download the last version here: https://www.leadwerks.com/files/3DWorldStudio5.6.exe
  10. I think a combination of voxels for rough surfaces and polygon ray tracing for sharp reflections will provide the best results. Neither of them can really do both. The RTX approach is an extremely brute force method, and I think I can get better much performance with other means. It's kind of funny that right now we basically have a power struggle between engine developers and hardware manufacturers. I hope the GPU makers don't try to take over more in the future.
  11. The Kickstarter campaign will start the marketing. I may do well-targeted advertising if it provides a net profit.
  12. I've been working to make my previously demonstrated voxel ray tracing system fully dynamic. Getting the voxel data to update fast enough was a major challenge, and it forced me to rethink the design. In the video below you can see the voxel data being updated at a sufficient speed. Lighting has been removed, as I need to change the way this runs. I plan to keep two copies of the data in memory and let the GPU interpolate smoothly in between them, in order to smooth out the motion. Next I need to add the direct lighting and GI passes back in, which will add an additional small delay but hopefully be within a tolerable threshold.
  13. A solution I am exploring to handle large-scale polygon and voxel raytracing led me to a design that does some similar things to this, actually. The point is the raytracing capabiilities, but the ability to stream in high-resolution data is an accidental side effect. I don't think anyone here will be able to utilize this type of thing because the art requirements would be monstrous, and the reason I am doing it is for raytracing, not something that can be easily replicated with tessellation, but something like this in the future isn't off the table.
  14. New Kickstarter campaign is coming...

    1. gamecreator

      gamecreator

      Very curious what it'll offer.

    2. JMichael

      JMichael

      EVERYTHING

  15. In the new engine, special water shaders will only require you morph the vertex positions and surface normal and color, because the raytracing system already handles reflection on everything, so it can just use that without requiring any specialized code. There's also refraction on all transparent surfaces, so you can just use that. Water used to be a highly specialized system but now all surfaces are being drawn with the same properties.
  16. Send your information one way from the CPU to the shaders.
  17. It’s not very polished right now so it would be hard for people who don’t have a lot of experience.
  18. I am still flexible on this if a good level designer comes along that I find inspiring. Maybe that will happen when the new engine is released. I'm happy to focus on the code. I think everything will look good with the new raytracing system.
  19. A new beta update is available. The raytracing implementation has been sped up significantly. The same limitations of the current implementation still apply, but the performance will be around 10x faster, as the most expensive part of the raytrace shader has been precomputed and cached. The Material::SetRefraction method has also been exposed to Lua. The Camera::SetRefraction method is now called "SetRefractionMode". The results are so good, I don't have any plans to use any kind of screen-space reflection effect.
  20. There is a bit of confusion in the lighting. Am I looking at a specular reflection from a scene light, or is the little light on the wall illuminating the wall itself?
  21. Finally was able to pre-compute more of the GI calculation and store in a texture, rendering speed is almost ten times faster when I do this.

    1. Cromartie

      Cromartie

      How do I become a beta tester of Leadwerks 5?

  22. Why not let the server control all movement so there is no discrepency to resolve?
×
×
  • Create New...