ActionScript® 3.0 Referenzhandbuch für die Adobe® Flash®-Plattform
Home  |  Liste der Pakete und Klassen ausblenden |  Pakete  |  Klassen  |  Neue Funktionen  |  Stichwortverzeichnis  |  Anhänge  |  Warum auf Englisch?
Filter: Daten werden vom Server abgerufen...
Daten werden vom Server abgerufen...
flash.display 

ShaderData  - AS3

Paketflash.display
Klassepublic final dynamic class ShaderData
VererbungShaderData Inheritance Object

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

Ein ShaderData-Objekt enthält Eigenschaften, die beliebige Parameter und Eingaben für ein Shaderkernel darstellen, sowie Eigenschaften, die für den Shader festgelegte Metadaten enthalten.

Diese Eigenschaften werden dem ShaderData-Objekt bei der Erstellung hinzugefügt. Die Namen der Eigenschaften stimmen mit den im Shaderquellcode festgelegten Namen überein. Die Datentypen der verschiedenen Eigenschaften sind unterschiedlich, je nachdem, welchen Aspekt des Shaders die Eigenschaft darstellt. Die Eigenschaften, die Shaderparameter darstellen, sind ShaderParameter-Instanzen; die Eigenschaften, die Eingabebilder darstellen sind ShaderInput-Instanzen; die Eigenschaften, die Shadermetadaten darstellen, sind Instanzen der ActionScript-Klasse, die dem jeweiligen Datentyp entsprechen (Beispiel: eine String-Instanz für Metadaten im Textformat, eine uint-Instanz für uint-Metadaten).

Sehen Sie sich beispielsweise diesen Shader an, der durch ein Eingabebild (src), zwei Parameter (size und radius) und drei Metadatenwerte (nameSpace, version und description) definiert ist:

     <languageVersion : 1.0;>
     
     kernel DoNothing
     <
         namespace: "Adobe::Example";
         vendor: "Adobe examples";
         version: 1;
         description: "A shader that does nothing, but does it well.";
     >
     {
         input image4 src;
     
         output pixel4 dst;
         
         parameter float2 size
         <
             description: "The size of the image to which the kernel is applied";
             minValue: float2(0.0, 0.0);
             maxValue: float2(100.0, 100.0);
             defaultValue: float2(50.0, 50.0);
         >;
         
         parameter float radius
         <
             description: "The radius of the effect";
             minValue: 0.0;
             maxValue: 50.0;
             defaultValue: 25.0;
         >;
     
         void evaluatePixel()
         {
             float2 one = (radius / radius) ∗ (size / size);
             dst = sampleNearest(src, outCoord());
         }
     }
     

Wenn Sie eine Shader-Instanz durch Laden des Bytecodes für diesen Shader erstellen, enthält die ShaderData-Instanz in ihren data-Eigenschaften diese Eigenschaften:

EigenschaftDatentypWert
nameString„DoNothing“
nameSpaceString„Adobe::Example“
versionString„1“
descriptionString„A shader that does nothing, but does it well.“
srcShaderInput [Eine ShaderInput-Instanz]
sizeShaderParameter [Eine ShaderParameter-Instanz mit Eigenschaften für die Parametermetadaten]
radiusShaderParameter [Eine ShaderParameter-Instanz mit Eigenschaften für die Parametermetadaten]

Beachten Sie: Eingabebilder oder Parameter, die zwar im Shaderquellcode definiert sind, aber in der evaluatePixel()-Funktion des Shaders nicht verwendet werden, werden entfernt, wenn der Shader in Form von Bytecode kompiliert wird. In diesem Fall wird keine entsprechende ShaderInput- oder ShaderParameter-Instanz als Eigenschaft der ShaderData-Instanz hinzugefügt.

Im Allgemeinen wird eine ShaderData-Instanz nicht durch Entwicklercode erstellt. Eine ShaderData-Instanz, die Daten, Parameter und Eingaben für einen Shader enthält, ist als data-Eigenschaft der Shader-Instanz verfügbar.

Beispiele anzeigen

Verwandte API-Elemente



Öffentliche Eigenschaften
 EigenschaftDefiniert von
 Inheritedconstructor : Object
