|
Posté le 15-07-2023 à 16:04 | #
|
J'ai essayé de simplement remplacer les doubles par des floats, et les lignes du genre / sqrt(length) par * isqrt(len)(ou isqrt est la fast inverse square root, je n'ai pas essayé de remplacer les appels à sqrt avec une ""fast square root"")
Résultats:
- Ca prend maintenant 30 secondes
- La position des balles sont complétement fausses(la rouge est au dessus de la bleue) |
|
|
Posté le 15-07-2023 à 16:15 | #
|
J'ai déja remarqué que ton viewport est de 396x240, je sais pas si c'est intentionel mais l'écran est de 396x244.
Ensuite il y a pas mal d'innéficacités, comme les doubles et les vecteurs (Tu sais quelle taille ils vont faire non ?) et aussi le nombre de réfléctions max qui est à 3, ce qui est un peu beacoup pour la pauvre G90.
Sinon c'est cool mais c'est loin du niveau de perf de chaos drop
(Les sources sont publiques d'ailleurs ) |
|
|
Posté le 15-07-2023 à 16:30 | #
|
Merci beaucoup des retours et expérimentations !
Je suis encore pas très à l'aise avec le C, et ca fait quelques années que j'ai mis en pause mon apprentissage de la programmation d'add-ins, d'où pas mal d'erreurs et piètre optimisations
J'ai fait une mise à jour express qui change les doubles en floats, et ajoute les reflets et la gestion des plans !
Pour les vecteurs, c'était juste par souci de clarté.
J'ai aussi réduit le MAX_REFLECTIONS à 1, car en effet la différence de rendu est minimale pour des performances bien meilleures. |
|
|
Posté le 15-07-2023 à 18:53 | #
|
Utilise la lib de fixed point en C++ de Azur ! Tu pourras avoir de très bonnes performances avec, bien meilleures qu'avec des floats ou encore des doubles. Tu peux l'utiliser avec du C, Fcalva l'a fait. |
|
|
|
|
Posté le 15-07-2023 à 19:03 | #
|
Ah ok, je ne savais pas |
|
|
Posté le 16-07-2023 à 13:45 | #
|
Yo pas mal. Tiens c'est marrant je parlais de regarder pour faire un raytracer pour G90 il y a pas longtemps, suite à la sortie de Chaos Drop de Lephé.
Ton code gagnerait beaucoup à être optimisé en passant effectivement en arithmétique en point fixe. Le gain de perf est juste inimaginable.
La lib de Lephé dans Azur est vraiment bien. Il y a aussi une classe de vecteurs qui pourrait être regardée, et tu pourrais alors utiliser les opérations dot, subtract ... directement comme des membres de tes vecteurs. C'est ce que je fais dans le projet Npp ici
Pour la lib point fixe, elle est écrite en C++, et comme elle contient une surcharge des opérateurs, il faut conserver le C++. Elle n'est pas utilisable en C. |
|
|
Posté le 16-07-2023 à 13:56 | #
|
Je pense que passer au C++ devrait pas être trop difficile, et au vu des gains apportés par les outils d'Azur, ca vaut carrément le coup.
(d'autant plus que le projet est littéralement un seul fichier)
J'ai du retard en termes des progrès de la communauté sur le développement d'add-ins, et je suis vraiment content de voir que ce côté là prospère ! |
|
|
Posté le 19-08-2023 à 23:20 | #
|
Hey, je suis un peu en retard dans cette affaire, mais wow c'est beau ! Évidemment dès qu'on prend le temps de dessiner l'image ça donne des super résultats (pas comme les idiots qui essaient de faire ça en temps réel et massacrent tout).
Ce qui serait vraiment satisfaisant ce serait de battre la vidéo de The Science Elf (https://www.youtube.com/watch?v=rY413t5fArw) en termes de perfs, parce que fichtre la Graph 90+E doit bien être plus puissante que la TI-84+CE quand même.
Côté point fixe je confirme c'est vraiment sensible. Une fois j'ai passé un générateur de bruit de Perlin de float à point fixe les perfs ont pris x40... |
|