Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / Tuto_Image_Cuda / src / cpp / core / 02_Damier_Zoomable / moo / device / damierDevice.cu
1 #include "Indice2D.h"\r
2 #include "IndiceTools.h"\r
3 #include "DomaineMath.h"\r
4 #include "cudaTools.h"\r
5 #include "Device.h"\r
6 #include "DamierMath.h"\r
7 \r
8 \r
9 \r
10 /*----------------------------------------------------------------------*\\r
11  |*                     Declaration                                     *|\r
12  \*---------------------------------------------------------------------*/\r
13 \r
14 /*--------------------------------------*\\r
15  |*             Imported                *|\r
16  \*-------------------------------------*/\r
17 \r
18 /*--------------------------------------*\\r
19  |*             Public                  *|\r
20  \*-------------------------------------*/\r
21 \r
22 __global__ void damier(uchar4* ptrDevPixels,int w, int h,DomaineMath domaineMath, int n,float t);\r
23 \r
24 /*--------------------------------------*\\r
25  |*             Private                 *|\r
26  \*-------------------------------------*/\r
27 \r
28 \r
29 \r
30 /*----------------------------------------------------------------------*\\r
31  |*                     Implementation                                  *|\r
32  \*---------------------------------------------------------------------*/\r
33 \r
34 /*--------------------------------------*\\r
35  |*             Public                  *|\r
36  \*-------------------------------------*/\r
37 \r
38 /*--------------------------------------*\\r
39  |*             Private                 *|\r
40  \*-------------------------------------*/\r
41 \r
42 __global__ void damier(uchar4* ptrDevPixels, int w, int h, DomaineMath domaineMath, int n, float t)\r
43     {\r
44     DamierMath damierMath = DamierMath(n);\r
45 \r
46     const int TID = Indice2D::tid();\r
47     const int NB_THREAD = Indice2D::nbThread();\r
48 \r
49     const int WH=w*h;\r
50 \r
51     uchar4 color;\r
52 \r
53     double x;\r
54     double y;\r
55 \r
56     int pixelI;\r
57     int pixelJ;\r
58 \r
59     int s = TID;\r
60     while (s < WH)\r
61         {\r
62         IndiceTools::toIJ(s, w, &pixelI, &pixelJ); // update (pixelI, pixelJ)\r
63 \r
64         // (i,j) domaine ecran\r
65         // (x,y) domaine math\r
66         domaineMath.toXY(pixelI, pixelJ, &x, &y); //  (i,j) -> (x,y)\r
67 \r
68         damierMath.colorXY(&color,x, y,t); // update color\r
69 \r
70         ptrDevPixels[s] = color;\r
71 \r
72         s += NB_THREAD;\r
73         }\r
74 \r
75     }\r
76 \r
77 /*----------------------------------------------------------------------*\\r
78  |*                     End                                             *|\r
79  \*---------------------------------------------------------------------*/\r
80 \r