Gölgelendirici yükleme veya gömme

Flash Player 10 ve üstü, Adobe AIR 1.5 ve üstü

ActionScript'te bir Pixel Bender gölgelendiricinin kullanılmasında ilk adım, ActionScript kodunuzda gölgelendiriciye erişilmesidir. Adobe Pixel Bender Toolkit kullanılarak oluşturulmuş ve Pixel Bender dilinde yazılmış olduğundan, gölgelendiriciye doğrudan ActionScript'ten erişilemez. Bunun yerine, ActionScript'e Pixel Bender gölgelendiricisini temsil eden bir Shader sınıfı örneği oluşturursunuz. Shader nesnesi, gölgelendiricinin parametre veya girdi görüntüsü değeri bekleyip beklemediği gibi, gölgelendiriciyle ilgili bilgileri bulmanıza olanak sağlar. Gölgelendiriciyi gerçekten kullanmak için Shader nesnesini diğer nesnelere iletirsiniz. Örneğin, gölgelendiriciyi filtre olarak kullanmak için Shader nesnesini bir ShaderFilter nesnesinin shader özelliğine atayın. Alternatif olarak, gölgelendiriciyi çizim dolgusu olarak kullanmak için Shader nesnesini Graphics.beginShaderFill() yöntemine bir argüman olarak iletirsiniz.

ActionScript kodunuz, Adobe Pixel Bender Toolkit (.pbj dosyası) tarafından oluşturulan bir gölgelendiriciye iki şekilde erişebilir:

  • Çalışma zamanında yüklenen: URLLoader nesnesi kullanılarak bir gölgelendirici dosyası harici bir varlık olarak yüklenebilir. Bu teknik, metin dosyası gibi harici bir varlığın yüklenmesine benzer. Aşağıdaki örnek, çalışma zamanında gölgelendirici bayt kodunun yüklenmesini ve bir Shader örneğine bağlanmasını gösterir:

    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 dosyasında gömülü: [Embed] meta veri etiketi kullanılarak derleme zamanında gölgelendirici dosyası SWF dosyasına gömülebilir. [Embed] meta veri etiketi yalnızca SWF dosyasını derlemek için Flex SDK kullanırsanız kullanılabilir. Bu örnekte olduğu gibi, [Embed] etiketinin source parametresi gölgelendirici dosyasına işaret eder ve bunun mimeType parametresi "application/octet-stream" şeklindedir:

    [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

Her iki durumda da ham gölgelendirici bayt kodunu (URLLoader.data özelliği veya [Embed] veri sınıfının bir örneği) Shader örneğine bağlarsınız. Önceki örneklerde gösterildiği gibi, Shader örneğine bayt kodunu iki şekilde atayabilirsiniz. Gölgelendirici bayt kodunu argüman olarak Shader() yapıcısına iletebilirsiniz. Alternatif olarak bu kodu Shader örneğinin byteCode özelliği olarak da ayarlayabilirsiniz.

Pixel Bender gölgelendiricisi oluşturulup bir Shader nesnesine bağlandıktan sonra, efektler oluşturmak için birçok şekilde gölgelendiriciyi kullanabilirsiniz. Bunu bir filtre, karışım modu, bitmap dolgusu olarak veya bitmap ya da diğer verilerin bağımsız işlemesi için kullanabilirsiniz. Gölgelendiricinin meta verilerine erişmek, girdi görüntülerini belirtmek ve parametre değerlerini ayarlamak için Shader nesnesinin data özelliğini de kullanabilirsiniz.