用于 Adobe® Flash® Platform 的 ActionScript® 3.0 参考
主页  |  隐藏包列表和类列表 |   |   |  新增内容  |  索引  |  附录  |  为什么显示为英语?
过滤条件: 正在从服务器检索数据...
正在从服务器检索数据...
flash.display 

ShaderData  - AS3

flash.display
public final dynamic class ShaderData
继承ShaderData Inheritance Object

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

ShaderData 对象包含以下属性:表示着色器内核的任何参数和输入的属性,以及包含为着色器指定的任何元数据的属性。

创建 ShaderData 对象时会将这些属性添加到该对象中。这些属性的名称与着色器源代码中指定的名称相匹配。每个属性的数据类型因属性所表示的着色器方面而异。表示着色器参数的属性是 ShaderParameter 实例,表示输入图像的属性是 ShaderInput 实例,而表示着色器元数据的属性是与其数据类型相对应的 ActionScript 类的实例(例如,文本元数据的 String 实例和 uint 元数据的 uint)。

例如,假设有以下着色器,其中定义有一个输入图像 (src)、两个参数(sizeradius)以及三个元数据值(nameSpaceversiondescription):

     <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());
         }
     }
     

如果通过为此着色器加载字节代码来创建 Shader 实例,则其 data 属性中的 ShaderData 实例包含以下属性:

属性数据类型
name字符串"DoNothing"
nameSpace字符串"Adobe::Example"
version字符串"1"
description字符串"A shader that does nothing, but does it well."
srcShaderInput [一个 ShaderInput 实例]
sizeShaderParameter [一个 ShaderParameter 实例,包含参数元数据的属性]
radiusShaderParameter [一个 ShaderParameter 实例,包含参数元数据的属性]

请注意,将着色器编译为字节代码时,会删除着色器源代码中已定义但未在着色器的 evaluatePixel() 函数中使用的任何输入图像或参数。这种情况下,不会添加对应的 ShaderInput 或 ShaderParameter 实例作为 ShaderData 实例的属性。

通常,开发人员代码不创建 ShaderData 实例。包含着色器数据、参数和输入的 ShaderData 实例可用作 Shader 实例的 data 属性。

查看示例

相关 API 元素



公共属性
 属性由以下参数定义
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
公共方法
 方法由以下参数定义
  
创建 ShaderData 实例。
ShaderData
 Inherited
表示对象是否已经定义了指定的属性。
Object
 Inherited
表示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
表示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
构造函数详细信息

ShaderData

()构造函数
public function ShaderData(byteCode:ByteArray)

语言版本: ActionScript 3.0
运行时版本: Flash Player 10, AIR 1.5

创建 ShaderData 实例。通常,开发人员代码不直接调用 ShaderData 构造函数。使用 Shader 实例的 data 属性来访问包含该实例数据、参数和输入的 ShaderData 实例。

参数
byteCode:ByteArray — 着色器的字节代码。

相关 API 元素

ShaderDataExample.1.as

下面的示例加载着色器并枚举着色器的 data 属性中的 ShaderData 实例,以显示着色器的输入、参数和元数据属性。

请注意,此示例假设应用程序输出目录所在的同一目录中有一个名为“donothing.pbj”的着色器字节码文件。

//
// 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 ]为什么显示为英语?
《ActionScript 3.0 参考》中的内容以英语显示

《ActionScript 3.0 参考》中的部分内容未翻译成所有语言。当某个语言元素未翻译时,将显示为英语。例如,ga.controls.HelpBox 类未翻译成任何语言。因此在简体中文版的参考中,ga.controls.HelpBox 类显示为英语。