Jump to content
  • entries
    941
  • comments
    5,894
  • views
    871,175

About this blog

Learn about game development technology

Entries in this blog

Digging Deeper

The general GUI elements for LeadwerksGUI are more or less done, and I have turned my attention to another problem. The LeadwerksGUI system is built around the notion that GUI widgets have a discrete bounding box in which they are contained. All events and drawing occur within these bounds, which are further constrained by either their parent widget's bounds or the area of the window they are created on. However, there are three situations where this paradigm breaks down.   Menus   Wind

Josh

Josh

Workshop Download Issue Solved

I figured out why some Workshop items weren't installing correctly. There's a series of steps I need to go through to make a paid item ready for sale, and I omitted one button press in the Steamworks interface.   If you experienced downloading problems with the nature model pack, zombies, or any of the scifi material packs, they should work now.   Let me know if you still have any problems.

Josh

Josh

Three New Features in C++11

C++11 modernizes the C++ programming language with many new features and techniques. Below are just a few of the new ways you can use C++ with Leadwerks.   auto You can automatically declare a new variable type by the data that is assigned to it: auto i = 42; // i is an int auto l = 42LL; // l is an long long auto p = new foo(); // p is a foo*   Here's a more practical use that saves a lot of typing. The code below: std::map<std::string, std::vector<int>> map; for

Josh

Josh

Leadwerks Game Engine 4.2 RC2

A new build is available on the beta branch: Reverted to Visual Studio 2015 for final release. Information on downgrading your 2017 projects can be found here. Added soft particle shader. Added smoke and soft smoke particle prefabs. Added SSR post-effect (by Igor, Shadmar, and myself). Added trigger material and updated doors example map.

Josh

Josh

Leadwerks Game Engine 4.2 RC4

A new build is available on the beta branch: Fixed animation bug found by tumira Multiple animations will now be a bit faster. Fixed probes not rendering bug found by reepblue   If all is good this will go out on the stable branch this Sunday.   The beta testers have done a great job. Thanks for your help!

Josh

Josh

Beta 4.3 available

I've uploaded a full build of version 4.3 on the beta branch. Version 4.3 will be released in short order and simply contains performance enhancements, OGG support, and bug fixes.   Version 4.4 is due out in the spring and will include the new in-game GUI system. This will coincide with the first Leadwerks / itch.io Game Jam.

Josh

Josh

Leadwerks Game Engine 4.4 Release Candidate

A new build is up on the beta branch, for Windows and Linux, with Lua and C++ support.  This is a full update. Version 4.4 will be announced June 26th, and this will go on the default branch some time next week. I was not able to get the new vehicles working in time, and It will have to be added in an update.  Version 4.4 will have vehicles disabled.  If you need this functionality, stick with version 4.3. A big thanks for all the people who are helping to test it.

Josh

Josh

Back in Action

So, most of December was eaten up on some NASA VR projects. There was a conference last week in Seattle that I attended for a couple of days. Then I had meetings in northern California and Arizona. Unfortunately, I can't really talk much about what I am doing with those. Rest assured I am working on a plan to grow the company so we can provide better products and support for you. I'm taking a hit on productivity now in order to make a bigger plan happen. Today is my first day back home

Josh

Josh

Version 4.5 Beta Update

The beta branch on Steam is updated with some fairly big changes. Leadwerks Engine is now compiled with and uses Visual Studio 2017. It is now compiled on Ubuntu 16.04.  I do not know yet what changes this means for the end user but I had to add some dependencies in the editor. In addition to that, ZIP import is now working (File > Import). The VR command set is finished and documented.  A VR project template is forthcoming. The new vehicles are not yet ready.

Josh

Josh

How I turned my 3D game into a VR game with eight lines of code

I recently published the full source code to my little mini-game "Asteroids3D". You can download it here: Turning this into a VR game with Leadwerks Engine 4.5 was very easy.  I will show you how here. The first step is to enable VR.  This code will check to see if OpenVR initializes correctly. If it fails for any reason, an error message will be printed and the game will exit: if VR:Enable()==false then System:Print("VR failed to initialize.") return end Now we need to adjus

Josh

Josh

Robotic Arm in VR Concept 2

Here is the second iteration of our VR robotic arm concept. This can be used for the safe planning of robotic motions and early detection of potential problems. VR gives us intuitive manual control with six degrees of freedom along with stereoscopic vision for superior spatial awareness.  

Josh

Josh

More voice recording

Previously I talked about a voice recording API done through Steamworks. However, OpenAL already has a simple recording API that handles this. The only thing the Steamworks API adds is compression (presumably OGG) to send the data. I quickly implemented an OpenAL-based recording API, although I do not presently have any recording hardware device to test with. OGG compression can be added with the Ogg library that is already built into Leadwerks. Here is my modified recording API: s

Josh

Josh

Shadow Caching

I have shadow caching working now in Turbo. This feature is already in Leadwerks Game Engine 4. The idea is that static scene geometry should not be redrawn when a dynamic object moves. Imagine a character (6000 polys) walking across a highly detailed room (100,000 polys), with one point light in the room. If we mark the scene geometry as static and the character as dynamic, then we can render a shadow map cache of the static scene once. When the character moves, the static cache is copied into

