14
14
class Gbuffers final : NonCopyable {
15
15
friend class Lighting;
16
friend class Reflects;
16
17
friend class Pretties;
18
19
Gbuffers(const Renderer& _renderer);
20
21
void update_settings();
22
void setup_render_state();
23
void setup_render_state_base();
24
void setup_render_state_refl();
24
26
void bind_textures_base();
25
27
void bind_textures_refl();
29
31
void render_mskellys_base(bool _decals);
30
32
void render_decals_base();
32
void render_reflects_refl(bool _decals);
33
void render_msimples_refl(bool _decals);
34
void render_mskellys_refl(bool _decals);
35
void render_decals_refl();
34
void render_reflects_refl(const ReflectorData& _data, bool _decals);
35
void render_msimples_refl(const ReflectorData& _data, bool _decals);
36
void render_mskellys_refl(const ReflectorData& _data, bool _decals);
37
void render_decals_refl(const ReflectorData& _data);
37
39
void render_downscaled_depth();
40
42
const Renderer& renderer;
42
44
sq::FrameBuffer FB_baseGbuf;
45
sq::FrameBuffer FB_reflGbuf;
43
46
sq::FrameBuffer FB_depth;
45
// todo: make non-pointers
46
unique_ptr<sq::Texture2D> TEX_baseDiff;
47
unique_ptr<sq::Texture2D> TEX_baseSurf;
48
unique_ptr<sq::Texture2D> TEX_baseNorm;
49
unique_ptr<sq::Texture2D> TEX_baseSpec;
50
unique_ptr<sq::Texture2D> TEX_baseDpSt;
51
unique_ptr<sq::Texture2D> TEX_depHalf;
52
unique_ptr<sq::Texture2D> TEX_depQter;
48
sq::Texture2D TEX_baseDiff {gl::RGB, gl::RGB8, sq::Texture::LinearClamp()};
49
sq::Texture2D TEX_baseSurf {gl::RGB, gl::RGB10, sq::Texture::LinearClamp()};
50
sq::Texture2D TEX_baseNorm {gl::RGB, gl::RGB10, sq::Texture::LinearClamp()};
51
sq::Texture2D TEX_baseSpec {gl::RGB, gl::RGB8, sq::Texture::LinearClamp()};
52
sq::Texture2D TEX_baseDpSt {gl::DEPTH_STENCIL, gl::DEPTH24_STENCIL8, sq::Texture::LinearClamp()};
53
sq::Texture2D TEX_reflDiff {gl::RGB, gl::RGB8, sq::Texture::LinearClamp()};
54
sq::Texture2D TEX_reflSurf {gl::RGB, gl::RGB8, sq::Texture::LinearClamp()};
55
sq::Texture2D TEX_reflDpSt {gl::DEPTH_STENCIL, gl::DEPTH24_STENCIL8, sq::Texture::LinearClamp()};
56
sq::Texture2D TEX_depHalf {gl::DEPTH_COMPONENT, gl::DEPTH_COMPONENT24, sq::Texture::LinearClamp()};
57
sq::Texture2D TEX_depQter {gl::DEPTH_COMPONENT, gl::DEPTH_COMPONENT24, sq::Texture::LinearClamp()};
54
59
sq::Shader VS_gbuf_base_simple {gl::VERTEX_SHADER};
55
60
sq::Shader VS_gbuf_base_skelly {gl::VERTEX_SHADER};