render_tools.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef DEPTHGUIDE_RENDER_TOOLS_H
  2. #define DEPTHGUIDE_RENDER_TOOLS_H
  3. #include "core/object_manager.h"
  4. #include "render_utility.h"
  5. #include "render_texture.h"
  6. #include <boost/container/small_vector.hpp>
  7. #include <optional>
  8. simple_rect calc_render_range(cv::Size img_size);
  9. class color_image_render {
  10. public:
  11. struct config_type {
  12. color_format fmt = COLOR_RGB;
  13. bool flip_y = false;
  14. float alpha = 1.0;
  15. std::optional<simple_rect> range;
  16. smart_cuda_stream *stream = nullptr;
  17. };
  18. void render(obj_name_type name, config_type conf);
  19. // note: use render_rgba() instead
  20. // void render_bw(const image_info_u8c1 &img, config_type conf);
  21. // void render_bw(obj_name_type name, config_type conf);
  22. // T = uchar{1-4}
  23. template<typename T>
  24. void render_rgba(const image_info_type<T> &img, config_type conf);
  25. // supports image_u8c{1-4}
  26. void render_rgba(obj_name_type name, config_type conf);
  27. // supports image_u8c1
  28. void render_nv12(const image_info_u8c1 &img, config_type conf);
  29. // supports image_u8c1
  30. void render_nv12(obj_name_type name, config_type conf);
  31. private:
  32. smart_texture img_tex;
  33. smart_texture ext_tex[2];
  34. void render_tex(cv::Size img_size, config_type conf);
  35. };
  36. class depth_image_render {
  37. public:
  38. struct config_type {
  39. bool flip_y = false;
  40. float alpha = 1.0;
  41. bool manual_depth_range = false;
  42. struct {
  43. float min = 0.15; // unit in meter
  44. float max = 10.0; // unit in meter
  45. } depth_range;
  46. smart_cuda_stream *stream = nullptr;
  47. };
  48. void render(obj_name_type name, config_type conf);
  49. private:
  50. color_image_render color_render;
  51. };
  52. class pc_render {
  53. public:
  54. struct config_type {
  55. struct {
  56. glm::mat4 transform = glm::mat4(1.0f);
  57. glm::vec3 color;
  58. float point_size = 1.0;
  59. } pc = {};
  60. struct {
  61. glm::mat4 transform = glm::mat4(1.0f);
  62. float fov = 60.0f;
  63. float near = 1.0f, far = 1000.0f; // clip range
  64. } camera = {};
  65. smart_cuda_stream *stream = nullptr;
  66. };
  67. void render(obj_name_type name, const config_type &conf);
  68. };
  69. #endif //DEPTHGUIDE_RENDER_TOOLS_H