Grunderna i Pixel Bender-skuggningar

Flash Player 10 och senare, Adobe AIR 1.5 och senare

Adobe Pixel Bender är ett programmeringsspråk som används för att skapa eller manipulera bildinnehåll. Med Pixel Bender kan du skapa en kärna, som även kallas för en skuggning. Skuggningen definierar en enskild funktion som körs på varje pixel i en bild individuellt. Resultatet för varje anrop till funktionen är den utdatafärg som finns vid pixelkoordinaten i bilden. Du kan anpassa åtgärden genom att ange indatabilder och parametervärden. I en enda körning av en skuggning är inmatnings- och parametervärdena konstanta. Det enda som varierar är koordinaten för den pixel vars färg är resultatet av funktionsanropet.

När så är möjligt anropas skuggningsfunktionen för flera utdatapixelkoordinater parallellt. Då förbättras skuggningens prestanda och bearbetningen kan gå snabbare.

I ActionScript kan du enkelt skapa tre typer av effekter med hjälp av en skuggning:

  • ritfyllning

  • blandningsläge

  • filter

En skuggning kan också köras i fristående läge. Om du använder fristående läge kan du komma åt skuggningens resultat direkt i stället för att behöva ange det tänkta användningsområdet i förväg. Resultatet kan nås som bilddata eller som binära data eller tasdata. Data behöver inte vara bilddata. På det här sättet kan du ge skuggningen en uppsättning data som indata. Skuggningen bearbetar data, och du får åtkomst till de resultatdata som returneras av skuggningen.

Pixel Bender stöds från och med Flash Player 10 och Adobe AIR 1.5. Pixel Bender-blandningar, -filter och -fyllningar stöds inte vid GPU-återgivning. På mobilenheter fungerar Pixel Bender-skuggningar vid CPU-återgivning. Prestanda är dock inte lika goda som på stationära datorer. Många skuggningsprogram kanske bara körs med ett fåtal bildrutor per sekund.

Viktiga termer och begrepp

Följande referenslista innehåller viktiga termer som du stöter på när du skapar och använder Pixel Bender-skuggningar:

Kärna
För Pixel Bender är en kärna detsamma som en skuggning. Med Pixel Bender kan koden definiera en kärna, som definierar en enskild funktion som körs individuellt för varje pixel i en bild.

Pixel Bender-bytekod
När en Pixel Bender-kärna kompileras omformas den till Pixel Bender-bytekod. Bytekoden nås och körs under körning.

Pixel Bender-språk
Programmeringsspråket som används för att skapa en Pixel Bender-kärna.

Pixel Bender Toolkit
Programmet som används för att skapa en Pixel Bender-bytekodfil från Pixel Bender-källkoden. Med verktygslådan kan du skriva, testa och kompilera Pixel Bender-källkoden.

Shader
I det här dokumentet är en skuggning en uppsättning funktioner som skrivs med Pixel Bender-språket. En skuggnings kod är en visuell effekt eller något som utför en beräkning. I båda fallen returnerar skuggningen en uppsättning data (vanligtvis pixlarna i en bild). Skuggningen utför samma åtgärd på varje datapunkt. Den enda skillnaden är utdatapixelkoordinaterna. Skuggningen skrivs inte i ActionScript. Den skrivs i Pixel Bender-språket och kompileras till Pixel Bender-bytekod. Den kan bäddas in i en SWF-fil under kompileringen och läsas in som en extern fil under körning. I båda fallen nås den i ActionScript genom att ett Shader-objekt skapas och att det objektet länkas till skuggningens bytekod.

Skuggningsindata
Komplexa indata, vanligtvis bitmappsbilddata, som används för beräkningar av en skuggning. För varje indatavariabel som definieras i en skuggning, används ett enskilt värde (det vill säga en enskild bild eller uppsättning binära data) för skuggningens hela körning.

Skuggningsparameter
Ett enskilt värde (eller en begränsad uppsättning värden) som används i skuggningsberäkningar. Varje parametervärde definieras för en enskild skuggningskörning, och samma värde används under hela körningen.

Arbeta med kodexemplen

Det kan vara bra att testa kodexemplen som anges. Att testa koden innebär att köra den och gå igenom resultatet i SWF-filen som skapas. Alla exempel skapar innehåll med hjälp av drawing API som använder eller ändras av skuggningseffekten.

Den mesta exempelkoden omfattar två delar. Den ena delen är Pixel Bender-källkoden för skuggningen som används i exemplet. Du måste först använda Pixel Bender Toolkit för att kompilera källkoden till en Pixel Bender-bytekodfil. Skapa Pixel Bender-bytekodfilen genom att följa dessa steg:

  1. Öppna Adobe Pixel Bender Toolkit. Välj om nödvändigt ”Turn on Flash Player warnings and errors” (”Aktivera Flash Player-indikatorer”) på menyn Build.

  2. Kopiera Pixel Bender-kodexemplet och klistra in det i kodredigeringsfönstret i Pixel Bender Toolkit.

  3. Välj ”Export kernel filter for Flash Player” (”Exportera kernelfilter för Flash Player”) på menyn File.

  4. Spara Pixel Bender-bytekodfilen i samma katalog som Flash-dokumentet. Filens namn ska motsvara det namn som anges i exempelbeskrivningen.

ActionScript-delen i respektive exempel skrivs som en klassfil. Så här testar du exemplet i Flash Professional:

  1. Skapa ett tomt Flash-dokument och spara det.

  2. Skapa en ny ActionScript-fil och spara den i samma katalog som Flash-dokumentet. Filens namn måste överensstämma med namnet på klassen i koden. Om klassen MyApplication definieras i kodexemplet ska du använda namnet MyApplication.as för att spara ActionScript-filen.

  3. Kopiera koden till ActionScript-filen och spara filen.

  4. Klicka på en tom del av scenen eller arbetsytan i Flash-dokumentet för att aktivera dokumentets egenskapsinspektör.

  5. Ange namnet på ActionScript-klassen som du kopierade från texten i fältet Dokumentklass i egenskapsinspektören.

  6. Kör programmet med Kontroll > Testa filmen.

    Resultaten av exemplet visas i förhandsvisningsfönstret.

Dessa tekniker för att testa exempelkoder beskrivs närmare i Använda ActionScript-exempel.