Un-lighting filter for FilterForge

When working with 3D scanned assets it’s desirable to have the true surface color without the effects of lighting. This filter approximates that original color.

UnLight v1.0

UnLight.ffxml for FilterForge 4.


The filter takes the raw scanned color and the indirect illumination as image inputs.

Raw color Indirect illumination Un-lit color

The example above is a scan of a rock, baked onto an encompassing, low poly mesh. The first image is the raw color which includes captured ambient occlusion. The second image is the baked indirect illumination: the contribution of the environment to the final color of the surface. It is very important to get this right in the 3D scene by approximating the original light conditions as closely as possible.
In this case my job was rather easy: a single white hemisphere closely resembled the cloudy sky under which the object was captured. (By the way I used Autodesk’s Memento photogrammetry service.)

After feeding the filter those two images I tweaked the Gamma and Saturation boost parameters to my liking. The latter is for increasing saturation in occluded areas.


– If possible capture objects in even, diffuse lighting like on a foggy or cloudy day, because it’s easy to recreate those conditions in the 3D application. Smaller objects could be put inside of a white paper lantern, lit from above.

– When scanning the mesh also try to capture some of the immediate surroundings, especially if they have strong colors. In the following example the tree bark receives a considerable amount of green bounce light:

High poly mesh Low poly mesh Low poly mesh un-lit

The high polygon mesh contains the tree and a patch of grass around it. The green color contribution is easier to see on the unprocessed low poly mesh on the second image. The last picture shows how the colorization and the effect of the sky light were significantly reduced by the filter.

– Ideally the lighting environment is reconstructed from an HDR light probe captured along the mesh. However the filter has not been tested with such a setup, so there might be artifacts. If you run into issues please let me know.

– When an area is very dark due to occlusion then boosted saturation might produce weird colors since it doesn’t have much data to work with. In those cases manual retouching is required.

read more

Going open source

I’ve made two of my projects open source:

Amps, a modular particle system for Unity 3D:

UnrealShader, an UnrealEngine-esque physically based shader for Modo 801:

Enjoy. :)

read more

Happy Holidays!

read more

Unreal Shader v0.9 for MODO

In the last couple of weeks I’ve been trying to develop a good asset authoring workflow for UnrealEngine 4. I looked at several possible solutions but none of them seemed good enough for my purpose: prohibitive cost and multiple asset transfer steps were the most common problems.

At the end I decided to make it as simple as possible using software I already own: Model and texture everything in MODO and export to UE4 while doing the purely 2D image editing in PhotoLine*.

The trouble was that MODO’s standard surface material is not physically based so baking it’s properties won’t yield textures usable in Unreal. So I took a big breath, fired up the C++ SDK and made a custom material: it allows me to texture a model in a physically based manner with the preview viewport providing near realtime feedback. The look in MODO is quite close to the result in Unreal:

High detail mesh in MODO

Low detail mesh in MODO

Low detail mesh in UE4

Most of the differences can be attributed to the different ways they handle the environment. (Extra highlights due to unclamped HDRI and less color contribution in MODO.)

The custom material is available for download on the UnrealShader for MODO page. It’s not feature complete and will see some more tweaking but should be already useful for creating opaque objects.

* Photoline is a great piece of software, I recommend it to anyone not happy with Photoshop.

read more

Status report

Drone Alone is progressing steadily: I finished several subsystems including enemies, navigation for aerial units, missions and weapons. Unfortunately I’ve encountered two showstopper engine bugs which hindered development in the past couple of weeks, so I moved on to the asset authoring phase for the time being.

The first step there was creating the layout of the apartment based on references and gameplay experience from the test level. Here is the top down view of the blocked out map, rendered in modo:

Originally I wanted multiple floors but they caused path finding issues after the navigation system was massaged to support flying pawns, not to mention the challenge of ground units dealing with stairs.

Although you can’t tell from that image but I finally settled on the art style for the project: Formica Punk, a retro future based on late 70’s, early 80’s technology. The idea came from Bouletcorp’s excellent comic strip.

read more

Drone Alone v0.11

In v0.11 the Thruster engine is tweaked to be less floaty and a first person camera was added to make it easier to fly around with said engine.

The project now has it’s own page where you’ll find installation instructions, changelog, etc.

Finally here is a video of v0.11:

read more

Drone Alone v0.1

The first public build is available:

Drone Alone v0.11 (Windows, 74 MB)


Extract the archive to an empty folder then start the game with the executable:
DroneAlone_v0.1 \ DroneAlone \ Binaries \ Win64 \ DroneAlone.exe

This version is for testing drone engines and controls: a series of balloons are placed on the map and they pop if the drone touches them. Try to finish the course as fast as you can.
The J/K/L keys switch between propeller/thruster/pulse engines. The I key inverts vertical looking. Escape closes the game.
There are no real weapons yet, only a nudger trace is produced on left click.

Ideas, opinions and suggestions are welcome in the official forum thread.


Read more: Overview / Controls and engines / Environment / Technical details

EDIT: Fixed download link.

read more

Bugs, delay

For the last week I’ve been battling with two show-stopper bugs in the Unreal Engine: one in v4.1.1 and another in v4.2. The second one is my bigger concern right now so I’m trying to find some kind of a workaround but it’s a tough nut to crack.

read more