Historique des modifications - Message

Message #8631

Sujet: [PC]Ray-tracer en temps réel


Type Date Auteur Contenu
Création du message 28-08-2010 01:17:23 nico
Salut à tous, dans le but d'apprendre tout en s'amusant, je propose un projet communautaire, qui est un raytracer en temps réel.
j'ai vu un exemple ici: http://www.massal.net/article/raytrace/page1.html qui démontre qu'en théorie ce n'est pas trop compliqué wink
Mon idée c'est de faire un rendu en temps réel+ une animation).

Je propose qu'on utilise opengl, par contre je n'y connait pas grand chose wink
J'ai fait 2 classes pour séparer les calculs de lancé de rayons et le mode d'affichage qu'on pourra changer.

Code c++ :

class Ecran
{
      protected:
        int largeur, hauteur;
        unsigned char*  cellulesRVB;

        Ecran(int Largeur, int Hauteur):    hauteur(Hauteur),
                                            largeur(Largeur),
                                            cellulesRVB((unsigned char *) malloc( Largeur * Hauteur * 3 ))
        {
            memset(cellulesRVB, 255, Largeur * Hauteur * 3 );
            glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
            glClear(GL_COLOR_BUFFER_BIT);
        }
        void diffuser()
        {
            glDrawPixels( largeur, hauteur, GL_RGB, GL_UNSIGNED_BYTE, cellulesRVB);
        }
};

Voilà j'ai testé avec gldrawpixels, mais si vous connaissez mieux faites signe wink

Code c++ :


class lancerDeRayon : public Ecran
{
    public:
    lancerDeRayon(int Hauteur,int Largeur):Ecran(Hauteur,Largeur)
    {
    }
    void trace()
    {
        int z=-1;
        for (int y = 0; y <hauteur; ++y)
        {
            for (int x = 0; x < largeur; ++x)
            {
                float rouge = 0, vert = 0, bleu = 0;
                /*
                Calculs
                */
                cellulesRVB[z++]=((unsigned char)min(rouge*255.0f,255.0f));
                cellulesRVB[z++]=((unsigned char)min(vert*255.0f, 255.0f));
                cellulesRVB[z++]=((unsigned char)min(bleu*255.0f, 255.0f));
            }
        }
        diffuser();
    }
};

Que pensez-vous de l'organisation ? le but est de faire un truc simple et modulable, afin qu'on se concentre uniquement sur le lancé de rayons par la suite.

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
186 invités en ligne
membre en ligne: -
RSS Feed