3줄 요약

  1. SCSKiller(Shader Compilation Stutter Killer)는 깃허브 사용자 BlueHeisenberg가 만든 윈도우용 오픈소스 앱이다. 게임을 하기 전에 그 게임의 셰이더를 GPU 드라이버의 셰이더 캐시에 미리 컴파일해 두어서, 플레이 도중 셰이더 컴파일 때문에 화면이 멈추는 현상을 없애는 것이 목적이다. 개발자는 2026년 10월 1일 1.0.0부터 10월 4일 1.2.2까지 모두 일곱 번 릴리스했다. 저장소는 10월 6일 기준으로 스타 803개와 포크 17개를 받았다.
  2. NVIDIA와 AMD 드라이버는 DirectX 12 셰이더 캐시를 게임 실행 파일의 이름으로 구분한다. SCSKiller는 게임 파일에서 셰이더를 읽어, 게임이 만들 파이프라인(셰이더와 그리기 설정을 묶은 단위)의 목록을 계획한다. 그다음 자기 실행 파일을 게임 실행 파일과 같은 이름으로 복사해 별도 프로세스로 실행하고, 그 프로세스에서 파이프라인을 생성한다. 게임 파일만으로는 파이프라인을 알 수 없는 게임은, 몇 분 동안 플레이하며 기록하는 녹화기로 부족한 정보를 보충한다.
  3. 개발자가 측정한 결과, 게임이 셰이더 컴파일 때문에 20밀리초 이상 기다린 횟수가 「파이널 판타지 VII 리버스」(RTX 5090)는 19회에서 0회로, 「호그와트 레거시」(AMD Ryzen AI Max+ 395)는 27,743회에서 206회로 줄었다. SCSKiller가 없애는 것은 셰이더 컴파일 끊김뿐이며, 맵을 이동하거나 데이터를 스트리밍할 때 생기는 끊김은 줄이지 못한다. DirectX 12 게임은 NVIDIA와 AMD에서, DirectX 11 게임은 NVIDIA에서만 지원한다. Intel GPU와 Vulkan 게임은 지원 대상이 아니다.

셰이더 컴파일 끊김

README는 끊김이 생기는 이유를 이렇게 설명한다. 게임이 새로운 효과를 처음 그리게 되면 GPU 드라이버는 그 순간 해당 셰이더를 컴파일해야 하고, 프레임은 컴파일이 끝날 때까지 기다린다. 플레이어는 이 대기 시간을 끊김으로 느낀다.1

SCSKiller는 이 컴파일을 게임 실행 전에 미리 끝내 둔다. 게임이 설치 파일에 담아 배포한 셰이더를 읽고, 게임이 만들 파이프라인을 계산한 뒤, 게임을 끈 상태에서 자기 프로세스로 그 파이프라인을 드라이버 캐시에 컴파일해 둔다. 나중에 게임을 실행하면 필요한 컴파일 결과가 이미 캐시에 저장되어 있다.

README는 이 앱으로 해결되는 문제와 해결되지 않는 문제를 세 항목으로 정리해 두었다.

  • 해결한다: 셰이더 컴파일 끊김.
  • 해결하지 못한다: 맵 이동(트래버설)과 스트리밍 때문에 생기는 끊김, 그 밖의 원인으로 생기는 끊김.
  • 가끔 남는다: SCSKiller가 찾지 못했거나 녹화하지 못한 셰이더가 게임 도중에 컴파일되는 경우.

사용 순서와 앱 화면

사용 절차는 세 단계다.

  1. 앱을 열면 설치된 게임과 그 게임에 포함된 셰이더를 찾는다. 지원하는 런처는 모두 열 곳이다. Steam, Epic Games, EA app, GOG, Ubisoft Connect, Xbox(PC), Battle.net, 엔씨소프트의 PURPLE, 호요버스의 HoYoPlay, 가이진 런처다. 목록에 없는 게임은 사용자가 실행 파일을 지정해 추가할 수 있다.
  2. 컴파일할 게임을 대기열에 넣고 Compile 버튼을 누른다. 컴파일하는 동안에는 게임을 꺼 두어야 한다.
  3. 스토어에서 게임을 실행하거나 앱의 Play 버튼을 누른다. 게임은 드라이버 캐시를 스스로 읽으므로 SCSKiller를 꺼도 효과는 유지된다. 앱을 켜 둔 채로 게임을 하면, 앱은 컴파일 결과가 게임이 실제로 읽는 캐시에 저장됐는지 확인한다.

