-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSSSR.h
58 lines (41 loc) · 1.45 KB
/
SSSR.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef SSSR_H
#define SSSR_H
#include <D3DApp.h>
class SSSR
{
public:
UINT mWidth;
UINT mHeight;
ID3D11ComputeShader* mComputeHierarchicalDepthBufferCS;
ID3D11ComputeShader* mHierarchicalRayMarchingCS;
ID3D11UnorderedAccessView* mHierarchicalDepthBufferUAV;
ID3D11ShaderResourceView* mHierarchicalDepthBufferSRV;
ID3D11UnorderedAccessView* mUAV;
ID3D11ShaderResourceView* mSRV;
struct ConstantBuffer
{
XMFLOAT4X4 view;
XMFLOAT4X4 ViewInverse;
XMFLOAT4X4 proj;
XMFLOAT4X4 ProjInverse;
XMFLOAT4X4 ViewProjInverse;
UINT FrameIndex;
XMFLOAT3 padding;
};
static_assert((sizeof(ConstantBuffer) % 16) == 0, "constant buffer size must be 16-byte aligned");
ID3D11Buffer* mHierarchicalRayMarchingCB;
ID3D11Buffer* mSobolBuffer;
ID3D11Buffer* mRankingTileBuffer;
ID3D11Buffer* mScramblingTileBuffer;
ID3D11ShaderResourceView* mSobolSRV;
ID3D11ShaderResourceView* mRankingTileSRV;
ID3D11ShaderResourceView* mScramblingTileSRV;
DebugQuad mDebugQuad;
SSSR();
~SSSR();
void init(ID3D11Device* device, UINT width, UINT height);
void OnResize(ID3D11Device* device, UINT width, UINT height);
void ComputeHierarchicalDepthBuffer(ID3D11Device* device, ID3D11DeviceContext* context, ID3D11ShaderResourceView* depth);
void draw(ID3D11DeviceContext* context, const CameraObject& camera, ID3D11ShaderResourceView* LightPass, ID3D11ShaderResourceView* DepthBufferHierarchy, ID3D11ShaderResourceView* normals, UINT FrameIndex);
};
#endif // SSSR_H