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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
-- Test script file
TestGlobalRSDesc = TestGlobalPSO.GraphicsPipeline.RasterizerDesc
assert( TestGlobalPSO.Name == "PSO-TestRS")
assert( TestGlobalRSDesc.FillMode == "FILL_MODE_WIREFRAME")
assert( TestGlobalRSDesc.CullMode == "CULL_MODE_FRONT")
assert( TestGlobalRSDesc.FrontCounterClockwise == true)
assert( TestGlobalRSDesc.DepthBias == 64)
assert( TestGlobalRSDesc.DepthBiasClamp == 98.0)
assert( TestGlobalRSDesc.SlopeScaledDepthBias == 12.5)
assert( TestGlobalRSDesc.DepthClipEnable == false)
assert( TestGlobalRSDesc.ScissorEnable == false)
assert( TestGlobalRSDesc.AntialiasedLineEnable == true)
RSDesc =
{
FillMode = "FILL_MODE_WIREFRAME",
CullMode = "CULL_MODE_BACK",
FrontCounterClockwise = true,
DepthBias = 32,
DepthBiasClamp = 63.0,
SlopeScaledDepthBias = 31.25,
DepthClipEnable = true,
ScissorEnable = false,
AntialiasedLineEnable = true,
}
TrivialVS = Shader.Create{
Source =
[[void VSMain(out float4 pos : SV_Position)
{
pos = float4(0.0, 0.0, 0.0, 0.0);
}]],
EntryPoint = "VSMain",
SourceLanguage = "SHADER_SOURCE_LANGUAGE_HLSL",
Desc = {
ShaderType = "SHADER_TYPE_VERTEX",
Name = "TrivialVS (RasterizerStateTest.lua)"
}
}
TrivialPS = Shader.Create{
Source =
[[void PSMain(out float4 col : SV_TARGET)
{
col = float4(0.0, 0.0, 0.0, 0.0);
}]],
EntryPoint = "PSMain",
SourceLanguage = "SHADER_SOURCE_LANGUAGE_HLSL",
Desc = {
ShaderType = "SHADER_TYPE_PIXEL",
Name = "TrivialPS (RasterizerStateTest.lua)"
}
}
PSODesc =
{
GraphicsPipeline =
{
pVS = TrivialVS,
pPS = TrivialPS,
RasterizerDesc = RSDesc,
RTVFormats = "TEX_FORMAT_RGBA8_UNORM",
DSVFormat = "TEX_FORMAT_D32_FLOAT",
PrimitiveTopology = "PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"
}
}
TestRS_PSO = PipelineState.Create(PSODesc)
--TestRS2 = RasterizerState.Create(RSDesc)
TestRS = TestRS_PSO.GraphicsPipeline.RasterizerDesc
assert( TestRS.FillMode == "FILL_MODE_WIREFRAME")
assert( TestRS.CullMode == "CULL_MODE_BACK")
assert( TestRS.FrontCounterClockwise == true)
assert( TestRS.DepthBias == 32)
assert( TestRS.DepthBiasClamp == 63.0)
assert( TestRS.SlopeScaledDepthBias == 31.25)
assert( TestRS.DepthClipEnable == true)
assert( TestRS.ScissorEnable == false)
assert( TestRS.AntialiasedLineEnable == true)
Context.SetPipelineState(TestRS_PSO)
--Context.SetRasterizerState(TestRS)
FillModes =
{
"FILL_MODE_WIREFRAME",
"FILL_MODE_SOLID"
}
CullModes =
{
"CULL_MODE_BACK",
"CULL_MODE_FRONT",
"CULL_MODE_NONE"
}
for i,v in ipairs(FillModes) do
PSODesc.GraphicsPipeline.RasterizerDesc.FillMode = v
local TestPSO = PipelineState.Create(PSODesc)
assert(TestPSO.GraphicsPipeline.RasterizerDesc.FillMode == v)
assert(TestRS_PSO:IsCompatibleWith(TestPSO) == true)
assert(TestPSO:IsCompatibleWith(TestRS_PSO) == true)
Context.SetPipelineState(TestPSO)
end
for i,v in ipairs(CullModes) do
PSODesc.GraphicsPipeline.RasterizerDesc.CullMode = v
local TestPSO = PipelineState.Create(PSODesc)
assert(TestRS_PSO:IsCompatibleWith(TestPSO) == true)
assert(TestPSO:IsCompatibleWith(TestRS_PSO) == true)
assert(TestPSO.GraphicsPipeline.RasterizerDesc.CullMode == v)
Context.SetPipelineState(TestPSO)
end
function TestRSDescFunc(PSO)
local RSDesc = PSO.GraphicsPipeline.RasterizerDesc
assert( RSDesc.FillMode == "FILL_MODE_SOLID")
assert( RSDesc.CullMode == "CULL_MODE_BACK")
assert( RSDesc.FrontCounterClockwise == false)
assert( RSDesc.DepthBias == 0)
assert( RSDesc.DepthBiasClamp == 0.0)
assert( RSDesc.SlopeScaledDepthBias == 0.0)
assert( RSDesc.DepthClipEnable == true)
assert( RSDesc.ScissorEnable == false)
assert( RSDesc.AntialiasedLineEnable == false)
end
|