onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: [script]Perlin noise Dim 19 Déc 2010 - 19:35 | |
| Générer des textures selon l'algorithme de Ken Perlin 7 secondes pour générer les 4 textures si dessus, donc moins de 2 sec par texture (processeur dualcore 2.49GHz) Fonction : - Spoiler:
- Code:
-
/* draw_perlin_noise(x, y, size, octaves, step, persistance, type, ... s type : 1 = marble cos 2 = marble line -> ... lines, perturbation) 3 = wood -> ...seuil) default = clouds / basic */
width = argument2+1 height= argument2+1 step = argument4 nbr_octaves = argument3
max_width = ceil( width*power(2, nbr_octaves-1)/step ) max_height= ceil(height*power(2, nbr_octaves-1)/step )
for(i=0; i<max_width*max_height; i+=1) value[i] = random(1)
for(yy=0; yy<height-1; yy+=1) { for(xx=0; xx<width-1; xx+=1) { //Calcul du bruit perlin = 0 p = 1 f = 1 repeat(nbr_octaves) { i = floor(f*xx/step) j = floor(f*yy/step) t = (1-cos(((f*xx/step) mod 1)*pi))/2 y1 = value[i*max_width + j]*(1-t) + value[(i+1)*max_width + j]*t y2 = value[i*max_width + j+1]*(1-t) + value[(i+1)*max_width + j+1]*t t = (1-cos(((f*yy/step) mod 1)*pi))/2 perlin += p * (y1*(1-t) + y2*t) p *= argument5 f *= 2 } perlin *= (1-argument5)/(1-p) if(argument6 == 1) { //Génération de la texture, ici marbre v = 1-sqrt(abs(sin(2*pi*perlin))) c = min( round ((0.7 * (1-v) + 0.1*v)*255) , 255) color = make_color(c,c,c) } else if(argument6 == 2) { //marbre 2 v = (1-cos(argument7*2*pi*(xx/argument2 + argument8*perlin)))/2 c = min( round ((0.1 * (1-v) + 0.7*v)*255) , 255) color = make_color(c,c,c) } else if(argument6 == 3) { //bois v = perlin mod argument7 if(v>argument7/2) v = argument7 - v f = (1-cos(2*pi*v/argument7))/2 g = 0.6*(1-f) + 0.2*f b = 0.6*(1-f) + 0.3*f color = min( round(g*255) , 255)<<8|min( round(b*255) , 255) } else { //nuages c = min( round(perlin*255) , 255) color = make_color(c,c,c) } draw_point_color(argument0+xx, argument1+yy, color) } }
Exemple du screen , dans create - Code:
-
set_automatic_draw(0) draw_perlin_noise(16, 16, 128, 6, 64, 0.4, 0) draw_perlin_noise(16, 16+128, 128, 6, 64, 0.4, 1) draw_perlin_noise(16+128, 16, 128, 6, 32, 0.4, 2, 20, 0.25) draw_perlin_noise(16+128, 16+128, 128, 6, 64, 0.4, 3, 0.1) J'ajouterais de nouvelles textures de temps en temps |
|
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [script]Perlin noise Lun 20 Déc 2010 - 11:30 | |
| Il est possible de créer des textures homogènes mais ce n'était pas mon but pour ces 4 la.
Bien sur je pourrais essayer d'en coder des nouvelles. |
|
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: [script]Perlin noise Lun 20 Déc 2010 - 23:36 | |
| seamless ca veut dire quoi? |
|
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: [script]Perlin noise Lun 20 Déc 2010 - 23:40 | |
| Raccordables pour des textures. |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [script]Perlin noise Lun 20 Déc 2010 - 23:40 | |
| ah ça veux pas dire homogène ? |
|
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: [script]Perlin noise Mar 21 Déc 2010 - 12:32 | |
| Mhhh ça voudrait dire quoi des textures homogènes pour toi ? Entk seamless ça veut dire raccordable et ce serait le top que t'arrives à faire ça, mais bon jme doute que ça doit bien complexifier les choses |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [script]Perlin noise Mar 21 Déc 2010 - 12:37 | |
| bah homogène..., avec peu d'aléatoire quoi. Sinon oui ça va être galère va falloir que je joue sur le seed, mais bon je verrais ça plus tard, et pas sous gm sinon je vais pas m'en sortir avec 2sec par rendu xD edit : - nicoulas a écrit:
- Maintenant modifie ton script pour que les textures soient seamless
Il casse tout quand même ce changement de smileys x) Ton post ne veux plus dire la meme maintenant :p |
|
CoDeAVE Utilisateur confirmé: Rang **
Messages : 408 Localisation : Québec
| |
nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: [script]Perlin noise Mer 22 Déc 2010 - 15:27 | |
| - onilink_ a écrit:
- bah homogène..., avec peu d'aléatoire quoi.
Sinon oui ça va être galère va falloir que je joue sur le seed, mais bon je verrais ça plus tard, et pas sous gm sinon je vais pas m'en sortir avec 2sec par rendu xD
edit :
- nicoulas a écrit:
- Maintenant modifie ton script pour que les textures soient seamless
Il casse tout quand même ce changement de smileys x) Ton post ne veux plus dire la meme maintenant :p Arg horrible, mon post est foutu. Bon en tout cas si tu veux te lancer là dedans, ça serait énorme que tu le fasse dans GM ou avec une DLL, comme ça on pourait faire des jeux avec des ressources crées à la volée, donc epic gain niveau poids du jeu, avec en plus le fait que chaque lancement du jeu est une expérience unique @ CoDeAVE : Désolé, ça a dû être terrible. |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [script]Perlin noise Mer 22 Déc 2010 - 15:44 | |
| J'essayerais, je pense avoir une idée de comment m'y prendre. Et bien sur je ferais une dll en C quand ce seras au point, on pourras générer une texture dans un bitmap, la charger avec GM, puis l'effacer.
Mais bon pour le moment je bosse sur THE projet :p |
|
CoDeAVE Utilisateur confirmé: Rang **
Messages : 408 Localisation : Québec
| Sujet: Re: [script]Perlin noise Jeu 23 Déc 2010 - 4:21 | |
| [quote="nicoulas"] - onilink_ a écrit:
- bah homogène..., avec peu d'aléatoire quoi.
...
@ CoDeAVE : Désolé, ça a dû être terrible. C'est pas ça le problème. Nous sommes sur un forum français. Du moins, mettez entre parenthèses le mot en français. Ensuite, vous risquerez de trouver que mettre le mot français entre parenthèses démontre que vous voulez montrer que vous êtes bon en anglais. Au final, vous laisserez que le mot français pour faire plus modeste |
|
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: [script]Perlin noise Ven 24 Déc 2010 - 23:05 | |
| Faudrait que tu puisse gèrer la transparance aussi et le temps(je sais pas si c'est le cas, je capte rien :derp: ) |
|
Contenu sponsorisé
| Sujet: Re: [script]Perlin noise | |
| |
|