Ajout du squelette de Newton.
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / 03_Newton / moo / device / NewtonDevice.cu
1 #include <iostream>\r
2 \r
3 #include "Indice2D.h"\r
4 #include "IndiceTools.h"\r
5 #include "DomaineMath.h"\r
6 #include "cudaTools.h"\r
7 #include "Device.h"\r
8 \r
9 #include "NewtonMath.h"\r
10 \r
11 using std::cout;\r
12 using std::endl;\r
13 \r
14 __global__ void newton(uchar4* ptrDevPixels, int w, int h, DomaineMath domaineMath)\r
15     {\r
16     const int TID = Indice2D::tid();\r
17     const int NB_THREAD = Indice2D::nbThread();\r
18     const int WH = w * h;\r
19 \r
20     NewtonMath newtonMath;\r
21 \r
22     uchar4 color;\r
23     color.z = 255; // Par défaut, l'image est opaque.\r
24 \r
25     double x, y;\r
26     int pixelI, pixelJ;\r
27 \r
28     int s = TID;\r
29     while (s < WH)\r
30         {\r
31         IndiceTools::toIJ(s, w, &pixelI, &pixelJ); // update (pixelI, pixelJ)\r
32 \r
33         // (i,j) domaine ecran\r
34         // (x,y) domaine math\r
35         domaineMath.toXY(pixelI, pixelJ, &x, &y); //  (i,j) -> (x,y)\r
36 \r
37         newtonMath.colorXY(&color, x, y);\r
38 \r
39         ptrDevPixels[s] = color;\r
40 \r
41         s += NB_THREAD;\r
42         }\r
43     }\r