Пакетflash.display
Классpublic final dynamic class ShaderData
НаследованиеShaderData Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

В объекте ShaderData содержатся свойства, отвечающие за все параметры и входы ядра затенения, а также свойства, содержащие все метаданные, указанные для затенения.

Эти свойства применяются к объекту ShaderData при его создании. Имена свойств совпадают с именами, указанными в исходном коде затенения. Типы данных каждого свойства различаются в зависимости от представляемого свойством аспекта затенения. Например, свойства, представляющие параметры затенения, являются экземплярами ShaderParameter, свойства, представляющие изображения ввода, являются экземплярами ShaderInput, а свойства, представляющие метаданные затенения, относятся к классу ActionScript в зависимости от их типа данных (экземпляр String для метаданных в формате текста и uint для метаданных типа uint).

Рассмотрим пример затенения, который характеризуется одним изображением ввода (src), двумя параметрами (size и radius) и тремя значениями метаданных (nameSpace, version и description):

  <languageVersion : 1.0;>
  
  kernel DoNothing
  <
      nameSpace : "Adobe::Example";
      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());
      }
  }
  

Если при создании экземпляра Shader использовался байт-код данного затенения, то в свойстве data экземпляра ShaderData будут содержаться следующие свойства:

СвойствоТип данныхЗначение
nameStringDoNothing
nameSpaceStringAdobe::Example
versionString"1"
descriptionString"Затенение, которое не оказывает никакого эффекта"
srcShaderInput [Экземпляр ShaderInput]
sizeShaderParameter [Экземпляр ShaderParameter, содержащий свойства метаданных параметра]
radiusShaderParameter [Экземпляр ShaderParameter, содержащий свойства метаданных параметра]

Обратите внимание на то, что каждое изображение ввода или параметр, определенные в исходном коде затенения, но не используемые в функции evaluatePixel() затенения, удаляются при компиляции затенения в байт-код. В этом случае соответствующие экземпляры ShaderInput или ShaderParameter к экземпляру ShaderData в качестве свойства не прибавляются.

Обычно, в коде разработчика создание экземпляра ShaderData не заложено. Экземпляр ShaderData, содержащий данные, параметры и вводы для затенения, доступен в качестве свойства data экземпляра Shader.

Посмотреть примеры

См. также

flash.display.ShaderInput
flash.display.ShaderParameter


Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
Общедоступные методы
 МетодОпределено
  
Создает экземпляр ShaderData.
ShaderData
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
 Inherited
Возвращает строковое представление заданного объекта.
Object
 Inherited
Возвращает элементарное значение заданного объекта.
Object
Сведения о конструкторе
ShaderData()Конструктор
public function ShaderData(byteCode:ByteArray)

Язык версии : ActionScript 3.0
Версии среды выполнения: Flash Player 10

Создает экземпляр ShaderData. Обычно, в коде разработчика прямой вызов конструктора ShaderData не производится. Доступ к экземпляру ShaderData, содержащему данные, параметры и вводы для затенения, осуществляется через его свойство data.

Параметры
byteCode:ByteArray — Байт-код затенения.
Примеры Как пользоваться примерами
ShaderDataExample.1.as

В следующем примере происходит загрузка затенения и перечисление экземпляра ShaderData в его свойстве data для отображения свойств ввода, параметров и метаданных данного затенения.

Примечание. В данном примере подразумевается наличие файла байт-кода затенения под названием "donothing.hbc" в каталоге вывода приложения.


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

kernel DoNothing
<
    nameSpace: "Adobe::Example";
    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.hbc"));
        }
        
        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]);
                }
            }
        }
    }
}