Josh

Josh

Real-time Global Illumination

I finally have a cool screenshot to show you of our new real-time global illumination working. Here is a comparison screenshot showing direct lighting only: Now there are still lots of small issues to worry about. Right now I am only using a single cone trace. More cones will improve accuracy, but I think light leaking is just always going to be a fact of life with this technique. Still, the results looks great, require no precalculation, respond to environment changes, and

Josh

Josh

Clustered Forward Rendering - Fun with Light Types

By modifying the spotlight cone attenuation equation I created an area light, with shadow. And here is a working box light The difference here is the box light uses orthographic projection and doesn't have any fading on the edges, since these are only meant to shine into windows. If I scale the box light up and place it up in the sky, it kind of looks like a directional light. And it kind of is, expect a directional light would either use 3-4 different box lights set at rad

Josh

Josh

3D Texture Filled with Voxel Lighting

I have successfully transferred lit voxel data into a 3D texture. The texture is now being used to display the lighting at each voxel. Soft edges are appearing due to linear filtering in the texture. To achieve this, I used an OpenGL 4.2 feature which allows you to write values into any arbitrary position in a texture. This could also be used for motion blur or fluid simulations in the future. However, since Mac support for OpenGL only goes up to 4.1, it means we cannot use real-time GI on a Mac

Josh

Josh

Smart Pointers Lesson

This is something I typed up for some colleagues and I thought it might be useful info for C++ programmers. To create an object: shared_ptr<TypeID> type = make_shared<TypeID>(constructor args…) This is pretty verbose, so I always do this: auto type = make_shared<TypeID>(constructor args…) When all references to the shared pointer are gone, the object is instantly deleted. There’s no garbage collection pauses, and deletion is always instant: auto thing = m

Josh

Josh

Dev Log

My last NASA project is complete. There's a physics bug in Leadwerks 4.6 that will get resolved this weekend. Starting Monday I am going to focus on the new engine again and move us forward so we can release in 2020. I am really looking forward to getting back in the game.

Josh

Josh

GUI Resolution Independence

DPI scaling and the 2D drawing and GUI system were an issue I was a bit concerned about, but I think I have it worked out. This all goes back to the multi-monitor support that I designed back in September. Part of that system allows you to retrieve the DPI scale for each display. This gives you another piece of information in addition to the raw screen resolution. The display scale gives you a percentage value the user expects to see vector graphics at, with 100% being what you would expect with

Josh

Josh

Trials and Tribulations

After about four days of trying to get render-to-texture working in Vulkan, I have everything working except...it doesn't work. No errors, no clue what is wrong, but the renderer is not even clearing the depth attachment, which is why the texture read shown here is flat red. There's not much else to say right now. I will keep trying to find the magic combination of cryptic obscure settings it takes to make Vulkan do what I want. This is very hard stuff, but once I have it working

Josh

Josh

Single-file SPIR-V shaders for Vulkan

It is now possible to compile shaders into a single self-contained file that can loaded by any Vulkan program, but it's not obvious how this is done. After poking around for a while I found all the pieces I needed to put this together. Compiling First, you need to compile each shader stage from a source code file into a precompiled SPIR-V file. There are several tools available to do this, but I prefer GLSlangValidator because it supports the Google #include extension. Put your vertex

Josh

Josh

Lighting in Vulkan

I have basic point lights working in the Vulkan renderer now. There are no shadows or any type of reflections yet. I need to work out how to set up a depth pre-pass. In OpenGL this is very simple, but in Vulkan it requires another complicated mess of code. Once I do that, I can add in other light types (spot, box, and directional) and pull in the PBR lighting shader code. Then I will add support for a cubemap skybox and reflections, and then I will upload another update to the beta. S

Josh

Josh

Transparency with Premultiplied Alpha

A new update is available for beta subscribers. Transparent materials are now supported. Unlike the old deferred renderer, our new clustered forward renderer supports transparency really really well! You can add these in a JSON material file with a Boolean property called "transparent" set to true: "transparent": true There are no separate blend modes now, since pre-multiplied alpha allows alpha and additive blending in a single pass. This is actually a really simple technique but for som

Josh

Josh

Advanced Tessellation in Vulkan

Previously I talked about the technical details of hardware tessellation and what it took to make it truly useful. In this article I will talk about some of the implications of this feature and the more advanced ramifications of baking tessellation into Turbo Game Engine as a first-class feature in the  Although hardware tessellation has been around for a few years, we don't see it used in games that often. There are two big problems that need to be overcome. We need a way to preven

Josh

Josh

How to use gmax

Not a lot of people know about this, but back in 2001 Discreet (before the company was purchased by Autodesk) released a free version of 3ds max for modding games. Back then game file formats and tools were much more highly specialized than today, so each game required a "game pack" to customize the gmax interface to support that game. I think the idea was to charge the game developer money to add support for their game. Gmax supported several titles including Quake 3 Arena and Microsoft Flight

Josh

Josh in Articles

×
×
  • Create New...