라이브러리 화면은 셰이더 컴파일 끊김이 있다고 알려진 게임을 목록 맨 위에 그 이유와 함께 보여 준다. 드라이버를 업데이트하면 셰이더 캐시가 지워지는데, 앱은 이것을 감지해 다시 컴파일한다. 사용자가 허락하면 이 재컴파일도 자동으로 진행한다.

SCSKiller의 컴파일 대기열 화면. 첫 번째 게임을 초당 520개 속도로 컴파일하는 중이고, 그 아래에 세 게임이 순서를 기다린다. 상단에는 대기열을 마치면 캐시가 16GB 한도에 가까워진다는 경고가 있다. 컴파일 대기열 화면. 진행 중인 게임의 파이프라인 수와 초당 처리량, 드라이버가 거부한 항목 수, 건너뛴 항목 수를 표시한다. 공식 웹사이트는 README의 화면 캡처 세 장을 예시 데이터라고 밝혔다.

녹화기를 켜고 게임을 하면 게임 상세 화면에서 지난 플레이의 프레임 시간 그래프를 볼 수 있다. 이 그래프에는 셰이더 컴파일 때문에 생긴 끊김과 다른 원인의 끊김, 로딩 구간이 구분되어 나타난다. 프레임 시간 기록은 사용자 PC에만 저장된다.

SCSKiller의 게임 상세 화면. 25분 동안 플레이한 기록의 프레임 시간 그래프에서 셰이더 컴파일 끊김은 주황색 점, 다른 끊김은 흰색 점으로 표시되고, 아래에는 느린 프레임 목록과 지난 컴파일 결과가 있다. 게임 상세 화면. 지난 플레이에서 셰이더 컴파일 끊김 2회(최대 77밀리초)와 다른 끊김 2회를 구분해 보여 준다.

동작 원리

설계 문서(ARCHITECTURE.md)는 SCSKiller의 처리 과정을 다섯 단계로 설명한다.

단계하는 일
탐색(Discover)런처별 모듈이 설치된 게임을 찾고 안티치트 포함 여부를 표시한다
색인(Index)엔진별 판독기가 게임 엔진을 판별하고, 빌드에 포함된 모든 셰이더의 단계와 SHA-1 해시, 입출력 시그니처를 목록으로 만든다. 함께 그려질 수 있는 셰이더끼리는 셰이더 맵으로 묶는다
계획(Plan)색인과 녹화본(있는 경우), GPU 제조사별 캐시 특성을 입력받아, 셰이더를 SHA-1 해시로만 가리키는 계획 파일을 만든다
구체화(Materialize)계획에 필요한 셰이더를 게임 설치 폴더에서 읽어 작업 폴더에 모은다. 작업 폴더는 컴파일이 끝나면 삭제한다
예열(Warm)scskiller_warm.exe가 게임 실행 파일과 같은 이름의 사본을 만들고, 그 사본이 DirectX 12(또는 11) 장치에서 계획의 항목을 모두 생성한다

핵심은 마지막 단계다. 드라이버가 캐시를 실행 파일 이름으로 구분하므로, 사본을 게임과 같은 이름으로 실행해 컴파일하면 게임이 그 결과를 그대로 쓴다. Xbox(PC) 앱으로 설치한 게임의 캐시는 NVIDIA 드라이버가 실행 파일 이름 대신 패키지 식별자로 구분한다. 이 경우에는 게임의 패키지 식별자로 사본을 실행한다.

NVIDIA 드라이버는 같은 이름의 프로세스가 동시에 두 개 실행되면 두 번째 프로세스에 별도의 캐시 파일을 배정한다. 그러면 예열 결과가 게임이 읽지 않는 파일에 저장되므로, 게임과 예열 프로세스를 동시에 실행해서는 안 된다. SCSKiller의 대기열은 게임이 실행 중이면 예열을 시작하지 않는다. 예열 도중 게임이 시작되면 예열을 멈추고, 게임이 끝난 뒤 멈췄던 예열을 이어서 진행한다.

