Pixel Bender 셰이더의 기초

Flash Player 10 이상, Adobe AIR 1.5 이상

Adobe Pixel Bender는 이미지 내용을 만들거나 조작하는 데 사용되는 프로그래밍 언어입니다. Pixel Bender를 사용하면 셰이더라고도 하는 커널을 만들 수 있습니다. 셰이더는 이미지의 각 픽셀에 대해 개별적으로 실행되는 단일 함수를 정의합니다. 함수에 대한 각 호출의 결과는 이미지에서 해당 픽셀 좌표의 출력 색상입니다. 입력 이미지 및 매개 변수 값을 지정하여 작업을 사용자 정의할 수 있습니다. 단일 셰이더 실행에서 입력 및 매개 변수 값은 상수입니다. 변경되는 유일한 요소는 색상으로 함수 호출의 결과를 나타내는 픽셀의 좌표입니다.

가능한 경우 셰이더 함수는 여러 출력 픽셀 좌표에 대해 동시에 호출됩니다. 이 경우 셰이더 성능이 향상되며 고성능 처리 작업을 제공할 수 있습니다.

ActionScript에서 셰이더를 사용하여 다음 세 가지 유형의 효과를 쉽게 만들 수 있습니다.

  • 드로잉 채우기

  • 블렌드 모드

  • 필터

셰이더는 독립 실행형 모드에서도 실행할 수 있습니다. 독립 실행형 모드를 사용하면 의도된 사용 방식을 미리 지정하지 않고 셰이더의 결과에 직접 액세스할 수 있습니다. 결과는 이미지 데이터나 이진 또는 숫자 데이터로 액세스할 수 있습니다. 데이터는 이미지 데이터일 필요가 전혀 없습니다. 이러한 방식으로 셰이더에 데이터 집합을 입력으로 제공할 수 있습니다. 셰이더는 데이터를 처리하며, 사용자는 셰이더에서 반환된 결과 데이터에 액세스할 수 있습니다.

Pixel Bender는 Flash Player 10 및 Adobe AIR 1.5부터 지원됩니다. Pixel Bender 블렌드, 필터 및 채우기는 GPU 렌더링에서 지원되지 않습니다. 휴대 장치에서 Pixel Bender 셰이더는 CPU 렌더링에서 실행됩니다. 그러나 성능은 데스크톱 컴퓨터에서 실행할 때와 같지 않습니다. 많은 셰이더 프로그램은 초당 몇 프레임 정도의 속도로 실행될 수 있습니다.

중요한 개념 및 용어

다음 참조 목록에는 Pixel Bender 셰이더를 만들고 사용할 때 사용되는 중요한 용어가 나와 있습니다.

커널
Pixel Bender의 경우 커널은 셰이더와 동일합니다. Pixel Bender를 사용하면 코드에서 커널을 정의할 수 있습니다. 커널은 이미지의 각 픽셀에 대해 개별적으로 실행되는 단일 함수를 정의합니다.

Pixel Bender 바이트코드
Pixel Bender 커널이 컴파일되면 해당 커널은 Pixel Bender 바이트코드로 변형됩니다. 바이트코드는 런타임에 액세스되고 실행됩니다.

Pixel Bender 언어
Pixel Bender 커널을 만드는 데 사용되는 프로그래밍 언어입니다.

Pixel Bender Toolkit
Pixel Bender 소스 코드에서 Pixel Bender 바이트코드 파일을 만드는 데 사용되는 응용 프로그램입니다. Pixel Bender Toolkit을 사용하면 Pixel Bender 소스 코드를 작성하고 테스트하고 컴파일할 수 있습니다.

