チェンジセット 429

差分発生行の前後
無視リスト:
コミット日時:
2008/05/19 20:48:09 (2 年前)
コミッタ:
muta
ログメッセージ:

--

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/Astro/ShaderFilter/CalcShader/src/CalcShader.as

    r427 r429  
    11package  
    22{ 
    3        import flash.display.Bitmap; 
    4        import flash.display.BitmapData; 
    5        import flash.display.Shader; 
    6        import flash.display.Sprite; 
    7        import flash.filters.ShaderFilter; 
    8        import flash.geom.Point; 
    9        import flash.utils.ByteArray; 
    10        import net.unbland.debug.TimeMeasure; 
    11        import net.unbland.debug.Tracer; 
    12          
    13        [SWF(width=1024, height=1024, backgroundColor=0xFFFFFF, frameRate=30)] 
     3    import flash.display.Bitmap; 
     4    import flash.display.BitmapData; 
     5    import flash.display.Shader; 
     6    import flash.display.Sprite; 
     7    import flash.filters.ShaderFilter; 
     8    import flash.geom.Point; 
     9    import flash.utils.ByteArray; 
     10    import net.unbland.debug.TimeMeasure; 
     11    import net.unbland.debug.Tracer; 
     12     
     13    [SWF(width=1024, height=1024, backgroundColor=0xFFFFFF, frameRate=30)] 
    1414    public class CalcShader extends Sprite 
    1515    { 
    16                private static const SIZE:uint = 1024; 
    17                  
    18                [Embed(source="shaders/colorize.pbj", mimeType="application/octet-stream")] 
    19                private var shaderData:Class; 
    20                  
    21                public function CalcShader():void 
     16        private static const SIZE:uint = 1024; 
     17         
     18        [Embed(source="shaders/colorize.pbj", mimeType="application/octet-stream")] 
     19        private var shaderData:Class; 
     20         
     21        public function CalcShader():void 
    2222        { 
    23                        // 下準備 ------------------------------ 
    24                          
    25                        var array:Array = []; 
    26                        var vector:Vector.<uint> = new Vector.<uint>(); 
    27                          
    28                        for (var h:int = 0; h < SIZE; h++) 
    29                        
    30                                for (var w:int = 0; w < SIZE; w++) 
    31                                
    32                                        array.push(0xFF000000); 
    33                                        vector.push(0xFF000000); 
    34                                
    35                        
    36                          
    37                        var src:BitmapData = new BitmapData(SIZE, SIZE); 
    38                        var dst:BitmapData = new BitmapData(SIZE, SIZE); 
    39                          
    40                        var point:Point = new Point(); 
    41                        var shader:Shader = new Shader(ByteArray(new shaderData())); 
    42                        var shaderFilter:ShaderFilter = new ShaderFilter(shader); 
    43                          
    44                        var i:int; 
    45                        var l:int; 
    46                          
    47                        // 計測開始 ------------------------------ 
    48                          
    49                        // Shader + Vector の計測 
    50                        Tracer.debug("Shader + Vector の計測を開始します。"); 
    51                        TimeMeasure.begin(); 
    52                          
    53                        src.setVector(src.rect, vector); 
    54                        shader.data.color.value = [1, 0, 0, 0]; 
    55                        dst.applyFilter(src, src.rect, point, shaderFilter); 
    56                          
    57                        var ds:Vector.<uint> = dst.getVector(dst.rect); 
    58                          
    59                        TimeMeasure.endAndTrace(); 
    60                          
    61                        // Vector の計測 
    62                        Tracer.debug("Vector の計測を開始します。"); 
    63                        TimeMeasure.begin(); 
    64                          
    65                        for (i = 0, l = vector.length; i < l; i++) 
    66                        
    67                                vector[i] += 0x00FF0000; 
    68                        
    69                          
    70                        var dv:Vector.<uint> = Vector.<uint>(vector.concat()); 
    71                          
    72                        TimeMeasure.endAndTrace(); 
    73                          
    74                        // Array の計測 
    75                        Tracer.debug("Array の計測を開始します。"); 
    76                        TimeMeasure.begin(); 
    77                          
    78                        for (i = 0, l = array.length; i < l; i++) 
    79                        
    80                                array[i] += 0x00FF0000; 
    81                        
    82                          
    83                        var da:Array = array.concat(); 
    84                          
    85                        TimeMeasure.endAndTrace(); 
    86                          
    87                        // 最後にテスト結果の確認 
    88                        l = SIZE * SIZE - 1; 
    89                          
    90                        Tracer.debug( 
    91                                "最後にテストが正しいかの確認\n" + 
    92                                "0xFF000000 + 0x00FF0000 なので、結果は 0xFFFF0000 になる\n\n" + 
    93                                "Shader + Vector => 0x" + ds[l].toString(16).toUpperCase() + "\n" + 
    94                                "Vector => 0x" + dv[l].toString(16).toUpperCase() + "\n" + 
    95                                "Array => 0x" + da[l].toString(16).toUpperCase() 
    96                        ); 
    97                          
    98                        addChild(new Bitmap(dst)); 
     23            // 下準備 ------------------------------ 
     24             
     25            var array:Array = []; 
     26            var vector:Vector.<uint> = new Vector.<uint>(); 
     27             
     28            for (var h:int = 0; h < SIZE; h++) 
     29           
     30                for (var w:int = 0; w < SIZE; w++) 
     31               
     32                    array.push(0xFF000000); 
     33                    vector.push(0xFF000000); 
     34               
     35           
     36             
     37            var src:BitmapData = new BitmapData(SIZE, SIZE); 
     38            var dst:BitmapData = new BitmapData(SIZE, SIZE); 
     39             
     40            var point:Point = new Point(); 
     41            var shader:Shader = new Shader(ByteArray(new shaderData())); 
     42            var shaderFilter:ShaderFilter = new ShaderFilter(shader); 
     43             
     44            var i:int; 
     45            var l:int; 
     46             
     47            // 計測開始 ------------------------------ 
     48             
     49            // Shader + Vector の計測 
     50            Tracer.debug("Shader + Vector の計測を開始します。"); 
     51            TimeMeasure.begin(); 
     52             
     53            src.setVector(src.rect, vector); 
     54            shader.data.color.value = [1, 0, 0, 0]; 
     55            dst.applyFilter(src, src.rect, point, shaderFilter); 
     56             
     57            var ds:Vector.<uint> = dst.getVector(dst.rect); 
     58             
     59            TimeMeasure.endAndTrace(); 
     60             
     61            // Vector の計測 
     62            Tracer.debug("Vector の計測を開始します。"); 
     63            TimeMeasure.begin(); 
     64             
     65            for (i = 0, l = vector.length; i < l; i++) 
     66           
     67                vector[i] += 0x00FF0000; 
     68           
     69             
     70            var dv:Vector.<uint> = Vector.<uint>(vector.concat()); 
     71             
     72            TimeMeasure.endAndTrace(); 
     73             
     74            // Array の計測 
     75            Tracer.debug("Array の計測を開始します。"); 
     76            TimeMeasure.begin(); 
     77             
     78            for (i = 0, l = array.length; i < l; i++) 
     79           
     80                array[i] += 0x00FF0000; 
     81           
     82             
     83            var da:Array = array.concat(); 
     84             
     85            TimeMeasure.endAndTrace(); 
     86             
     87            // 最後にテスト結果の確認 
     88            l = SIZE * SIZE - 1; 
     89             
     90            Tracer.debug( 
     91                "最後にテストが正しいかの確認\n" + 
     92                "0xFF000000 + 0x00FF0000 なので、結果は 0xFFFF0000 になる\n\n" + 
     93                "Shader + Vector => 0x" + ds[l].toString(16).toUpperCase() + "\n" + 
     94                "Vector => 0x" + dv[l].toString(16).toUpperCase() + "\n" + 
     95                "Array => 0x" + da[l].toString(16).toUpperCase() 
     96            ); 
     97             
     98            addChild(new Bitmap(dst)); 
    9999        } 
    100100    }