Unreal 5.5 DaySequence를 사용하고 있는데 flickering 현상이 있습니다.

안녕하세요. Unreal 5.5에 새로나온 DaySequence를 사용하고 있습니다.

우선 에디터에서는 문제가 없고 Window Build 시에 문제가 발생합니다.

맵이 작을때는 큰문제 없이 쓰고있다고 커지니까 씬 전체가 Flickering(깜빡이는 현상)이 있습니다.

(깜빡이는 현상이 특정 패턴을 보인다거나 하지는 않고 랜덤하게 빈도수도 들쭉날쭉으로 깜빡입니다.) 혹시 제보된 내용이 있을까요?

DaySequence 코드에서 아래와 같은 코드를 넣어서 깜빡이는 현상이 발생되는 부분을 Runtime에 강제로 건너띄면 더 이상 깜빡이지

않는 것으로 보아 Player가 돌면서 문제가 생기는 것으로 보입니다.​

[Image Removed]

아래 그림 설명 (위 : 깜빡일때 찰라의 스샷, 아래 : 정상적인 렌더링, 개발중인 겜이라 일부분만 첨부한점 양해부탁드립니다.)

[Image Removed]​

제가 찾아본 것중 비슷하게 재보된 거는 다음 Forum의 Sequence 관련 문제와 거의 상황이 비슷합니다.

https://forums.unrealengine.com/t/flickering\-on\-sequence\-loop/886262​

다음과 같이 많은 렌더링 기능을 껐다 켜보아도 깜빡이는 문제를 특정지을 수는 없었습니다. (이거외에 많은 부분을 테스트해보았습니다.)

ShowFlag.Cloud 0

ShowFlag.SkyLighting 0

ShowFlag.LightFunctions 0

​ShowFlag.DirectLighting 0

ShowFlag.DirectionalLights 0

​ShowFlag.SpotLight0

ShowFlag.Atmosphere 0

r.DynamicGlobalIlluminationMethod 0

r.ReflectionMethod 0

5.6에 수정되었다거나 ​제보가 된 것이 있으면 어떨까하는 희망을 품어봅니다 ㅠ. 감사합니다.

재현 방법

안녕하세요.

언리얼 엔진 5.5 및 5.6 프리뷰 버전에서 Day Sequence를 윈도우 패키징하여 테스트 해보았지만 질문해주신 플리커링 현상을 재현하기에는 어려움이 있었습니다.

현재 DaySequencePlayer는 GDaySequenceUpdateIntervalOverrideEnabled 값이 기본적으로 1로 설정되어 있으며,

이에 따라 GDaySequenceUpdateIntervalOverride 값을 기반으로 UpdateInterval이 결정됩니다.

콘솔 명령어 DaySequence.UpdateIntervalOverrideEnabled를 통해 해당 값이 1인지 확인해 주세요.

만약 0이라면 DesiredUpdateInterval 값을 0 ~ 0.5 사이로 수동 설정하는 것이 권장됩니다.

DesiredUpdateInterval 값이 과도하게 크면, 업데이트 주기가 길어져 한 번에 많은 연산이 처리되며 플리커링 문제가 발생할 수 있습니다.

https://dev.epicgames.com/documentation/en-us/unreal-engine/day-sequence-time-of-day-plugin-for-unreal-engine#:~:text=This%20is%20how,0%20to%200.5.

또한, 씬 전체가 순간적으로 깜빡이는 문제는 여러 프레임에 걸쳐 VSM Page가 일관되게 유지되지 못하는 경우 발생할 수 있습니다.

패키징된 빌드에서 ShowFlag.VisualizeVirtualShadowMap 1 을 통해 VSM 시각화 모드 활성한 후,

r.Shadow.Virtual.Visualize cache

r.Shadow.Virtual.Visualize mask

다음과 같은 콘솔 명령어로 문제가 생기는 부분을 확인하시면 디버깅 하시는데 도움이 될 것 같습니다.

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/virtual-shadow-maps-in-unreal-engine#shadow-depths

그리고, VSM의 해상도 품질에 따라 플리커링 현상 발생에 영향을 줄 수 있습니다.

r.Shadow.Virtual.Clipmap.FirstLevel (기본값 6)

r.Shadow.Virtual.Clipmap.LastLevel (기본값 22)

r.Shadow.Virtual.ResolutionLodBiasDirectional (에픽 품질 기준 기본값 -1.5)

다음과 같은 콘솔 명령어를 통해 VSM 해상도를 조절할 수 있으며, 문제해결에 도움이 될 수 있습니다.

VSM 이슈가 아닌 경우에는, 프로젝트 내에서 사용하는 특별한 프로젝트 설정이 있을수도 있으니 문제가 재현되는 샘플 프로젝트를 공유 해주신다면 이슈 해결에 도움이 될 것 같습니다.

감사합니다.

안녕하세요. 저희가 일단 문제를 해결했는데 정확한 이유는 발견하지는 않았습니다.

데이시퀀스가 기본적으로 시간이 흐르기 때문에 StaticTimeContributor 를 통해 시간을 고정, 흐르지 않도록 아래 기능을 쓰고 있었는데

StaticTimeContributor 문제인지는모르겠으나 윈도우 빌드에서 특정맵(현재기준 하나의 맵)에서만 랜덤하게 데이시퀀스에 등록된 값을 Dirty 상태로 변경

하는 것을 발견했습니다. 정확한 이유는 모르겠습니다. 현재는 StaticTimeContributor 를 걷어내고 bRunDayCycle = false; 하였더니 깜빡이는 현상은 더

이상 발견되지않았습니다. 요내용이 엔진개발에 도움이 되면 좋겠네요. 감사합니다.

[Image Removed]

위에 bRunDayCycle 를 false 를 하면 결국은 UDaySequencePlayer 를 Pause 하는 거랑 동일하기 때문에 저희는 현재로써는 Play Pause를 volume 트리깅시에 거는 방법으로 일단 해결했습니다.

감사합니다.