MobileRT  1.0
A multi platform C++ CPU progressive Ray Tracer.
MobileRT::Renderer Class Referencefinal

#include <Renderer.hpp>

Collaboration diagram for MobileRT::Renderer:
Collaboration graph

Public Member Functions

 Renderer ()=delete
 
 Renderer (::std::unique_ptr< Shader > shader, ::std::unique_ptr< Camera > camera, ::std::unique_ptr< Sampler > samplerPixel, ::std::int32_t width, ::std::int32_t height, ::std::int32_t samplesPixel)
 
 Renderer (const Renderer &renderer)=delete
 
 Renderer (Renderer &&renderer) noexcept=delete
 
 ~Renderer ()=default
 
Rendereroperator= (const Renderer &renderer)=delete
 
Rendereroperator= (Renderer &&renderer) noexcept=delete
 
void renderFrame (::std::int32_t *bitmap, ::std::int32_t numThreads)
 
void stopRender ()
 
::std::int32_t getSample () const
 
::std::uint64_t getTotalCastedRays () const
 

Public Attributes

::std::unique_ptr< Cameracamera_ {}
 
::std::unique_ptr< Shadershader_ {}
 

Private Member Functions

void renderScene (::std::int32_t *bitmap, ::std::int32_t tid)
 
float getTile (::std::int32_t sample)
 

Private Attributes

::std::unique_ptr< SamplersamplerPixel_ {}
 
::std::int32_t blockSizeX_ {}
 
::std::int32_t blockSizeY_ {}
 
::std::int32_t sample_ {}
 
const ::std::int32_t width_ {}
 
const ::std::int32_t height_ {}
 
const ::std::int32_t domainSize_ {}
 
const ::std::int32_t resolution_ {}
 
::std::int32_t samplesPixel_ {}
 
::std::atomic<::std::int32_t > block_ {}
 

Detailed Description

The main class of the Ray Tracer engine. After setup this object, it provides methods to start and stop the rendering process of a scene.

Constructor & Destructor Documentation

◆ Renderer() [1/4]

MobileRT::Renderer::Renderer ( )
explicitdelete

◆ Renderer() [2/4]

MobileRT::Renderer::Renderer ( ::std::unique_ptr< Shader shader,
::std::unique_ptr< Camera camera,
::std::unique_ptr< Sampler samplerPixel,
::std::int32_t  width,
::std::int32_t  height,
::std::int32_t  samplesPixel 
)
explicit

◆ Renderer() [3/4]

MobileRT::Renderer::Renderer ( const Renderer renderer)
delete

◆ Renderer() [4/4]

MobileRT::Renderer::Renderer ( Renderer &&  renderer)
deletenoexcept

◆ ~Renderer()

MobileRT::Renderer::~Renderer ( )
default

Member Function Documentation

◆ getSample()

std::int32_t Renderer::getSample ( ) const

Gets the number of samples per pixel already rendered.

Returns
The current number of samples per pixel.
Here is the caller graph for this function:

◆ getTile()

float Renderer::getTile ( ::std::int32_t  sample)
private

Helper method which calculates a random value between 0 and 1.
This method never repeats the calculated value for the same given sample.

Parameters
sampleThe current sample of samples per pixel.
Returns
A random value between 0 and 1.

◆ getTotalCastedRays()

std::uint64_t Renderer::getTotalCastedRays ( ) const

Helper method that calculates the total number of casted rays in the scene.

Returns
The total number of casted rays.

◆ operator=() [1/2]

Renderer& MobileRT::Renderer::operator= ( const Renderer renderer)
delete

◆ operator=() [2/2]

Renderer& MobileRT::Renderer::operator= ( Renderer &&  renderer)
deletenoexcept

◆ renderFrame()

void Renderer::renderFrame ( ::std::int32_t *  bitmap,
::std::int32_t  numThreads 
)

Starts the rendering process of the scene into a bitmap.

Parameters
bitmapThe bitmap where the rendered scene should be put.
numThreadsThe number of threads to use during the rendering process.
Here is the call graph for this function:

◆ renderScene()

void Renderer::renderScene ( ::std::int32_t *  bitmap,
::std::int32_t  tid 
)
private

Helper method which a thread renders the scene into the bitmap.

Parameters
bitmapThe bitmap where the rendered scene should be put.
tidThe thread id.
Here is the call graph for this function:

◆ stopRender()

void Renderer::stopRender ( )

Stops the rendering process.

Member Data Documentation

◆ block_

::std::atomic<::std::int32_t> MobileRT::Renderer::block_ {}
private

◆ blockSizeX_

::std::int32_t MobileRT::Renderer::blockSizeX_ {}
private

◆ blockSizeY_

::std::int32_t MobileRT::Renderer::blockSizeY_ {}
private

◆ camera_

::std::unique_ptr<Camera> MobileRT::Renderer::camera_ {}

◆ domainSize_

const ::std::int32_t MobileRT::Renderer::domainSize_ {}
private

◆ height_

const ::std::int32_t MobileRT::Renderer::height_ {}
private

◆ resolution_

const ::std::int32_t MobileRT::Renderer::resolution_ {}
private

◆ sample_

::std::int32_t MobileRT::Renderer::sample_ {}
private

◆ samplerPixel_

::std::unique_ptr<Sampler> MobileRT::Renderer::samplerPixel_ {}
private

◆ samplesPixel_

::std::int32_t MobileRT::Renderer::samplesPixel_ {}
private

◆ shader_

::std::unique_ptr<Shader> MobileRT::Renderer::shader_ {}

◆ width_

const ::std::int32_t MobileRT::Renderer::width_ {}
private

The documentation for this class was generated from the following files: