1
0
Fork 0
Univerxel/src/client/render/Pipeline.hpp

45 lines
1.0 KiB
C++

#pragma once
#include "gl/pass/VoxelProgram.hpp"
struct GLFWwindow;
class Camera;
namespace render {
/// Handle rendering passes and params
class Pipeline {
public:
/// Rendering options
struct options {
/// Voxel passes
pass::VoxelProgram::options voxel;
/// Display skybox
bool skybox = true;
/// Display only wires
bool wireframe = false;
/// Texture pack name
std::string textures = "1024-realistic";
/// Textures quality
float mipMapLOD = -.5;
/// Textures anisotropic mapping
int anisotropy = 0;
/// Depth color
glm::vec4 clear_color;
};
virtual ~Pipeline() { }
/// Start new frame and setup
virtual void beginFrame() = 0;
/// Apply postprocessing
virtual void endPass() = 0;
/// Swap displayed image
virtual void swapBuffer(GLFWwindow*) = 0;
/// Apply camera matrices
virtual void lookFrom(const Camera&) = 0;
virtual void setClearColor(glm::vec4) = 0;
};
}