Commencement du labo Mandelbrot et Julia.
[GPU.git] / WCudaMSE / Tuto_Image_Cuda / src / cpp / core / 02_Damier_Zoomable / moo / host / Damier.cu
1 #include <assert.h>\r
2 \r
3 #include "Damier.h"\r
4 #include "Device.h"\r
5 #include "MathTools.h"\r
6 \r
7 /*----------------------------------------------------------------------*\\r
8  |*                     Declaration                                     *|\r
9  \*---------------------------------------------------------------------*/\r
10 \r
11 /*--------------------------------------*\\r
12  |*             Imported                *|\r
13  \*-------------------------------------*/\r
14 \r
15 __global__ void damier(uchar4* ptrDevPixels, int w, int h, DomaineMath domaineMath, int n, float t);\r
16 \r
17 /*--------------------------------------*\\r
18  |*             Public                  *|\r
19  \*-------------------------------------*/\r
20 \r
21 /*--------------------------------------*\\r
22  |*             Private                 *|\r
23  \*-------------------------------------*/\r
24 \r
25 /*----------------------------------------------------------------------*\\r
26  |*                     Implementation                                  *|\r
27  \*---------------------------------------------------------------------*/\r
28 \r
29 /*--------------------------------------*\\r
30  |*             Public                  *|\r
31  \*-------------------------------------*/\r
32 \r
33 /*-------------------------*\\r
34  |*     Constructeur        *|\r
35  \*-------------------------*/\r
36 \r
37 Damier::Damier(int w, int h, float dt, int n) :\r
38         variateurAnimation(IntervalF(0, 2 * PI), dt)\r
39     {\r
40     // Inputs\r
41     this->w = w;\r
42     this->h = h;\r
43     this->n = n;\r
44 \r
45     // Tools\r
46     this->dg = dim3(8, 8, 1); // disons a optimiser\r
47     this->db = dim3(16, 16, 1); // disons a optimiser\r
48     this->t = 0;\r
49     ptrDomaineMathInit= new DomaineMath(0,0,2*PI,2*PI);\r
50 \r
51     //Outputs\r
52     this->title = "[API Image Fonctionelle] : Damier zoomable CUDA";\r
53 \r
54     // Check:\r
55     //print(dg, db);\r
56     Device::assertDim(dg, db);\r
57     assert(w == h);\r
58     }\r
59 \r
60 Damier::~Damier()\r
61     {\r
62    delete ptrDomaineMathInit;\r
63     }\r
64 \r
65 /*-------------------------*\\r
66  |*     Methode             *|\r
67  \*-------------------------*/\r
68 \r
69 /**\r
70  * Override\r
71  */\r
72 void Damier::animationStep()\r
73     {\r
74     this->t = variateurAnimation.varierAndGet(); // in [0,2pi]\r
75     }\r
76 \r
77 /**\r
78  * Override\r
79  */\r
80 void Damier::runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath)\r
81     {\r
82     damier<<<dg,db>>>(ptrDevPixels,w,h,domaineMath,n,t);\r
83     }\r
84 \r
85 /*--------------*\\r
86  |*     get      *|\r
87  \*--------------*/\r
88 \r
89 /**\r
90  * Override\r
91  */\r
92 DomaineMath* Damier::getDomaineMathInit(void)\r
93     {\r
94     return ptrDomaineMathInit;\r
95     }\r
96 \r
97 /**\r
98  * Override\r
99  */\r
100 float Damier::getT(void)\r
101     {\r
102     return t;\r
103     }\r
104 \r
105 /**\r
106  * Override\r
107  */\r
108 int Damier::getW(void)\r
109     {\r
110     return w;\r
111     }\r
112 \r
113 /**\r
114  * Override\r
115  */\r
116 int Damier::getH(void)\r
117     {\r
118     return h;\r
119     }\r
120 \r
121 /**\r
122  * Override\r
123  */\r
124 string Damier::getTitle(void)\r
125     {\r
126     return title;\r
127     }\r
128 \r
129 /*--------------------------------------*\\r
130  |*             Private                 *|\r
131  \*-------------------------------------*/\r
132 \r
133 /*----------------------------------------------------------------------*\\r
134  |*                     End                                             *|\r
135  \*---------------------------------------------------------------------*/\r
136 \r