@@ -95,10 +95,15 @@ public class GraphicsDevice : Component
95
95
/// </summary>
96
96
public readonly RasterizerStateCollection RasterizerStates ;
97
97
98
- private InputAssemblerStage inputAssemblerStage ;
99
- private RasterizerStage rasterizerStage ;
98
+ internal InputAssemblerStage InputAssemblerStage ;
99
+ internal VertexShaderStage VertexShaderStage ;
100
+ internal DomainShaderStage DomainShaderStage ;
101
+ internal HullShaderStage HullShaderStage ;
102
+ internal GeometryShaderStage GeometryShaderStage ;
103
+ internal RasterizerStage RasterizerStage ;
100
104
internal PixelShaderStage PixelShaderStage ;
101
- private OutputMergerStage outputMergerStage ;
105
+ internal OutputMergerStage OutputMergerStage ;
106
+ internal ComputeShaderStage ComputeShaderStage ;
102
107
103
108
internal readonly bool needWorkAroundForUpdateSubResource ;
104
109
@@ -215,10 +220,15 @@ private void Initialize()
215
220
resetVertexBuffersPointer = ToDispose ( Utilities . AllocateClearedMemory ( Utilities . SizeOf < IntPtr > ( ) * InputAssemblerStage . VertexInputResourceSlotCount ) ) ;
216
221
}
217
222
218
- inputAssemblerStage = Context . InputAssembler ;
219
- outputMergerStage = Context . OutputMerger ;
220
- rasterizerStage = Context . Rasterizer ;
223
+ InputAssemblerStage = Context . InputAssembler ;
224
+ VertexShaderStage = Context . VertexShader ;
225
+ DomainShaderStage = Context . DomainShader ;
226
+ HullShaderStage = Context . HullShader ;
227
+ GeometryShaderStage = Context . GeometryShader ;
228
+ RasterizerStage = Context . Rasterizer ;
221
229
PixelShaderStage = Context . PixelShader ;
230
+ OutputMergerStage = Context . OutputMerger ;
231
+ ComputeShaderStage = Context . ComputeShader ;
222
232
223
233
// Precompute shader stages
224
234
ShaderStages = new CommonShaderStage [ ]
@@ -588,7 +598,7 @@ private PrimitiveTopology PrimitiveType
588
598
{
589
599
set
590
600
{
591
- inputAssemblerStage . PrimitiveTopology = value ;
601
+ InputAssemblerStage . PrimitiveTopology = value ;
592
602
}
593
603
}
594
604
@@ -960,11 +970,11 @@ public void SetBlendState(BlendState blendState)
960
970
{
961
971
if ( blendState == null )
962
972
{
963
- outputMergerStage . SetBlendState ( null , Color . White , - 1 ) ;
973
+ OutputMergerStage . SetBlendState ( null , Color . White , - 1 ) ;
964
974
}
965
975
else
966
976
{
967
- outputMergerStage . SetBlendState ( blendState , blendState . BlendFactor , blendState . MultiSampleMask ) ;
977
+ OutputMergerStage . SetBlendState ( blendState , blendState . BlendFactor , blendState . MultiSampleMask ) ;
968
978
}
969
979
}
970
980
@@ -984,11 +994,11 @@ public void SetBlendState(BlendState blendState, Color4 blendFactor, int multiSa
984
994
{
985
995
if ( blendState == null )
986
996
{
987
- outputMergerStage . SetBlendState ( null , blendFactor , multiSampleMask ) ;
997
+ OutputMergerStage . SetBlendState ( null , blendFactor , multiSampleMask ) ;
988
998
}
989
999
else
990
1000
{
991
- outputMergerStage . SetBlendState ( blendState , blendFactor , multiSampleMask ) ;
1001
+ OutputMergerStage . SetBlendState ( blendState , blendFactor , multiSampleMask ) ;
992
1002
}
993
1003
}
994
1004
@@ -1022,7 +1032,7 @@ public void SetBlendState(BlendState blendState, Color4 blendFactor, uint multiS
1022
1032
/// <unmanaged-short>ID3D11DeviceContext::OMSetDepthStencilState</unmanaged-short>
1023
1033
public void SetDepthStencilState ( DepthStencilState depthStencilState , int stencilReference = 0 )
1024
1034
{
1025
- outputMergerStage . SetDepthStencilState ( depthStencilState , stencilReference ) ;
1035
+ OutputMergerStage . SetDepthStencilState ( depthStencilState , stencilReference ) ;
1026
1036
}
1027
1037
1028
1038
/// <summary>
@@ -1034,7 +1044,7 @@ public void SetDepthStencilState(DepthStencilState depthStencilState, int stenci
1034
1044
/// <unmanaged-short>ID3D11DeviceContext::RSSetState</unmanaged-short>
1035
1045
public void SetRasterizerState ( RasterizerState rasterizerState )
1036
1046
{
1037
- rasterizerStage . State = rasterizerState ;
1047
+ RasterizerStage . State = rasterizerState ;
1038
1048
}
1039
1049
1040
1050
/// <summary>
@@ -1052,7 +1062,7 @@ public void SetRasterizerState(RasterizerState rasterizerState)
1052
1062
/// <unmanaged-short>ID3D11DeviceContext::RSSetScissorRects</unmanaged-short>
1053
1063
public void SetScissorRectangles ( int left , int top , int right , int bottom )
1054
1064
{
1055
- rasterizerStage . SetScissorRectangle ( left , top , right , bottom ) ;
1065
+ RasterizerStage . SetScissorRectangle ( left , top , right , bottom ) ;
1056
1066
}
1057
1067
1058
1068
/// <summary>
@@ -1067,7 +1077,7 @@ public void SetScissorRectangles(int left, int top, int right, int bottom)
1067
1077
/// <unmanaged-short>ID3D11DeviceContext::RSSetScissorRects</unmanaged-short>
1068
1078
public void SetScissorRectangles ( params Rectangle [ ] scissorRectangles )
1069
1079
{
1070
- rasterizerStage . SetScissorRectangles ( scissorRectangles ) ;
1080
+ RasterizerStage . SetScissorRectangles ( scissorRectangles ) ;
1071
1081
}
1072
1082
1073
1083
/// <summary>
@@ -1078,7 +1088,7 @@ public ViewportF Viewport
1078
1088
{
1079
1089
get
1080
1090
{
1081
- rasterizerStage . GetViewports ( viewports ) ;
1091
+ RasterizerStage . GetViewports ( viewports ) ;
1082
1092
return viewports [ 0 ] ;
1083
1093
}
1084
1094
@@ -1095,7 +1105,7 @@ public ViewportF Viewport
1095
1105
/// <returns>Returns a viewport bind on a specified mulrendertarget</returns>
1096
1106
public ViewportF GetViewport ( int index )
1097
1107
{
1098
- rasterizerStage . GetViewports ( viewports ) ;
1108
+ RasterizerStage . GetViewports ( viewports ) ;
1099
1109
return viewports [ index ] ;
1100
1110
}
1101
1111
@@ -1117,7 +1127,7 @@ public ViewportF GetViewport(int index)
1117
1127
public void SetViewport ( float x , float y , float width , float height , float minZ = 0.0f , float maxZ = 1.0f )
1118
1128
{
1119
1129
viewports [ 0 ] = new ViewportF ( x , y , width , height , minZ , maxZ ) ;
1120
- rasterizerStage . SetViewport ( x , y , width , height , minZ , maxZ ) ;
1130
+ RasterizerStage . SetViewport ( x , y , width , height , minZ , maxZ ) ;
1121
1131
}
1122
1132
1123
1133
/// <summary>
@@ -1133,7 +1143,7 @@ public void SetViewport(float x, float y, float width, float height, float minZ
1133
1143
public void SetViewport ( ViewportF viewport )
1134
1144
{
1135
1145
viewports [ 0 ] = viewport ;
1136
- rasterizerStage . SetViewport ( viewport ) ;
1146
+ RasterizerStage . SetViewport ( viewport ) ;
1137
1147
}
1138
1148
1139
1149
/// <summary>
@@ -1151,7 +1161,7 @@ public void SetViewports(params ViewportF[] viewports)
1151
1161
for ( int i = 0 ; i < viewports . Length ; i ++ )
1152
1162
this . viewports [ i ] = viewports [ i ] ;
1153
1163
1154
- rasterizerStage . SetViewports ( this . viewports , viewports . Length ) ;
1164
+ RasterizerStage . SetViewports ( this . viewports , viewports . Length ) ;
1155
1165
}
1156
1166
1157
1167
/// <summary>
@@ -1164,7 +1174,7 @@ public void ResetTargets()
1164
1174
{
1165
1175
currentRenderTargetView = null ;
1166
1176
currentDepthStencilView = null ;
1167
- outputMergerStage . ResetTargets ( ) ;
1177
+ OutputMergerStage . ResetTargets ( ) ;
1168
1178
}
1169
1179
1170
1180
/// <summary>
@@ -1186,7 +1196,7 @@ public void SetRenderTargets(params RenderTargetView[] renderTargetViews)
1186
1196
1187
1197
CommonSetRenderTargets ( renderTargetViews ) ;
1188
1198
currentDepthStencilView = null ;
1189
- outputMergerStage . SetTargets ( renderTargetViews ) ;
1199
+ OutputMergerStage . SetTargets ( renderTargetViews ) ;
1190
1200
}
1191
1201
1192
1202
/// <summary>
@@ -1203,7 +1213,7 @@ public void SetRenderTargets(RenderTargetView renderTargetView)
1203
1213
{
1204
1214
CommonSetRenderTargets ( renderTargetView ) ;
1205
1215
currentDepthStencilView = null ;
1206
- outputMergerStage . SetTargets ( renderTargetView ) ;
1216
+ OutputMergerStage . SetTargets ( renderTargetView ) ;
1207
1217
}
1208
1218
1209
1219
/// <summary>
@@ -1226,7 +1236,7 @@ public void SetRenderTargets(DepthStencilView depthStencilView, params RenderTar
1226
1236
1227
1237
CommonSetRenderTargets ( renderTargetViews ) ;
1228
1238
currentDepthStencilView = depthStencilView ;
1229
- outputMergerStage . SetTargets ( depthStencilView , renderTargetViews ) ;
1239
+ OutputMergerStage . SetTargets ( depthStencilView , renderTargetViews ) ;
1230
1240
}
1231
1241
1232
1242
/// <summary>
@@ -1244,7 +1254,7 @@ public void SetRenderTargets(DepthStencilView depthStencilView, RenderTargetView
1244
1254
{
1245
1255
CommonSetRenderTargets ( renderTargetView ) ;
1246
1256
currentDepthStencilView = depthStencilView ;
1247
- outputMergerStage . SetTargets ( depthStencilView , renderTargetView ) ;
1257
+ OutputMergerStage . SetTargets ( depthStencilView , renderTargetView ) ;
1248
1258
}
1249
1259
1250
1260
/// <summary>
@@ -1261,7 +1271,7 @@ public void SetRenderTargets(DepthStencilView depthStencilView, RenderTargetView
1261
1271
/// <unmanaged-short>ID3D11DeviceContext::IASetIndexBuffer</unmanaged-short>
1262
1272
public void SetIndexBuffer ( Buffer indexBuffer , bool is32Bit , int offset = 0 )
1263
1273
{
1264
- inputAssemblerStage . SetIndexBuffer ( indexBuffer , is32Bit ? DXGI . Format . R32_UInt : DXGI . Format . R16_UInt , offset ) ;
1274
+ InputAssemblerStage . SetIndexBuffer ( indexBuffer , is32Bit ? DXGI . Format . R32_UInt : DXGI . Format . R16_UInt , offset ) ;
1265
1275
}
1266
1276
1267
1277
/// <summary>
@@ -1317,7 +1327,7 @@ public unsafe void SetVertexBuffer<T>(int slot, Buffer<T> vertexBuffer, int vert
1317
1327
if ( ( slot + 1 ) > maxSlotCountForVertexBuffer )
1318
1328
maxSlotCountForVertexBuffer = slot + 1 ;
1319
1329
}
1320
- inputAssemblerStage . SetVertexBuffers ( slot , 1 , new IntPtr ( & vertexBufferPtr ) , new IntPtr ( & stride ) , new IntPtr ( & offset ) ) ;
1330
+ InputAssemblerStage . SetVertexBuffers ( slot , 1 , new IntPtr ( & vertexBufferPtr ) , new IntPtr ( & stride ) , new IntPtr ( & offset ) ) ;
1321
1331
}
1322
1332
1323
1333
/// <summary>
@@ -1344,7 +1354,7 @@ public unsafe void SetVertexBuffer(int slot, SharpDX.Direct3D11.Buffer vertexBuf
1344
1354
if ( ( slot + 1 ) > maxSlotCountForVertexBuffer )
1345
1355
maxSlotCountForVertexBuffer = slot + 1 ;
1346
1356
}
1347
- inputAssemblerStage . SetVertexBuffers ( slot , 1 , new IntPtr ( & vertexBufferPtr ) , new IntPtr ( & vertexStride ) , new IntPtr ( & offsetInBytes ) ) ;
1357
+ InputAssemblerStage . SetVertexBuffers ( slot , 1 , new IntPtr ( & vertexBufferPtr ) , new IntPtr ( & vertexStride ) , new IntPtr ( & offsetInBytes ) ) ;
1348
1358
}
1349
1359
1350
1360
/// <summary>
@@ -1362,7 +1372,7 @@ public void ResetVertexBuffers()
1362
1372
if ( maxSlotCountForVertexBuffer == 0 )
1363
1373
return ;
1364
1374
1365
- inputAssemblerStage . SetVertexBuffers ( 0 , maxSlotCountForVertexBuffer , resetVertexBuffersPointer , resetVertexBuffersPointer , resetVertexBuffersPointer ) ;
1375
+ InputAssemblerStage . SetVertexBuffers ( 0 , maxSlotCountForVertexBuffer , resetVertexBuffersPointer , resetVertexBuffersPointer , resetVertexBuffersPointer ) ;
1366
1376
1367
1377
maxSlotCountForVertexBuffer = 0 ;
1368
1378
}
@@ -1415,7 +1425,7 @@ private void SetupInputLayout()
1415
1425
throw new InvalidOperationException ( "Cannot perform a Draw/Dispatch operation without an EffectPass applied." ) ;
1416
1426
1417
1427
var inputLayout = CurrentPass . GetInputLayout ( currentVertexInputLayout ) ;
1418
- inputAssemblerStage . SetInputLayout ( inputLayout ) ;
1428
+ InputAssemblerStage . SetInputLayout ( inputLayout ) ;
1419
1429
}
1420
1430
1421
1431
/// <summary>
0 commit comments