Jump to content
  • entries
    941
  • comments
    5,894
  • views
    870,218

About this blog

Learn about game development technology

Entries in this blog

Environment Probes

Note: this is highly experiment and subject to cancellation, change, revision, etc. Now on with the blog...   Shadmar and Reepblue have paved the way for this research, and I am experimenting with some of these ideas in Leadwerks.   Environment probes in Leadwerks are an experimental entity that creates a vantage point from which a cubemap is generated. The cubemap provides a 360 degree view of the surrounding environment in a single texture. This texture can then be used in the deferred

Josh

Josh

Two ideas I have

Leadwerks Game Engine 4.6 will feature a new peer-to-peer networking system that solves the NAT punch-through problem and provides an easy way to create a public list of game servers. Together with this and Leadwerks GUI which was released last year, we will soon have the tools to make a great deal of new types of games. Previously we have been focused on single-player games but the ability to create multiplayer games with fast reliable networking opens up a lot of new and fun possibilities.

Josh

Josh

Model Editor

When you double-click a model file in the asset browser, it's opened up in the model editor window within Leadwerks3D. You can drag materials onto a model to assign them, then just save the model and close the window. You can also drag textures straight onto the model, and Leadwerks3D will do a pretty good job of guessing what material to use. If no material exists, it will create one, and take a good guess at what textures should be added to it, then apply the newly created material to the m

Josh

Josh

Sparse Voxel Octrees

Previously I noted that since Voxel global illumination involves calculation of direct lighting, it would actually be possible to do away with shadow maps altogether, and use voxels for direct and global illumination. This can eliminate the problems of image-based shadows like shadow acne and adjusting the shadow map size. I also believe this method will turn out a lot faster than shadow map rendering, and you know how I like fast performance.  The sparse voxel octree node structure consume

Josh

Josh in Articles

Teaching Leadwerks

About a week ago we sent a survey out to Leadwerks 3 customers to get their feedback and plan our next leg of development. According to the results, the number one most important issue Leadwerkers care about is tutorials.   We've taken the following steps to build resources for Leadwerks user to learn from: The Leadwerks 3 tutorials database is available here. Anyone can submit a new article, but all articles must be approved by the staff before they appear visible. Without a process of a

Josh

Josh

Building a Zero-Overhead Renderer

The Leadwerks 4 renderer was built for maximum flexibility. The Leadwerks 5 renderer is being built first and foremost for great graphics with maximum speed. This is the fundamental difference between the two designs. VR is the main driving force for this direction, but all games will benefit. Multithreaded Design Leadwerks 4 does make use of multithreading in some places but it is fairly simplistic. In Leadwerks 5 the entire architecture is based around separate threads, which is chal

Josh

Josh

Leadwerks on the iPhone

So here's what it took to get Leadwerks running on the iPhone:   Let's start at the point we had the C++ code building and running with an OpenGL 1 renderer on OSX. I was worried OpenGLES might be a dramatically different API that required a whole new learning curve, but I was pleasantly surprised. It's just a stripped-down version of OpenGL, more like OpenGL 3.3 than anything else. Making the OpenGL2ES renderer was mostly just a copy and paste operation, and then I had to comment out a few

Josh

Josh

Leadwerks 3 Rendering Enhancements

Shadows in 3D games are important. Not only do they look good, but they communicate information about the 3D geometry of the scene. Leadwerks pioneered dynamic deferred lighting, with one of the first deferred renderers in the world on PC. However, fully dynamic lighting requires some pretty beefy hardware, and the reality of today's situation in computing hardware has to be considered when we are designing a platform for other people build commercial products on.   To support games that re

Josh

Josh

First performance demonstration

I am proud to show off our first performance demonstration which proves that my idea for the Leadwerks 5 renderer works. To test the renderer I created 100,000 instanced boxes. The demo includes both regular and a mock VR mode that simulates single-pass stereoscopic rendering with a geometry shader. The hardware I tested on is an Intel i7-4770R (for graphics too) which is a few years old. Now this is not a perfect benchmark for several reasons. There is no frustum culling being perform

Josh

Josh

Game Launcher beta support for SteamOS

Leadwerks Game Launcher now works with SteamOS, with some caveats.   First, you must set the application to use the "Official Bindings" controller configuration by Leadwerks Software.   When you start Leadwerks Game Launcher on SteamOS, a page of available games will be shown. Click on the game you want to play. The game will be shown on a new page, and a blue button will appear on the bottom left of the screen. You can press the B button on your controller to go back to the main page, or

Josh

Josh

Website Updated

Our website has been updated with a new look and responsive design. Here are a few highlights.   Landing page:   Product pages:   Screenshots used in the site from games will display the title and author when you hover the mouse over them.   Responsive layout scaled for phones:   Clearer writing that says exactly what Leadwerks does and who it is for:   Dark gallery and video pages:   Sleek screenshot pages:   I left the Workshop pages as-is for now. The forum softw

Josh

Josh

Leadwerks 3.6 Roadmap

I've got a pretty good idea of what features I want to pack into Leadwerks Game Engine 3.6, and I'm ready to share them with you now.   Just about all the simple easy features I think I can implement are already built into Leadwerks, but there are some bigger more involved things I want the engine to support. Instead of doing these one at a time, I am doing research on them all, and changing my focus when I get stuck. I've got a big block of research done that all revolves around creating ne

Josh

Josh

Tessellation in Action