Ein Verweis auf das Klassenobjekt oder die Konstruktorfunktion für eine angegebene Objektinstanz.
Object
Öffentliche Methoden
 MethodeDefiniert von
  
Erstellt eine ShaderData-Instanz.
ShaderData
 Inherited
Gibt an, ob für ein Objekt eine bestimmte Eigenschaft definiert wurde.
Object
 Inherited
Gibt an, ob eine Instanz der Object-Klasse in der Prototypkette des Objekts vorhanden ist, das als Parameter angegeben wurde.
Object
 Inherited
Gibt an, ob die angegebene Eigenschaft vorhanden ist und durchlaufen werden kann.
Object
 Inherited
Legt die Verfügbarkeit einer dynamischen Eigenschaft für Schleifenoperationen fest.
Object
 Inherited
Gibt die Stringdarstellung dieses Objekts zurück, formatiert entsprechend den Konventionen des Gebietsschemas.
Object
 Inherited
Gibt das angegebene Objekt als String zurück.
Object
 Inherited
Gibt den Grundwert des angegebenen Objekts zurück.
Object
Konstruktordetails

ShaderData

()Konstruktor
public function ShaderData(byteCode:ByteArray)

Sprachversion: ActionScript 3.0
Laufzeitversionen: Flash Player 10, AIR 1.5

Erstellt eine ShaderData-Instanz. Im Allgemeinen wird der ShaderData-Konstruktor nicht direkt durch Entwicklercode aufgerufen. Der Zugriff auf eine ShaderData-Instanz, die Daten, Parameter und Eingaben für eine Shader-Instanz enthält, erfolgt über deren data-Eigenschaft.

Parameter
byteCode:ByteArray — Der Bytecode des Shaders.

Verwandte API-Elemente

ShaderDataExample.1.as

Das folgende Beispiel zeigt, wie Sie einen Shader laden und die ShaderData-Instanz in der data-Eigenschaft auflisten, um die Shadereigenschaften für Eingabe, Parameter und Metadaten anzuzeigen.

Beachten Sie, dass im Beispiel davon ausgegangen wird, dass im selben Ordner wie dem Ausgabeordner der Anwendung eine Shaderbytecodedatei mit dem Namen „donothing.pbj“ vorhanden ist.

//
// Source code for the shader:
//
<languageVersion : 1.0;>

kernel DoNothing
<
    namespace: "Adobe::Example";
    vendor: "Adobe examples";
    version: 1;
    description: "A shader that does nothing, but does it well.";
>
{
    input image4 src;
    
    output pixel4 dst;
    
    parameter float2 size
    <
        description: "The size of the image to which the shader is applied";
        minValue: float2(0.0, 0.0);
        maxValue: float2(100.0, 100.0);
        defaultValue: float2(50.0, 50.0);
    >;
    
    parameter float radius
    <
        description: "The radius of the effect";
        minValue: float(0.0);
        maxValue: float(50.0);
        defaultValue: float(25.0);
    >;

    void evaluatePixel()
    {
        float2 one = (radius / radius) * (size / size);
        dst = sampleNearest(src, outCoord());
    }
}

//
// ActionScript source code:
//
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 ShaderDataExample extends Sprite {
        
        private var loader:URLLoader;
        
        public function ShaderDataExample() {
            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;
            
            for (var p:String in shader.data) {
                trace(p, ":", shader.data[p]);
                for (var d:String in shader.data[p]) {
                    trace("\t", d, ":", shader.data[p][d]);
                }
            }
        }
    }
}




[ X ]Warum auf Englisch?
Inhalt des ActionScript 3.0-Referenzhandbuchs wird in englischer Sprache angezeigt

Nicht alle Teile des ActionScript 3.0-Referenzhandbuchs wurden in alle Sprachen übersetzt. Wenn der Text zu einem Sprachelement nicht übersetzt wurde, wird er auf Englisch angezeigt. Zum Beispiel wurden die Informationen zur ga.controls.HelpBox-Klasse nicht in andere Sprachen übersetzt. In der deutschen Version des Referenzhandbuchs erscheint der Abschnitt zur ga.controls.HelpBox-Klasse deshalb auf Englisch.