GPU-Accelerated Coverage  0.1.0
Compute coverage tours for known environment with articulated objects on GPU
CostMapRenderer.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_COSTMAPRENDERER_H_
32 #define INCLUDE_ARTICULATION_COSTMAPRENDERER_H_
33 
34 #include <gpu_coverage/AbstractRenderer.h>
35 #include <gpu_coverage/CameraOrtho.h>
36 #include <gpu_coverage/CoordinateAxes.h>
37 
38 namespace gpu_coverage {
39 
41 public:
42  CostMapRenderer(const Scene * const scene, const Node * const projectionPlane,
43  const bool renderToWindow, const bool visual);
44  virtual ~CostMapRenderer();
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  inline const AbstractCamera * getCamera() const {
60  return camera;
61  }
62 
63 protected:
64  const bool renderToWindow;
65  const bool renderVisual;
66  AbstractCamera *camera;
67  Node * cameraNode;
68  Node * floorNode;
69  Node * floorProjectionNode;
70  Node * planeNode;
71  ProgramDistanceMapSeed progSeed;
72  ProgramDistanceMapJFA progJFA;
73  ProgramCostMap progCostMap;
74  ProgramCostMapVisual * progCostMapVisual;
75  ProgramShowTexture *progShowTexture;
76  const int width, height;
77  GLuint framebuffer;
78  GLuint textures[4];
79  GLuint vao;
80  GLuint vbo;
81  enum TextureRole {
82  SWAP1 = 0,
83  SWAP2 = 1,
84  OUTPUT = 2,
85  VISUAL = 3
86  };
87 };
88 
89 } /* namespace gpu_coverage */
90 
91 #endif /* INCLUDE_ARTICULATION_COSTMAPRENDERER_H_ */
const int & getTextureWidth() const
Width of the result texture.
Definition: CostMapRenderer.h:53
Definition: Programs.h:268
Definition: Programs.h:308
virtual void display()
Renders the scene.
Definition: Programs.h:321
const GLuint & getTexture() const
Returns the OpenGL texture ID of the result texture.
Definition: CostMapRenderer.h:47
const int & getTextureHeight() const
Height of the result texture.
Definition: CostMapRenderer.h:56
Scene graph corresponding to Assimp&#39;s aiScene.
Definition: Scene.h:59
Scene graph node, corresponding to Assimp&#39;s aiNode.
Definition: Node.h:52
const Scene *const scene
Pointer to the scene to be rendered.
Definition: AbstractRenderer.h:101
Definition: Programs.h:281
Abstract superclass for all renderers.
Definition: AbstractRenderer.h:45
Definition: AbstractCamera.h:41
Abstract superclass for all cameras.
Definition: AbstractCamera.h:48
Definition: Programs.h:378
Definition: CostMapRenderer.h:40