HeavyM 셰이더를 사용하여 나만의 VFX를 제작하는 방법 소개

소개

HeavyM에서 나만의 시각 효과를 만드는 데 관심이 있으신가요? 이 글에서는 셰이더가 제공하는 흥미로운 창의적 가능성에 대해 소개합니다. 그런데 셰이더란 무엇인가요?

셰이더는 컴퓨터의 그래픽 카드에서 실행되는 컴퓨터 프로그램입니다. 화면이나 비디오 프로젝터에 표시되는 데이터, 즉 픽셀을 빠르게 조작할 수 있습니다.

셰이더는 추상적이라고 여겨져 잘 알려지지 않은 기술이지만 우리 일상에서 매우 중요한 역할을 합니다. 이 작은 컴퓨터 프로그램은 비, 안개, 빛 반사, 물체 부조 등과 같은 복잡한 시각 효과를 사실적으로 시뮬레이션합니다. 따라서 비디오 게임, 특수 효과가 필요한 영화, TV 세트, 그리고 우리가 여기서 집중하는 분야인 디지털 아트에서 널리 사용됩니다.

HeavyM 소프트웨어에 내장된 셰이더는 다양한 가능성을 제공합니다. 자신만의 셰이더를 가져올 수도 있으므로 조합의 수를 무한히 늘릴 수 있습니다!

셰이더를 사용하는 비디오 게임의 예시입니다: Minecraft

셰이더를 사용하는 비디오 게임의 예시입니다: Minecraft

프로젝션 매핑 광산 성능

프로젝션 매핑 퍼포먼스 중 셰이더 사용 예시

1부: 셰이더 기술

셰이더의 개념을 더 잘 이해하기 위해 손으로 그림을 그리는 것을 예로 들어 보겠습니다. 그림을 구성하는 요소를 하나씩 그려야 합니다. 원, 직사각형, 선과 같은 기하학적 모양으로 시작한 다음 색상을 추가합니다. 그림을 수동으로 복사하는 것처럼 단계별로 진행합니다. 셰이더를 사용하면 한 번의 제스처로 종이에 도장을 찍는 것처럼 이 모든 작업이 한 번에 수행되므로 프로세스가 훨씬 빨라집니다. 더 좋은 점은 이 스탬프가 시간, 위치 또는 시트에 이미 있는 요소의 색상과 같은 주어진 정보에 따라 변경될 수 있다는 것입니다.

셰이더가 빠른 이유는 무엇인가요?

셰이더는 수십만 줄의 코드를 포함하는 HeavyM와 같은 소프트웨어와 달리 셰이더는 일반적으로 기껏해야 수백 줄에 불과하기 때문에 매우 가벼운 프로그램입니다. 셰이더의 속도는 주로 셰이더를 실행할 수 있는 하드웨어, 즉 그래픽 카드의 아키텍처에 의해 결정됩니다. HeavyM를 사용하려면 소프트웨어가 제공하는 가능성을 배가시킬 수 있으므로 이 문제에 반드시 주의를 기울여야 합니다.

작업을 차례로 처리하는 컴퓨터의 CPU와 달리 그래픽 카드의 계산은 병렬로 이루어집니다. 그래픽 카드에는 상당한 연산 능력을 갖춘 단일 프로세서 대신 여러 개의 작은 프로세서가 있습니다. 즉, 동시에 작업을 수행할 수 있습니다. 이러한 병렬화를 통해 셰이더는 복잡한 그래픽 계산을 몇 밀리초 만에 수행할 수 있습니다.

셰이더의 장점: 인터랙티브 아트

셰이더의 실행 속도 덕분에 이미지를 실시간으로 생성할 수 있습니다. 즉, 이미지를 보는 순간 생성되는 것입니다. 실시간이라는 용어는 프레임 단위로 렌더링되는 비디오 파일에 적용되는 사전 계산이라는 용어와 대조적으로 사용됩니다. 렌더링 계산은 시간이 많이 소요되며 최대 며칠이 걸릴 수 있습니다! 셰이더를 사용하면 비디오 게임에서처럼 이미지를 직접 조작할 수 있습니다. 인터랙티브 디지털 아트는 음악이나 사람의 움직임에 반응하는 비주얼을 생성할 수 있기 때문에 이 실시간 원리에 의존합니다. 음악과 비주얼이 혼합된 퍼포먼스의 두 가지 예를 보려면 다음 작품을 살펴보세요. 어퓨 트윈 콘서트의 위드코어 또는 노노탁의 공연.

셰이더 유형

셰이더는 특정 확장자를 가진 텍스트 파일에 불과합니다. 셰이더에는 다양한 유형이 있다는 것을 알게 될 것입니다. 공통적인 요소는 GLSL 언어로 코딩되어 있다는 것입니다: OpenGL 셰이딩 언어입니다. 플랫폼과 하드웨어에 따라 다른 유형의 셰이더가 있지만 여기서는 OpenGL 기반 셰이더에 중점을 두겠습니다. HeavyM에서 셰이더를 사용하려면 OpenGL 2.0을 지원하는 그래픽 카드가 필요합니다.

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