측정으로 확인한 드라이버 캐시의 동작

설계 문서의 드라이버 캐시 절은 NVIDIA와 AMD 드라이버가 셰이더 캐시를 어떻게 관리하는지 항목별로 설명한다. 문서는 이 내용의 출처를 이렇게 밝혔다.

These are measured with selftest and on games’ own pipelines, not taken from documentation.

(이 내용은 selftest 도구와 게임이 직접 만드는 파이프라인으로 측정했으며, 문서에서 가져온 것이 아니다.)

NVIDIA

  • 캐시 키는 실행 파일의 이름이다. 경로와 파일 내용은 키에 포함되지 않고, 대소문자도 구분하지 않는다.
  • 캐시는 셰이더 단계별로 저장되고, 컴파일 결과에 영향을 주는 것은 셰이더와 루트 시그니처뿐이다. 블렌드, 래스터라이저, 깊이와 스텐실, 렌더 타깃 형식, MSAA 설정은 컴파일 결과를 바꾸지 않는다. 따라서 SCSKiller가 이런 상태 값을 임의로 정해 파이프라인을 합성해도 게임은 캐시에서 결과를 찾는다. 뷰 인스턴싱을 쓰는 파이프라인만 예외다. 이런 게임에는 녹화한 파이프라인이 필요하다.
  • 캐시에 있는 파이프라인은 0.2에서 1밀리초면 생성되고, 캐시에 없는 파이프라인은 6에서 70밀리초가 걸린다. 예열은 30개 스레드로 초당 약 450개에서 1,350개의 파이프라인을 처리한다.
  • 드라이버를 업데이트하면 새 드라이버를 설치하기 전에 만들어진 DirectX 12 캐시 파일은 하나도 남지 않는다. 이 때문에 SCSKiller는 드라이버 업데이트 후에 다시 컴파일한다.
  • 인라인 레이 트레이싱(RayQuery)을 쓰는 컴퓨트 파이프라인은 캐시에 있어도 처음 생성할 때 걸리는 시간의 7에서 15%가 다시 걸린다. 다시 걸리는 시간은 언리얼 엔진 5.6 게임에서 9에서 35밀리초다.

AMD

  • AMD도 실행 파일 이름을 캐시 키로 쓰지만, NVIDIA와 달리 대소문자를 구분한다.
  • 일부 게임은 드라이버에 등록된 애플리케이션 프로필이 캐시 키를 따로 정한다. 실행 파일 이름만으로 키를 확정할 수 없으므로, SCSKiller는 게임 이름으로 사본을 실행하고, 그 프로세스가 열어 둔 캐시 파일을 관찰해 실제 키를 학습한다.
  • 게임이 AMD GPU 서비스 라이브러리(AGS)에 앱 이름을 전달해 장치를 만들면, 실행 파일 이름 대신 그 앱 이름이 키가 된다. 언리얼 엔진은 4.25부터 5.6까지 AMD GPU에서 프로젝트 이름을 앱 이름으로 전달한다.
  • 드라이버는 셰이더 캐시 폴더 전체의 용량을 16GiB로 제한하고, 이 한도는 사용자가 바꿀 수 없다. 한도를 초과하면 접근한 지 오래된 파일부터 삭제한다. SCSKiller의 대기열은 예상 증가량이 남은 용량보다 크면 경고를 띄운다.
  • AMD의 캐시는 셰이더 단계별로 저장되지만 파이프라인의 상태 값에 따라 결과가 달라진다. 설계 문서는 상태 값이 바뀔 때 드는 비용을 세 등급으로 정리했다.
비용해당하는 변경의 예
단계 재컴파일(처음 컴파일과 같은 비용)정점 셰이더가 선언한 입력 요소, 토폴로지 유형, 루트 시그니처 구성
재링크(약 0.5밀리초, 실제 게임 셰이더로는 약 3밀리초)함께 링크된 적이 없는 정점 셰이더와 픽셀 셰이더의 조합, 채널 구성이 같은 렌더 타깃 형식, MSAA, 블렌드 설정
비용 없음정점 셰이더가 선언하지 않은 입력 요소, 래스터라이저와 깊이 스텐실 설정 전부