With tessellation now fully implemented, I was very curious to see how it would perform when applied to arbitrary models. With tessellation, vertices act like control points for a Bezier mesh that is subdivided dynamically in screen space. Could tessellation be used to add new details to any low-poly model? Here is a low-res character model with a pointy head and obvious sharp edges all around his silhouette: When tessellation is enabled, the sharp edges go away and the mes

Josh

Josh

Analysis of Google Draco

Google Draco is a library that aims to do for mesh data what MP3 and OGG did for music. It does not reduce memory usage once a mesh is loaded, but it could reduce file sizes and improve download times. Although mesh data does not tend to use much disk space, I am always interested in optimization. Furthermore, some of the NASA models I work with are very high-poly, and do take up significant disk space. Google offers a very compelling chart showing a compression ratio of about 95%: Ho

Josh

Josh in Articles

Loading Binary and Embedded GLTF files

It turns out GLTF is actually three different file formats. ? Textures can be loaded from external files, embedded in a binary .glb file, but they can also be saved in an ASCII GLTF files using base64 encoding. Having three different ways to store textures is not a good design decision, but at least it's better than the disaster called Collada. (Note to Khronos: If your file format specification has more pages than a Tom Clancy novel it probably sucks.) Our GLTF loader now supports files wi

Josh

Josh

Lua Debugging

Until now, we haven't really had proper debugging info when a crash occurs during execution of a Lua script. Thanks to some previous work TylerH did with Lua, a conversation with him revealed how to easily add debugging info into the editor and script interpreter. (Incidentally, the Lua integration was Tyler's idea to begin with!) Here's a shot of the Script Editor catching an engine crash and displaying the script line the error occurs at. This is a crash that occurred in the engine, not a

Josh

Josh

Dev Blog

Documentation is being organized into a built-in help browser. Documentation simply falls into two categories, "Tutorials" and "Commands". Tutorials are laid out in a linear sequence of lessons divided into subchapters. "Commands" displays the command reference, which remains pretty much the same as it is now, with the exception of additional function syntax declarations for Lua. Search and index will be added, but right now I want to focus on content.   The sequence of tutorials is meant

Josh

Josh

Building Textures in Leadwerks Game Engine 5

The new engine features advanced image and texture manipulation commands that allow a much deeper level of control than the mostly automated pipeline in Leadwerks Game Engine 4. This article is a deep dive into the new image and texture system, showing how to load, modify, and save textures in a variety of file formats and compression modes. Texture creation has been finalized. Here is the command: shared_ptr<Texture> CreateTexture(const TextureType type, const int width, const in

Josh

Josh

Halloween Week is Here!

It's the week of Halloween, and we've got a lot going on! Halloween Game Tournament II The Leadwerks Halloween Game Tournament is nearly here. Rather than a competition, this is a co-opetition. Everyone who publishes an entry to the Workshop or forum gets a Leadwerks sticker. Any entries that are judged to be especially noteworthy get a Leadwerks T-shirt. Prizes are sitting here waiting to be shipped.  Leadwerks 3.3 Leadwerks 3.3 is in beta testing now. Among several new features is

Josh

Josh

Cleaning up physics shapes

Before Leadwerks 3 existed, Leadwerks 2 used a little tool called "Phygen" to generate collision shape files for 3D models:     The user would input the parameters and then save that file with the same name as the model it was to be associated with, with the PHY file extension. This was not a very good system, but the idea of storing a physics shape in a PHY file that was automatically loaded along with the model was a good one.   In Leadwerks 3 we implemented prefabs to make it easier t

Josh

Josh

Textures and materials in Vulkan

I now have different materials with textures working in Vulkan. The API allows us to access every loaded texture in any shader, although some Intel chips have limitations and will require a fallback. This is interesting because some of our design decisions in Leadwerks 4 were made because we had a limit of 16 textures a shader could access. Terrain clipmaps were a good solution to this problem, but since the same limitations no longer exist it may be time to revisit this design. We could, for ex

Josh

Josh

Leadwerks 4.4 RC2

A new build is available on the beta branch.  I am putting it out tonight because I want to give you guys as much lead time as possible. I have not tested all hardware yet, and there were a lot of shader updates, so there could easily be a compile error on AMD or Intel cards.  Will test those out in the morning. New camera commands for fog: virtual void SetFogColor(const float r, const float g, const float b, const float a); virtual void SetFogAngle(const float start, const float s

Josh

Josh

12-14-2009

New update Thursday, if everything goes well. Progress will speed back up after that.

Josh

Josh

Building Deployable Projects

It's quite a challenge to get something semi-deployable to work on four platforms. I never intended to become an expert on the subject, but here are some of the interesting things I have picked up recently.   Code generation mode in Visual Studio By default, Visual Studio builds programs in debug mode that won't run on consumer's machines. Fix it by changing the code generation mode: http://www.leadwerks...grams-cant-run/   Static Libraries in Xcode Xcode has no "exclude from build" opt

Josh

Josh

More amazing things you can do with Lua in Leadwerks 5

Our implementation of Lua in Leadwerks 5 is shaping up to be a dream come true. Below are some of the great improvements that are being made. Access STL Containers in Lua You can access STL containers directly from Lua: for n = 1, #entity.kids do entity.kids[n]:Move(1,0,0) end while #entity.kids > 0 do entity.kids[1]:SetParent(nil) end In fact, verbose commands like CountChildren() and GetChild() are no longer needed at all. On the C++ side you can use this: for (int

Josh

Josh

×
×
  • Create New...