Jump to content
  • entries
    941
  • comments
    5,894
  • views
    867,559

About this blog

Learn about game development technology

Entries in this blog

Upsampling Textures with AI

I did a little experiment with FPS Creator Pack #75 by upsampling the images with Gigapixel, which uses deep learning to upsample images and infer details that don't appear in the original pixels. The AI neural network does a pretty impressive job, generating results that are look better than a simple sharpen filter: I doubled the size of the textures to 1024x1024. Then I generated normal maps from the high-res images using AMD's TGA to DOT3 tool, and saved the normal maps with BC5 DDS compressi

Josh

Josh

Update available on public branch

An update is available which fixes a problem when antialiasing is disabled on AMD hardware. You must update your project to get the new shaders and executables for the fix.  

Josh

Josh

Update available on default branch

A new update is now available on the default (stable) branch. For a list of improvements and fixes, see my blog and the bug reports forum: http://www.leadwerks.com/werkspace/blog/1-joshs-blog/ http://www.leadwerks.com/werkspace/forum/80-bug-reports/   If you purchased the sci-fi DLC, the example maps will now be automatically copied into your "MyGame" project, making it easier to find them.   If you would like to trade your standalone registration key in for a Steam key, so you can get ac

Josh

Josh

Update Available [beta]

An update is available on the beta branch which resolves the AMD rendering issues on Windows 10 with 1x MSAA setting enabled: http://www.leadwerks.com/werkspace/topic/13273-graphical-glitch/   The following components have changed: Lighting shaders adjusted to handle regular 2D textures (MSAA level 0) Editor updated, for Windows. Lua interpreter and debug interpreter updated, for Windows.   The C++ library has not been updated yet.

Josh

Josh

Update available

A small update is out, on all branches, that fixes the vehicle wheels not being positioned correctly: http://www.leadwerks.com/werkspace/topic/15405-problembug-with-vehicles-cars-wheels-dont-move-since-update-4-2

Josh

Josh

Unit Testing

I've spent the last few days writing simple examples for every single command in Leadwerks 3. Not only does this make the documentation more friendly, it also acts as a final test to make sure all the commands work the way they say they should. I make the C++ example and then Chris converts it to Lua (and tells me what I did wrong!).   I didn't realize it at first, but this really showcases the strength of API design of Leadwerks. Since you get full control over the execution and flow of a

Josh

Josh

Uniform Buffers in Vulkan

Following this tutorial, I have managed to add uniform buffers into my Vulkan graphics pipeline. Since each image in the swapchain has a different graphics pipeline object, and uniform buffers are tied to a pipeline, you end up uploading all the data three times every time it changes. OpenGL might be doing something like this under the hood, but I am not sure this is a good approach. There are three ways to get data to a shader in Vulkan. Push constants are synonymous with GLSL uniforms, althoug

Josh

Josh

Umbra Sucks. Check out our Easy No-Bake Occlusion Culling

With the help of @martyj I was able to test out occlusion culling in the new engine. This was a great chance to revisit an existing feature and see how it can be improved. The first thing I found is that determining visibility based on whether a single pixel is visible isn't necessarily a good idea. If small cracks are present in the scene one single pixel peeking through can cause a lot of unnecessary drawing without improving the visual quality. I changed the occlusion culling more to record t

Josh

Josh

Ultra Engine Player Input Features

There are three new features in the upcoming Ultra Engine (Leadwerks 5) that will make game input better than ever before. High Precision Mouse Input Raw mouse input measures the actual movement of the mouse device, and has nothing to do with a cursor on the screen. Windows provides an interface to capture the raw mouse input so your game can use mouse movement with greater precision than the screen pixels. The code to implement this is rather complicated, but in the end it just boils

Josh

Josh in Articles

Ultra Engine glTF extensions

As I have explained before, I plan for Ultra Engine to use glTF for our main 3D model file format, so that your final game models can be easily loaded back into a modeling program for editing whenever you need. glTF supports a lot of useful features and is widely supported, but there are a few missing pieces of information I need to add into it. Fortunately, this JSON-based file format has a mechanism for extensions that add new features and data to the format. In this article I will describe th

Josh

Josh in Articles

Ultra Engine Compatibility with Leadwerks Game Engine

As the first release of Ultra Engine approaches, it seems clear that the best way to maximize its usefulness is to make it as compatible as possible with the Leadwerks game engine. To that end, I have implemented the following features. Native Loading of Leadwerks File Formats Ultra Engine loads and saves DDS, glTF, and OBJ files. Other formats are supported by plugins, both first and potentially third-party, for PNG, JPG, BMP, TGA, TIFF, GIF, HDR, KTX2, and other files. Additionally,

Josh

Josh in Articles

Ultra Engine Client App

I've been working hard getting all the rendering features to work together in one unified system. Ultra Engine, more than any renderer I have worked on, takes a lot of different features and integrates them into one physically-based graphics system. A lot of this is due to the excellent PBR materials system that Khronos glTF provides, and then there are my own features that are worked into this, like combined screen-space and voxel ray traced reflections. Anyways, it's a lot of di

Josh

Josh in Articles

