#version 110 #define float4 vec4 #define float3 vec3 #define float2 vec2 #define oUV gl_TexCoord[0] #define tex3D texture3D #define tex2D texture2D #define tex1D texture1D uniform sampler2D texture2d_1; uniform sampler2D texture2d_s; uniform sampler2D texture2d_velocities; uniform sampler2D texture2d_2; uniform sampler2D texture2d_random; /* uniform sampler1D texture_transfer_function; uniform sampler1D texture_palette_function; uniform float3 VolumeSize; uniform float3 RelativeSize; uniform float3 Registration_Offset; uniform float pet_alpha_blending; uniform float3 MousePos; uniform int Projection_mode; uniform float3 InVolumePosition; uniform float3 Windowing_Levels; uniform float isosurface; uniform float Sharpening; */ uniform float Limit; uniform float Flo; uniform float PosY; uniform float ttime; uniform float fttime; uniform float DSP; uniform float DSP2; void main (void) { //float ff=tex2D (texture2d_1,oUV.xy).x; //ff=abs (ff-cl.x); //ff=0.5+0.5*sin(ff*10000.0); //cl=ff*vec4 (1.0); /* float PI=3.1415926535; float2 UV=oUV.xy; UV-=float2 (0.5,0.5); UV*=2.0; float3 DirV =float3 (UV.x,UV.y,0.6); float lgn=length (DirV); DirV/=lgn; UV.xy=UV.xy+(DirV.xy-UV.xy)*-0.0; UV*=0.5; UV+=float2 (0.5,0.5); */ float2 UV=oUV.xy; float4 cl=tex2D (texture2d_1,UV.xy); cl=float4 (0.0); float3 Direction=tex2D (texture2d_velocities,UV.xy).xyz; //Direction.xy=float2 (0.5); Direction.xyz-=float3 (0.5); Direction*=2.0; float alpha=1.0*length (Direction.xyz); alpha=clamp (alpha,0.0,1.0); //alpha=1-alpha; //alpha*=alpha; //alpha=1-alpha; //alpha*=alpha; //alpha=0.1; //Direction*=0.01; //Direction=vec3 (0.0,0.01,0.0); if (alpha>0.01) { for (int t=0;t<10;t++) { UV.xy-=Direction.xy*0.01; cl+=tex2D (texture2d_1,UV.xy); }; cl*=1.0/10.0; //Direction=tex2D (texture2d_velocities,UV.xy).xyz; //cl=Direction.xyzz*1.0+vec4 (0.5); //cl.x+=0.15*alpha; //=float4 (1.0,0.0,0.0,1.0)*alpha; } else cl=tex2D (texture2d_1,UV.xy); //float4 clnow=tex2D( texture2d_1,oUV.xy); //cl=cl+(clnow-cl)*0.5; UV=oUV.xy; if (fttime>186.0) if (fttime<242.0) if (UV.x>0.5) UV.x=1.0-UV.x; float fx=tex2D (texture2d_1,UV.xy).x; if (ttime>169.0) if (ttime<184.0){ if (UV.y>0.5) UV.y=1.0-UV.y; } if (ttime<197.0) if (ttime>184.0){ if (UV.x>0.5) UV.x=1.0-UV.x; } if (ttime<86.0) if (ttime>26.5) if (UV.x>0.5) UV.x=1.0-UV.x; if (ttime>98.0) if (ttime<106.0) { float fft=((UV.x-0.5) / (UV.y-0.5)); fft=1.0*atan (fft); //fft=mod (fft,1.4); float dist=length (UV.xy-vec2 (0.5)); vec2 UVn; UVn.x=dist * sin(fft)+0.5; UVn.y=dist * cos(fft)+0.5; UV=UVn; } //1.0-UV.x; //if (UV.y>0.5) UV.y=1.0-UV.y; //if (UV.x>fx) UV.x=1.0-UV.x; //+(fx-0.5); cl=1.0*tex2D (texture2d_1,UV.xy); cl+=1.0*tex2D (texture2d_s,UV.xy); vec4 cln=cl; if ((ttime>86.0) && (ttime<104.0)){ float cll2=cl.y; // if (UV.y>0.8) UV.y=1.0-UV.y+0.6; cl=1.0*tex2D (texture2d_1,UV.xy); cl+=1.0*tex2D (texture2d_s,UV.xy); vec4 cln=vec4(tex2D(texture2d_1,UV.xy).x)+vec4(tex2D(texture2d_s,UV.xy).x); if (cll2>0.9) cl*=100.0; //vec4 (1.7,0.8,1.0,0.0); float fl=(ttime-92.0)*0.125; fl=clamp (fl,0.0,1.0); cl=cl+(cln-cl)*fl; } if (ttime>104.0) { float cll2=cl.y; float cll3=cl.z; float fl2=(ttime-123.0)*0.25; fl2=clamp (fl2,0.0,1.0); fl2=0.0; float ff=UV.x; if (fttime<186.0) if (UV.x>0.5+fl2) UV.x=1.0-UV.x; //UV.x=UV.x+(ff-UV.x)*fl2; cl=vec4(tex2D(texture2d_1,UV.xy).x)+vec4(tex2D(texture2d_s,UV.xy).x); if (cll2>0.9) cl*=1.7*vec4 (0.7,0.8,1.0,0.0); fl2=(ttime-131.0)*0.3; if (fttime>186.0); fl2=(ttime-129.0)*0.25; fl2=clamp (fl2,0.0,1.0); cl=cl+(cln-cl)*fl2; //if (cll3>0.6) cl*=1.7*vec4 (0.7,0.9,1.0,0.0); } cl+=vec4(DSP*DSP*oUV.y)*0.25; float flx=1.9; if (ttime>140.0) flx=1.2; if (cl.z>flx) { float ures=pow(sin(UV.x*5.0),5.0); if (ures>0.5) ures=-1.0; else ures=1.0; float uu=pow(1.1*sin(5.0*ttime+2000.0*UV.x)*sin(2000.0*UV.y),8.0); uu*=pow(1.1*sin(ures*-15.0*ttime+200.0*UV.x)*sin(ures*-10.0*ttime+200.0*UV.y),8.0); if (uu>0.0) cl*=0.0; } if (ttime<250.0) if (length (cl)<0.1) { float ures=pow(sin(UV.x*15.0),5.0); if (ures>0.5) ures=-1.0; else ures=1.0; float uu=pow(1.1*sin(5.0*ttime+2000.0*UV.x)*sin(2000.0*UV.y),8.0); uu*=pow(1.1*sin(ures*-5.0*ttime+400.0*UV.x)*sin(ures*-10.0*ttime+400.0*UV.y),8.0); float fl2=(ttime-32.0)*0.125; fl2=clamp (fl2,0.0,1.0); if (uu>0.04) cl+=fl2*vec4 (0.43)*vec4 (0.7,1.0,1.0,1.0)*pow((1.0-oUV.y),2.0); } /* if (ttime>230.0) if (sin(oUV.y*100.0)>0.0) cl=vec4 (cl.x); */ float ffade=ttime-230.0; ffade=clamp (ffade,0.0,1.0); if (fttime>230.0) cl*=ffade; //cl*=0.5+DSP2; float fls= min (length (vec2 (2.0,0.5)*(oUV.xy-vec2 (0.5,0.4))), length (vec2 (0.5,2.0)*(oUV.xy-vec2 (0.5,0.4)))); fls=1.0-fls; fls=clamp (fls,0.0,1.0); fls=pow (fls,2.0); //float fls2=length (oUV.xy-vec2 (0.5)); fls= length (vec2 (2.0,0.5)*(oUV.xy-vec2 (0.5,0.4))); fls=1.0-fls; fls=clamp (fls,0.0,1.0); fls=pow (fls,3.0); //fls*=clamp (10.0*sin(oUV.y*1200.0),0.0,1.0); if (fttime<130.0) cl*=1.0+2.0*DSP2*fls*vec4 (0.5,0.7,1.0,1.0); if (fttime>190.0) cl*=1.0+2.0*DSP2*fls*vec4 (0.5,0.7,1.0,1.0); //fls=(oUV.x-0.5)+(oUV.y-0.5); //fls=1.0-fls; //cl*=1.0+1.5*vec4 (0.6,0.8,0.9,1.0)*5.0*vec4 (pow(fls,8.0)); //cl=tex2D (texture2d_1,vec2 (sin(oUV.x),sin(oUV.y))); vec4 clnn=vec4 (pow (cl.x*1.1,3.0),pow (cl.y*1.1,3.0),pow (cl.z*1.1,3.0),pow (cl.z*1.1,2.0)); if (ttime>86.0) cl=vec4 (cl.x)+(clnn-vec4 (cl.x))*0.3; else cl=vec4 (cl.y)+(0.8*clnn-vec4 (cl.y))*0.25; //cl=clnn; //*vec4 (0.2,0.5,1.0,1.0); //cl=vec4(tex2D(texture2d_1,UV.xy).x)+vec4(tex2D(texture2d_s,UV.xy).x); /* // blur effect float lgn2=length (float2 (1.0,2.0)*(UV.xy-float2 (0.5))); lgn2*=lgn2; //pow(lgn2,1.8); int count=0; for (int y=-5;y<6;y++) { for (int x=-5;x<6;x++){ count++; float2 dd=float2 (x,y); if ( (x)==(y)) { dd*=2.0; } float2 Dist=float2 (x,y)*0.0025*lgn2; Dist=dd*0.0025*lgn2; cl+=tex2D(texture2d_1,UV.xy+Dist); } } cl/=float (count)*(lgn2+(1.0-lgn2)*0.85); vec4 cll=cl; cl=tex2D (texture2d_1,oUV.xy); //Depth blurring float dpth=0.0; count=0; float Limit2=1.0-Limit; for (int y=-4;y<5;y++) { for (int x=-4;x<5;x++){ count++; float2 dd=float2 (x,y)*0.7*Limit2; //dd=ray.xy*5.0; float2 Dist=dd*0.0018; dpth+=tex2D(texture2d_2,UV.xy+Dist).x; } } dpth/=float (count); //dpth=sin(dpth*3.14159); //dpth+=0.1; dpth=pow(dpth,126.0); //dpth+=Limit; dpth=1.0-1.0*dpth; //if (dpth<0.7) dpth=0.0; count=0; cl=vec4(0.0); dpth=clamp(dpth,0.0,1.0); dpth=Limit+((1.0-Limit)-(Limit))*dpth; dpth*=Flo; //dpth=1.0; float vel=tex2D(texture2d_velocities,UV.xy).x; if (dpth>0.02) { for (int y=-4;y<5;y++) { for (int x=-4;x<5;x++){ count++; float2 dd=float2 (x,y)*0.7;//;*vec2 (3.0,3.0); //float2 dd2=float((x+4)*9+(y+4))*float2 (-1.0,1.0)*0.4; //dd=dd+(dd2-dd)*-vel*0.4; float2 Dist=dd*0.0018*dpth; cl+=tex2D(texture2d_1,UV.xy+Dist); //cl.x=dpth; } } cl/=float (count); } else cl=tex2D(texture2d_1,UV.xy); if (vel>0.01) { vec4 newcl=vec4 (0.0); for (int x=0;x<15;x++){ float2 dd2=float(x)*float2 (-1.0,1.0)*0.003*vel; newcl+=tex2D(texture2d_1,UV.xy+dd2); } newcl*=1.0/15.0; cl=cl+(newcl-cl)*0.5; } //cl*=0.4; //cl+=tex2D(texture2d_velocities,UV.xy)*0.5; //cl=tex2D(texture2d_1,UV.xy); //cl=vec4 (dpth); */ //cl=vec4 (tex2D(texture2d_1,UV.xy)); //cl=vec4 (tex2D(texture2d_velocities,UV.xy)); //cl=cll; gl_FragData[0]=cl; gl_FragData[1]=cl; }