Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Vous cherchez une fonction ?
Utilitaires >> Graph 90+E >> Graphisme >> Raytracer G90
Raytracer G90
Version : 1.1 Taille : 68000 octets Ajouté le : 2023-07-15 13:59 Modifié le : 2023-07-16 00:12
Auteur et posteur :
LightmareHors ligneMembre de CreativeCalcPoints: 690 Défis: 0 Message
Planète Casio - Programme Casio de graphisme - Raytracer G90 - lightmare - Calculatrices
Nombre de visites sur cette page : 1031
Score au progrank : 26
Pas encore de note !
Vous devez être connecté(e) pour noter (inscription).
263 téléchargements | Soumettre un test


Description :

Bonjour à tous ! Ca fait quelques années depuis ma dernière intervention !

Afin de ne pas revenir les mains vides, j'ai réalisé un basique moteur de raytracing pour la Graph 90 en utilisant Gint.

Le programme génère pour le moment deux sphères de couleur illuminées par une source de lumière ponctuelle, en moins d'une minute !

Je compte rajouter les reflets et la réfraction, ce qui augmentera le temps de génération de manière conséquente à ne point douter.

UPDATES :

1.1 : ajout des plans et des réflections, changement des doubles vers des floats


Commentaires :


LoieducodeHors ligneMembrePoints: 192 Défis: 6 Message
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)
FcalvaHors ligneMembrePoints: 603 Défis: 10 Message
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 )
LightmareHors ligneMembre de CreativeCalcPoints: 690 Défis: 0 Message
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.
Mb88Hors ligneRédacteurPoints: 1213 Défis: 3 Message
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.
FcalvaHors ligneMembrePoints: 603 Défis: 10 Message
Posté le 15-07-2023 à 18:58 | #
Non j'utilise la version de Outrun, fixed.h ici : https://gitea.planet-casio.com/Slyvtt/OutRun/src/branch/master/src
Mb88Hors ligneRédacteurPoints: 1213 Défis: 3 Message
Posté le 15-07-2023 à 19:03 | #
Ah ok, je ne savais pas
SlyvttEn ligneMaître du PuzzlePoints: 2411 Défis: 17 Message
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.
LightmareHors ligneMembre de CreativeCalcPoints: 690 Défis: 0 Message
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 !
LephenixnoirEn ligneAdministrateurPoints: 24677 Défis: 170 Message
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...

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 146 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd