#ifndef EXAMPLE_RENDER_H_
#define EXAMPLE_RENDER_H_

#include <atomic>  // C++11

//mode definitions now here 

#define SHOW_BUFFER_COLOR (0)
#define SHOW_BUFFER_NORMAL (1)
#define SHOW_BUFFER_POSITION (2)
#define SHOW_BUFFER_DEPTH (3)
#define SHOW_BUFFER_TEXCOORD (4)
#define SHOW_BUFFER_VARYCOORD (5)

#include "render-config.h"
#include "nanosg.h"
#include "mesh.h"
#include "material.h"

namespace example {

struct Asset {
  std::vector<Mesh<float> > meshes;
  std::vector<Material> materials;
  
  //tigra: add default material
  Material default_material;
  std::vector<Texture> textures;
};

class Renderer {
 public:
  Renderer() {}
  ~Renderer() {}

  /// Returns false when the rendering was canceled.
  static bool Render(float* rgba, float* aux_rgba, int *sample_counts, float quat[4],
              const nanosg::Scene<float, Mesh<float>> &scene, const Asset &asset, const RenderConfig& config,
                     std::atomic<bool>& cancel_flag,
                     int& _showBufferMode
                    );
};
};

#endif  // EXAMPLE_RENDER_H_