엔비디아가 PC 게이머들의 오래된 불만 하나를 건드렸다. 드라이버를 업데이트하고 나면 게임 중간중간 끊기는 그 현상. NVIDIA App에 자동 셰이더 컴파일 베타가 추가됐다.
셰이더 스터터링의 원인
DX12 게임은 셰이더, 래스터라이저 상태, 블렌드 설정 등 렌더링 파이프라인 전체를 PSO(Pipeline State Object)라는 단위로 묶어서 GPU에 넘긴다. 게임이 PSO 생성을 요청하면 드라이버가 셰이더 바이트코드(DXBC/DXIL)를 GPU 네이티브 명령어로 변환한다. PSO 하나를 만드는 데 수십~수백ms가 걸릴 수 있고, 새로운 이펙트나 장면을 처음 만날 때마다 이 과정이 반복되면서 끊김이 생긴다.
DX11에서는 드라이버가 draw call 시점에 암묵적으로 셰이더를 컴파일하고 내부적으로 캐싱을 처리했다. DX12에서는 개발자가 PSO 생성 시점을 직접 관리해야 한다. 잘 만든 게임은 로딩 화면에서 미리 PSO를 만들어두지만, 그렇지 않은 게임은 플레이 도중 PSO를 생성하면서 스터터링이 두드러진다.
드라이버가 컴파일한 결과물은 DXCache 폴더에 캐시된다. 문제는 드라이버를 업데이트하면 내부 컴파일러가 바뀌기 때문에 기존 캐시가 호환되지 않는다는 점이다. 결과적으로 게임을 다시 켜면 셰이더를 처음부터 다시 컴파일해야 한다.
게임마다 "셰이더 컴파일 중..." 로딩 바를 본 적 있을 것이다. 그 과정을 거치지 않은 게임에서는 플레이 중 새로운 장면에 진입할 때마다 순간적으로 화면이 멈춘다.
설정 방법
NVIDIA App 11.0.7 이상에서 사용할 수 있다. 기본값은 꺼져 있으니 직접 켜야 한다.
필수 조건:
- GeForce Game Ready 드라이버 595.97 WHQL 이상
- NVIDIA App 최신 버전
켜는 순서:
- NVIDIA App 실행
- Graphics 탭 진입
- Global Settings → Shader Cache 항목 찾기
- Auto Shader Compilation 토글 활성화
활성화하면 PC가 쉬는 동안 설치된 DX12 게임의 셰이더를 새 드라이버에 맞춰 자동으로 재컴파일한다. 게임을 켜기 전에 미리 준비를 끝내놓는 셈이다.
시스템 사용량 조절
자동 컴파일은 백그라운드에서 CPU를 쓴다. 기본 설정은 중간(Medium)이고, 낮음/높음으로 조절할 수 있다.
| 설정 | 적합한 상황 |
|---|---|
| 낮음(Low) | PC를 켜놓고 다른 작업을 하는 경우 |
| 중간(Medium) | 기본값. 대부분의 상황에 적합 |
| 높음(High) | 빨리 끝내고 싶을 때. 다른 작업은 자제 |
캐시 용량도 설정할 수 있다. 디스크 공간이 넉넉하면 기본값 그대로 두면 된다.
적용 조건과 제한사항
이 기능이 만능은 아니다. 세 가지를 짚어둔다.
게임을 처음 설치했을 때는 캐시 자체가 없으니 재컴파일할 대상이 없다. 최초 실행 시 게임이 PSO를 생성하고 드라이버가 결과를 캐시에 저장하는 과정을 거쳐야 한다. 그 이후 드라이버 업데이트가 발생하면 자동 컴파일이 동작한다.
DirectX 12 게임만 대상이다. DX11이나 Vulkan 기반 게임에는 적용되지 않는다. DX11은 드라이버가 컴파일 시점을 암묵적으로 관리하고, Vulkan은 자체 파이프라인 캐시에 UUID 기반 유효성 검증이 있어서 접근 방식이 다르다.
베타 기능이라 모든 DX12 게임에서 완벽하게 작동한다고 보장하진 않는다. 커뮤니티 테스트에서는 디아블로 4처럼 자체 프리컴파일이 부족한 게임에서 효과가 좋다는 반응이 나왔고, 붉은사막에서도 초기 컴파일 시간이 줄었다는 보고가 있다.
같은 업데이트에 포함된 DLSS 4.5
같은 업데이트에 DLSS 4.5 다이내믹 멀티 프레임 생성도 포함됐다. 고정 배율 대신 모니터 주사율에 맞춰 프레임 생성 배율을 자동으로 조절하는 기능이다. RTX 50 시리즈 사용자라면 같이 확인해볼 만하다.
이것만 기억하면 된다. NVIDIA App → Graphics → Shader Cache → 토글 켜기. 드라이버 올린 뒤 게임 스터터링이 줄어든다. 간단하니까 한번 켜두세요.




