Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / Tuto_Image_Cuda / src / cpp / core / 02_Damier_Zoomable / moo / host / Damier.cu
diff --git a/WCudaMSE/Tuto_Image_Cuda/src/cpp/core/02_Damier_Zoomable/moo/host/Damier.cu b/WCudaMSE/Tuto_Image_Cuda/src/cpp/core/02_Damier_Zoomable/moo/host/Damier.cu
new file mode 100755 (executable)
index 0000000..52ba530
--- /dev/null
@@ -0,0 +1,136 @@
+#include <assert.h>\r
+\r
+#include "Damier.h"\r
+#include "Device.h"\r
+#include "MathTools.h"\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Declaration                                     *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Imported                *|\r
+ \*-------------------------------------*/\r
+\r
+__global__ void damier(uchar4* ptrDevPixels, int w, int h, DomaineMath domaineMath, int n, float t);\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Private                 *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Implementation                                  *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+/*-------------------------*\\r
+ |*    Constructeur        *|\r
+ \*-------------------------*/\r
+\r
+Damier::Damier(int w, int h, float dt, int n) :\r
+       variateurAnimation(IntervalF(0, 2 * PI), dt)\r
+    {\r
+    // Inputs\r
+    this->w = w;\r
+    this->h = h;\r
+    this->n = n;\r
+\r
+    // Tools\r
+    this->dg = dim3(8, 8, 1); // disons a optimiser\r
+    this->db = dim3(16, 16, 1); // disons a optimiser\r
+    this->t = 0;\r
+    ptrDomaineMathInit=new DomaineMath(0,0,2*PI,2*PI);\r
+\r
+    //Outputs\r
+    this->title = "[API Image Fonctionelle] : Damier zoomable CUDA";\r
+\r
+    // Check:\r
+    //print(dg, db);\r
+    Device::assertDim(dg, db);\r
+    assert(w == h);\r
+    }\r
+\r
+Damier::~Damier()\r
+    {\r
+   delete ptrDomaineMathInit;\r
+    }\r
+\r
+/*-------------------------*\\r
+ |*    Methode             *|\r
+ \*-------------------------*/\r
+\r
+/**\r
+ * Override\r
+ */\r
+void Damier::animationStep()\r
+    {\r
+    this->t = variateurAnimation.varierAndGet(); // in [0,2pi]\r
+    }\r
+\r
+/**\r
+ * Override\r
+ */\r
+void Damier::runGPU(uchar4* ptrDevPixels, const DomaineMath& domaineMath)\r
+    {\r
+    damier<<<dg,db>>>(ptrDevPixels,w,h,domaineMath,n,t);\r
+    }\r
+\r
+/*--------------*\\r
+ |*    get      *|\r
+ \*--------------*/\r
+\r
+/**\r
+ * Override\r
+ */\r
+DomaineMath* Damier::getDomaineMathInit(void)\r
+    {\r
+    return ptrDomaineMathInit;\r
+    }\r
+\r
+/**\r
+ * Override\r
+ */\r
+float Damier::getT(void)\r
+    {\r
+    return t;\r
+    }\r
+\r
+/**\r
+ * Override\r
+ */\r
+int Damier::getW(void)\r
+    {\r
+    return w;\r
+    }\r
+\r
+/**\r
+ * Override\r
+ */\r
+int Damier::getH(void)\r
+    {\r
+    return h;\r
+    }\r
+\r
+/**\r
+ * Override\r
+ */\r
+string Damier::getTitle(void)\r
+    {\r
+    return title;\r
+    }\r
+\r
+/*--------------------------------------*\\r
+ |*            Private                 *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    End                                             *|\r
+ \*---------------------------------------------------------------------*/\r
+\r