컴퓨터 그래픽스 분야에서 셰이더(shader)는 소프트웨어 명령의 집합으로 주로 그래픽 하드웨어의 렌더링 효과를 계산하는 데 쓰인다. 셰이더는 그래픽 처리 장치(GPU)의 프로그래밍이 가능한 렌더링 파이프라인을 프로그래밍하는 데 쓰인다.
셰이더는 표면상으로 무한해 보이는 효과를 만들기 위해 영화 후처리, CGI, 비디오 게임에 널리 쓰인다. 단순한 광원 모델을 떠나, 더 복잡한 이용에는 영상의 색조, 채도, 밝기, 대비를 변경하는 일과 블러, 라이트 블룸, 입체 광원, 심도 효과를 위한 노멀 매핑, 보케, 셀 셰이딩, 포스터리제이션, 범프 매핑, 왜곡, 크로마 키 (이른바 블루스크린/그린스크린 효과), 테두리 검출, 모션 감지, 사이키델리아 효과 제작 등을 포함한다.
쉐이더 언어도 여러가지가 존재한다. 대표적으로는 아래의 3가지가 있다.
세 언어 모두 C 기반이기 때문에 문법이 유사하다. 특히 Cg와 HLSL은 거의 똑같다.
입력 조립기가 넘겨준 정점 자료의 정점들을 한번에 하나씩 처리한다. 새로운 정점을 생성하거나 기존 정점을 삭제하지 못하고 모든 정점은 독릭접으로 처리된다. 정점 셰이더의 한 실행은 다른 실행의 정보에 접근하지 못한다.
버텍스 셰이더는 버텍스별로 실행되며, 주어진 오브젝트를 변형하고 블렌드 셰이프, GPU 스키닝 등을 사용하여 버텍스별 애니메이션을 수행하는 데 적합합니다.