Ultra Engine (Leadwerks 5) beta updated with strip lights and texture scrolling

A new update is available for beta subscribers. What's new Added support for strip lights. To create these just call CreateLight(world, LIGHT_STRIP). The entity scale on the Z axis will determine the length of the line, and the outer range will determine the radius in which light shows. Added new properties to the JSON material scheme. "textureScroll" is a float value that can animate a texture to make it smoothly move. "textureScrollRotation" is an angle to control which dir

Josh

Josh

Ultra Engine (Leadwerks 5) beta updated

A new beta is available. In this build I cleaned up a lot of internal stuff. I removed some parts of the engine that I want to redesign in order to clean up the source. JSON material files loaded from MDL files are now supported. Added ActiveWindow() command. if the game window is not the foreground window this will return null. The Steamworks and all dependent classes are temporarily removed. There's a lot of stuff in there I don't intend to use in the future like all the Worksho

Josh

Josh

Ultra App Kit beta updated with DPI scaling support

An update for Ultra App Kit beta on Steam is now available. This finishes the user interface scaling to support HD, 4K, 8K, and other resolutions. My original plan was to force an application restart if the scale setting was changed, but I found a way to dynamically resize the interface in a manner that gives natural results, so it now supports dynamic rescaling. That is, if the user changes the Windows DPI setting, or if a window is dragged to a monitor with a different DPI setting, the applica

Josh

Josh in Articles

Ultra App Kit Beta Updated

An update is available for the Ultra App Kit beta on Steam. Menu open / close behavior is finished and is now working bug-free. Fixed problem where list boxes were only showing the first item. A submenu item is demonstrated in the example program. A progress bar widget is added in the example program. A label widget is added in the example program. A second radio button is added in the example program. Still to do: Work out some scaling i

Josh

Josh in Articles

Ultra App Kit beta updated

A new update is available on Steam for Ultra App Kit. A TEXTFIELD_PASSWORD style flag has been added and is used for the password entry form: A WINDOW_CHILD style flag has been added. I found this was necessary while implementing a Vulkan 3D viewport in a GUI application. You can read more about that here. Pressing the Tab key will now switch the focus between widgets. The "Learn" tab in the project manager has been moved in front of the "Community" tab. The Visual

Josh

Josh in Articles

Ultra App Kit 1.2 Released

Ultra App Kit 1.2 is now available on our site and on Steam. This is a bug fix update that resolves numerous small issues reported in the bug reports forum. To download the latest version, see My Purchases.

Josh

Josh in Articles

Ubuntu is probably the future of PC gaming

Here's something I've been thinking about. What do you think?   Apple Locking down OSX. No optical drive. The Mac software shelf at Fry's is now obsolete. Mac App Store. Gatekeeper only allows "signed" applications, by default. [*]Miniaturization of computer hardware, at the cost of graphical performance. [*]Move to non-upgradable hardware (glued-in memory). [*]Moving away from file system access (iCloud). [*]Hardware is expensive, and will always be a luxury item.   W

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

Turbo Game Engine Design Document

Subscribers can now download my current revision of the Turbo Game Engine design document in the private forum here: Here are a few excerpts: The document is still evolving so expect changes and updates.

Josh

Josh

Turbo Game Engine Beta Update

A big update for the beta of the upcoming Turbo Game Engine is now available, adding support for VR and Lua script! VR Rendering Turbo Game Engine now supports VR rendering, with support for true single-pass stereoscopic rendering on Nvidia GPUs. Other hardware will use a double-rendering path that is still faster than Leadwerks. To turn VR on simply call EnableVR(). Controllers are not yet supported, just rendering. Lua Scripting Lua script is now supported in Turb

Josh

Josh

Turbo Game Engine (Leadwerks 5) beta updated with Vulkan renderer

The beta of our new game engine has been updated with a new renderer built with the Vulkan graphics API, and all OpenGL code has been removed. Vulkan provides us with low-overhead rendering that delivers a massive increase in rendering performance. Early benchmarks indicate as much as a 10x improvement in speed over the Leadwerks 4 renderer. The new engine features an streamlined API with modern C++ features and an improved binding library for Lua. Here's a simple C++ program in Turbo:

Josh

Josh

Turbo Game Engine (Leadwerks 5) beta updated

A new beta update is available for subscribers. What's new? Lighting Point and spot lights are now supported in the new Vulkan renderer, with either PBR or Blinn-Phong lighting. Lighting is controlled by the shader in the material file. There are two main shaders you can use, "Shaders/PBR.spv" and "Shaders/Blinn-Phong.spv". See below for more details. JSON Materials Materials can now be loaded from JSON files. I am currently using the .json file extension instead of "mat",

Josh

Josh

Turbo Game Engine (Leadwerks 5) beta updated

An update for the beta of the new engine is now available with the following changes: GLTF loader is now working for most models. A large collection of GLTF files are available online for free from many sources, and they can be loaded right into the engine without any adjustment for materials or textures. Single-file GLB files also work. Added support for GLTF extension KHR_materials_pbrSpecularGlossiness. Disabled PNG loader gamma correction. world->SetSkybox(tex

Josh

Josh

×
×
  • Create New...