Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / Tuto_Image_Cuda / src / cpp / core / 01_Vague_smart / moo / device / VagueDevice.cu
1 #include "Indice2D.h"\r
2 #include "IndiceTools.h"\r
3 #include "cudaTools.h"\r
4 #include "Device.h"\r
5 \r
6 #include "VagueMath.h"\r
7 \r
8 // Attention :  Choix du nom est impotant!\r
9 //              VagueDevice.cu et non Vague.cu\r
10 //              Dans ce dernier cas, problème de linkage, car le nom du .cu est le meme que le nom d'un .cpp (host)\r
11 //              On a donc ajouter Device (ou n'importequoi) pour que les noms soient diffĂ©rents!\r
12 \r
13 /*----------------------------------------------------------------------*\\r
14  |*                     Declaration                                     *|\r
15  \*---------------------------------------------------------------------*/\r
16 \r
17 /*--------------------------------------*\\r
18  |*             Public                  *|\r
19  \*-------------------------------------*/\r
20 \r
21 __global__ void vague(uchar4* ptrDevPixels,int w, int h,float t);\r
22 \r
23 /*--------------------------------------*\\r
24  |*             Private                 *|\r
25  \*-------------------------------------*/\r
26 \r
27 /*----------------------------------------------------------------------*\\r
28  |*                     Implementation                                  *|\r
29  \*---------------------------------------------------------------------*/\r
30 \r
31 /*--------------------------------------*\\r
32  |*             Public                  *|\r
33  \*-------------------------------------*/\r
34 \r
35 __global__ void vague(uchar4* ptrDevPixels, int w, int h, float t)\r
36     {\r
37     VagueMath vagueMath = VagueMath(w, h);\r
38 \r
39     const int TID = Indice2D::tid();\r
40     const int NB_THREAD = Indice2D::nbThread();\r
41 \r
42     const int WH=w*h;\r
43 \r
44     uchar4 color;\r
45 \r
46     int pixelI;\r
47     int pixelJ;\r
48 \r
49     int s = TID;\r
50     while (s < WH)\r
51         {\r
52         IndiceTools::toIJ(s, w, &pixelI, &pixelJ); // update (pixelI, pixelJ)\r
53 \r
54         vagueMath.colorIJ(&color,pixelI, pixelJ, t);    // update color\r
55         ptrDevPixels[s] = color;\r
56 \r
57         s += NB_THREAD;\r
58         }\r
59     }\r
60 \r
61 /*--------------------------------------*\\r
62  |*             Private                 *|\r
63  \*-------------------------------------*/\r
64 \r
65 /*----------------------------------------------------------------------*\\r
66  |*                     End                                             *|\r
67  \*---------------------------------------------------------------------*/\r
68 \r