DX12 custom root signatures (#372)

* dx12: abandoned shader reflection, added support for custom root signatures, removed dxcompiler dependency

* removed dll copies from build scripts

* update

* updates

* updates

* fix

* update

* update

* updates

* added custom root signatures to some passes

* fix

* updates

* comment fix

* allow shaders to not have root signatures, if they are part of a pipeline which has root signature for an other shader

* root signature optimizer

* batched descriptor null initializer

* shader updates

* update

* put the atmospheric sky update to async compute

* improved debug of root constant - push constant data size mismatch

* bitwise root param iteration

* added superluminal perf api

* performance api will be optional

* async updaterenderdata fixes

* fixes

* fixes

* occludee update

* raytraced reflection implementation with ray query instead of rt pipeline

* alwaysactive

* shadercompiler enable old d3dcompiler because why not, it's only loaded on demand now

* removed common sampler api

* root signature simplification

* fixes

* linear allocator fix

* push constants are now immediately set

* fixes

* version

* fix?

* improved descriptor allocator

* default sampler table reduction

* gpu sort lib push constants

* small update

* descriptor allocator safety

* shader compiler refactor

* some optimizations
This commit is contained in:
Turánszki János
2021-12-19 15:53:18 +01:00
committed by GitHub
parent c4c582d739
commit 0fdc67dcd0
89 changed files with 2321 additions and 2708 deletions
+10
View File
@@ -20,6 +20,7 @@ using namespace wi::graphics;
Shader imguiVS;
Shader imguiPS;
Texture fontTexture;
Sampler sampler;
InputLayout imguiInputLayout;
PipelineState imguiPSO;
@@ -59,6 +60,13 @@ bool ImGui_Impl_CreateDeviceObjects()
wi::graphics::GetDevice()->CreateTexture(&textureDesc, &textureData, &fontTexture);
SamplerDesc samplerDesc;
samplerDesc.address_u = TextureAddressMode::WRAP;
samplerDesc.address_v = TextureAddressMode::WRAP;
samplerDesc.address_w = TextureAddressMode::WRAP;
samplerDesc.filter = Filter::MAXIMUM_MIN_MAG_MIP_LINEAR;
wi::graphics::GetDevice()->CreateSampler(&samplerDesc, &sampler);
// Store our identifier
io.Fonts->SetTexID((ImTextureID)&fontTexture);
@@ -237,6 +245,8 @@ void Example_ImGui::Compose(wi::graphics::CommandList cmd)
device->BindPipelineState(&imguiPSO, cmd);
device->BindSampler(&sampler, 0, cmd);
// Will project scissor/clipping rectangles into framebuffer space
ImVec2 clip_off = drawData->DisplayPos; // (0,0) unless using multi-viewports
ImVec2 clip_scale = drawData->FramebufferScale; // (1,1) unless using retina display which are often (2,2)