An update is available that adds the new refraction effect. It's very easy to create a refractive transparent material:
auto mtl = CreateMaterial();
mtl->SetTransparent(true);
mtl->SetRefraction(0.02);
The default FPS example shows some nice refraction, with two overlapping layers of glass, with lighting on all layers. It looks great with some of @TWahl's PBR materials.
If you want to control the strength of the refraction effect on a per-pixel basis add an alpha channel
Testing 3D displacement mapping on planar objects using my upcoming scifi PBR materials. The results looked really good, however this can only be used for a still render (note the polygon count on the top right of the below screenshot). All textures created in substance painter and exported at 2K resolution.
More information here on displacement mapping is available on Autodesk's 3DS Max Knowledge Base: https://knowledge.autodesk.com/support/3ds-max/learn-explore/caas/CloudHelp
Heat haze is a difficult problem. A particle emitter is created with a transparent material, and each particle warps the background a bit. The combined effect of lots of particles gives the whole background a nice shimmering wavy appearance. The problem is that when two particles overlap one another they don't blend together, because the last particle drawn is using the background of the solid world for the refracted image. This can result in a "popping" effect when particles disappear, as well
One of the downsides of deferred rendering is it isn't very good at handling transparent surfaces. Since we have moved to a new forward renderer, one of my goals in Leadwerks 5 is to have easy hassle-free transparency with lighting and refraction that just works.
Pre-multiplied alpha provides a better blending equation than traditional alpha blending. I'm not going to go into the details here, but it makes it so the transparent surface can be brighter than the underlying surface, as you can
Work is continuing on my upcoming scifi mega pack that is inching closer and closer to being released - today I decided to compile a few PBR materials that I created as some more tests in substance painter. The below images show a simple 3ds max scene that I blocked out in a few minutes as well as some renders from substance painter.
Materials available in uncompressed PNG format and are 2k textures. They are also perfectly seamless and will tile in all directions.
I
A new update is available that improves Lua integration in Visual Studio Code and fixes Vulkan validation errors.
The SSAO effect has been improved with a denoise filter. Similar to Nvidia's RTX raytracing technology, this technique smooths the results of the SSAO pass, resulting in a better appearance.
It also requires far fewer sample and the SSAO pass can be run at a lower resolution. I lowered the number of SSAO samples from 64 to 8 and decreased the area of the image to 25%,
A new update is available to beta testers. This makes some pretty big changes so I wanted to release this before doing any additional work on the post-processing effects system.
Terrain Fixed
Terrain system is working again, with an example for Lua and C++.
New Configuration Options
New settings have been added in the "Config/settings.json" file:
"MultipassCubemap": false,
"MaxTextures": 512,
"MaxCubemaps": 16,
"MaxShadowmaps": 64,
"MaxIntegerTextures": 32,
"MaxUIntegerTe
A new update is available that adds post-processing effects in Leadwerks 5 beta.
To use a post-processing effect, you load it from a JSON file and apply it to a camera like so:
auto fx = LoadPostEffect("Shaders/PostEffects/SSAO.json");
camera->AddPostEffect(fx);
You can add as many effects as you want, and they will be executed in sequence.
The JSON structure looks like this for a simple effect:
{
"postEffect":
{
"subpasses":
[
{
A new update is available for beta testers.
The dCustomJoints and dContainers DLLs are now optional if your game is not using any joints (even if you are using physics).
The following methods have been added to the collider class. These let you perform low-level collision tests yourself:
Collider::ClosestPoint
Collider::Collide
Collider::GetBounds
Collider::IntersectsPoint
Collider::Pick
The PluginSDK now supports model saving and an OBJ save
A new update is available to beta testers.
I updated the project to the latest Visual Studio 16.6.2 and adjusted some settings. Build speeds are massively improved. A full rebuild of your game in release mode will now take less than ten seconds. A normal debug build, where just your game code changes, will take about two seconds. (I found that "Whole program optimization" completely does not work in the latest VS and when I disabled it everything was much faster. Plus there's the precompile
The Leadwerks 5 beta has been updated.
A new FileSystemWatcher class has been added. This can be used to monitor a directory and emit events when a file is created, deleted, renamed, or overwritten. See the documentation for details and an example. Texture reloading now works correctly. I have only tested reloading textures, but other assets might work as well.
CopyFile() will now work with URLs as the source file path, turning it into a download command.
Undocumented class method
I am happy to show you a preview of the new documentation system I am working on:
Let's take a look at what is going on here:
It's dark, so you can stare lovingly at it for hours without going blind.
You can switch between languages with the links in the header.
Lots of internal cross-linking for easy access to relevant information.
Extensive, all-inclusive documentation, including Enums, file formats, constructors, and public members.
Data is fetch
All this month I have been working on a sort of academic paper for a conference I will be speaking at towards the end of the year. This paper covers details of my work for the last three years, and includes benchmarks that demonstrate the performance gains I was able to get as a result of the new design, based on an analysis of modern graphics hardware.
I feel like my time spent has not been very efficient. I have not written any code in a while, but it's not like I was working that whole t
For some reason, I've been seeing a lot of questions on how to add actors created into C++ recently. My first attempt on this was in 2016 with Crawler's Den; A modern remake of the SDK example level. That was on a version of Leadwerks in which there was no official Actor system in place. Today, the engine has an Actor class which can be attached to any entity, but besides some loose examples, it's not well documented. Also there is no official way on linking your entities in the editor with your
I have been spending most of my time on something else this month in preparation for the release of the Leadwerks 5 SDK. However, I did add one small feature today that has very big implications for the way the engine works. You can load a file from a web URL:
local tex = LoadTexture("https://www.github.com/Leadwerks/Documentation/raw/master/Assets/brickwall01.dds")
Why is this a big deal? Well, it means you can post code snippets that can be copied and pasted without requiring download o
Before we were all locked in our homes, I was working on a lot of code for Leadwerks 4 for a reboot of concept I've made back in 2017. While I decided to shelf it again to wait for the new engine (Because the game will run faster, look better, VR, etc) I'm going to share you some of my core code which is cross compatible between the new and old engine. I'm sharing this as I see most people just using stock example code for window creation and setting saving without knowing how it all works. This
I focused my imagination on game art, trying to create a beautiful world where players may want to explore and drive.
The first quest could be: Find a way out of the forest.
Here is a little showcase of what I made:
Edit: 27.04.2020
The goal was to get the better I could out of a 4096x4096 map, after months work trying all possibilities I obtained a good decor and great area for an offroad game.
Performances are a bit slow but so much models was added -
Example:
I could strangely find nothing about terrain generation from script except for LE5...
So here is an example that will run with LE4.6 on how you can generate 2 little hills on a terrain and paint it from script. Can be usefull for games with random generated landscape.
The script I modified is from here: https://www.leadwerks.com/community/topic/15715-minimap-generator/?do=findComment&comment=104697
So first install the minimap shader to run this:
Leadwerks Game Engine 5 will be backwards-compatible with asset file formats used in version 4. In addition, we are adding support for glTF 2.0 (GL Transmission Format), a new open-spec model format from Khronos with support for skinned animation and PBR materials. glTF will be our main 3D model format, for both development and final published models.
What's so great about the glTF file format?
Documented and Human-Readable
Unlike the "black box" FBX file format, which can only be re
I've moved the GI calculation over to the GPU and our Vulkan renderer in Leadwerks Game Engine 5 beta now supports volume textures. After a lot of trial and error I believe I am closing in on our final techniques. Voxel GI always involves a degree of light leakage, but this can be mitigated by setting a range for the ambient GI. I also implemented a hard reflection which was pretty easy to do. It would not be much more difficult to store the triangles in a lookup table for each voxel in order to
I implemented light bounces and can now run the GI routine as many times as I want. When I use 25 rays per voxel and run the GI routine three times, here is the result. (The dark area in the middle of the floor is actually correct. That area should be lit by the sky color, but I have not yet implemented that, so it appears darker.)
It's sort of working but obviously these results aren't usable yet. Making matters more difficult is the fact that people love to show their best scr
The polygon voxelization process for our voxel GI system now takes vertex, material, and base texture colors into account. The voxel algorithm does not yet support a second color channel for emission, but I am building the whole system with that in mind. When I visualize the results of the voxel building the images are pretty remarkable! Of course the goal is to use this data for fast global illumination calculations but maybe they could be used to make a whole new style of game graphics.