Paket | flash.display |
Klass | public class Shader |
Arv | Shader Object |
Underklasser | ColorBurnShader, ColorDodgeShader, ColorShader, ExclusionShader, HueShader, LuminosityMaskShader, LuminosityShader, SaturationShader, SoftLightShader |
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10, AIR 1.5 |
shader
-egenskapen i ett ShaderFilter-objekt.
En skuggning definierar en funktion som körs på alla pixlar i en bild, en pixel åt gången. Resultatet för varje anrop till funktionen är den utdatafärg som finns vid pixelkoordinaten i bilden. En skuggning kan ange en eller flera inmatningsbilder. Det är bilder vilkas innehåll kan användas när funktionens utdata bestäms. En skuggning kan också ange en eller flera parametrar som är inmatningsvärden som kan användas vid beräkning av funktionens utdata. I en enda skuggningskörning är inmatnings- och parametervärdena konstanta. Det enda som varierar är koordinaten för den pixel vars färg är funktionens utdata. Skuggningsfunktionsanrop för flera utdatapixelkoordinater körs parallellt för att förbättra körningens prestanda.
Skuggningsbytekoden kan läsas in vid körningen med hjälp av en URLLoader-instans. Följande exempel visar hur en skuggningsbytekodfil läses in vid körning och länkas till en Shader-instans.
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 }
Du kan också bädda in skuggningen i SWF-filen vid kompileringen med hjälp av taggen för [Embed]
-metadata. Taggen för [Embed]
-metadata är bara tillgänglig om du använder Flex SDK för att kompilera SWF-filen. [Embed]
-taggens source
-parameter pekar på skuggningsfilen och dess mimeType
-parameter är "application/octet-stream"
. Visas i det här exemplet:
[Embed(source="myShader.pbj", mimeType="application/octet-stream)] var MyShaderClass:Class; // ... // create a new shader and set the embedded shader as its bytecode var shaderShader = 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
I båda fallen länkar du rådataskuggningen (URLLoader.data
-egenskapen eller en instans av [Embed]
-dataklassen) till Shader-instansen. Som föregående exempel visar kan du göra det här på två sätt. Du kan skicka skuggningsbytekoden som ett argument till Shader()
-konstruktorn. Du kan också ange den som byteCode
-egenskap för Shader-instansen.
När Shader-instansen har skapats kan den användas på något av följande sätt:
- En skuggningsfyllning: Skuggningens utdata används som fyllning för innehåll som ritas med ritgränssnittet. Skicka Shader-instansen som ett argument till metoden
Graphics.beginShaderFill()
. - Ett skuggningsfilter: Skuggningens utdata används som ett grafikfilter som används i ett visningsobjekt. Tilldela Shader-instansen till
shader
-egenskapen i en ShaderFilter-instans. - Ett blandningsläge: Skuggningens utdata återges som blandningen mellan två överlappande visningsobjekt. Tilldela Shader-instansen till
blendShader
-egenskapen i det övre visningsobjektet. - Bearbetning av skuggning i bakgrunden: Skuggningen körs i bakgrunden vilket minskar risken för att visningen blir fryst. En händelse skickas när bearbetningen är slutförd. Tilldela Shader-instansen till
shader
-egenskapen i en ShaderJob-instans.
Skuggningsfyllningar, filter och blandningar stöds inte vid GPU-återgivning.
Stöd för mobilwebbläsare: Den här funktionen stöds inte i mobilwebbläsare.
Stöd för AIR-profiler: Den här funktionen stöds på alla operativsystem för datorer, men inte på alla mobilenheter. Den stöds inte på enheter med AIR for TV. På sidan om stöd för AIR-profiler hittar du mer information om API-stöd för flera profiler.
Relaterade API-element
flash.display.Graphics.beginShaderFill()
flash.display.ShaderJob
flash.filters.ShaderFilter
flash.net.URLLoader
Egenskap | Definieras med | ||
---|---|---|---|
byteCode : ByteArray [lässkyddad]
Bytekode för rådataskuggningen för den här Shader-instansen. | Shader | ||
constructor : Object
En referens till klassobjektet eller konstruktorfunktionen för en given objektinstans. | Object | ||
data : ShaderData
Ger tillgång till parametrar, inmatningsbilder och metadata för Shader-instansen. | Shader | ||
precisionHint : String
Precisionen för de matematiska operationer som utförs av skuggningen. | Shader |
Metod | Definieras med | ||
---|---|---|---|
Skapar en ny Shader-instans. | Shader | ||
Anger om det finns en egenskap angiven för ett objekt. | Object | ||
Anger om en instans av klassen Object finns i prototypkedjan för objektet som anges som parameter. | Object | ||
Anger om den angivna egenskapen finns och är uppräkningsbar. | Object | ||
Anger tillgänglighet för en dynamisk egenskap för slingåtgärder. | Object | ||
Returnerar det här objektets strängrepresentation, formaterad i enlighet med språkspecifika konventioner. | Object | ||
Returnerar det angivna objektets strängbeteckning. | Object | ||
Returnerar det angivna objektets primitiva värde. | Object |
byteCode | egenskap |
data | egenskap |
data:ShaderData
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10, AIR 1.5 |
Ger tillgång till parametrar, inmatningsbilder och metadata för Shader-instansen. De ShaderParameter-objekt som representerar parametrar för skuggningen, de ShaderInput-objekt som representerar inmatningsbilder för skuggningen och övriga värden som representerar skuggningens metadata läggs till dynamiskt som egenskaper för data
-egenskapsobjektet när Shader-instansen skapas. De här egenskaperna kan användas för att granska skuggningen och ange parameter- och inmatningsvärden.
Mer information om hur du får åtkomst till och kan ändra de dynamiska egenskaperna för data
-objektet finns i beskrivningen av ShaderData-klassen.
Implementering
public function get data():ShaderData
public function set data(value:ShaderData):void
Relaterade API-element
precisionHint | egenskap |
precisionHint:String
Språkversion: | ActionScript 3.0 |
Körningsmiljöversioner: | Flash Player 10, AIR 1.5 |
Precisionen för de matematiska operationer som utförs av skuggningen.
En uppsättning möjliga värden för precisionHint
-egenskapen definieras av konstanterna i ShaderPrecision-klassen.
Standardvärdet är ShaderPrecision.FULL
. Att ställa in precisionen till ShaderPrecision.FAST
kan öka hastigheten på de matematiska beräkningarna till priset av minskad precision.
Precisionsläget full (ShaderPrecision.FULL
) utför alla matematiska beräkningar till den fullständiga bredden på IEEE 32-bitars flyttalsstandard och ger konsekvent beteende på alla plattformar. I det här läget kan vissa matematiska operationer, t.ex. trigonometriska funktioner och exponentialfunktioner, ta lång tid att utföra.
Precisionsläget fast (ShaderPrecision.FAST
) är utvecklat för snabbaste prestanda men fungerar inte konsekvent på olika plattformar och individuella processorkonfigurationer. I många fall är den här precisionsnivån tillräcklig för att skapa en bildeffekt utan synliga defekter.
Valet av precisionsläge påverkar följande skuggningsåtgärder. Dessa åtgärder är snabbare på en Intel-processor med SSE-instruktion:
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
atan(x, y)
exp(x)
exp2(x)
log(x)
log2(x)
pow(x, y)
reciprocal(x)
sqrt(x)
Implementering
public function get precisionHint():String
public function set precisionHint(value:String):void
Relaterade API-element
Shader | () | Konstruktor |
Observera att det här exemplet förutsätter att det finns en bytekodfil för skuggningen med namnet ”donothing.pbj” i samma katalog som programmets utdatakatalog. Pixel Bender-källkoden för DoNothing-skuggningen finns tillgänglig under Exempel för ShaderData-klassen.
package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class LoadedShaderExample extends Sprite { private var loader:URLLoader; public function LoadedShaderExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("donothing.pbj")); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(); shader.byteCode = loader.data; // do something with the Shader instance } } }
Observera att det här exemplet förutsätter att det finns en bytekodfil för skuggningen med namnet ”donothing.bpj” i samma katalog som programmets källkod finns, och att Flex SDK används för att kompilera SWF-filen. Pixel Bender-källkoden för DoNothing-skuggningen finns tillgänglig under Exempel för ShaderData-klassen.
package { import flash.display.Shader; import flash.display.Sprite; public class EmbeddedShaderExample extends Sprite { [Embed(source="donothing.pbj", mimeType="application/octet-stream")] private static var DoNothingShader:Class; public function EmbeddedShaderExample() { var shader:Shader = new Shader(); shader.byteCode = new DoNothingShader(); // do something with the Shader instance } } }
Tue Jun 12 2018, 01:40 PM Z