Keep calm and carry on.
Webdev Gamedev Webdesign Minecraft
Pour un nouveau projet sur lequel je viens de commencer à travailler, j'avais besoin d'implémenter un système robuste d'éclairage 2D. J'ai aujourd'hui terminé l'éclairage par une lumière ponctuelle.
Le système se base sur 4 images : la carte diffuse (la couleur), le carte de gloss (la "brillance" ou réflexivité du matériau), la carte d'émission (la quantité de lumière émise par chaque pixel), et une carte de normales.
Ci-dessous, un exemple avec ces 4 cartes dans l'ordre puis un exemple de rendu.
Et maintenant un exemple en vidéo. Les deux briques lumineuses sont issues de la carte d'émission. (Avec Maxo qui parle derrière).
Je ne donne pas le code source, c'est secret. :3
Bonjour,
Aujourd'hui j'ai écrit en Java un utilitaire inutile qui convertit une image au format de couleurs EGA. Voilà un exemple : l'image de base :
Une fois passé dans le convertisseur :
Très moche hein ? Heureusement, j'ai implémenté le tramage de Floyd-Steinberg :
Vous pouvez trouver le code source sur GitHub. Voilà la lien de téléchargement : EGAConverter.jar.
Utilisation :
java -jar EGAConverter.jar input_file.ext output_file.png [raw|dither]
-Steven
Bonjour,
Hier j'ai joué un peu avec les fragment shaders en GLSL.
Tout d'abord, j'ai utilisé le module PostFX de la SFML. Mais ce module utilise une version simplifiée de GLSL et qui limite les possibilités des shaders. (Par exemple, impossible de définir des fonctions hors du bloc effect correspondant au main.)
Voilà l'exemple d'un shader qui ne fait rien d'intéressant en PostFX et en GLSL :
PostFX :
texture framebuffer
effect
{
_out = framebuffer(_in);
}
GLSL :
uniform sampler2D framebuffer;
void main(void)
{
gl_FragColor = texture2D(framebuffer, gl_TexCoord[0].xy);
}
Donc j'ai du recoder toute la classe PostFX de SFML pour fonctionner avec les shaders GLSL. En fait je me suis contenté d'adapter la classe existante, ce qui rend le code plutôt dégueulasse. Je ne le donne pas car c'est un simple chargement de shader/création d'un program. Le particularité est que le shader est appliqué à un grand rectangle qui prend tout l'écran. Une copie de l'écran est envoyée au shader via framebuffer.
J'ai codé 4 shaders : un effet vintage, un infrarouge, un bloom (qui reste à améliorer) et un effet de distortion pour simuler de l'eau par exemple.
Voici une vidéo de démonstration puis le code source des shaders :
-Steven
Aujourd'hui, j'ai voulu calculer le 5ème nombre de Fermat.
Avec Maple :
2^2^5 + 1 = 4294967297
Avec ma TI-82 :
2^2^5 + 1 = 1025

Salut,
J'ai pas mal bossé ces derniers temps sur un projet que j'avais en pose depuis longtemps : un démineur. Rien de très fantastique mais tout est expliqué sur la page du projet.
Amusez-vous bien.
-Steven
Bonjour,
Je commence aujourd'hui une nouvelle série sur le serveur Minecraft Orasia.
J'espère qu'elle vous plaira.
-Steven
Bonjour,
Le week-end dernier, mon prof de maths m'a envoyé un mail où il me proposait une méthode pour exploiter la primalité relatives d'entiers, après avoir vu ma vieille image des entiers premiers entre eux qui date de quelques années maintenant.
La primalité relative donne un sens à "très premiers entre eux" et à "peu premiers entre eux". On compare la somme des exposants dans la décomposition en facteurs premiers du pgcd des deux entiers avec la somme des sommes des exposants dans la décomposition en facteurs premiers de chaque entiers :
Pour x entier >0 :
taille(x) =somme des exposants dans la décomposition de x en facteurs premiers.
Pour a,b entiers >1 :
mesure_de_primalite_relative(a,b) = 2*taille(PGCD(a,b))/(taille(a)+taille(b))
(c'est un rationnel entre 0 et 1)
J'ai décidé d'implémenter ça en Python, parce que ça faisait longtemps que je n'en avait pas fait. (C'est une bonne raison hein ?) J'aurai pu utiliser une librairie d'arithmétique comme GMP mais je n'en connaissais pas pour Python et je trouvais ça plus marrant de tout faire from scratch.
Voici donc le code source. Il se décompose en plusieurs fichiers :
main.py : le programme en lui-même;image.py : pour la manipulation/sauvegarde de l'image;primes.py : pour la détermination des nombres premiers;factors.py : pour la décomposition en facteurs premiers (dépend de primes.py);pgcd.py : pour le calcul du PGCD (dépend de factors.py).Quand je dis "dépend de", je veux dire qu'il est par exemple nécessaire de déterminer les premiers de 1 à 10000 pour utiliser factors.py.
Il y a deux paramètres modifiables dans main.py :
N (l. 8) : le premier entier;S (l. 9) : le nombre d'entiers pour lesquels déterminer la primalité relative.On aura : plus foncé = plus premiers entre eux, plus clair = moins premiers entre eux.
Voici le résultat pour N = 2, S = 2048 :
Il faudrait ouvrir l'image dans un éditeur afin de pouvoir zoomer sans interpolation.
D'un point de vue performances, la détermination des entiers premiers a pris ici 3 ms et les calculs de primalité relative 46 s avec un processeur Intel Core i3 à 2.40 Ghz.
Comme pour la fois précédente, je ne pense pas que l'on puisse en tirer grand chose, je vous laisse tout de même explorer.
J'ai alors déterminé l'histogramme de l'image.

La moyenne de primalité relative est donc d'environ 0.42. Encore une fois, ça n'a pas grand intérêt.
C'était fun à coder en tout cas.
-Steven