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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
//! This file was auto-generated. Do not modify manually.
#pragma once
namespace Generated
{
namespace ShaderPermutations
{
#ifndef ENABLE_FOREGROUND_AO_DEFINED
#define ENABLE_FOREGROUND_AO_DEFINED
enum ENABLE_FOREGROUND_AO
{
ENABLE_FOREGROUND_AO_0,
ENABLE_FOREGROUND_AO_1,
ENABLE_FOREGROUND_AO_COUNT,
};
#endif
#ifndef ENABLE_BACKGROUND_AO_DEFINED
#define ENABLE_BACKGROUND_AO_DEFINED
enum ENABLE_BACKGROUND_AO
{
ENABLE_BACKGROUND_AO_0,
ENABLE_BACKGROUND_AO_1,
ENABLE_BACKGROUND_AO_COUNT,
};
#endif
#ifndef ENABLE_DEPTH_THRESHOLD_DEFINED
#define ENABLE_DEPTH_THRESHOLD_DEFINED
enum ENABLE_DEPTH_THRESHOLD
{
ENABLE_DEPTH_THRESHOLD_0,
ENABLE_DEPTH_THRESHOLD_1,
ENABLE_DEPTH_THRESHOLD_COUNT,
};
#endif
#ifndef FETCH_GBUFFER_NORMAL_DEFINED
#define FETCH_GBUFFER_NORMAL_DEFINED
enum FETCH_GBUFFER_NORMAL
{
FETCH_GBUFFER_NORMAL_0,
FETCH_GBUFFER_NORMAL_1,
FETCH_GBUFFER_NORMAL_2,
FETCH_GBUFFER_NORMAL_COUNT,
};
#endif
};
struct CoarseAO_PS
{
void Create(DevicePointer Device);
void Release(DevicePointer Device);
GLSLPrograms::CoarseAO_PS& Get(ShaderPermutations::ENABLE_FOREGROUND_AO A, ShaderPermutations::ENABLE_BACKGROUND_AO B, ShaderPermutations::ENABLE_DEPTH_THRESHOLD C, ShaderPermutations::FETCH_GBUFFER_NORMAL D)
{
return m_Shader[A][B][C][D];
}
private:
GLSLPrograms::CoarseAO_PS m_Shader[ShaderPermutations::ENABLE_FOREGROUND_AO_COUNT][ShaderPermutations::ENABLE_BACKGROUND_AO_COUNT][ShaderPermutations::ENABLE_DEPTH_THRESHOLD_COUNT][ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT];
#if _WIN32
static_assert(ShaderPermutations::ENABLE_FOREGROUND_AO_COUNT == 2, "");
static_assert(ShaderPermutations::ENABLE_BACKGROUND_AO_COUNT == 2, "");
static_assert(ShaderPermutations::ENABLE_DEPTH_THRESHOLD_COUNT == 2, "");
static_assert(ShaderPermutations::FETCH_GBUFFER_NORMAL_COUNT == 3, "");
#endif
};
};
|