AMD 드라이버는 같은 파이프라인이라도 어떤 순서로, 몇 개의 스레드로 컴파일했는지에 따라 저장하는 내용이 달라진다. 그래서 SCSKiller는 AMD에서 예열이 끝난 뒤 게임을 처음 실행한 결과로 예열의 성공 여부를 판정한다. 게임이 첫 실행에서 파이프라인의 20%보다 많이 다시 컴파일해야 했다면, SCSKiller는 그 게임을 “Partly warmed"로 표시하고 신중한 컴파일(careful compile)을 제안한다. 신중한 컴파일은 같은 셰이더 조합이 한 회차에 두 번 포함되지 않도록 녹화한 파이프라인을 여러 회차로 구분한다. 그리고 회차마다 최대 4개 스레드를 쓰는 별도 프로세스로 컴파일한다.

그 밖의 경우

  • DirectX 11 드라이버는 셰이더를 처음 쓰는 그리기 호출에서 컴파일하고, 파이프라인 단위가 아닌 셰이더 단위로 캐시한다. NVIDIA에서는 상태 값이 결과를 바꾸지 않아서 지원하지만, AMD에서는 입력 레이아웃이 정점 셰이더를 다시 컴파일하게 만들기 때문에 지원하지 않는다.
  • AMD의 Vulkan 캐시는 실행 파일의 전체 경로로 키를 만든다. 사본을 다른 폴더에서 실행해서는 게임과 같은 키를 얻을 수 없으므로, Vulkan 게임은 지원 대상이 아니다.
  • Intel과 그 밖의 GPU 제조사는 아직 측정하지 못해 지원 목록에 없다. README에서 개발자는 Intel GPU가 없어 시험할 수 없다며 Intel Arc GPU를 후원해 줄 사람을 찾는다고 밝혔다.

엔진별 판독기

게임 파일에서 셰이더를 읽는 방법은 엔진마다 다르다. 판독기는 게임 파일을 읽기 전용으로 열고, 게임을 실행하지 않으며 게임 프로세스에도 접근하지 않는다.

엔진읽는 방법과 특이사항
언리얼 엔진CUE4Parse 라이브러리로 셰이더 라이브러리와 셰이더 맵을 읽는다. 루트 시그니처는 에픽게임즈의 규칙대로 언리얼 엔진 4.20부터 5.7까지 바이트 단위로 똑같이 재구성한다. 게임에 포함된 파이프라인 캐시 파일이 있으면 그 목록도 쓴다
유니티직렬화 파일과 에셋 번들에서 컴파일된 셰이더 블롭을 찾아 추출한다. 루트 시그니처를 실행 중에 만드는 엔진이라 DirectX 12 게임은 녹화가 필요하다
프롬소프트웨어아카이브의 공개 RSA 키를 게임 실행 파일에서 읽는다. 「엘든 링」 녹화본에 담긴 파이프라인 9,246개를 바이트 단위로 똑같이 재현했다
RE 엔진(캡콤)암호화된 패키지의 목록을 풀어 셰이더를 찾는다. 루트 시그니처를 실행 중에 만들어서 DirectX 12 게임은 녹화가 필요하다
REDengine 3「위쳐 3」 DirectX 12판의 캐시 파일에서 테크닉 438,220개, 서로 다른 파이프라인 60,674개를 읽는다
노스라이트(레메디)「컨트롤」의 이펙트 파일에서 셰이더 1,532개와 서로 다른 파이프라인 2,954개를 읽는다
다고르(가이진)「워 썬더」의 셰이더 덤프 파일을 읽는다
그 밖의 게임파일에서 DXBC와 DXIL 셰이더 컨테이너를 찾아 추출한다

녹화 없이 바로 컴파일할 수 있는 조건은 두 가지다. GPU가 NVIDIA여야 하고, 게임의 엔진 버전에 루트 시그니처 재구성 규칙이 있어야 한다. AMD에서는 캐시가 상태 값에 따라 달라지므로, 그리기 정보가 담긴 녹화본이 있어야 컴파일할 수 있다.