Shader
이 문서에서 셰이더는 Pixel Bender 언어로 작성된 기능 집합을 말합니다. 셰이더의 코드는 시각적 효과를 만들거나 계산을 수행합니다. 어떠한 경우이든 셰이더는 데이터 집합(대개 이미지의 픽셀)을 반환합니다. 셰이더는 출력 픽셀의 좌표만 다를 뿐 각 데이터 점에서 동일한 작업을 수행합니다. 셰이더는 ActionScript로 작성되지 않습니다. Pixel Bender 언어로 작성되며 Pixel Bender 바이트코드로 컴파일됩니다. 셰이더는 컴파일 타임에 SWF 파일에 포함되거나 런타임에 외부 파일로 로드될 수 있습니다. 두 경우 모두 ActionScript에서 Shader 객체를 만들고 해당 객체를 셰이더 바이트코드에 연결하여 셰이더에 액세스할 수 있습니다.

셰이더 입력
계산에 사용하기 위해 셰이더에 제공되는 복잡한 입력(대개 비트맵 이미지 데이터)입니다. 셰이더에 정의된 각 입력 변수에 대해 단일 값, 즉 단일 이미지 또는 이진 데이터 집합이 셰이더의 전체 실행에 사용됩니다.

셰이더 매개 변수
계산에 사용하기 위해 셰이더에 제공되는 단일 값 또는 제한된 값 집합입니다. 각 매개 변수 값은 단일 셰이더 실행에 대해 정의되며 전체 셰이더 실행에 동일한 값이 사용됩니다.

코드 예제를 사용하여 작업

제공된 예제 코드 샘플을 테스트해 볼 수도 있습니다. 코드 테스트는 코드를 실행하는 작업과 만들어진 SWF에서 결과를 확인하는 작업으로 이루어집니다. 모든 예제에서는 드로잉 API를 사용하여 내용을 만들며 이 내용은 셰이더 효과를 사용하거나 셰이더 효과에 의해 수정됩니다.

대부분의 예제 코드 샘플에는 두 부분이 포함되어 있습니다. 한 부분은 예제에 사용되는 셰이더의 Pixel Bender 소스 코드입니다. 먼저 Pixel Bender Toolkit을 사용하여 소스 코드를 Pixel Bender 바이트코드 파일로 컴파일해야 합니다. Pixel Bender 바이트코드 파일을 만드는 단계는 다음과 같습니다.

  1. Adobe Pixel Bender Toolkit을 엽니다. 필요한 경우 [Build] 메뉴에서 [Turn on Flash Player warnings and errors]를 선택합니다.

  2. Pixel Bender 코드 샘플을 복사하여 Pixel Bender Toolkit의 코드 편집기 창에 붙여넣습니다.

  3. [File] 메뉴에서 [Export kernel filter for Flash Player]를 선택합니다.

  4. Pixel Bender 바이트코드 파일을 Flash 문서와 동일한 디렉토리에 저장합니다. 파일의 이름은 예제 설명에 지정된 이름과 일치해야 합니다.

각 예제의 ActionScript 부분은 클래스 파일로 작성되어 있습니다. Flash Professional에서 예제를 테스트하려면 다음 작업을 수행하십시오.

  1. 빈 Flash 문서를 만들고 컴퓨터에 저장합니다.

  2. 새 ActionScript 파일을 만들고 Flash 문서와 같은 디렉토리에 저장합니다. 파일 이름은 코드 샘플에 있는 클래스의 이름과 일치해야 합니다. 예를 들어 코드 샘플에서 MyApplication이라는 클래스를 정의하는 경우 MyApplication.as라는 이름으로 ActionScript 파일을 저장합니다.

  3. ActionScript 파일에 코드 샘플을 복사하고 파일을 저장합니다.

  4. Flash 문서에서 스테이지 또는 작업 영역의 빈 부분을 클릭하여 문서 속성 관리자를 활성화합니다.

  5. 텍스트에서 복사한 ActionScript 클래스의 이름을 속성 관리자의 [문서 클래스] 필드에 입력합니다.

  6. [컨트롤] > [동영상 테스트]를 사용하여 프로그램을 실행합니다.

    미리 보기 윈도우에서 예제 결과를 확인합니다.

예제 코드 목록을 테스트하는 이러한 방법은 ActionScript 예제 사용 방법에 자세히 설명되어 있습니다.