~james-gangur/sqee/trunk

« back to all changes in this revision

Viewing changes to tests/rpg/rndr/Gbuffers.hpp

  • Committer: james.gangur at gmail
  • Date: 2015-10-13 02:55:15 UTC
  • Revision ID: james.gangur@gmail.com-20151013025515-uj2rnpflxeyt6csf
Refactored Texture objects:
 - format, iFormat and preset are now passed to the ctor
 - allocate_storage is now responsible for setting up the texture
 - added a delete_object method, for saving video memory
 - allocate_storage now takes a mipmaps argument
 - buffer_memory now takes a data type argument
 - removed the mutable textures entirely
Refactored sq::Settings:
 - Settings are now stored in Boxed_Value objects, making supporting new types easier
 - Added Boxed_Value versions of the mod/get functions for use with chaiscript
All texture members are now stored as value types, rather than unique_ptrs
Refactored chaiscript files. More consistent and improved compile times.
Moved RPG's SkyBox, Ambient and Skylight objects into their own files
Tidied up most of the wcoe objects regarding direct state access
For rpg Object derived classes, prefer using value members over unique_ptrs
Fixed reflections, added new Reflects object to Renderer

Particles still need to be fixed

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
 
14
14
class Gbuffers final : NonCopyable {
15
15
friend class Lighting;
 
16
friend class Reflects;
16
17
friend class Pretties;
17
18
public:
18
19
    Gbuffers(const Renderer& _renderer);
19
20
 
20
21
    void update_settings();
21
22
 
22
 
    void setup_render_state();
 
23
    void setup_render_state_base();
 
24
    void setup_render_state_refl();
23
25
 
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();
31
33
 
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);
36
38
 
37
39
    void render_downscaled_depth();
38
40
 
40
42
    const Renderer& renderer;
41
43
 
42
44
    sq::FrameBuffer FB_baseGbuf;
 
45
    sq::FrameBuffer FB_reflGbuf;
43
46
    sq::FrameBuffer FB_depth;
44
47
 
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()};
53
58
 
54
59
    sq::Shader VS_gbuf_base_simple {gl::VERTEX_SHADER};
55
60
    sq::Shader VS_gbuf_base_skelly {gl::VERTEX_SHADER};