조각 셰이더 또는 픽셀 셰이더는 각 픽셀의 색상을 개별적으로 계산하는 데 목적이 있는 셰이더입니다. 이미지의 각 픽셀 데이터(위치, 텍스처 좌표, 색상)를 입력으로 받아 해당 색상을 출력합니다.

HeavyM와 함께 사용하고자 하는 셰이더는 바로 이러한 셰이더입니다. 이러한 셰이더는 일반적으로 .FRAG 파일 또는 ISF 형식의 경우 .FS 파일입니다. ISF 형식은 대화형 애플리케이션에서 더 쉽게 해석할 수 있도록 GLSL 셰이더 조각에 대한 표준을 제공합니다.

버텍스 셰이더

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

픽셀 셰이더와 함께 제공되는 .VS 파일로, 이름이 같고 같은 폴더에 위치하기도 합니다.

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

프로그래밍을 몰라도 HeavyM에서 셰이더를 사용할 수 있습니다. 소프트웨어에 내장된 라이브러리 외에도 직접 셰이더를 만들지 않고도 새로운 셰이더를 찾을 수 있는 플랫폼이 존재합니다. 셰이더 아티스트 커뮤니티가 성장하고 있으며 이들이 공유하는 작품을 자유롭게 사용할 수 있습니다.

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

경고: .FRAG는 HeavyM에서 지원되지 않습니다. .ISF로 변환해야 하며, 이를 위한 방법은 아래에 나와 있습니다.

일반적으로 셰이더 코드의 시작 부분에 명시된 라이선스에서 사용 권한을 반드시 확인하세요. 특별한 표시가 없는 경우 기본적으로 저작권이 적용되며, 상업적으로 사용하려면 프로그램 작성자와 상의하는 것이 좋습니다.

나만의 셰이더 개발

자신만의 셰이더를 만들려면 최대한 많은 애플리케이션과 호환될 수 있도록 ISF 형식을 직접 사용하는 것이 좋습니다. 이 글의 목적은 ISF 형식에서 사용되는 언어인 GLSL 코드를 배우는 것이 아닙니다. 이에 대해서는 매우 포괄적인 사이트 를 읽어 보시기 바랍니다:

하지만 시작하려면 ISF 사이트로 이동하여 기존 셰이더를 자유롭게 수정하세요. 이 대화형 사이트에서는 셰이더에 대한 수정 사항을 실시간으로 시각화할 수 있습니다. 기본 템플릿에서 시작할 수도 있습니다.

셰이더를 만들고 편집할 때 가장 큰 단점은 오류 피드백이 없다는 것입니다. 디자인에 문제가 발생하면 셰이더가 실행되거나 아무것도 표시되지 않습니다. 그러면 오류의 원인을 찾기가 어렵습니다. 따라서 코드를 엄격하게 작성해야 합니다.

2부: HeavyM의 셰이더

HeavyM 소프트웨어는 내장된 시각 효과 라이브러리에 수백 개의 기본 셰이더를 제공합니다. 사용되는 기능에 따라 소프트웨어에서 여러 유형의 효과를 사용할 수 있습니다.

셰이프에 셰이더 효과 적용

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

HeavyM 셰이더 - 도형에 대한 효과

현재 이 카테고리에서는 기존 효과 셰이더를 추가하거나 수정할 수 없습니다.

이미지 생성 셰이더

오른쪽 세로 도구 모음에 있는 흰색 아이콘을 통해 액세스할 수 있는 패널에서 이미지 생성 셰이더를 소스로 추가합니다. 이러한 셰이더를 표시하려면 플레이어를 만들어야 합니다. 대상 아이콘을 클릭하여 소스를 플레이어에 연결합니다. 이미지 생성 셰이더는 반복적으로 실행되는 프로그램이기 때문에 기본 지속 시간이 없습니다. 그러나 소스의 표시 기간을 변경할 수 있습니다.

셰이더 - 제너레이티브 효과

플레이어에서 셰이더 처리

플레이어에 이미지 처리 효과를 적용할 수 있습니다. 이렇게 하려면 플레이어를 선택하고 왼쪽 하단의 속성에서 + 버튼을 사용하여 효과를 추가합니다. 효과는 차례로 추가됩니다. 각 플레이어는 독립적이므로 플레이어가 같은 그룹에 속해 있더라도 소스 및 처리 효과는 플레이어마다 다릅니다.

셰이더 - 플레이어 효과

시퀀스에서 셰이더 처리

이미지 처리 셰이더를 전체 비디오 출력에 적용할 수도 있습니다. 이러한 효과는 시퀀스에 상대적입니다. 시퀀스에 처리 효과를 추가하려면 톱니바퀴를 클릭하고 + 버튼을 사용하여 셰이더를 추가합니다. 시퀀스에 대한 처리 효과는 플레이어에 대한 처리 효과와 동일합니다.

HeavyM 셰이더 - 시퀀스 효과

시퀀스의 트랜지션 셰이더

