Loading LrSceneRayTracing.cpp +67 −71 Original line number Diff line number Diff line Loading @@ -18,17 +18,12 @@ #include "config.h" #endif #include <stdlib.h> #include "LrSceneRayTracing.h" #include "LrOptic.h" #include <fstream> #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; /*---------------------------------------------------------------------------* * Constructeurs et destructeurs * *---------------------------------------------------------------------------*/ // ############################################################################ LrSceneRayTracing::LrSceneRayTracing() : Loading @@ -39,6 +34,8 @@ LrSceneRayTracing::LrSceneRayTracing() { } // ############################################################################ LrSceneRayTracing::LrSceneRayTracing(const LrSceneRayTracing &source) : LrScene(source), Loading @@ -49,10 +46,7 @@ LrSceneRayTracing::LrSceneRayTracing(const LrSceneRayTracing &source) { } LrSceneRayTracing* LrSceneRayTracing::clone() const { return new LrSceneRayTracing(*this); } // ############################################################################ LrSceneRayTracing::LrSceneRayTracing(const LrEntityList &entities, const LrEntityList &lights, Loading @@ -70,13 +64,13 @@ LrSceneRayTracing::LrSceneRayTracing(const LrEntityList &entities, { } // ############################################################################ LrSceneRayTracing::~LrSceneRayTracing() { } /*---------------------------------------------------------------------------* * Operateur(s) d'assignement * *---------------------------------------------------------------------------*/ // ############################################################################ LrSceneRayTracing& LrSceneRayTracing::operator = (const LrSceneRayTracing &source) Loading @@ -93,9 +87,8 @@ LrSceneRayTracing& return *this; } /*---------------------------------------------------------------------------* * Méthodes * *---------------------------------------------------------------------------*/ // ############################################################################ void LrSceneRayTracing::initialize() { LrEntityList::const_iterator itObjs; Loading @@ -107,9 +100,12 @@ void LrSceneRayTracing::initialize() } } // ############################################################################ void LrSceneRayTracing::generateImagePart(int lOffset, int lNb) { int nbRayPerPixel = (m_antialiasing->getCoeffAA()*m_antialiasing->getCoeffAA()); int coeffAA = m_antialiasing->getCoeffAA(); int nbRayPerPixel = (coeffAA*coeffAA); srand(time(NULL)); Loading @@ -119,10 +115,6 @@ void LrSceneRayTracing::generateImagePart(int lOffset, int lNb) { for (int c = 0; c < m_image->getWidth(); c++) { // if(l == 300 && c == 300) // { // int a = 0; // } LrColor pixel = LrColor::BLACK; Loading @@ -131,15 +123,11 @@ void LrSceneRayTracing::generateImagePart(int lOffset, int lNb) float u, v; LrRay ray; LrColor color; // tirer u et v dans le pixel (l, c) m_antialiasing->getCoordUV(m_antialiasing->getCoeffAA(),i,&u,&v); // cout<<"U avant : "<<u<<" V avant : "<<v<<endl; m_antialiasing->getCoordUV(coeffAA,i,&u,&v); u = ((c + u) / m_image->getWidth()) * 2 -1; v = ((l + v) / m_image->getHeight()) * 2 -1; // cout<<"U : "<<u<<" V : "<<v<<endl; ray = m_camera->getRay(u, v); color = computeImageRay(ray, m_nbRebonds); Loading @@ -160,6 +148,8 @@ void LrSceneRayTracing::generateImagePart(int lOffset, int lNb) } } // ############################################################################ LrColor LrSceneRayTracing::computeImageRay(const LrRay &ray, int nbRebonds) { LrColor colorResult = LrColor::BLACK; Loading Loading @@ -209,6 +199,8 @@ LrColor LrSceneRayTracing::computeImageRay(const LrRay &ray, int nbRebonds) return colorResult; } // ############################################################################ LrColor LrSceneRayTracing::computeFromSource(const LrRay &ray, LrHit &hit) { Loading Loading @@ -236,13 +228,17 @@ LrColor LrSceneRayTracing::computeFromSource(const LrRay &ray, LrHit &hit) if (m_binder->getIntersection(rayLight, NULL, 0.0f, dist) == false) { colorTmp += (((LrEntityLight*)(*itObjs))->getColor())*hit.optic->compute(rayLight,-ray.getDirection(),hit.normal,hit.tangent,hit.u,hit.v); colorTmp += (((LrEntityLight*)(*itObjs))->getColor())* hit.optic->compute(rayLight,-ray.getDirection(), hit.normal,hit.tangent, hit.u,hit.v); } } colorResult += colorTmp/nbRayOnLight; } } return colorResult /*/ m_lights.size()*/; return colorResult; } // ############################################################################ Loading
LrSceneRayTracing.cpp +67 −71 Original line number Diff line number Diff line Loading @@ -18,17 +18,12 @@ #include "config.h" #endif #include <stdlib.h> #include "LrSceneRayTracing.h" #include "LrOptic.h" #include <fstream> #include <iostream> #include <stdlib.h> #include <time.h> using namespace std; /*---------------------------------------------------------------------------* * Constructeurs et destructeurs * *---------------------------------------------------------------------------*/ // ############################################################################ LrSceneRayTracing::LrSceneRayTracing() : Loading @@ -39,6 +34,8 @@ LrSceneRayTracing::LrSceneRayTracing() { } // ############################################################################ LrSceneRayTracing::LrSceneRayTracing(const LrSceneRayTracing &source) : LrScene(source), Loading @@ -49,10 +46,7 @@ LrSceneRayTracing::LrSceneRayTracing(const LrSceneRayTracing &source) { } LrSceneRayTracing* LrSceneRayTracing::clone() const { return new LrSceneRayTracing(*this); } // ############################################################################ LrSceneRayTracing::LrSceneRayTracing(const LrEntityList &entities, const LrEntityList &lights, Loading @@ -70,13 +64,13 @@ LrSceneRayTracing::LrSceneRayTracing(const LrEntityList &entities, { } // ############################################################################ LrSceneRayTracing::~LrSceneRayTracing() { } /*---------------------------------------------------------------------------* * Operateur(s) d'assignement * *---------------------------------------------------------------------------*/ // ############################################################################ LrSceneRayTracing& LrSceneRayTracing::operator = (const LrSceneRayTracing &source) Loading @@ -93,9 +87,8 @@ LrSceneRayTracing& return *this; } /*---------------------------------------------------------------------------* * Méthodes * *---------------------------------------------------------------------------*/ // ############################################################################ void LrSceneRayTracing::initialize() { LrEntityList::const_iterator itObjs; Loading @@ -107,9 +100,12 @@ void LrSceneRayTracing::initialize() } } // ############################################################################ void LrSceneRayTracing::generateImagePart(int lOffset, int lNb) { int nbRayPerPixel = (m_antialiasing->getCoeffAA()*m_antialiasing->getCoeffAA()); int coeffAA = m_antialiasing->getCoeffAA(); int nbRayPerPixel = (coeffAA*coeffAA); srand(time(NULL)); Loading @@ -119,10 +115,6 @@ void LrSceneRayTracing::generateImagePart(int lOffset, int lNb) { for (int c = 0; c < m_image->getWidth(); c++) { // if(l == 300 && c == 300) // { // int a = 0; // } LrColor pixel = LrColor::BLACK; Loading @@ -131,15 +123,11 @@ void LrSceneRayTracing::generateImagePart(int lOffset, int lNb) float u, v; LrRay ray; LrColor color; // tirer u et v dans le pixel (l, c) m_antialiasing->getCoordUV(m_antialiasing->getCoeffAA(),i,&u,&v); // cout<<"U avant : "<<u<<" V avant : "<<v<<endl; m_antialiasing->getCoordUV(coeffAA,i,&u,&v); u = ((c + u) / m_image->getWidth()) * 2 -1; v = ((l + v) / m_image->getHeight()) * 2 -1; // cout<<"U : "<<u<<" V : "<<v<<endl; ray = m_camera->getRay(u, v); color = computeImageRay(ray, m_nbRebonds); Loading @@ -160,6 +148,8 @@ void LrSceneRayTracing::generateImagePart(int lOffset, int lNb) } } // ############################################################################ LrColor LrSceneRayTracing::computeImageRay(const LrRay &ray, int nbRebonds) { LrColor colorResult = LrColor::BLACK; Loading Loading @@ -209,6 +199,8 @@ LrColor LrSceneRayTracing::computeImageRay(const LrRay &ray, int nbRebonds) return colorResult; } // ############################################################################ LrColor LrSceneRayTracing::computeFromSource(const LrRay &ray, LrHit &hit) { Loading Loading @@ -236,13 +228,17 @@ LrColor LrSceneRayTracing::computeFromSource(const LrRay &ray, LrHit &hit) if (m_binder->getIntersection(rayLight, NULL, 0.0f, dist) == false) { colorTmp += (((LrEntityLight*)(*itObjs))->getColor())*hit.optic->compute(rayLight,-ray.getDirection(),hit.normal,hit.tangent,hit.u,hit.v); colorTmp += (((LrEntityLight*)(*itObjs))->getColor())* hit.optic->compute(rayLight,-ray.getDirection(), hit.normal,hit.tangent, hit.u,hit.v); } } colorResult += colorTmp/nbRayOnLight; } } return colorResult /*/ m_lights.size()*/; return colorResult; } // ############################################################################