[Unity] Gfx.WaitForPresentOnGfxThread, renderPipelineManager.DoRenderLoop_Internal()

baebaeran·2024년 12월 25일
0

Unity_메모장

목록 보기
10/14

Gfx.WaitForPresentOnGfxThread
또는
renderPipelineManager.DoRenderLoop_Internal()

프로파일링으로 점유율을 파악했을 때, 위 두개의 원인으로 인해서 프레임이 말도 안되게 안 나오거나 GPU or CPU의 점유율이 이상하도록 높을 때

첫 번째 방법


위 사진처럼 다운 받은 에셋에 LOD Group이 있는지 확인해보자.

이것을 끄니까 프레임이 정상화 되었다.

두 번째 방법

또 다른 방법으로는 엔비디아 제어판을 활용하는 것이다.

스크롤을 내리다 보면
최대 프레임 속도라는 메뉴를 발견할 수 있다. 이것을 끄기로 활성화하면 프레임이 정상화 될 수도 있다.

세 번째 방법

코드로 게임 자체에 락을 걸어버리는 방법이다

위의 코드처럼 게임을 전반적으로 다루는, 게임 매니저의 스크립트에 의도적으로 프레임 락을 걸어버려 GPU나 CPU의 전산을 제한해 프레임을 다루는 방법이다

여담

필자는 아직까지도 이 문제를 고치지 못했다. 그저 인터넷에 돌아다니는 방법들을 계속해서 추가할 뿐이고, 여러 사람이 이 문제의 정확한 원인과 해결방법을 알지 못한다고 생각한다.

그저 빌드 했을 때만, 잘 작동하면 되는게 아닐까? 라고 생각한다. 또 다른 방법을 알게 된다면 계속해서 추가해나갈 생각이다. 다른 사람은 부디 해결이 되었으면 하는 바램이다.

profile
보고-배우는-것-들을-기록합니다

0개의 댓글