Description

Visibility of World Outliner doesn't affect skylight. But it affects other kinds of lights like Point Light, Directional Light.

I found that USkyLightComponent::CreateRenderState_Concurrent() doesn't check in bHiddenEdTemporary as below. (ULightComponent::CreateRenderState_Concurrent() used by other light types checks the variable, though.)

void USkyLightComponent::CreateRenderState_Concurrent()
{
 ...
#if WITH_EDITORONLY_DATA
	bHidden = GetOwner() ? GetOwner()->bHiddenEdLevel : false;
#endif // WITH_EDITORONLY_DATA
...

I changed the code to check bHiddenEdTemporary as below. And it seems to fix this issue.

void USkyLightComponent::CreateRenderState_Concurrent()
{
 ...
#if WITH_EDITORONLY_DATA
	bHidden = GetOwner() ? GetOwner()->IsTemporarilyHiddenInEditor()  || GetOwner()->bHiddenEdLevel : false;
#endif // WITH_EDITORONLY_DATA
...
Steps to Reproduce
  1. Create a third person template project
  2. Turn off the skylight's visibility via World Outliner.
  3. You can see that lighting the scene doesn't change at all.
  4. Turn off the directional light's visibility via World Outliner.
  5. You can see that lighting from the directional light disappeared.

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-66870 in the post.

1
Login to Vote

Unresolved
ComponentRendering
Affects Versions4.194.204.21
Target Fix4.26
CreatedNov 27, 2018
ResolvedNov 28, 2018
UpdatedFeb 27, 2020