/ Unreal Engine은 셰이더링 단절 문제 해결 방안을 제공합니다.

Unreal Engine은 셰이더링 단절 문제 해결 방안을 제공합니다.

2025. 2. 6. 오전 12:04:17
Unreal Engine 5.2는 게임에서 발생하는 셰이더 컴파일 지연 문제를 해결하기 위해 PSO 미리 불러오기 시스템을 도입했습니다. 이 시스템은 로딩 중에 필요할 가능성이 높은 PSO를 미리 준비하여 화면 끊김 현상을 줄이는 데 효과적입니다. Unreal Engine 개발팀은 재료 변화 처리 작업을 진행하며, 향후 전역 셰이더까지 해결 계획을 가지고 있습니다.
Unreal Engine은 셰이더링 단절 문제 해결 방안을 제공합니다.

Unreal Engine 5.2는 게임에서 셰이더 컴파일로 인한 화면 끊김을 줄이는 데 도움이 되도록 파이프라인 상태 객체(PSO)를 미리 불러오는 새로운 시스템을 도입했습니다. 이는 현재 PC 게임에서 큰 문제인 셰이더 끊김을 완화합니다.

쉐이더 컴파일 중단 (또는 쉐이더 중단이라고도 함)은 게임이 화면에 표시되기 바로 직전에 쉐이더를 준비해야 하는 경우 발생하여 눈에 띄는 지연 시간과 쉐이더가 눈에 띄게 나타나는 현상을 유발합니다. 이러한 지연 시간은 고수준의 쉐이더 코드를 다양한 그래픽 카드가 이해할 수 있는 기계 코드로 변환하는 것이 복잡하기 때문입니다.

최신 그래픽 API인 DirectX 12와 Vulkan은 성능 향상을 위해 PSO(파이프라인 스테이트 오브바)를 도입했습니다. PSO는 셰이더와 렌더링 설정을 결합하여 미리 준비할 수 있도록 합니다. 그러나 복잡한 게임에서는 다양한 재질과 렌더링 옵션으로 인해 가능한 PSO 조합의 수가 매우 많아 이를 관리하기 어렵습니다. Unreal Engine의 "Bundled PSO Cache"와 같은 기존 방법들은 이러한 문제에 대처하지 못했습니다. 이 캐시는 추적하고 관리하는 데 많은 리소스가 필요했기 때문에 효율성이 떨어졌습니다.

새로운 Unreal의 PSO 미리불러오기 시스템은 이전 문제들을 해결합니다. 로딩 중에는 재료, 메쉬, 그리고 전체 설정을 검사하여 필요할 가능성이 높은 PSO(파이프라인 상태 객체)를 파악합니다. 이러한 객체들은 로딩 화면이나 필요하기 직전에 준비됩니다. 나중에 객체가 들어오면 PSO가 준비될 때까지 기다리거나 기본 재료를 사용할 수 있습니다. 이렇게 하면 눈에 띄는 지연 시간을 줄일 수 있습니다.

엔진 개발팀이 이 문제를 해결하기 위해 노력하고 있다는 점은 훌륭합니다. 흥미로운 점은 이 문제가 기술 발전으로 인해 발생한 것입니다. 과거에는 게임이 미리 컴파일된 쉐이더 코드와 함께 제공되었고, 그래픽 드라이버가 게임 실행 중에 이를 변환했습니다. 이 방법은 간단한 게임에서는 잘 작동했지만, 쉐이더가 더 복잡해지고 그래픽 카드 성능이 향상됨에 따라 성능 문제가 발생하게 되었습니다.

재료의 변화를 처리하는 작업은 아직 진행 중이며 현재는 일부 셰이더에만 적용됩니다. 예를 들어, 전역 셰이더(움직임 블러와 같은 효과에 사용됨)는 다르게 처리되므로 여전히 문제가 발생할 수 있습니다. 그러나 이를 향후 개선할 계획입니다.

하지만 아직도 언리얼 엔진이 플레이어들을 위해 이 문제를 해결하려는 선두 주자처럼 보입니다. 좋은 소식은 영구적인 해결책이 쉐더 스터터링을 과거로 만들 것이라는 것입니다.