The Dirtchamber
A mixed reality testing environment for real-time global illumination algorithms
|
A Delta Radiance Field of an SVO necessary for Delta Voxel Cone Tracing (DVCT) More...
#include <sparse_voxel_octree.h>
Public Member Functions | |
virtual void | destroy () |
Destroy the shader_resource and free all memory. | |
virtual void | to_ps (ID3D11DeviceContext *context, UINT volume_start_slot) |
Upload the shader resource to register slot of a pixel shader. | |
Public Member Functions inherited from dune::sparse_voxel_octree | |
void | set_shader_voxelize (ID3D11VertexShader *vs, ID3D11GeometryShader *gs, ID3D11PixelShader *ps) |
Set the complete voxelization shader. More... | |
void | set_shader_inject (ID3D11VertexShader *vs, ID3D11PixelShader *ps, UINT rsm_start_slot) |
Set the complete injection shader. More... | |
void | voxelize (ID3D11DeviceContext *context, gilga_mesh &mesh, bool clear=true) |
Voxelize a mesh into a volume with normals and an occupied marker. If clear is true, the volume is cleared before voxelization. | |
virtual void | inject (ID3D11DeviceContext *context, directional_light &light) |
Inject a bounce from directional_light into the SVO. | |
void | filter (ID3D11DeviceContext *context) |
Pre-filter (i.e. mip-map) the SVO. | |
cb_gi_parameters & | parameters () |
Return local cbuffer parameters. | |
const cb_gi_parameters & | parameters () const |
Return local cbuffer parameters. | |
void | set_model_matrix (ID3D11DeviceContext *context, const DirectX::XMFLOAT4X4 &model, const DirectX::XMFLOAT3 &svo_min, const DirectX::XMFLOAT3 &svo_max, UINT svo_parameters_slot) |
Set/get the world -> SVO matrix, which transforms world coordinates to SVO volume coordinates. | |
const DirectX::XMFLOAT4X4 & | world_to_svo () const |
Set/get the world -> SVO matrix, which transforms world coordinates to SVO volume coordinates. | |
Public Member Functions inherited from dune::shader_resource | |
virtual void | to_vs (ID3D11DeviceContext *context, UINT slot) |
Upload the shader resource to register slot of a vertex shader. | |
virtual void | to_gs (ID3D11DeviceContext *context, UINT slot) |
Upload the shader resource to register slot of a geometry shader. | |
virtual void | to_cs (ID3D11DeviceContext *context, UINT slot) |
Upload the shader resource to register slot of a compute shader. | |
A Delta Radiance Field of an SVO necessary for Delta Voxel Cone Tracing (DVCT)
This class is an implementation of [Franke 2014]. A DLPV is an LPV that extracts the difference in illumination caused by the introduction of an additional object into a scene. It can be used to correct for this difference, for instance in augmented reality applications.
The mechanic works like this: instead of injecting one RSM, two a rendered. One is rendered with a scene, the other with the same scene and an additional object. By injecting the latter first, and then injecting the former negatively, the delta is extracted and propagated in the volume.
A DLPV also injects direct light to form out rough shadow blobs. Propagation of direct and indirect injects is independend from one another.