트랜지션도 시퀀스와 관련이 있으며 전체 동영상 출력에 적용됩니다. 기본적으로 적용되는 전환은 0.20초 페이드입니다. 시퀀스의 톱니바퀴를 클릭하여 액세스할 수 있는 메뉴에서 이 전환을 수정할 수 있습니다. 전환은 시퀀스의 입력에만 적용됩니다.

HeavyM - 전환

셰이더 가져오기

HeavyM에는 셰이더 생성 및 처리 셰이더라는 두 가지 주요 셰이더 카테고리가 있음을 확인했습니다. HeavyM를 사용하면 이 두 가지 범주의 셰이더를 쉽게 결합할 수 있습니다. HeavyM는 각 셰이더 선택 창의 라이브러리 탭에서 기본 셰이더를 제공합니다. 이러한 셰이더는 모두 .FS 형식이므로 ISF 표준을 준수합니다. 내 셰이더 탭에서 자체 셰이더를 가져오려면 이 표준을 준수해야 합니다. 이러한 방식으로 셰이더의 매개 변수는 HeavyM의 인터페이스로 쉽게 수정할 수 있습니다.

다른 셰이더 포맷을 HeavyM로 임포트하고 싶으신가요? 이 도구를 사용하면 셰이더를 매우 쉽게 변환할 수 있습니다: 데스크톱 ISF 에디터(Windows 베타/Mac)에서 "GLSL 샌드박스에서 임포트" 및 "Shadertoy에서 임포트" 기능을 사용하세요.

마지막으로, ISF 형식의 아키텍처를 자세히 이해하여 자신만의 형식을 만들고 싶다면 ISF 형식 문서를 살펴보는 것이 좋습니다: https://docs.isf.video/

3부: 셰이더 제어하기

셰이더를 사용하면 렌더링 단계를 거치지 않고도 실시간으로 시각 효과를 수정할 수 있습니다. 효과를 제어하고 인터랙티브한 비주얼을 제작할 수 있는 다양한 가능성을 소개합니다.

셰이더 파라미터는 소스 아이콘의 톱니바퀴를 클릭하여 수정할 수 있습니다. 값 눈금은 0에서 100 사이로 정규화되며 특정 단위와 일치하지 않습니다. 각 셰이더 파라미터 옆의 화살표를 클릭하면 다양한 파라미터 변경 모드가 제공되며, 이를 찾을 수 있습니다.

고정 값 모드

마우스로 값을 변경할 수 있는 기본 모드입니다. 단점은 한 번에 하나의 매개변수만 변경할 수 있다는 것입니다. 키보드로도 값을 입력할 수 있습니다.

가치 창출자

HeavyM는 셰이더의 파라미터를 자동으로 수정할 수 있는 7개의 값 생성기를 제공합니다. 음악 소프트웨어나 신디사이저에서 볼 수 있는 것과 같은 LFO(저주파 발진기) 유형 제너레이터입니다. 각 제너레이터에는 두 가지 애니메이션 모드가 있습니다: BPM 또는 템포럴. BPM 모드는 메트로놈 아이콘으로 상징되는 인터페이스 오른쪽 하단의 일반 템포에 연결됩니다. 템포 모드를 사용하면 일반 템포와 무관하게 주파수를 정의할 수 있습니다.

HeavyM - LFO

사운드 분석을 통한 제어

인터페이스 오른쪽 하단에는 사운드 분석 모듈이 있습니다. 이 모듈을 사용하면 3가지 주파수 범위에서 진폭 변화를 감지할 수 있습니다: 저음 중음 고음. 셰이더 파라미터의 변화 모드에서 이러한 값의 변화를 확인할 수 있습니다.

HeavyM 셰이더 - 사운드 분석

MIDI 제어

여러 개의 파라미터를 동시에 수동으로 제어하고 싶으신가요? MIDI 프로토콜을 사용하세요. 시중에는 다양한 음악용 미디 컨트롤러가 나와 있습니다. 모두 HeavyM와 호환됩니다. 인터페이스 오른쪽 상단의 주황색 아이콘을 통해 액세스할 수 있는 구성 창에서 하드웨어를 연결하세요. 그런 다음 MIDI 학습 모드에서 셰이더 파라미터와 하드웨어의 키 사이의 연결을 구성할 수 있습니다.

HeavyM 셰이더 - MIDI

결론

셰이더가 제공하는 창의적인 가능성은 무한합니다. 이러한 프로그램을 사용하면 몇 번의 클릭만으로 그래픽 카드의 성능을 활용할 수 있습니다. 컴퓨터로 알고리즘으로 작품을 만드는 제너레이티브 아트에 쉽게 접근할 수 있습니다. 앙투안 슈미트, 미구엘 슈발리에, 베라 몰나르, 두 젠준, 다니엘 로진 등 많은 디지털 아티스트가 이 기법을 사용합니다. 

HeavyM를 사용하면 셰이더를 매우 쉽게 사용하고 제어할 수 있습니다. 셰이더를 무한히 조합하여 나만의 비주얼과 나만의 아이덴티티를 만들어 보세요!