Invité Invité
| Sujet: Script pour dessiner un cercle texturé [MAJ des scripts] Jeu 25 Nov 2010 - 0:12 | |
| Tout est dans le titre, c'est juste un truc que j'avais envie de faire, très facile à programmer. - Code:
-
//draw_circle_textured(x,y,radius,tex,steps,kaleidoscopic) var xx,yy,rad,tex,stp,kal,i,vx,vy,tx,ty;
xx=argument0 yy=argument1 rad=argument2 tex=argument3 stp=min(max(3,argument4),48) kal=argument5
draw_primitive_begin_texture(pr_trianglefan,tex) if (kal=1) then { draw_vertex_texture(xx,yy,.5,1) for (i=360/stp; i<=360; i+=360/stp) { vx=lengthdir_x(rad,i-(360/stp)) vy=lengthdir_y(rad,i-(360/stp)) draw_vertex_texture(xx+vx,yy+vy,0,0)
vx=lengthdir_x(rad,i) vy=lengthdir_y(rad,i) draw_vertex_texture(xx+vx,yy+vy,1,0) } } else { for (i=0; i<360; i+=360/stp) { vx=lengthdir_x(rad,i) vy=lengthdir_y(rad,i) tx=((rad/2)-lengthdir_x(rad/2,i))/rad ty=((rad/2)-lengthdir_y(rad/2,i))/rad draw_vertex_texture(xx+vx,yy+vy,1-tx,1-ty) } } draw_primitive_end()
- Code:
-
//version optimisée par oni_link //draw_circle_textured(x,y,radius,tex,steps,kaleidoscopic) var stp,i,aa,lx, ly; stp=min(max(3,argument4),48) aa = 360/stp draw_primitive_begin_texture(pr_trianglefan,argument3) if (argument5==1) { draw_vertex_texture(argument0, argument1, 0.5, 1) for(i=0 ; i<=360 ; i+=360/stp) draw_vertex_texture(argument0 + lengthdir_x(argument2, i), argument1 + lengthdir_y(argument2, i), (i/aa) mod 2, 0) } else { draw_vertex_texture(argument0, argument1, 0.5, 0.5) for(i=0 ; i<=360 ; i+=360/stp) { lx = lengthdir_x(1, i) ly = lengthdir_y(1, i) draw_vertex_texture(argument0 + lx*argument2, argument1 + ly*argument2, 0.5+lx/2, 0.5+ly/2 ) } } draw_primitive_end()
Version *_color - Code:
-
//draw_circle_textured_color(x,y,radius,c1,c2,tex,steps,kaleidoscopic) var xx,yy,rad,tex,c1,c2,stp,kal,i,vx,vy,tx,ty;
xx=argument0 yy=argument1 rad=argument2 c1=argument3 c2=argument4 tex=argument5 stp=min(max(3,argument6),48) kal=argument7
draw_primitive_begin_texture(pr_trianglefan,tex) if (kal=1) then { draw_vertex_texture_color(xx,yy,.5,1,c1,1) for (i=360/stp; i<=360; i+=360/stp) { vx=lengthdir_x(rad,i-(360/stp)) vy=lengthdir_y(rad,i-(360/stp)) draw_vertex_texture_color(xx+vx,yy+vy,0,0,c2,1) vx=lengthdir_x(rad,i) vy=lengthdir_y(rad,i) draw_vertex_texture_color(xx+vx,yy+vy,1,0,c2,1) } }
else
{ draw_vertex_texture_color(xx,yy,.5,.5,c1,1) for (i=0; i<=360; i+=360/stp) { vx=lengthdir_x(rad,i) vy=lengthdir_y(rad,i) tx=((rad/2)-lengthdir_x(rad/2,i))/rad ty=((rad/2)-lengthdir_y(rad/2,i))/rad draw_vertex_texture_color(xx+vx,yy+vy,1-tx,1-ty,c2,1) } } draw_primitive_end()
Effet "kaléidoscopique", avec ou sans :
Dernière édition par shm3A012B42FE3 le Ven 17 Déc 2010 - 20:29, édité 6 fois |
|
Chulien Utilisateur confirmé: Rang *****
Messages : 2232
| Sujet: Re: Script pour dessiner un cercle texturé [MAJ des scripts] Jeu 25 Nov 2010 - 14:22 | |
| tu m'épates hlm
edit: quoi que oui en fait c'est facile , même si je n'utilise pas beaucoup les textures 2d |
|
[TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: Script pour dessiner un cercle texturé [MAJ des scripts] Sam 27 Nov 2010 - 1:17 | |
| lawl, c'était dispo depuis ma lib draw_ext :gniah: Mais au moins, comme ça, les gens auront accès au code facilement |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Script pour dessiner un cercle texturé [MAJ des scripts] Sam 27 Nov 2010 - 10:53 | |
| |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Script pour dessiner un cercle texturé [MAJ des scripts] Ven 17 Déc 2010 - 18:27 | |
| y a pas grand chose a faire pour l'opti, j'ai réussi a gagner un peu, mais surtout j'ai amélioré l'effet kaleidoscope. Voici le résultat (avec les tests de perfs) Download opti_disque_tex.gm6 from Host-A |
|