Luoshuang's GPULightmass

I see. But it looks like this fellow made it without any other light source. He’s using HDRI, deleted all the rest of the light sources and a nice light comes in from it. He’s even using Luishuangs’ GPU lightmass:

That dude just increased Light Map resolution to 1024 for his walls to have less blured shadow ( more pixels take shadow casting information so the shadow edge will be more defined)
If you want to have very defined shadows using HDRI you could try also tweak HDRI texture parameters such as Brightness Curve (for contrast) + Brigthness (for lightness).

Light Map res at 1024 = already did that.

i. brightness curve set to 0.5
ii. brightness contrast set to 0.5

I also set the above to 2, still no luck

I’ve uploaded the above project if anyone wants to have a closer look at it:

The SkyLIght HDRI is something different that Sphere that you are using for background.
Skylight is the real emitter but that Shpere is only a background texture put on the huge sphere object to mimic the world.

Remember that you have to rotate Skylight HDRI via its special rotation parameter called Source Cubemap Angle ( and rotation direction is opposite to the rotation of all objects in scene - surprise ?!!! :stuck_out_tongue: ).
If you want to have Sun “visible” via your room hole you need to rotate SkyLight HDRI by using that parameter.

So if you for example see the Sun on background Sphere map via your hole then try to rewrite Z rotation value form that Sphere to the Source Cubemap Angle with MINUS.
Then you should see the shadow after bake.

Unreal is not so easy and full of nasty surprises created in dark developers minds :slight_smile:
Good luck!

Thank you man, but I’ve literry done all the above (they are saved on the project file if you wanna have a look).
I did set the rotation of the “SkyLight HDRI” same with the HDRI rotation.
Still, no “sun” light from the HDRI.

How did that guy do it? How do we get HDRI light in? He’s using Luoshuangs’ scene and his GPU lightmass!

Here you go dude. The secret is to go into your texture settings (just double click on it in the content browser) and then change the mip gen settings to ‘NoMipmaps’. That will prevent Unreal from compressing the texture and it use the full light range in the image (which will give you the sun accuracy you’re looking for).

I did this quick render using GPU lightmass - but remember that GPULM will convert skylights to ‘static’ if you try and use them as ‘stationary’, but I don’t think you need to worry about that if you’re doing a single lighting condition.


What kind of sorcery is this?! Look (the attached image is after production render - I’ve set the thingy to NoMipmaps

Is it because of Unreals’ version? I’m also using Luos’ GPU Lightmass

I suspect you didn’t hit save in the top left of you texture editor window before baking.

I’m using UE 4.22.3 , but I doubt the version should make a difference here. I’ve been baking sunlight from HDRIs for a while on older versions than 4.20.x

I baked that image using Luos’ GPULM too, no difference there.

The only other thing I may have done is set the ‘EditorSkySphere’ you made to ‘Movable’ so it’s not included in the light bake. It should have no contribution to static lighting and should only serve as a realtime background.

Yeah I did save it after I put it on NoMipmaps.
Just tried setting the EditorSkySphere to Movable, no change…!

Ha, actually, I was wrong. I just redownloaded your project file and ran a light bake without making any changes and it worked - including the sun light.

You should update to the latest version of UE, there may be a bug with the version you have.

You should definitely use the ‘NoMipmaps’ trick in the future though - you probably noticed that your backdrop got A LOT sharper. UE just won’t render 4k textures at full rez otherwise.

Another tip would be to use this cubemap projection method (below) on your ‘EditorSkySphere’. It will mimic your skylight projection accurately (infinitely distant). The one in the original video you referenced fails because it remains fixed to the inside of the sphere it’s on, so it falls out of alignment with the light bake.

let me know if you’re still stuck.

Good morning man.
I just tried it with the latest version of UE4 and Luoshs’ GPULM but still no luck.
Can you please upload your modified to have a close look?!

Not sure is this GPU ligthmass affected but I noticed that original lightmass encodes light color info with wrong exponent.(2.2 instead of 2.0)
This affect brightness and color saturation quite much.

Hi @kouropalatisk ,

I think it’s working for you too. Try putting some boxes and columns inside your room and you will see some shadows.
In the video and in the scene shown by Prizmlzm, probably they are viewing that “edge shadow” because of a less quality configuration of GPULM. If you set a high preset for it, you won’t see that “hard” shadow.

Hi @PrizmIzm ,

Do you mean that, with that material, your SkySphere is auto-updated with the rotation of the cubemap set inside the Sky? But how?


Hey @Miguel1900
Rendered at MediumQuality, still no shadows from the HDRI amigo. I’ve also tried it with fastpreview.

@PrizmIzm could you please upload the modified one as you managed to pull this through?! You’d shed some light in the HDRI matter! (literally)

No problem, here’s the link to the project that my first screenshot came from…

I have no idea where you’re going wrong - as I said, I downloaded your project and just ran a lighting build and it worked just fine for me.
Could be you’ve changed something in UE or GPULM configs that has permanently effected your light builds. Maybe consider uninstalling and reinstalling both of them.

No dude, sorry I worded that badly. It doesn’t follow your SkyLight rotation settings - you’d still have to add some extra code to build in the rotation (not sure how you’d code it to follow your SkyLight though). The code I showed there is just the basic formula to get the Cubemap image to project more accurately and not look like it’s wrapped around the inside of a smaller sphere (even though it is). I could explain it it more, but it’s best just to try it to see what I mean.

USE ONLY Production Quality. Otherwise will have serious problems with shadows (bending problems). Using lower types of quality with GPULM is completely pointless.

Does anyone know why I’m getting spots in my shadows? These are my bake settings:


Lighting Quality is set to Production.

Lightmass settings:
Static Lighting Level Scale: 0.1
Indirect Lighting Bounces: 100
Sky Lighting Bounces: 20
Lighting Smoothness: 1
Diffuse Boost: 2

Engine version: 4.20.3

Here’s the issue:

Hey @PrizmIzm
Mystery is solved.
I’ve uninstalled and re-installed UE4, latest version. Applied Luoshs’ GPULM and run your modified project.
I rendered it at preview quality and it worked!
I took it to Extreme quality with fireflies at 10 and the light was gone (!!?!!!?!!???!!!)

I took back the fireflies to 10000 and the light from HDRI was back as it was.

Light from HDRI + fireflies at 10 = not happening as the light from HDRI just disappears.

No idea but if we want HDRI light we’ll have fireflies…! So for now we’ll skip HDRI light unless mighty Luoshuang can do something about it!

1: GPULM quality (Preview/…/Extereme) changes only the NumPrimary and NumSecondary config values. In Extreme to the insane values.
So better just put manually 128/64 and it will be fine for most cases
2: You always should use PRODUCTION quality drop-down selection in UE4. Otherwise some direct light ( direct rays from any source) will give you bad shading at bending/curved areas.
3: beware of putting lights at very reflective elements or creating very small light sources from emmissive meshes - you will get then many white splotches on the walls
4: I have used many many HDRI and never got the fireflies. Consider to use better HDRI or check your SkyLight configuration (esp. the Intensity value ).
5: Most of World Settings are no longer utilized for GPULM. Only one parameter GPULM is using for the baking: Indirect Lighting Bounces and of course parameters for VLM. Rest is ignored.