Jump to content

Blogs

Streaming Terrain Data Fetching

Previously, I showed how to create a terrain data set from a single 32768x32768 heightmap. The files have been uploaded to our Github account here. We will load data directly from the Github repository with our load-from-URL feature because this makes it very easy to share code examples. Also, even if you fly around the terrain for a long time, you are unlikely to ever need to download the complete data set. Think about Google Earth. How long would it take you to view the entire planet at full r

Josh

Josh

Streaming Terrain Data Preparation

Being able to support huge worlds is great, but how do you fill them up with content? Loading an entire planet into memory all at once isn't possible, so we need a system that allows us to stream terrain data in and out of memory dynamically. I wanted a system that could load data from any source, including local files on the hard drive or online GIS sources. Fortunately, I developed most of this system last spring and I am ready to finish it up now. Preparing Terrain Data The first st

Josh

Josh

Progress Update

Quick update... Work is pretty much complete on nearly all of the highpoly models of the wall textures... Just a few more to create and bake out in Xnormal and then I will be able to start making the color ID maps. I expect to have the ID maps done sometime by the beginning of the week after next week. Total number of textures stands at 201, after taking into account some of the walls having minor detail variants. Below shows a few snapshots of the my most recent work:

TWahl

TWahl

Optimizing the Vertex Pipeline

In my work with NASA we visualize many detailed CAD models in VR. These models may consist of tens of millions of polygons and thousands of articulated sub-objects. This often results in rendering performance that is bottlenecked by the vertex rather than the fragment pipeline. I recently performed some research to determine how to maximize our rendering speed in these situations. Leadwerks 4 used separate vertex buffers, but in Leadwerks 5 I have been working exclusively with interleaved v

Josh

Josh

Bulldozer Tool - Road building

I really wanted to use the spline tool to make roads because it is a powerful tool but it has a big inconvenient: It builds the spline as you want but then moves the terrain to pass it to the spline - this sounds first ok but using this especially on big maps, you end up with a terrain that shows artificial big too sharpened contours and hollowed areas where the road is going through. To avoid this problem, you have to place a lot of spline pivots and nodes very carefully on the map, follow

Marcousik

Marcousik

Leadwerks 5 Beta Update Available

A beta update is available. The ray tracing system is now using a smaller 128x128x128 grid. There is still only one single grid that does not move. Direct lighting calculation has been moved to the GPU. The GI will appear darker and won't look very good. Additional shader work is needed to make the data look right, and I probably need to implement a compute shader for parts of it. The system is now dynamic, although it current has a lot of latency. GI renders only get triggered when somethi

Josh

Josh

Voxel ray tracing and motion

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 whe

Josh

Josh

Starting with a Bang

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 $1

Josh

Josh in Articles

First step C++ First Player game start

Since 3 years I have not programmed anything with Leadwerks, that has nothing to do with Leadwerks it was a real life thing. So I must learn the stuff from the beginning. My natural language is not English, I hope you can forgive me a mistake or two . If you want test the code you make a new project and a map. I made some test objects to see if climbing fails or not and under which steps I can crouch and on which step I can jump. I make this blog for me to save the sour

Bytecroc

Bytecroc

Dynamic Voxel Updates

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

Josh

Josh

Leadwerks 5 Beta Update Available with Faster Raytracing

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 sc

Josh

Josh

Emissive Textures

Took a break from 3d modeling work for the past few days, decided to play around with lighting and other effects in 3ds max to get a general sense of what types of environment/moods can be created. I made a material with some emissive maps and applied it to my simple cube scene, thought I would post it since it turned out pretty cool (3ds max rendering): More to come later on...

TWahl

TWahl

Leadwerks 5 Beta Update Available

An update is available for beta testers. All Lua errors should now display the error message and open the script file and go to the correct line the error occurs on. The voxel raytracing system is now accessible. To enable it, just call Camera:SetGIMode(true). At this time, only a single voxel grid with dimensions of 32 meters, centered at the origin is in use. The voxel grid will only be generated once, at the time the SetGIMode() method is called. Only the model

Josh

Josh

Fast Voxel Raytracing with Vulkan

PBR materials look nice, but their reflections are only as good as the reflection data you have. Typically this is done with hand-placed environment probes that take a long time to lay out, and display a lot of visual artifacts. Nvidia's RTX raytracing technology is interesting, but it struggles to run old games on a super-expensive GPU, My goal in Leadwerks 5 is to have automatic reflections and global illumination that doesn't require any manual setup, with fast performance. I'm on the fi

Josh

Josh

Progress Update + Planning For Next Steps

As of just now, I have finished creating all of the individual color ID maps for the floor textures, seen below in my progress tracker. Next steps which I plan on carrying out (bolded are the ones I intend to focus on in the next month or so): Finish modeling wall textures (30 ish to go). Finish modeling a few detail textures. Create material ID maps for all wall/detail textures (60+ to go). Paint all diffuse maps using a common substance painter project file(s)

TWahl

TWahl

Leadwerks 5 Beta Update Available

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

Josh

Josh

3D Displacement Mapping / Tesselation in 3DS Max

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

TWahl

TWahl

Advanced Transparency and Refraction in Vulkan

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

Josh

Josh in Articles

Transparency and Refraction in Vulkan

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

Josh

Josh

Free Scifi PBR Materials Giveaway (3 Textures)

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

TWahl

TWahl

Leadwerks 5 Beta Update Available

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%,

Josh

Josh

Leadwerks 5 beta update adds Visual Studio Code Integration for Lua

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

Josh

Josh

×
×
  • Create New...