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 트리깅시에 거는 방법으로 일단 해결했습니다.

감사합니다.