업스케일러 같은 미들웨어는 셰이더를 자기 DLL 파일에 담고 있어서 엔진 판독기로는 찾을 수 없다. SCSKiller는 FidelityFX, OptiScaler, XeSS, DirectStorage, Streamline 플러그인의 DLL을 감지한다. 그리고 녹화본에서 이 DLL의 셰이더로 만든 파이프라인을 버전별 묶음(팩)으로 저장한다. 이렇게 만든 팩은 같은 DLL을 쓰는 다른 게임의 계획에도 포함된다. FidelityFX와 XeSS의 팩은 커뮤니티 데이터베이스를 통해 계정 없이 무료로 공유된다. DLSS는 NVIDIA 드라이버가 직접 컴파일한다.

녹화기와 안티치트

녹화기는 게임 실행 파일과 같은 폴더에 두는 d3d12.dll 프록시다. 게임의 호출을 시스템의 d3d12.dll로 전달하면서, 게임이 만드는 파이프라인과 루트 시그니처, 레이 트레이싱 상태 객체를 모두 기록한다. 게임에 포함된 셰이더는 코드 대신 해시만 기록하고, 컴파일할 때 게임 파일에서 다시 읽는다. 녹화본 용량 한도는 게임당 기본 256MB이며 설정에서 바꿀 수 있다.

녹화기는 안티치트가 없는 DirectX 12 게임에만 설치된다. 설치 폴더 어디에든 안티치트의 표식 파일이나 폴더가 있으면 안티치트 게임으로 판정하고, 폴더 전체를 읽을 수 없는 경우도 안티치트 게임으로 취급한다. 녹화기는 설치 폴더 검사를 통과했다는 표시로 scskiller.armed 파일을 함께 둔다. 설치 폴더에서 무언가 바뀌면 이 파일을 지우고, 다음 검사를 통과할 때까지 기록을 멈춘다. 1.2.2부터는 모드가 쓰는 로그, 설정 파일, 스크린샷, 세이브 파일이 새로 생겨도 녹화 상태를 유지한다. ReShade 같은 모드가 이미 d3d12.dll을 쓰고 있으면, 사용자가 허용한 경우에 한해 모드 파일의 이름을 바꾸고 녹화기가 그 모드를 이어서 불러온다.

안티치트 게임에 대해서는 파일을 읽는 것 외에 아무것도 하지 않는다. 게임을 실행하지 않고, 프로세스에 코드를 주입하지 않으며, 녹화기도 설치하지 않는다. 예외는 하나다. 「엘든 링」과 「아머드 코어 VI」는 이지안티치트 없이 오프라인으로 실행할 수 있는데, 사용자가 게임별로 허용하고 실행할 때마다 다시 확인한 경우에 한해, SCSKiller가 오프라인 세션을 직접 실행해 녹화한다. 게임이 끝나면 앱은 추가한 파일 네 개를 즉시 지우고 폴더가 원래대로 돌아왔는지 확인한다. README는 이 파일들이 남은 채로 온라인에 접속하면 계정이 정지될 수 있다고 경고한다.

커뮤니티 데이터베이스는 다른 플레이어의 녹화본을 모은 것이다. 패트리온 후원자는 이 데이터베이스를 받아 직접 녹화하지 않고도 게임을 컴파일할 수 있다. 자기 녹화본을 공유하는 기능은 사용자가 직접 켜야 동작하고, 공유할 때는 셰이더 코드를 빼고 해시만 익명 기기 식별자와 함께 올린다. 앱은 하루에 한 번 서버로 신호를 보내 활성 설치 수를 집계한다. 신호에는 앱 버전과 GPU 제조사만 담기고, 사용자는 설정에서 이 신호를 끌 수 있다.

측정 결과

README에 실린 측정 결과다. 개발자는 드라이버 캐시를 비운 상태에서 게임당 약 5분을 플레이하고, SCSKiller로 컴파일한 뒤 다시 플레이해 비교했다. 측정에는 SCSKiller의 녹화기를 썼고, 끊김은 게임이 셰이더 컴파일을 20밀리초 이상 기다린 경우로 정의했다.

