GPU-Accelerated Coverage  0.1.0
Compute coverage tours for known environment with articulated objects on GPU
BellmanFordRenderer.h
1 /*
2  * Copyright (c) 2018, Stefan Osswald
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * * Redistributions of source code must retain the above copyright notice, this
9  * list of conditions and the following disclaimer.
10  *
11  * * Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * * Neither the name of the copyright holder nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #ifndef INCLUDE_ARTICULATION_BELLMANFORDRENDERER_H_
32 #define INCLUDE_ARTICULATION_BELLMANFORDRENDERER_H_
33 
34 #include <gpu_coverage/AbstractRenderer.h>
35 #include <gpu_coverage/CostMapRenderer.h>
36 #include <gpu_coverage/Dot.h>
37 
38 namespace gpu_coverage {
39 
41 public:
42  BellmanFordRenderer(const Scene * const scene, const CostMapRenderer * const costmapRenderer,
43  const bool renderToWindow, const bool visual);
45 
46  virtual void display();
47  inline const GLuint& getTexture() const {
48  return textures[OUTPUT];
49  }
50  inline const GLuint& getVisualTexture() const {
51  return textures[VISUAL];
52  }
53  inline const int& getTextureWidth() const {
54  return width;
55  }
56  inline const int& getTextureHeight() const {
57  return height;
58  }
59 
60  inline void setRobotPosition(const glm::mat4x4& worldTransform) {
61  robotWorldTransform = worldTransform;
62  }
63 
64 protected:
65  const CostMapRenderer * const costmapRenderer;
66  const bool renderToWindow;
67  const bool renderVisual;
68  ProgramBellmanFordInit progInit;
69  ProgramBellmanFordStep progStep;
70  ProgramCounterToFB progCounterToFB;
71  ProgramShowTexture *progShowTexture;
72  ProgramVisualizeIntTexture *progVisualizeIntTexture;
73  const int width, height;
74  const size_t maxIterations;
75  GLuint framebuffer;
76  GLuint textures[5];
77  GLuint vao;
78  GLuint vbo;
79  GLuint counterBuffer;
80  GLuint pbo[4];
81  const size_t numPbo;
82  Dot robotSeedDot;
83  glm::mat4x4 robotWorldTransform;
84  glm::vec4 clearColor;
85  enum TextureRole {
86  SWAP1 = 0,
87  SWAP2 = 1,
88  COUNTER = 2, // 1x1 texture for counter transfer to PBO
89  OUTPUT = 3, // output as R32I
90  VISUAL = 4 // output color-coded
91  };
92 };
93 
94 } // namespace gpu_coverage
95 
96 #endif /* INCLUDE_ARTICULATION_BELLMANFORDRENDERER_H_ */
Definition: Programs.h:349
virtual void display()
Renders the scene.
Renders a single dot at the origin of the coordinate system.
Definition: Dot.h:42
Scene graph corresponding to Assimp&#39;s aiScene.
Definition: Scene.h:59
const int & getTextureHeight() const
Height of the result texture.
Definition: BellmanFordRenderer.h:56
const Scene *const scene
Pointer to the scene to be rendered.
Definition: AbstractRenderer.h:101
Definition: BellmanFordRenderer.h:40
const int & getTextureWidth() const
Width of the result texture.
Definition: BellmanFordRenderer.h:53
Abstract superclass for all renderers.
Definition: AbstractRenderer.h:45
Definition: AbstractCamera.h:41
const GLuint & getTexture() const
Returns the OpenGL texture ID of the result texture.
Definition: BellmanFordRenderer.h:47
Definition: Programs.h:334
Definition: Programs.h:378
Definition: CostMapRenderer.h:40
Definition: Programs.h:402