셰이더는 렌더링 과정의 일환으로 GPU에서 실행되는 소규모 프로그램입니다. 3D 모델의 형상 변환부터 텍스처 적용, 조명, 그림자, 후처리 효과에 이르기까지 모든 작업을 처리합니다. 현대 게임의 핵심 요소이며, 게임이 이토록 인상적인 비주얼을 구현하는 이유 중 하나입니다.
그러나 항상 그런 것은 아니었다. 초기 그래픽 카드는 텍스처링이나 조명 같은 작업에 각각 전용된 고정 기능 하드웨어에 의존했다. 당시 기준으로 강력했지만 동시에 유연성이 부족했다. 게임이 점점 더 복잡해지고 시각적으로 야심차게 발전함에 따라 고정 하드웨어는 시각 효과와 창의적 자유 모두를 제한했다. 프로그래밍 가능한 셰이더가 이러한 한계를 없앴다.
가장 초기에 널리 사용된 셰이더는 픽셀 셰이더였다. 이 셰이더는 화면상의 각 픽셀의 최종 색상을 결정하며, 조명 계산, 그림자, 텍스처, 투명도, 그리고 블러나 셀 셰이딩과 같은 후처리 효과를 처리할 수 있다. 곧이어 버텍스 셰이더가 등장하여 개발자들이 지오메트리가 렌더링되기 전에 위치, 색상, 텍스처 좌표와 같은 버텍스 데이터를 조작할 수 있게 되었다.
이후 등장한 지오메트리 셰이더는 그래픽스 파이프라인 내에서 실시간으로 지오메트리를 생성하고 수정할 수 있습니다. 성능 비용으로 인해 현재는 많이 사용되지는 않지만, 절차적 지오메트리나 파티클 효과 같은 효과를 구현할 수 있게 했습니다. 테셀레이션 셰이더는 이 개념을 발전시켜 지오메트리의 디테일을 동적으로 증가시킴으로써, 모델 데이터를 추가로 저장하지 않고도 표면을 더 매끄럽게 보이게 합니다.
최근에는 현대식 API가 태스크 셰이더와 메시 셰이더를 도입했습니다. 이 기술들은 기존의 정점, 지오메트리, 테셀레이션 단계의 일부를 대체하며, 개발자가 지오메트리의 생성 및 처리 방식을 더 유연하게 제어할 수 있는 시스템을 제공합니다.
레이 트레이싱 셰이더는 최신 추가 기능입니다. 이는 장면을 통과하는 광선의 경로를 추적하여 반사, 그림자, 글로벌 일루미네이션 등의 효과를 구현하는 데 사용됩니다. DirectX 레이 트레이싱과 Vulkan을 통해 지원되며, 플레이 가능한 성능 수준으로 실행하려면 비교적 최신 그래픽 카드가 필요합니다.
셰이더가 그런 것이라면, 왜 프리로딩하는 데 그렇게 오래 걸릴 수 있으며, 프리로딩은 실제로 무엇을 의미하는가?
이 용어는 다소 오해의 소지가 있습니다. 실제로 셰이더 사전 로딩은 단순히 셰이더를 불러오는 것이 아니라 컴파일하고 캐싱하는 것을 의미합니다. 게임 개발자는 플레이 중 실시간으로 셰이더를 컴파일하거나, 게임 플레이 시작 전에 미리 컴파일할 수 있습니다.
게임 플레이 중 셰이더 컴파일은 단순한 경우에 효과적일 수 있으나, 새로운 효과나 지역이 등장할 때 종종 지연과 끊김 현상을 유발합니다. 다수의 셰이더를 동시에 컴파일해야 할 경우 프레임 시간이 급격히 증가할 수 있으며, 이 때문에 오픈 월드 게임에서 이 방식의 영향이 두드러지게 나타납니다. 과도한 실시간 컴파일은 대개 PC 최적화가 미흡하다는 신호입니다.
셰이더를 미리 로드하면 컴파일 작업을 사전에 수행하고 결과를 캐시에 저장함으로써 이 문제를 피할 수 있습니다. 컴파일된 셰이더는 게임 플레이 중 즉시 재사용될 수 있어 더 부드러운 성능을 제공합니다. 단점은 게임을 처음 실행할 때 셰이더 컴파일 단계를 기다려야 한다는 점입니다.
주요 게임 업데이트나 그래픽 드라이버 업데이트 후에는 해당 대기 시간이 다시 발생할 수 있습니다. 셰이더 바이너리는 게임 버전과 GPU 드라이버 모두와 밀접하게 연결되어 있기 때문입니다. 그래픽 드라이버가 자주 업데이트됨에 따라 셰이더 재컴파일은 PC 플레이어들에게 익숙한 좌절감이 되었습니다.
개발자들은 왜 미리 컴파일된 셰이더를 제공하지 못하는 걸까? 우리가 사랑하는 PC에서는 하드웨어와 드라이버 환경이 너무 다양하기 때문이다. 셰이더 컴파일은 GPU 아키텍처, 드라이버 버전, 그래픽스 API에 따라 달라지므로, 한 시스템에서 작동하는 컴파일된 셰이더가 다른 시스템에서는 작동하지 않는다. 콘솔은 고정된 플랫폼이기 때문에 이 문제를 피할 수 있지만, PC는 그렇지 않다.
다음에 셰이더 프리로딩 화면을 바라보고 있다면, 이 화면이 실제로 게임을 플레이할 때 끊김 현상을 줄이고 성능을 향상시키기 위한 것임을 기억하세요. 이는 선한 목적을 위한 힘입니다.
JOIN OUR OFFICIAL CORSAIR COMMUNITIES
Join our official CORSAIR Communities! Whether you're new or old to PC Building, have questions about our products, or want to chat the latest PC, tech, and gaming trends, our community is the place for you.