셰이더 사용하기

요약

셰이더는 GPU에서 실행되는 소형 그래픽 프로그램으로, 실시간으로 생성형 시각 효과를 만들어냅니다. 프로젝션 맵핑에서 셰이더는 용량이 큰 비디오 파일 없이도 무한하고 역동적인 텍스처를 제공합니다. HeavyM와 같은 소프트웨어를 사용하면 ISF와 같은 표준 형식을 쉽게 불러올 수 있으며, 코딩이 전혀 필요 없이 생성형 시각 효과를 자유롭게 조작할 수 있습니다.

셰이더란 무엇인가요?

셰이더는 그래픽 처리 장치(GPU)에서 실행되도록 특별히 설계된 컴퓨터 프로그램의 한 종류입니다. ‘셰이더’라는 용어는 ’shade(그림자)‘에서 유래한 것으로, 셰이더가 처음 사용된 용도 중 하나가 3D 그래픽에서 그림자와 반사를 시뮬레이션하는 것이었기 때문입니다. 하지만 오늘날에는, 셰이더는 매우 다양한 그래픽 처리 작업에 사용되며, 텍스처와 색상을 적용하는 것부터 복잡한 특수 효과를 생성하는 것에 이르기까지.

셰이더 매우 낮은 수준에서 작동하며, 즉, 이미지나 동영상을 구성하는 개별 픽셀을 직접적이고 정밀하게 제어할 수 있다는 뜻입니다. 최소한의 리소스로도 이미지 데이터를 매우 빠르게 처리할 수 있어, 특히 실시간 그래픽스 애플리케이션에 유용하며, 예를 들어 비디오 게임, 가상현실, 그리고 비디오 매핑.

다양한 종류의 셰이더

셰이더에는 3D 데이터 포인트(버텍스)를 조작하는 버텍스 셰이더, 이러한 포인트로부터 새로운 도형을 생성하는 지오메트리 셰이더, 그리고 화면상의 각 픽셀의 최종 색상을 결정하는 프래그먼트 셰이더(픽셀 셰이더라고도 함) 등 다양한 유형이 있습니다. 셰이더는 일반적으로 다음과 같은 특수한 프로그래밍 언어로 작성됩니다. GLSL(OpenGL 셰이딩 언어) 또는 DirectX용 HLSL(고수준 셰이딩 언어).

픽셀 셰이더 또는 프래그먼트 셰이더

프래그먼트 셰이더 또는 픽셀 셰이더는 각 픽셀의 색상을 개별적으로 계산하도록 설계된 셰이더입니다. 이 함수는 이미지의 각 픽셀 데이터(위치, 텍스처 좌표, 색상)를 입력으로 받아 해당 픽셀의 색상을 반환합니다.

HeavyM와 함께 사용할 때 가장 관심을 가질 만한 셰이더들은 바로 이것들입니다. 이 셰이더들은 보통 .FRAG 파일 또는 ISF 형식의 경우 .FS 파일. ISF 형식은 GLSL 프래그먼트에 대한 표준을 제공합니다. 셰이더, 이를 통해 대화형 애플리케이션에서 더 쉽게 해석할 수 있게 합니다.

버텍스 셰이더

버텍스 셰이더는 버텍스를 픽셀로 변환하는 데 사용됩니다.

그들은 .VS 파일 때때로 픽셀 셰이더와 함께 제공되며, 이름이 동일하고 동일한 폴더에 위치해야 하는 파일들입니다.

HeavyM 형상 효과 셰이더

HeavyM 인터페이스 오른쪽에 있는 빨간색 아이콘을 클릭하면, 그려진 도형에 자동으로 적용되는 다양한 효과 카테고리를 이용할 수 있습니다. 이러한 효과들은 왼쪽 레이어 패널에 있는 그룹들과 연결되어 있습니다. 그룹 내의 모든 도형은 동일한 모양을 공유합니다. 서로 다른 도형에 다른 효과를 적용하려면 추가 그룹을 생성하고 해당 그룹에 도형을 추가해야 합니다.

현재 이 카테고리에 속한 기존 이펙트 셰이더의 코드를 추가하거나 수정할 수 없습니다.

이미지 생성 셰이더

오른쪽 수직 도구 모음에 있는 흰색 아이콘을 통해 접근할 수 있는 패널에서 이미지 생성 셰이더를 소스로 추가할 수 있습니다. 이 셰이더들은 표시되려면 플레이어를 생성해야 합니다. 그런 다음, 표적 모양의 아이콘을 클릭하여 소스를 플레이어에 연결하세요. 이미지 생성 셰이더는 반복적으로 실행되는 프로그램이므로 기본 재생 시간이 설정되어 있지 않습니다. 하지만 소스의 표시 시간은 조정할 수 있습니다.

현재 이 카테고리에 속한 기존 이펙트 셰이더의 코드를 추가하거나 수정할 수 없습니다.

이미지 생성 셰이더

오른쪽 수직 도구 모음에 있는 흰색 아이콘을 통해 접근할 수 있는 패널에서 이미지 생성 셰이더를 소스로 추가할 수 있습니다. 이 셰이더들은 표시되려면 플레이어를 생성해야 합니다. 그런 다음, 표적 모양의 아이콘을 클릭하여 소스를 플레이어에 연결하세요. 이미지 생성 셰이더는 반복적으로 실행되는 프로그램이므로 기본 재생 시간이 설정되어 있지 않습니다. 하지만 소스의 표시 시간은 조정할 수 있습니다.

플레이어에서 셰이더 처리하기

플레이어에 이미지 처리 효과를 적용할 수 있습니다. 이를 위해서는 플레이어를 선택한 다음, 왼쪽 하단의 ‘속성’ 패널에서 ‘+’ 버튼을 사용하여 효과를 추가하면 됩니다. 효과는 순차적으로 추가됩니다. 각 플레이어는 독립적으로 작동하므로, 플레이어가 같은 그룹에 속해 있더라도 소스 및 처리 효과는 플레이어마다 다를 수 있습니다.

셰이더 가져오기 또는 생성하기

셰이더는 어디서 찾을 수 있나요?

HeavyM에서 셰이더를 사용하기 위해 프로그래밍 방법을 알 필요는 없습니다. 소프트웨어에 이미 포함된 라이브러리 외에도, 새로운 셰이더를 찾을 수 있는 플랫폼들이 있습니다 직접 만들 필요 없이. 셰이더 제작자 커뮤니티는 빠르게 성장하고 있으며, 그들이 공유하는 저작물은 비영리 프로젝트에 종종 사용할 수 있습니다.

.FS 셰이더를 찾으려면: https://www.interactiveshaderformat.com/

.FRAG 셰이더를 찾으려면: http://glslsandbox.com/ 와 메종 사간과 https://www.shadertoy.com/

참고: HeavyM에서는 .FRAG 파일을 인식하지 못합니다. 이 파일들은 .ISF 형식으로 변환해야 하며, 이에 대한 방법은 아래에 안내해 드립니다.

라이선스에 명시된 사용 권한을 반드시 확인하시기 바랍니다. 사용 권한은 대개 셰이더 코드의 맨 앞에 기재되어 있습니다. 별도의 명시 사항이 없는 경우 기본적으로 저작권이 적용되므로, 해당 셰이더를 상업적 목적으로 사용하려는 경우 작성자와 반드시 상의할 것을 강력히 권장합니다.

셰이더 가져오기

앞서 언급했듯이, HeavyM에는 셰이더가 크게 두 가지 범주로 나뉩니다: 생성 셰이더와 처리 셰이더입니다. HeavyM를 사용하면 이 두 가지 범주의 셰이더를 손쉽게 결합할 수 있습니다. HeavyM는 각 셰이더 선택 창의 ‘라이브러리’ 탭에서 기본 셰이더를 제공합니다. 이 모든 셰이더는 .FS 형식이며, 따라서 ISF 표준을 준수합니다. 자신만의 셰이더를 ‘내 셰이더’ 탭으로 가져오려면, 이 표준을 준수해야 합니다. 이렇게 하면 HeavyM의 인터페이스 내에서 셰이더의 매개변수를 쉽게 수정할 수 있습니다.

다른 셰이더 형식을 HeavyM로 가져오고 싶으신가요? 다음 도구들을 사용하면 셰이더를 아주 간단하게 변환할 수 있습니다:

나만의 셰이더 개발하기

나만의 셰이더 만들기, 가능한 한 많은 애플리케이션과의 호환성을 보장하기 위해 ISF 형식을 직접 사용하는 것을 권장합니다. 이 글의 목적은 ISF 형식에서 사용되는 언어인 GLSL 코딩 방법을 가르치는 것이 아닙니다. GLSL 코딩을 배우고 싶으시다면, 다음과 같이 매우 포괄적인 내용을 다루는 사이트들을 참고하시기 바랍니다:

하지만 우선, ISF 사이트를 방문하셔서 기존 셰이더를 자유롭게 수정해 보세요. 이 대화형 사이트를 통해 셰이더에 적용된 변경 사항을 실시간으로 확인할 수 있습니다. 또한 기본 템플릿을 바탕으로 시작할 수도 있습니다.

셰이더를 생성하고 수정할 때의 가장 큰 단점은 오류에 대한 피드백이 없다는 점입니다. 설계상의 문제가 있을 경우, 셰이더가 실행되지 않거나 아무것도 표시되지 않을 수 있어 오류의 원인을 파악하기 어렵습니다. 따라서 코딩 시 세심한 주의를 기울이는 것이 매우 중요합니다.

계속하기

소리와 음악에 대한 반응성 관리

이 안내서는 다음 사람이 작성했습니다. HeavyM, 2013년부터 프로젝트션 맵핑을 전문으로 해온 기업입니다.

질문, 의견, 조언 등이 있으시면 이 문의 양식을 이용해 주시기 바랍니다: https://help.heavym.net/hc/requests/new. 24시간 이내에 답변을 보장합니다.

자주 묻는 질문(FAQ)

프로젝션 맵핑에서 셰이더란 무엇인가요?

셰이더는 그래픽 하드웨어에서 렌더링 효과를 매우 유연하게 계산하는 데 사용되는 컴퓨터 프로그램입니다. 프로젝트션 맵핑에서 셰이더는 미리 렌더링된 비디오 루프를 재생하는 대신, GPU에서 직접 역동적인 실시간 텍스처와 오디오 반응형 영상을 생성하는 데 사용됩니다.

ISF 형식이란 무엇인가요?

ISF는 Interactive Shader Format의 약자입니다. 이는 GLSL(OpenGL 셰이딩 언어)을 기반으로 한 표준으로, 다양한 VJing 및 프로젝션 맵핑 프로그램 간에 생성형 비주얼을 손쉽게 공유하고 사용할 수 있게 하여 크로스 플랫폼 호환성을 보장합니다.

셰이더를 사용하려면 코딩을 할 줄 알아야 하나요?

아니요, 프로그래머일 필요는 없습니다. 셰이더는 코드(GLSL)로 작성되지만, 다음과 같은 최신 프로젝트션 맵핑 프로그램은 HeavyM 기성 ISF 파일을 가져오거나, 도형 위에 드래그 앤 드롭하기만 하면 내장된 셰이더 효과를 사용할 수 있습니다.