| 170 | } |
| 171 | |
| 172 | void CreatePSOs(DXGI_FORMAT rtFormat) |
| 173 | { |
| 174 | D3D12_INPUT_ELEMENT_DESC inputElements[] = |
| 175 | { |
| 176 | { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 }, |
| 177 | { "UV", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 }, |
| 178 | { "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 }, |
| 179 | }; |
| 180 | |
| 181 | D3D12_GRAPHICS_PIPELINE_STATE_DESC psoDesc = { }; |
| 182 | psoDesc.pRootSignature = RootSignature; |
| 183 | psoDesc.VS = VS.ByteCode(); |
| 184 | psoDesc.PS = PS.ByteCode(); |
| 185 | psoDesc.RasterizerState = DX12::GetRasterizerState(RasterizerState::NoCull); |
| 186 | psoDesc.BlendState = DX12::GetBlendState(BlendState::AlphaBlend); |
| 187 | psoDesc.DepthStencilState = DX12::GetDepthState(DepthState::Disabled); |
| 188 | psoDesc.SampleMask = UINT_MAX; |
| 189 | psoDesc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE; |
| 190 | psoDesc.NumRenderTargets = 1; |
| 191 | psoDesc.RTVFormats[0] = rtFormat; |
| 192 | psoDesc.SampleDesc.Count = 1; |
| 193 | psoDesc.InputLayout.pInputElementDescs = inputElements; |
| 194 | psoDesc.InputLayout.NumElements = ArraySize_(inputElements); |
| 195 | DXCall(DX12::Device->CreateGraphicsPipelineState(&psoDesc, IID_PPV_ARGS(&PSO))); |
| 196 | } |
| 197 | |
| 198 | void DestroyPSOs() |
| 199 | { |
no test coverage detected