MobileRT  1.0
A multi platform C++ CPU progressive Ray Tracer.
Renderer.hpp
Go to the documentation of this file.
1 #ifndef MOBILERT_RENDERER_HPP
2 #define MOBILERT_RENDERER_HPP
3 
4 #include "MobileRT/Camera.hpp"
5 #include "MobileRT/Sampler.hpp"
6 #include "MobileRT/Shader.hpp"
8 #include <cmath>
9 #include <thread>
10 
11 namespace MobileRT {
17  class Renderer final {
18  public:
19  ::std::unique_ptr<Camera> camera_ {};
20  ::std::unique_ptr<Shader> shader_ {};
21 
22  private:
23  ::std::unique_ptr<Sampler> samplerPixel_ {};
24  ::std::int32_t blockSizeX_ {};
25  ::std::int32_t blockSizeY_ {};
26  ::std::int32_t sample_ {};
27  const ::std::int32_t width_ {};
28  const ::std::int32_t height_ {};
29  const ::std::int32_t domainSize_ {};
30  const ::std::int32_t resolution_ {};
31  ::std::int32_t samplesPixel_ {};
32  ::std::atomic<::std::int32_t> block_ {};
33 
34  private:
35  void renderScene(::std::int32_t *bitmap, ::std::int32_t tid);
36  float getTile(::std::int32_t sample);
37 
38  public:
39  explicit Renderer () = delete;
40 
41  explicit Renderer(::std::unique_ptr<Shader> shader,
42  ::std::unique_ptr<Camera> camera,
43  ::std::unique_ptr<Sampler> samplerPixel,
44  ::std::int32_t width, ::std::int32_t height,
45  ::std::int32_t samplesPixel);
46 
47  Renderer(const Renderer &renderer) = delete;
48 
49  Renderer(Renderer &&renderer) noexcept = delete;
50 
51  ~Renderer() = default;
52 
53  Renderer &operator=(const Renderer &renderer) = delete;
54 
55  Renderer &operator=(Renderer &&renderer) noexcept = delete;
56 
57  void renderFrame(::std::int32_t *bitmap, ::std::int32_t numThreads);
58 
59  void stopRender();
60 
61  ::std::int32_t getSample() const;
62 
63  ::std::uint64_t getTotalCastedRays() const;
64  };
65 }//namespace MobileRT
66 
67 #endif //MOBILERT_RENDERER_HPP
void renderFrame(::std::int32_t *bitmap, ::std::int32_t numThreads)
Definition: Renderer.cpp:53
::std::atomic<::std::int32_t > block_
Definition: Renderer.hpp:32
::std::uint64_t getTotalCastedRays() const
Definition: Renderer.cpp:204
::std::int32_t getSample() const
Definition: Renderer.cpp:177
::std::int32_t blockSizeY_
Definition: Renderer.hpp:25
::std::unique_ptr< Camera > camera_
Definition: Renderer.hpp:19
void renderScene(::std::int32_t *bitmap, ::std::int32_t tid)
Definition: Renderer.cpp:107
const ::std::int32_t height_
Definition: Renderer.hpp:28
::std::int32_t samplesPixel_
Definition: Renderer.hpp:31
const ::std::int32_t domainSize_
Definition: Renderer.hpp:29
float getTile(::std::int32_t sample)
Definition: Renderer.cpp:189
Renderer & operator=(const Renderer &renderer)=delete
void stopRender()
Definition: Renderer.cpp:93
Definition: Renderer.hpp:17
const ::std::int32_t width_
Definition: Renderer.hpp:27
::std::unique_ptr< Shader > shader_
Definition: Renderer.hpp:20
::std::int32_t blockSizeX_
Definition: Renderer.hpp:24
const ::std::int32_t resolution_
Definition: Renderer.hpp:30
::std::unique_ptr< Sampler > samplerPixel_
Definition: Renderer.hpp:23
::std::int32_t sample_
Definition: Renderer.hpp:26
Definition: AABB.cpp:105