PixelBenderで簡単なマトリックスのサンプルを作ってみた。
PixelBenderで簡単なマトリックスのテスト(移動・回転・拡大)のサンプルを作ってみました。
float3x3ってなんだろうって調べてたら、これって行列だね。
FlexでのMatrixの説明
っにしてもPixelBenderの先は長そう・・・。
ソースはこちら↓
<languageVersion : 1.0;> kernel MatrixSample < namespace : "komugi"; vendor : "moeten.info"; version : 1; description : "matrix sample"; > { parameter float theta < minValue : 0.0; maxValue : 6.28; defaultValue : 0.0; >; parameter float2 pmove< minValue : float2( 0.0 ); maxValue : float2( 100.0 ); defaultValue : float2( 0.0 ); >; parameter float2 pscale< minValue : float2( 0.001 ); maxValue : float2( 2.0 ); defaultValue : float2( 1.0 ); >; //input output image input image4 src; output pixel4 dst; //main function void evaluatePixel() { float3x3 translate = float3x3( 1,0,pmove.x, 0,1,pmove.y, 0,0,1 ); float3x3 scale = float3x3( 1.0/pscale.x,0,0, 0,1.0/pscale.y,0, 0,0,1 ); float3x3 rotate = float3x3( cos(theta) , sin(theta),0.0, -sin(theta) , cos(theta),0.0, 0.0 , 0.0,1.0 ); // inverce rotation rotate[0][1] = - rotate[0][1]; rotate[1][0] = - rotate[1][0]; //set new point cal matrix float2 nowP = outCoord(); nowP =( float3( nowP.x , nowP.y , 1.0 ) * translate * rotate * scale ).xy; //out put image from new point dst = sampleNearest( src , nowP ); } }