셰이더 로드 또는 포함

Flash Player 10 이상, Adobe AIR 1.5 이상

ActionScript에서 Pixel Bender 셰이더를 사용하려면 첫 번째 단계로 ActionScript 코드에서 셰이더에 액세스해야 합니다. 셰이더는 Adobe Pixel Bender Toolkit을 사용하여 만들어지고 Pixel Bender 언어로 작성되기 때문에 ActionScript에서 직접 액세스할 수 없습니다. 대신 Pixel Bender 셰이더를 ActionScript에 나타내는 Shader 클래스의 인스턴스를 만듭니다. Shader 객체를 사용하면 매개 변수 또는 입력 이미지 값이 필요한지 여부와 같은 셰이더에 대한 정보를 확인할 수 있습니다. 실제로 셰이더를 사용하려면 Shader 객체를 다른 객체에 전달합니다. 예를 들어 셰이더를 필터로 사용하려면 ShaderFilter 객체의 shader 속성에 Shader 객체를 지정합니다. 또는 셰이더를 드로잉 채우기로 사용하려면 Shader 객체를 Graphics.beginShaderFill() 메서드에 대한 인수로 전달합니다.

ActionScript 코드는 다음 두 가지 방법으로 Adobe Pixel Bender Toolkit에서 만든 셰이더(.pbj 파일)에 액세스할 수 있습니다.

  • 런타임에 로드: URLLoader 객체를 사용하여 셰이더 파일을 외부 에셋으로 로드할 수 있습니다. 이 기술은 텍스트 파일과 같은 외부 에셋을 로드하는 것과 같습니다. 다음 예제에서는 런타임에 셰이더 바이트코드 파일을 로드하여 Shader 인스턴스에 연결하는 방법을 보여 줍니다.

    var loader:URLLoader = new URLLoader(); 
    loader.dataFormat = URLLoaderDataFormat.BINARY; 
    loader.addEventListener(Event.COMPLETE, onLoadComplete); 
    loader.load(new URLRequest("myShader.pbj")); 
     
    var shader:Shader; 
     
    function onLoadComplete(event:Event):void { 
        // Create a new shader and set the loaded data as its bytecode 
        shader = new Shader(); 
        shader.byteCode = loader.data; 
         
        // You can also pass the bytecode to the Shader() constructor like this: 
        // shader = new Shader(loader.data); 
         
         // do something with the shader 
    }
  • SWF 파일에 포함: [Embed] 메타데이터 태그를 사용하여 컴파일 타임에 셰이더 파일을 SWF 파일에 포함할 수 있습니다. 이 [Embed] 메타데이터 태그는 Flex SDK를 사용하여 SWF 파일을 컴파일하는 경우에만 사용할 수 있습니다. 아래 예제와 같이 [Embed] 태그의 source 매개 변수는 셰이더 파일을 가리키고, 해당 mimeType 매개 변수는 "application/octet-stream" 입니다.

    [Embed(source="myShader.pbj", mimeType="application/octet-stream")] 
    var MyShaderClass:Class; 
     
    // ... 
     
    // create a shader and set the embedded shader as its bytecode 
    var shader:Shader = new Shader(); 
    shader.byteCode = new MyShaderClass(); 
     
    // You can also pass the bytecode to the Shader() constructor like this: 
    // var shader:Shader = new Shader(new MyShaderClass()); 
     
    // do something with the shader

두 경우 모두, 원시 셰이더 바이트코드( URLLoader.data 속성 또는 [Embed] 데이터 클래스의 인스턴스)를 Shader 인스턴스에 연결합니다. 앞의 예제에서 볼 수 있듯이 다음 두 가지 방법으로 Shader 인스턴스에 바이트코드를 할당할 수 있습니다. 즉, 셰이더 바이트코드를 Shader() 생성자에 인수로 전달할 수도 있고, Shader 인스턴스의 byteCode 속성으로 설정할 수도 있습니다.

Pixel Bender 셰이더가 만들어져 Shader 객체에 연결된 경우 셰이더를 사용하여 다양한 방법으로 효과를 만들 수 있습니다. 셰이더를 필터, 블렌드 모드, 비트맵 채우기로 사용하거나 비트맵 또는 다른 데이터의 독립 실행형 처리에 사용할 수 있습니다. Shader 객체의 data 속성을 사용하여 셰이더의 메타데이터에 액세스하고, 입력 이미지를 지정하고, 매개 변수 값을 설정할 수도 있습니다.