|
|
Ericさんから、雲フィルターをいただきました。
少し時間はかかりますが市販品と同じように、キャンパスに雲を作成します。
私自身、雲フィルターはgtProgには少し大変かなと思っていたのですが、
組み込めるとは驚きです。
効果のサンプルはリンク先を参照してください。
Group=Paint
Name=Clouds
Init=coord=0;\ncx=0;\ncy=0;\n?Aleas,Aleas,1,1000,1;\n?iter,Iteration,1,10,2;\n?lum,Lum,0,100,50;\nlum=lum/100;\nsrand(Aleas);\nloop=iter+2;\nmax=loop;\nfr=1;\n
Prog=if (loop==max){\n R=rand(0,255);\n G=0;\n B=0;\n}else{\n if (loop !=1){\n if(x==0 && y==0){fr=fr*2;}\n pas=int((xs-1)/(fr));\n q=int(x/pas);\n b1x=q*pas;\n b2x=b1x+pas;\n if(b2x>xs){b2x=xs;}\n q=int(y/pas);\n b1y=q*pas;\n b2y=b1y+pas;\n if(b2y>ys){b2y=ys;}\n b00=R(b1x,b1y);\n b01=R(b1x,b2y);\n b10=R(b2x,b1y);\n b11=R(b2x,b2y);\n\n n=b2y-b1y;\n if (n==0){v1=b00;}\n if (n==1){v1= b01;}\n if (n!=0 &&n!=1){\n a=(y-b1y)/n;\n vv1=3*pow(1-a, 2)-2*pow(1-a,3);\n vv2=3*pow(a, 2)-2*pow(a, 3);\n v1=b00*vv1+b01*vv2;\n n=b2y-b1y;}\n if (n==0){v2=b10;}\n if (n==1){v2= b11;}\n if (n!=0 &&n!=1){\n a=(y-b1y)/n;\n vv1=3*pow(1-a, 2)-2*pow(1-a,3);\n vv2=3*pow(a, 2)-2*pow(a, 3);\n v2=b10*vv1+b11*vv2;\n n=b2x-b1x;\n }\n if (n==0){fin=b00;}\n if (n==1){fin= b01;}\n if (n!=0 &&n!=1){\n a=(x-b1x)/n;\n vv1=3*pow(1-a, 2)-2*pow(1-a,3);\n vv2=3*pow(a, 2)-2*pow(a, 3);\n fin=(vv1*v1)+(vv2*v2);}\n G=fin*pow(lum,max-(loop-1))+G;\n B=G;}\n}\nif(loop==1){R=B;}\n
http://puceron.net/Nuages
|
|