Oxygen Engine
Modern C++ 3D Engine using OpenGL
Loading...
Searching...
No Matches
pbr.h
1#ifndef OE_RENDER_PBR
2#define OE_RENDER_PBR
3
4#include <memory>
5#include "texture.h"
6#include "cubemap.h"
7
8namespace oe::render
9{
15 class Pbr
16 {
17 public:
25 std::shared_ptr<Texture> getBRDFLut() const;
26
34 std::pair<std::shared_ptr<Texture>, std::shared_ptr<Texture>> getLTCTextures() const;
35
43 std::shared_ptr<Cubemap> generateIrradianceCubemap(Cubemap* source);
44
54 std::shared_ptr<Cubemap> generateSpecularCubemap(Cubemap* source, const uint32_t size = 256);
55
56 private:
57 mutable std::pair<std::shared_ptr<Texture>, std::shared_ptr<Texture>> _ltc_textures;
58 mutable std::shared_ptr<Texture> _brdf_texture;
59 };
60}
61#endif
Definition cubemap.h:9
Physically Based Rendering.
Definition pbr.h:16
std::shared_ptr< Cubemap > generateIrradianceCubemap(Cubemap *source)
Generate irradiance cubemap from a source cubemap irradiance cubemap simulate the diffuse part / ambi...
std::shared_ptr< Texture > getBRDFLut() const
Returns the BRDF integration lookup texture.
std::pair< std::shared_ptr< Texture >, std::shared_ptr< Texture > > getLTCTextures() const
Returns lookup textures needed to store Linearly Transformed Cosines values to make area lights.
std::shared_ptr< Cubemap > generateSpecularCubemap(Cubemap *source, const uint32_t size=256)
Generate specular cubemap from a cubemap.
Render related abstractions (Shader, Framebuffer, Cubemaps, Textures).
Definition opengl.h:12