게임GPU측정 항목캐시 없음SCSKiller 적용
파이널 판타지 VII 리버스NVIDIA RTX 5090끊김 횟수190
가장 긴 멈춤76밀리초5밀리초
AMD Ryzen AI Max+ 395(Strix Halo)끊김 횟수1620
가장 긴 멈춤291밀리초7밀리초
Silent Hill: TownfallNVIDIA RTX 5090끊김 횟수240
가장 긴 멈춤347밀리초8밀리초
호그와트 레거시NVIDIA RTX 5090끊김 횟수1,01487
가장 긴 멈춤2,400밀리초100밀리초
AMD Ryzen AI Max+ 395(Strix Halo)끊김 횟수27,743206
가장 긴 멈춤2,146밀리초104밀리초
타이니 티나의 원더랜드NVIDIA RTX 5090끊김 횟수5830
가장 긴 멈춤315밀리초13밀리초
스타워즈 제다이: 서바이버NVIDIA RTX 5090끊김 횟수9,03811

다섯 게임 중 세 게임은 끊김 횟수가 0이 됐다. 「호그와트 레거시」는 SCSKiller를 적용한 뒤에도 RTX 5090에서 87회, AMD에서 206회 끊겼고, 가장 긴 멈춤도 100밀리초 안팎이었다. 개발자는 결과가 게임과 GPU, 드라이버에 따라 다르다고 덧붙였다.

설치와 릴리스

윈도우 10(2004 버전 이상) 또는 윈도우 11 64비트에서 동작한다. 설치 파일로 설치하면 관리자 권한 없이 현재 사용자에게만 설치되고, 앱이 스스로 업데이트한다. 압축을 풀어 바로 쓰는 포터블 버전도 있다. 아직 코드 서명을 받지 않아서, 처음 실행하면 윈도우 SmartScreen 경고가 뜬다. SignPath 재단을 통해 코드 서명을 진행하고 있으며, 그 전까지는 내려받은 파일의 SHA-256 값을 릴리스 노트의 값과 비교하라고 안내한다. 윈도우 11의 스마트 앱 컨트롤을 켠 PC에서는 서명되지 않은 앱이 실행되지 않으므로, 서명된 릴리스를 기다려야 한다. README는 공식 배포처가 이 저장소의 릴리스 페이지뿐이라고 경고한다.

앱은 무료다. 패트리온 후원금은 커뮤니티 데이터베이스 서버 비용에 쓰인다. 서포터(supporter) 등급은 커뮤니티 데이터베이스와 베타 빌드를 받고, 백커(backer) 등급은 여기에 더해 알파 빌드를 받고 게임 지원 요청도 우선 처리된다.

체인지로그를 보면 개발자는 10월 1일에 1.0.0을 공개했고, 2일에 1.1.0, 3일에 1.1.1과 1.1.2, 4일에 1.2.0, 1.2.1, 1.2.2를 냈다. 1.1.0에서는 업스케일러 셰이더 팩 공유 기능이 추가됐다. 1.2.1에서는 엔씨소프트 PURPLE과 HoYoPlay 런처 지원, 「워 썬더」와 「컨트롤」의 녹화 없는 컴파일이 추가됐다. PURPLE로 설치한 「아이온 2」는 지원하지 않는 게임으로 표시된다. 게임 파일이 암호화되어 있고, 안티치트(NCGuard)가 녹화를 막기 때문이다. HoYoPlay의 게임은 모두 커널 수준 안티치트를 쓰므로 녹화하지 않는다. 10월 6일 기준으로 전체 릴리스의 설치 파일과 포터블 파일 다운로드 수를 합하면 10,082회다.2

앱은 C#과 WinUI 3로, 녹화기와 예열 프로그램은 C++로 작성됐다. 라이선스는 GPL-3.0 이상이며, Oodle 압축 라이브러리와 윈도우 앱 SDK, 그래픽 드라이버 라이브러리에 대해서는 예외 조항을 두었다.

드라이버가 바뀌면

