9 #ifndef DUNE_DEFERRED_RENDERER
10 #define DUNE_DEFERRED_RENDERER
43 typedef std::map<UINT, texture*> buffer_collection;
44 typedef std::vector<ID3D11ShaderResourceView*> srv_collection;
46 buffer_collection buffers_;
52 ID3D11ShaderResourceView* overlay_;
56 ID3D11PixelShader* ps_deferred_;
57 ID3D11PixelShader* ps_overlay_;
72 void blit(ID3D11DeviceContext* context, ID3D11RenderTargetView* backbuffer);
75 ID3D11ShaderResourceView*
target(
const tstring& name)
const;
79 void overlay(ID3D11DeviceContext* context, ID3D11RenderTargetView* backbuffer);
82 void deferred(ID3D11DeviceContext* context, ID3D11RenderTargetView* backbuffer);
88 virtual void create(ID3D11Device* device);
90 void set_shader(ID3D11Device* device,
91 ID3DBlob* input_binary,
92 ID3D11VertexShader* vs_deferred,
93 ID3D11PixelShader* ps_deferred,
94 ID3D11PixelShader* ps_overlay,
98 virtual void destroy();
111 void start_capture(ID3D11Device* device,
size_t width,
size_t height,
size_t fps);
116 void render(ID3D11DeviceContext* context, ID3D11RenderTargetView* backbuffer, ID3D11DepthStencilView* dsv =
nullptr);
119 const buffer_collection&
buffers();
139 void show_target(ID3D11DeviceContext* context,
const tstring& name);
142 virtual void resize(UINT width, UINT height);
void stop_capture()
Stop capturing and finalize an MP4 video file.
Definition: deferred_renderer.cpp:177
void show_target(ID3D11DeviceContext *context, const tstring &name)
Select a render_target by name to display in a small overlay when rendering.
Definition: deferred_renderer.cpp:333
A base interface for a postprocessor pipeline.
Definition: postprocess.h:28
const buffer_collection & buffers()
Returns the map containing all buffers indexed by their registers.
Definition: deferred_renderer.cpp:387
The deferred renderer base class.
Definition: deferred_renderer.h:40
void start_capture(ID3D11Device *device, size_t width, size_t height, size_t fps)
Capture the backbuffer and write it to an MP4 video file.
Definition: deferred_renderer.cpp:169
void blit(ID3D11DeviceContext *context, ID3D11RenderTargetView *backbuffer)
Render a fullscreen triangle pass.
Definition: deferred_renderer.cpp:183
void clear_assigned(ID3D11DeviceContext *context)
Clear all registers that have been assigned previously.
Definition: deferred_renderer.cpp:356
void deferred(ID3D11DeviceContext *context, ID3D11RenderTargetView *backbuffer)
Render the deferred pass with an optional postprocessing pass.
Definition: deferred_renderer.cpp:199
ID3D11ShaderResourceView * target(const tstring &name) const
Returns a render_target of a given name.
Definition: deferred_renderer.cpp:319
void set_postprocessor(postprocessor *pp)
Set a postprocessor to use. If this isn't called or set to nullptr, the deferred renderer output is d...
Definition: deferred_renderer.cpp:226
A wrapper class for a sampler state.
Definition: shader_resource.h:49
void add_buffer(gbuffer &buffer, UINT slot)
Add a gbuffer to the deferred renderer buffer map.
Definition: deferred_renderer.cpp:370
void overlay(ID3D11DeviceContext *context, ID3D11RenderTargetView *backbuffer)
Render a selected target into a small preview window on top of the backbuffer.
Definition: deferred_renderer.cpp:231
Wrapper for a Direct3D texture object.
Definition: texture.h:25
A geometry buffer (collection of render_target objects).
Definition: gbuffer.h:30
A very simple mesh class with position-only vertex attributes.
Definition: simple_mesh.h:31
virtual void resize(UINT width, UINT height)
Resize the deferred_renderer's output to a new width/height .
Definition: deferred_renderer.cpp:338
void reassign_everything(ID3D11DeviceContext *context)
Reassigns all buffers in buffers_ to their respective registers.
Definition: deferred_renderer.cpp:350