Need some help implementing something for a halo effect around lights

So take a look at this screenshot from a released game: https://am23.mediaite.com/tms/cnt/uploads/2019/07/blair-witch-game-captures-the-terror-of-the-original.jpg

I would like to implement the halo/foggy effect around lights similar to the effect you see on the above screenshot. I thought about writing a post filter for this but I’m not sure it’s suitable for that and if it is I’m not that good with shaders so a bit uncertain on how I should accomplish this. What other options do I have?

Thanks!

Hmmm, perhaps some sort of bloom lighting? There are a couple implementations floating around, including one built into the engine.

Yeah, bloom will get you pretty close.

…might need to combine it with a particle effect.

I’m already using the bloom post filter but that doesn’t seem to have any effect at the position of the light. It does affect where the light is shining but I want a halo effect on the light itself. So I might try to combine it with a particle effect. Is that a particle effect with no moving particles and just a soft texture? Or what would work best here?

From a distance you could get away with a billboarded quad. But if you want some shape as you move around, I think some kind of static particle effect could work… some kind of light smoky particles with BlendMode.AlphaAdd so that sorting doesn’t matter.

Edit: and if the “source” of your light isn’t “blooming” then that’s because there is no geometry representing the source of your light. Add a shape where the light is to represent the bulb… make it super bright white… and bloom will get you pretty close already.

Hmm, well here is how it looks. The lamps at the ceiling should have the halo effect but nothing is there:

The source of the light is directly under those lamps

3 Likes

The texture of the light is already emissive but can it be that I also need a glowmap for them? Not sure how to set that up in blender though

The lights have no emission but are lit… so they are very dark.

If you are using PBR then you need to give them a bright emission map. If they are not PBR then you need to have some unshaded bright white geometry for the bulbs.

Edit: if those lights have emissive maps then they are very dark or you have the emissive value set very low.

Here is how the material is set up in Blender. I’ll try increasing emission strength:

Regardless of what it is in blender, it would be interesting to know what it is in JME.

But as an example, this is an old demo I made that uses PBR and the power cubes have emissive lights on the side… and definitely have a halo glow:

I tried raising emissive to 5 but it seems that the gltf exporter doesn’t honor that. Here is how the material looks in gltf:

    {
        "doubleSided" : true,
        "emissiveFactor" : [
            1,
            1,
            1
        ],
        "name" : "Lit",
        "normalTexture" : {
            "index" : 3,
            "scale" : 5
        },
        "pbrMetallicRoughness" : {
            "baseColorTexture" : {
                "index" : 4
            },
            "metallicRoughnessTexture" : {
                "index" : 5
            }
        }
    }

So, you only have an emissive value and no emission texture… what does the regular base texture look like?

What about the metallicRoughness texture?

Let me show you the texture maps for that light (it’s combined with others):

Base texture:

Metalic:

Roughness:

BTW, setting these values manually:

        "emissiveFactor" : [
            6,
            6,
            6
        ],

Does indeed have a slight halo effect. But it’s very very soft. So I guess I might need particles to enhance it a bit and also bring the effect to a larger area (a bit like dust glowing under the light)

Before you do all of that, place a white JME box somewhere up there… with PBR material, white color, and very bright emissive value.

When that is glowy or not then you can decide how to proceed.

Since I didn’t see a picture of what the effect looks like with emissive 6, I can only guess that it’s either that the fairly-metallic light texture is causing issues or that the bloom setting is really low.

You will probably also want particles but it’s going to look dumb if the light itself looks like its in shadow even when it’s the source of all light in the room, basically.

Edit: also… what if you turn off shadows? Are you still using a filter or renderer? ie: are the lights receiving shadows.

Here is the result with emissive cranked up to 6 manually. I’ll try with a white box in a moment:

And btw, my bloom filter is setup like this:

BloomFilter(GlowMode.SceneAndObjects).also {
it.bloomIntensity = 5.0f
it.exposurePower = 10.0f
}

You may also mess with blur scale and/or down sampling factor.

The lights look pretty bright with 6… but I still feel like they may be having shadows painted on them.

Edit: but note, that bloom in your last screen shot looks pretty good if you also had particles. The earlier screen shot the lights looked really dark and that would have looked odd.

Yes, I’m also happy with the emissive effect there (I only wish it would export like that from Blender, now I have to remember to manually fix the emissive color after export). I’m going to experiment with particles soon.

I also tried disabling shadows but since I have a big directional light outside that immediatelly makes everything way too bright

What I’m about 90% sure is happening is that your lights have shadows painted on them. I’m just trying to prove it. So even if you temporarily disable all of the lights but the one in the room.

Alternately, make sure that you are NOT using shadow filters and make sure the light has no shadow mode… no cast, no receive.