설계 문서를 다 읽고 나니 불안한 마음이 먼저 들었다. SCSKiller의 예열은 드라이버가 캐시를 실행 파일 이름으로 구분한다는 측정 결과 하나에 의존한다. 이 동작은 드라이버의 내부 구현이라서 드라이버 업데이트 한 번에 바뀔 수도 있다. NVIDIA 캐시 파일 이름에 붙는 32비트 해시를 두고 개발자는 “observed, not derivable"이라고 적었다. 그 값을 관찰할 수는 있어도 계산하는 방법은 모른다는 뜻이다.

같은 문제를 플랫폼 운영사가 해결하려는 시도도 있다. 마이크로소프트는 2025년 9월 DirectX의 Advanced Shader Delivery를 발표했다. 이 기술에서는 게임 개발사가 개발 중에 파이프라인 정보를 모으고, GPU 제조사가 제공한 컴파일러 플러그인이 그 정보를 미리 컴파일하며, 스토어는 컴파일된 결과를 게임과 함께 배포한다.3 세 주체가 모두 참여해야 성립하는 구조다. SCSKiller는 누구와도 협의하지 않고 사용자 PC 한 대에서 같은 효과를 낸다. 런처 열 곳의 게임을 가리지 않고 쓸 수 있는 것도 그래서다. 그 대가로 개발자는 드라이버가 바뀔 때마다 캐시의 동작을 다시 측정해야 한다.

공개 후 나흘 동안 개발자는 게임 폴더에 파일을 쓰고 지우는 규칙을 여러 번 고쳤다. 게임이 실행 중일 때는 폴더에 쓰지 않도록 했고, 안티치트 표식은 숨김 파일까지 찾도록 했으며, 모드가 남긴 로그 때문에 녹화가 꺼지는 문제도 고쳤다. 셰이더를 미리 컴파일한다는 아이디어는 한 문장으로 설명할 수 있다. 그런데 남의 게임 폴더에 녹화기를 설치했다가 지우려면, 게임과 런처, 모드, 안티치트가 어떻게 조합되느냐에 따라 지켜야 할 규칙이 달라진다. 앞으로 나올 릴리스도 상당 부분은 이 규칙을 손보는 데 쓰일 것 같다.

출처

BlueHeisenberg, SCSKiller (GitHub, GPL-3.0-or-later). 1.0.0 공개 2026년 10월 1일, 최신 릴리스 1.2.2.

원문: https://github.com/BlueHeisenberg/SCSKiller

설계 문서: https://github.com/BlueHeisenberg/SCSKiller/blob/main/ARCHITECTURE.md

체인지로그: https://github.com/BlueHeisenberg/SCSKiller/blob/main/CHANGELOG.md

공식 웹사이트: https://scskiller.com

커버와 본문의 화면 캡처는 README에 실린 이미지다. 스타 수, 포크 수, 다운로드 수는 2026년 10월 6일 기준이다.


  1. 여기서 파이프라인은 DirectX 12의 파이프라인 상태 객체(PSO)를 가리킨다. 이 객체는 단계별 셰이더(정점 셰이더, 픽셀 셰이더 등), 루트 시그니처(셰이더가 쓰는 리소스를 어떤 슬롯에 연결할지 정한 것), 상태 값(블렌드, 렌더 타깃 형식 등)을 한데 묶은 것이다. 게임이 이 객체를 만들 때 드라이버가 셰이더를 GPU 기계어로 컴파일한다. ↩︎

  2. 릴리스에 첨부된 파일별 다운로드 수의 합이다. 자동 업데이트에 쓰는 패키지 파일과 업데이트 목록 파일은 합계에서 뺐다. 가장 최근 릴리스인 1.2.2는 설치 파일 5,185회, 포터블 파일 2,803회다. ↩︎

  3. 마이크로소프트 DirectX 개발자 블로그의 「Agility SDK 1.618: Advanced Shader Delivery and 1.716 out of preview」(2025년 9월 25일)를 바탕으로 한 설명이다. 수집한 파이프라인 정보는 State Object Database(SODB), 미리 컴파일한 결과는 Precompiled Shader Database(PSDB)라고 부른다. 2025년 10월 16일 ROG Xbox Ally와 Xbox Ally X에서 처음 적용됐다. https://devblogs.microsoft.com/directx/agility-sdk-1-618/ ↩︎