Commit 10f27bec authored by Emeric Verschuur's avatar Emeric Verschuur
Browse files

No commit message

No commit message
parent 6f84c929
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -49,7 +49,8 @@ LrScene::LrScene(const LrScene &source)
    m_entities(source.m_entities),
    m_binder(source.m_binder),
    m_image(source.m_image),
    m_camera(source.m_camera)
    m_camera(source.m_camera),
    m_antialiasing(source.m_antialiasing)
{
    sem_init(&sem,0,0);
}
@@ -57,12 +58,14 @@ LrScene::LrScene(const LrScene &source)
LrScene::LrScene(const LrEntityList &entities, 
                 LrBinder *binder,
                 LrImage *image, 
                 LrCamera *camera)
                 LrCamera *camera,
                 LrAntiAliasing *antialiasing)
:
    m_entities(entities),
    m_binder(binder),
    m_image(image),
    m_camera(camera)
    m_camera(camera),
    m_antialiasing(antialiasing)
{
    sem_init(&sem,0,0);
}
@@ -85,6 +88,7 @@ LrScene& LrScene::operator = (const LrScene &source)
    m_binder = m_binder,
    m_image = source.m_image;
    m_camera = source.m_camera;
    m_antialiasing = source.m_antialiasing;

    return *this;
}
@@ -139,7 +143,7 @@ struct __lr_generateimage_t{
    pthread_mutex_t mut;
};

static void *__lr_generateimage(void *ptr){
void *LrScene::generateTask(void *ptr){
    __lr_generateimage_t *p=(__lr_generateimage_t*)ptr;
    int it;
    while(true){
@@ -200,7 +204,7 @@ void LrScene::generateImage(int nbThreads)
    
    gettimeofday(&tvCalculBeg, NULL);
    for( int i=0 ; i < nbThreads ; i++ ){
        pthread_create(&thLst[i],NULL,__lr_generateimage,(void*)&ptr);
        pthread_create(&thLst[i],NULL,LrScene::generateTask,(void*)&ptr);
    }
    
    const char *curs="-\\|/";
+10 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@
#include "LrBinder.h"
#include "LrCamera.h"
#include "LrImage.h"
#include "LrAntiAliasing.h"

/**
 * @brief SCENE : Generation de la scene.
@@ -61,7 +62,8 @@ class LrScene
    LrScene(const LrEntityList &entities, 
            LrBinder *binder,
            LrImage *image, 
            LrCamera *camera);
            LrCamera *camera,
            LrAntiAliasing *antialiasing);

    /**
     * @brief Destructeur de LrScene.
@@ -122,6 +124,8 @@ class LrScene
     */  
    void generateImage(int nbThreads=1);

protected :
    
    /**
     * @brief Methode abstraite pour la génération des images. 
     * @brief Genere une partie de l'image
@@ -130,12 +134,15 @@ class LrScene
     */  
    virtual void generateImagePart(int lOffset, int lNb)=0;
    
protected :
    //L'AntiAliasing a appliquer a la scene
    LrEntityList m_entities;
    LrBinder *m_binder;
    LrImage *m_image;
    LrCamera *m_camera;
    LrAntiAliasing *m_antialiasing; 
    sem_t sem;
    
    static void *generateTask(void *ptr);
};

#endif
+1 −5
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@ LrSceneRayTracing::LrSceneRayTracing()
:
    LrScene(),
    m_lights(),
    m_antialiasing(),
    m_nbRebonds()
{
}
@@ -41,7 +40,6 @@ LrSceneRayTracing::LrSceneRayTracing(const LrSceneRayTracing &source)
:
    LrScene(source),
    m_lights(source.m_lights),
    m_antialiasing(source.m_antialiasing),
    m_nbRebonds(source.m_nbRebonds)

{
@@ -57,9 +55,8 @@ LrSceneRayTracing::LrSceneRayTracing(const LrEntityList &entities,
                                     LrAntiAliasing *antialiasing,
                                     int nbRebonds)
:
    LrScene(entities, binder, image, camera),
    LrScene(entities, binder, image, camera, antialiasing),
    m_lights(lights),
    m_antialiasing(antialiasing),
    m_nbRebonds(nbRebonds)

{
@@ -82,7 +79,6 @@ LrSceneRayTracing&
    LrScene::operator = (source);

    m_lights = source.m_lights;
    m_antialiasing = source.m_antialiasing;
    m_nbRebonds = source.m_nbRebonds;

    return *this;
+11 −14
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@
#include "LrHit.h"
#include "LrEntityLight.h"
#include "LrVector.h"
#include "LrAntiAliasing.h"

/**
 * @brief SCENE : Generation de la scene par la methode de lancer de rayons.
@@ -77,16 +76,6 @@ public :
     */
    LrSceneRayTracing & operator = (const LrSceneRayTracing &source);


    /**
     * @brief Methode abstraite pour la génération des images. 
     * @brief Genere une partie de l'image
     * @param lOffset entier correspondant a ligne de depart
     * @param lNb entier correspondant au nombre de lignes a calculer
     */  
    virtual void generateImagePart(int lOffset, int lNb);


    /**
    * @brief Phase préparatoire à tout calcul.    
    */  
@@ -108,11 +97,19 @@ public :
    */     
    LrColor computeFromSource(const LrRay &ray, LrHit &hit);
    
protected:
    
    /**
     * @brief Methode abstraite pour la génération des images. 
     * @brief Genere une partie de l'image
     * @param lOffset entier correspondant a ligne de depart
     * @param lNb entier correspondant au nombre de lignes a calculer
     */  
    virtual void generateImagePart(int lOffset, int lNb);

private :
    // pour un acces direct aux sources de lumiere
    LrEntityList m_lights;
    //L'AntiAliasing a appliquer a la scene
    LrAntiAliasing *m_antialiasing; 
    //nombre de rebonds
    int m_nbRebonds;
    /**