Browse Source

Framework GUI wird jetzt auch mit directx 12 gezeichnet

Kolja Strohm 5 years ago
parent
commit
435b930b38
15 changed files with 3043 additions and 3093 deletions
  1. 115 84
      DX12GraphicsApi.cpp
  2. 1325 1479
      DX12PixelShader.h
  3. 23 7
      DX12PixelShader.hlsl
  4. 1357 1469
      DX12VertexShader.h
  5. 36 8
      DX12VertexShader.hlsl
  6. 94 5
      DXBuffer.cpp
  7. 30 1
      DXBuffer.h
  8. 4 2
      GraphicsApi.h
  9. 12 0
      RenderThread.cpp
  10. 9 7
      Shader.cpp
  11. 7 4
      Shader.h
  12. 7 6
      Textur.cpp
  13. 5 3
      Textur.h
  14. 1 0
      TexturModel.cpp
  15. 18 18
      UIPixelShader.h

+ 115 - 84
DX12GraphicsApi.cpp

@@ -207,7 +207,7 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
                 current->Release();
         }
     } while( res != DXGI_ERROR_NOT_FOUND );
-    res = createDevice( best, D3D_FEATURE_LEVEL_12_1, __uuidof( ID3D12Device2 ), (void **)& device );
+    res = createDevice( best, D3D_FEATURE_LEVEL_12_0, __uuidof( ID3D12Device2 ), (void **)& device );
     best->Release();
     if( FAILED( res ) )
     {
@@ -225,10 +225,10 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
         infoQueue->SetBreakOnSeverity( D3D12_MESSAGE_SEVERITY_ERROR, TRUE );
         infoQueue->SetBreakOnSeverity( D3D12_MESSAGE_SEVERITY_WARNING, TRUE );
 
-        D3D12_MESSAGE_SEVERITY Severities[] =
+        /*D3D12_MESSAGE_SEVERITY Severities[] =
         {
-            D3D12_MESSAGE_SEVERITY_INFO
-        };
+          //  D3D12_MESSAGE_SEVERITY_INFO
+        };*/
 
         // Suppress individual messages by their ID
         D3D12_MESSAGE_ID DenyIds[] = {
@@ -238,8 +238,8 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
         };
 
         D3D12_INFO_QUEUE_FILTER NewFilter = {};
-        NewFilter.DenyList.NumSeverities = _countof( Severities );
-        NewFilter.DenyList.pSeverityList = Severities;
+        NewFilter.DenyList.NumSeverities = 0;//_countof( Severities );
+        NewFilter.DenyList.pSeverityList = 0;//Severities;
         NewFilter.DenyList.NumIDs = _countof( DenyIds );
         NewFilter.DenyList.pIDList = DenyIds;
 
@@ -270,7 +270,7 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
     swapChainDesc.BufferCount = 2;
     swapChainDesc.Scaling = DXGI_SCALING_STRETCH;
     swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
-    swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED;
+    swapChainDesc.AlphaMode = DXGI_ALPHA_MODE_IGNORE;
     swapChainDesc.Flags = tearing ? DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING : 0;
     IDXGISwapChain1 *tmpSwapChain;
     res = factory->CreateSwapChainForHwnd( directCommandQueue->getQueue(), fenster->getFensterHandle(), &swapChainDesc, 0, 0, &tmpSwapChain );
@@ -340,9 +340,9 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
     allowedRenderArea->right = LONG_MAX;
     allowedRenderArea->bottom = LONG_MAX;
 
-    vertexBuffer = new DX12Buffer( sizeof( Vertex3D ), device, copyCommandQueue->getCommandList(), D3D12_RESOURCE_FLAG_NONE );
-    indexBuffer = new DX12Buffer( sizeof( int ), device, copyCommandQueue->getCommandList(), D3D12_RESOURCE_FLAG_NONE );
-
+    vertexBuffer = new DX12VertexBuffer( sizeof( Vertex3D ), device, copyCommandQueue, directCommandQueue );
+    indexBuffer = new DX12IndexBuffer( sizeof( int ), device, copyCommandQueue, directCommandQueue );
+    
     texturModel = new TexturModel();
 
     Bild *renderB = new Bild( 1 );
@@ -350,7 +350,7 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
     renderB->neuBild( this->backBufferSize.x, this->backBufferSize.y, 0 );
     uiTextur = createOrGetTextur( "_f_Render_Bild", renderB );
 
-    texturModel->setSize( this->backBufferSize );
+    texturModel->setSize( Vec2<float>( 2.f, 2.f ) );
     texturModel->setTextur( uiTextur->getThis() );
 
     vertexBufferView = new D3D12_VERTEX_BUFFER_VIEW();
@@ -416,19 +416,19 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
         return;
     }
 
-    vertexShader = new DX12VertexShader( device, copyCommandQueue->getCommandList() );
+    vertexShader = new DX12VertexShader( device, copyCommandQueue, directCommandQueue );
     vertexShader->setCompiledByteArray( (unsigned char *)DX12VertexShaderBytes, sizeof( DX12VertexShaderBytes ) );
     vertexShader->erstelleConstBuffer( sizeof( Mat4< float > ) * 2, 0 );
     vertexShader->erstelleConstBuffer( sizeof( Mat4< float > ) * 128, 1 );
 
-    pixelShader = new DX12PixelShader( device, copyCommandQueue->getCommandList() );
+    pixelShader = new DX12PixelShader( device, copyCommandQueue, directCommandQueue );
     pixelShader->setCompiledByteArray( (unsigned char *)DX12PixelShaderBytes, sizeof( DX12PixelShaderBytes ) );
     pixelShader->erstelleConstBuffer( sizeof( float ) * 4, 2 );
     pixelShader->erstelleConstBuffer( sizeof( float ) * 3, 3 );
     pixelShader->erstelleConstBuffer( sizeof( int ) * 2, 4 );
 
     D3D12_INPUT_ELEMENT_DESC inputLayout[] = {
-    { "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
+    { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
     { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
     { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
     { "KNOCHEN_ID", 0, DXGI_FORMAT_R32_UINT, 0, D3D12_APPEND_ALIGNED_ELEMENT, D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 }
@@ -447,7 +447,7 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
         D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS |
         D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS;
 
-    D3D12_DESCRIPTOR_RANGE1 range[ 3 ];
+    D3D12_DESCRIPTOR_RANGE1 range[ 2 ];
     range[ 0 ].NumDescriptors = 5;
     range[ 0 ].BaseShaderRegister = 0;
     range[ 0 ].RegisterSpace = 0;
@@ -460,29 +460,34 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
     range[ 1 ].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SRV;
     range[ 1 ].OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
     range[ 1 ].Flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE;
-    range[ 2 ].NumDescriptors = 1;
-    range[ 2 ].BaseShaderRegister = 0;
-    range[ 2 ].RegisterSpace = 0;
-    range[ 2 ].RangeType = D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER;
-    range[ 2 ].OffsetInDescriptorsFromTableStart = D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND;
-    range[ 2 ].Flags = D3D12_DESCRIPTOR_RANGE_FLAG_NONE;
-
-    D3D12_ROOT_PARAMETER1 rootParameters[ 2 ];
+
+    D3D12_ROOT_PARAMETER1 rootParameters[ 1 ];
     rootParameters[ 0 ].ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
     rootParameters[ 0 ].ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;
     rootParameters[ 0 ].DescriptorTable.NumDescriptorRanges = 2;
     rootParameters[ 0 ].DescriptorTable.pDescriptorRanges = range;
-    rootParameters[ 1 ].ParameterType = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE;
-    rootParameters[ 1 ].ShaderVisibility = D3D12_SHADER_VISIBILITY_ALL;
-    rootParameters[ 1 ].DescriptorTable.NumDescriptorRanges = 1;
-    rootParameters[ 1 ].DescriptorTable.pDescriptorRanges = &range[ 2 ];
+
+    D3D12_STATIC_SAMPLER_DESC sampler = {};
+    sampler.Filter = D3D12_FILTER_MIN_MAG_MIP_POINT;
+    sampler.AddressU = D3D12_TEXTURE_ADDRESS_MODE_BORDER;
+    sampler.AddressV = D3D12_TEXTURE_ADDRESS_MODE_BORDER;
+    sampler.AddressW = D3D12_TEXTURE_ADDRESS_MODE_BORDER;
+    sampler.MipLODBias = 0;
+    sampler.MaxAnisotropy = 0;
+    sampler.ComparisonFunc = D3D12_COMPARISON_FUNC_NEVER;
+    sampler.BorderColor = D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK;
+    sampler.MinLOD = 0.0f;
+    sampler.MaxLOD = D3D12_FLOAT32_MAX;
+    sampler.ShaderRegister = 0;
+    sampler.RegisterSpace = 0;
+    sampler.ShaderVisibility = D3D12_SHADER_VISIBILITY_PIXEL;
 
     D3D12_VERSIONED_ROOT_SIGNATURE_DESC rootSignatureDescription;
     rootSignatureDescription.Version = D3D_ROOT_SIGNATURE_VERSION_1_1;
-    rootSignatureDescription.Desc_1_1.NumParameters = 2;
+    rootSignatureDescription.Desc_1_1.NumParameters = 1;
     rootSignatureDescription.Desc_1_1.pParameters = rootParameters;
-    rootSignatureDescription.Desc_1_1.NumStaticSamplers = 0;
-    rootSignatureDescription.Desc_1_1.pStaticSamplers = 0;
+    rootSignatureDescription.Desc_1_1.NumStaticSamplers = 1;
+    rootSignatureDescription.Desc_1_1.pStaticSamplers = &sampler;
     rootSignatureDescription.Desc_1_1.Flags = rootSignatureFlags;
 
     ID3DBlob *rootSignature;
@@ -508,28 +513,33 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
     }
     rootSignature->Release();
 
-    struct PipelineStateStream
-    {
-        CD3DX12_PIPELINE_STATE_STREAM_ROOT_SIGNATURE pRootSignature;
-        CD3DX12_PIPELINE_STATE_STREAM_INPUT_LAYOUT InputLayout;
-        CD3DX12_PIPELINE_STATE_STREAM_PRIMITIVE_TOPOLOGY PrimitiveTopologyType;
-        CD3DX12_PIPELINE_STATE_STREAM_VS VS;
-        CD3DX12_PIPELINE_STATE_STREAM_PS PS;
-        CD3DX12_PIPELINE_STATE_STREAM_DEPTH_STENCIL_FORMAT DSVFormat;
-        CD3DX12_PIPELINE_STATE_STREAM_RENDER_TARGET_FORMATS RTVFormats;
-    } pipelineStateStream;
-
-    D3D12_RT_FORMAT_ARRAY rtvFormats = {};
-    rtvFormats.NumRenderTargets = 1;
-    rtvFormats.RTFormats[ 0 ] = DXGI_FORMAT_R8G8B8A8_UNORM;
-
-    pipelineStateStream.pRootSignature = signature;
-    pipelineStateStream.InputLayout = { vertexShader->zInputLayout(), (unsigned)vertexShader->getInputLayoutSize() };
-    pipelineStateStream.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
-    pipelineStateStream.VS = { vertexShader->getCompiledShader(), (unsigned __int64)vertexShader->getCompiledLength() };
-    pipelineStateStream.PS = { pixelShader->getCompiledShader(), (unsigned __int64)pixelShader->getCompiledLength() };
-    pipelineStateStream.DSVFormat = DXGI_FORMAT_UNKNOWN;
-    pipelineStateStream.RTVFormats = rtvFormats;
+    D3D12_RASTERIZER_DESC rdesc;
+    rdesc.FillMode = D3D12_FILL_MODE_SOLID;
+    rdesc.CullMode = D3D12_CULL_MODE_BACK;
+    rdesc.FrontCounterClockwise = 0;
+    rdesc.DepthBias = 0;
+    rdesc.DepthBiasClamp = 0.f;
+    rdesc.SlopeScaledDepthBias = 0.f;
+    rdesc.DepthClipEnable = 1;
+    rdesc.MultisampleEnable = 0;
+    rdesc.AntialiasedLineEnable = 0;
+    rdesc.ForcedSampleCount = 0;
+    rdesc.ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF;
+
+    D3D12_GRAPHICS_PIPELINE_STATE_DESC psoDesc = {};
+    psoDesc.InputLayout = { vertexShader->zInputLayout(), (unsigned)vertexShader->getInputLayoutSize() };
+    psoDesc.pRootSignature = signature;
+    psoDesc.VS = { vertexShader->getCompiledShader(), (unsigned __int64)vertexShader->getCompiledLength() };
+    psoDesc.PS = { pixelShader->getCompiledShader(), (unsigned __int64)pixelShader->getCompiledLength() };
+    psoDesc.RasterizerState = rdesc;
+    psoDesc.BlendState = CD3DX12_BLEND_DESC( D3D12_DEFAULT );
+    psoDesc.DepthStencilState.DepthEnable = FALSE;
+    psoDesc.DepthStencilState.StencilEnable = FALSE;
+    psoDesc.SampleMask = UINT_MAX;
+    psoDesc.PrimitiveTopologyType = D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE;
+    psoDesc.NumRenderTargets = 1;
+    psoDesc.RTVFormats[ 0 ] = DXGI_FORMAT_R8G8B8A8_UNORM;
+    psoDesc.SampleDesc.Count = 1;
 
     D3D12_CPU_DESCRIPTOR_HANDLE sbHeapHandle = shaderBufferHeap->GetCPUDescriptorHandleForHeapStart();
     unsigned int incr = device->GetDescriptorHandleIncrementSize( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV );
@@ -551,10 +561,21 @@ void DirectX12::initialize( WFenster * fenster, Vec2<int> backBufferSize, bool f
     device->CreateConstantBufferView( &desc, sbHeapHandle );
     sbHeapHandle.ptr += incr;
 
-    D3D12_PIPELINE_STATE_STREAM_DESC pipelineStateStreamDesc = {
-    sizeof( PipelineStateStream ), &pipelineStateStream
-    };
-    res = device->CreatePipelineState( &pipelineStateStreamDesc, __uuidof( ID3D12PipelineState ), (void **)& pipeline );
+    uiTextur->updateTextur();
+
+    D3D12_SHADER_RESOURCE_VIEW_DESC vd;
+    vd.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
+    vd.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2D;
+    vd.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING;
+    vd.Texture2D.MipLevels = 1;
+    vd.Texture2D.MostDetailedMip = 0;
+    vd.Texture2D.PlaneSlice = 0;
+    vd.Texture2D.ResourceMinLODClamp = 0;
+    device->CreateShaderResourceView( ( (DX12Textur *)uiTextur )->getResource(), &vd, sbHeapHandle );
+
+    directCommandQueue->execute();
+
+    res = device->CreateGraphicsPipelineState( &psoDesc, __uuidof( ID3D12PipelineState ), (void **)& pipeline );
     if( FAILED( res ) )
     {
         factory->Release();
@@ -735,8 +756,8 @@ void DirectX12::beginFrame( bool fill2D, bool fill3D, int fillColor )
 
 void DirectX12::renderObject( Model3D * zObj )
 {
-    vertexBuffer->setData( (void *)zObj->zVertexBuffer() );
-    vertexBuffer->setLength( sizeof( Vertex3D ) * zObj->getVertexAnzahl() );
+    vertexBuffer->setData( (void *)texturModel->zVertexBuffer() );
+    vertexBuffer->setLength( sizeof( Vertex3D ) * texturModel->getVertexAnzahl() );
     vertexBuffer->copieren();
     Mat4< float > trans = Mat4< float >::identity();
     int anz = zObj->errechneMatrizen( trans, matrixBuffer );
@@ -750,9 +771,6 @@ void DirectX12::renderObject( Model3D * zObj )
         pixelShader->füllConstBuffer( (char *)matirialBuffer, 3, sizeof( float ) * 3 );
     unsigned int offset = 0;
     unsigned int es = (unsigned)vertexBuffer->getElementLength();
-    vertexBufferView->SizeInBytes = vertexBuffer->getElementAnzahl() * vertexBuffer->getElementLength();
-    vertexBufferView->BufferLocation = vertexBuffer->zBuffer()->GetGPUVirtualAddress();
-    directCommandQueue->getCommandList()->IASetVertexBuffers( 0, 1, vertexBufferView );
     Model3DTextur * zTextur = zObj->zTextur();
     int ind = 0;
     for( auto i = zObj->zModelData()->getPolygons(); i; i++ )
@@ -761,17 +779,15 @@ void DirectX12::renderObject( Model3D * zObj )
         indexBuffer->setLength( sizeof( int ) * i->indexAnz );
         indexBuffer->copieren();
         Textur *t = zTextur->zPolygonTextur( ind );
-        if( t &&t->brauchtUpdate() )
-            t->updateTextur();
+        //if( t &&t->brauchtUpdate() )
+        //    t->updateTextur();
         DXGI_FORMAT f = DXGI_FORMAT_R32_UINT;
         if( indexBuffer->getElementLength() == 2 )
             f = DXGI_FORMAT_R16_UINT;
         if( indexBuffer->getElementLength() == 1 )
             f = DXGI_FORMAT_R8_UINT;
-        indexBufferView->SizeInBytes = indexBuffer->getElementAnzahl() * indexBuffer->getElementLength();
-        indexBufferView->BufferLocation = indexBuffer->zBuffer()->GetGPUVirtualAddress();
-        directCommandQueue->getCommandList()->IASetIndexBuffer( indexBufferView );
-        directCommandQueue->getCommandList()->IASetPrimitiveTopology( D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
+        indexBufferView->Format = f;
+        copyCommandQueue->execute();
         if( t )
         {
             /*ID3D11ShaderResourceView *v[ 3 ];
@@ -780,10 +796,23 @@ void DirectX12::renderObject( Model3D * zObj )
             v[ 2 ] = *pointLights;
             d3d11Context->PSSetShaderResources( 0, 3, v );
             d3d11Context->DrawIndexed( indexBuffer->getElementAnzahl(), 0, 0 );*/
-            D3D12_CPU_DESCRIPTOR_HANDLE sbHeapHandle = shaderBufferHeap->GetCPUDescriptorHandleForHeapStart();
-            unsigned int incr = device->GetDescriptorHandleIncrementSize( D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV );
-            sbHeapHandle.ptr += incr * 5;
-            device->CreateShaderResourceView( ( (DX12Textur *)t )->getResource(), 0, sbHeapHandle );
+            directCommandQueue->getCommandList()->SetPipelineState( pipeline );
+            directCommandQueue->getCommandList()->SetGraphicsRootSignature( signature );
+            directCommandQueue->getCommandList()->SetDescriptorHeaps( 1, &shaderBufferHeap );
+            directCommandQueue->getCommandList()->SetGraphicsRootDescriptorTable( 0, shaderBufferHeap->GetGPUDescriptorHandleForHeapStart() );
+            directCommandQueue->getCommandList()->RSSetViewports( 1, viewPort );
+            directCommandQueue->getCommandList()->RSSetScissorRects( 1, allowedRenderArea );
+            auto rtvDescriptorSize = device->GetDescriptorHandleIncrementSize( D3D12_DESCRIPTOR_HEAP_TYPE_RTV );
+            D3D12_CPU_DESCRIPTOR_HANDLE rtv = rtvHeap->GetCPUDescriptorHandleForHeapStart();
+            rtv.ptr += rtvDescriptorSize * backBufferIndex;
+            directCommandQueue->getCommandList()->OMSetRenderTargets( 1, &rtv, 0, 0 );
+            indexBufferView->SizeInBytes = indexBuffer->getElementAnzahl() * indexBuffer->getElementLength();
+            indexBufferView->BufferLocation = indexBuffer->zBuffer()->GetGPUVirtualAddress();
+            directCommandQueue->getCommandList()->IASetIndexBuffer( indexBufferView );
+            vertexBufferView->SizeInBytes = vertexBuffer->getElementAnzahl() * vertexBuffer->getElementLength();
+            vertexBufferView->BufferLocation = vertexBuffer->zBuffer()->GetGPUVirtualAddress();
+            directCommandQueue->getCommandList()->IASetVertexBuffers( 0, 1, vertexBufferView );
+            directCommandQueue->getCommandList()->IASetPrimitiveTopology( D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
             directCommandQueue->getCommandList()->DrawIndexedInstanced( indexBuffer->getElementAnzahl(), 1, 0, 0, 0 );
         }
         else
@@ -796,9 +825,10 @@ void DirectX12::renderObject( Model3D * zObj )
             d3d11Context->PSSetShaderResources( 0, 3, v );
             d3d11Context->DrawIndexed( indexBuffer->getElementAnzahl(), 0, 0 );
             d3d11Context->RSSetState( texturRS );*/
-            directCommandQueue->getCommandList()->DrawIndexedInstanced( indexBuffer->getElementAnzahl(), 1, 0, 0, 0 );
+            //directCommandQueue->getCommandList()->DrawIndexedInstanced( indexBuffer->getElementAnzahl(), 1, 0, 0, 0 );
         }
         ind++;
+        directCommandQueue->execute();
     }
 }
 
@@ -819,7 +849,7 @@ bool DirectX12::isInFrustrum( const Vec3< float > & pos, float radius, float *di
 }
 
 void DirectX12::renderKamera( Kam3D * zKamera )
-{
+{/*
     directCommandQueue->getCommandList()->RSSetViewports( 1, (D3D12_VIEWPORT *)zKamera->zViewPort() );
 
     Mat4< float > tmp = zKamera->getProjectionMatrix() * zKamera->getViewMatrix();
@@ -872,22 +902,20 @@ void DirectX12::renderKamera( Kam3D * zKamera )
         if( isInFrustrum( obj->getPos(), obj->getRadius(), &dist ) )
             renderObject( obj._ );
     }
-    w->unlock();
+    w->unlock();*/
 }
 
 void DirectX12::presentFrame()
 {
     directCommandQueue->getCommandList()->RSSetViewports( 1, viewPort );
 
-    float screenAspect = (float)backBufferSize.x / (float)backBufferSize.y;
-    Mat4< float > view = view.translation( Vec3< float >( 0.f, 0.f, backBufferSize.y * 1.2075f ) );
-    viewAndProj[ 0 ] = view;
-    viewAndProj[ 1 ] = view.projektion( (float)PI / 4.0f, screenAspect, 0.1f, 10000.f );
-    kamPos = Vec3< float >( 0.f, 0.f, backBufferSize.y * 1.2075f );
+    viewAndProj[ 0 ] = Mat4<float>::identity();
+    viewAndProj[ 1 ] = Mat4<float>::identity();
     if( vertexShader )
-        vertexShader->füllConstBuffer( (char *)viewAndProj, 1, sizeof( Mat4< float > ) * 2 );
-    if( pixelShader )
-        pixelShader->füllConstBuffer( (char *)& kamPos, 0, sizeof( float ) * 3 );
+        vertexShader->füllConstBuffer( (char *)viewAndProj, 0, sizeof( Mat4< float > ) * 2 );
+
+    directCommandQueue->execute();
+    uiTextur->updateTextur();
 
     if( fenster && !IsIconic( fenster->getFensterHandle() ) )
         renderObject( texturModel );
@@ -905,7 +933,7 @@ void DirectX12::presentFrame()
     copyCommandQueue->execute();
     directCommandQueue->execute();
 
-    swapChain->Present( 0, tearing ? DXGI_PRESENT_ALLOW_TEARING : 0 );
+    swapChain->Present( 0, 0 );
 
     backBufferIndex = swapChain->GetCurrentBackBufferIndex();
 }
@@ -925,10 +953,13 @@ Textur * DirectX12::createOrGetTextur( const char *name, Bild * b )
             ret->setBildZ( b );
         return ret;
     }
-    Textur *ret = new DX12Textur( device, copyCommandQueue->getCommandList(), directCommandQueue->getCommandList() );
+    Textur *ret = new DX12Textur( device, copyCommandQueue, directCommandQueue );
     if( b )
         ret->setBildZ( b );
     texturRegister->addTextur( ret->getThis(), name );
+    ret->updateTextur();
+    copyCommandQueue->execute();
+    directCommandQueue->execute();
     return ret;
 }
 

+ 1325 - 1479
DX12PixelShader.h

@@ -3,30 +3,12 @@
 // Generated by Microsoft (R) HLSL Shader Compiler 10.1
 //
 //
-// Buffer Definitions: 
-//
-// cbuffer Object
-// {
-//
-//   struct Material
-//   {
-//       
-//       float ambientFactor;           // Offset:    0
-//       float diffusFactor;            // Offset:    4
-//       float specularFactor;          // Offset:    8
-//
-//   } Object;                          // Offset:    0 Size:    12
-//
-// }
-//
-//
 // Resource Bindings:
 //
 // Name                                 Type  Format         Dim      ID      HLSL Bind  Count
 // ------------------------------ ---------- ------- ----------- ------- -------------- ------
 // SampleType                        sampler      NA          NA      S0             s0      1 
 // shaderTexture                     texture  float4          2d      T0             t0      1 
-// Object                            cbuffer      NA          NA     CB0            cb3      1 
 //
 //
 //
@@ -37,7 +19,7 @@
 // POSITION                 0   xyzw        0     NONE   float       
 // SV_POSITION              0   xyzw        1      POS   float       
 // TEXCOORD                 0   xy          2     NONE   float   xy  
-// TEXCOORD                 1   xyz         3     NONE   float       
+// NORMAL                   0   xyz         3     NONE   float       
 //
 //
 // Output signature:
@@ -48,12 +30,10 @@
 //
 ps_5_1
 dcl_globalFlags refactoringAllowed | skipOptimization
-dcl_constantbuffer CB0[3:3][1], immediateIndexed, space=0
 dcl_sampler S0[0:0], mode_default, space=0
 dcl_resource_texture2d (float,float,float,float) T0[0:0], space=0
 dcl_input_ps linear v2.xy
 dcl_output o0.xyzw
-dcl_temps 3
 //
 // Initial variable locations:
 //   v0.x <- input.worldPos.x; v0.y <- input.worldPos.y; v0.z <- input.worldPos.z; v0.w <- input.worldPos.w; 
@@ -62,129 +42,61 @@ dcl_temps 3
 //   v3.x <- input.normal.x; v3.y <- input.normal.y; v3.z <- input.normal.z; 
 //   o0.x <- <main return value>.x; o0.y <- <main return value>.y; o0.z <- <main return value>.z; o0.w <- <main return value>.w
 //
-#line 64 "C:\Users\kolja\OneDrive\Desktop\Kolja-Strohm-Games\Allgemein\Framework\DX12PixelShader.hlsl"
-itof r0.xyz, l(0, 0, 0, 0)  // r0.x <- diffuseLight.x; r0.y <- diffuseLight.y; r0.z <- diffuseLight.z
-
-#line 65
-itof r1.xyz, l(0, 0, 0, 0)  // r1.x <- specularLight.x; r1.y <- specularLight.y; r1.z <- specularLight.z
-
-#line 85
-sample r2.xyzw, v2.xyxx, T0[0].xyzw, S0[0]  // r2.x <- materialColor.x; r2.y <- materialColor.y; r2.z <- materialColor.z; r2.w <- materialColor.w
-
-#line 86
-mul r2.xyz, r2.xyzx, CB0[3][0].xxxx
-mul r0.xyz, r0.xyzx, CB0[3][0].yyyy
-add r0.xyz, r0.xyzx, r2.xyzx
-mul r1.xyz, r1.xyzx, CB0[3][0].zzzz
-add r0.xyz, r0.xyzx, r1.xyzx
-max r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
-min r0.xyz, r0.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)  // r0.x <- textureColor.x; r0.y <- textureColor.y; r0.z <- textureColor.z
-
-#line 87
-mov r2.w, r2.w  // r2.w <- textureColor.w
-
-#line 88
-mov o0.xyz, r0.xyzx
-mov o0.w, r2.w
+#line 103 "C:\Users\kolja\OneDrive\Desktop\Kolja-Strohm-Games\Allgemein\Framework\DX12PixelShader.hlsl"
+sample o0.xyzw, v2.xyxx, T0[0].xyzw, S0[0]
 ret 
-// Approximately 14 instruction slots used
+// Approximately 2 instruction slots used
 #endif
 
 const BYTE DX12PixelShaderBytes[] =
 {
-     68,  88,  66,  67, 212,  70, 
-     73, 246, 239,  46, 156,  85, 
-    147, 213,  52,  75,  86,  38, 
-    123,   2,   1,   0,   0,   0, 
-    176,  83,   0,   0,   6,   0, 
+     68,  88,  66,  67, 232, 228, 
+    100, 210,  48, 171, 203,  87, 
+     50, 101, 162, 238,  99, 154, 
+     19,  21,   1,   0,   0,   0, 
+     16,  81,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
-     36,   2,   0,   0, 180,   2, 
-      0,   0, 232,   2,   0,   0, 
-     12,   5,   0,   0, 168,   5, 
+     16,   1,   0,   0, 168,   1, 
+      0,   0, 220,   1,   0,   0, 
+    108,   2,   0,   0,   8,   3, 
       0,   0,  82,  68,  69,  70, 
-    228,   1,   0,   0,   1,   0, 
-      0,   0, 212,   0,   0,   0, 
-      3,   0,   0,   0,  60,   0, 
+    208,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      2,   0,   0,   0,  60,   0, 
       0,   0,   1,   5, 255, 255, 
-      5,   5,   0,   0, 188,   1, 
+      5,   5,   0,   0, 165,   0, 
       0,   0,  19,  19,  68,  37, 
      60,   0,   0,   0,  24,   0, 
       0,   0,  40,   0,   0,   0, 
      40,   0,   0,   0,  36,   0, 
       0,   0,  12,   0,   0,   0, 
-      0,   0,   0,   0, 180,   0, 
+      0,   0,   0,   0, 140,   0, 
       0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0, 191,   0,   0,   0, 
+      0,   0, 151,   0,   0,   0, 
       2,   0,   0,   0,   5,   0, 
       0,   0,   4,   0,   0,   0, 
     255, 255, 255, 255,   0,   0, 
       0,   0,   1,   0,   0,   0, 
      12,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    205,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  83,  97, 
-    109, 112, 108, 101,  84, 121, 
-    112, 101,   0, 115, 104,  97, 
-    100, 101, 114,  84, 101, 120, 
-    116, 117, 114, 101,   0,  79, 
-     98, 106, 101,  99, 116,   0, 
-    205,   0,   0,   0,   1,   0, 
-      0,   0, 236,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-    205,   0,   0,   0,   0,   0, 
-      0,   0,  12,   0,   0,   0, 
-      2,   0,   0,   0, 152,   1, 
-      0,   0,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0,  77,  97, 
-    116, 101, 114, 105,  97, 108, 
-      0,  97, 109,  98, 105, 101, 
-    110, 116,  70,  97,  99, 116, 
-    111, 114,   0, 102, 108, 111, 
-     97, 116,   0, 171, 171, 171, 
-      0,   0,   3,   0,   1,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  43,   1,   0,   0, 
-    100, 105, 102, 102, 117, 115, 
-     70,  97,  99, 116, 111, 114, 
-      0, 115, 112, 101,  99, 117, 
-    108,  97, 114,  70,  97,  99, 
-    116, 111, 114,   0,  29,   1, 
-      0,   0,  52,   1,   0,   0, 
-      0,   0,   0,   0,  88,   1, 
-      0,   0,  52,   1,   0,   0, 
-      4,   0,   0,   0, 101,   1, 
-      0,   0,  52,   1,   0,   0, 
-      8,   0,   0,   0,   5,   0, 
-      0,   0,   1,   0,   3,   0, 
-      0,   0,   3,   0, 116,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     20,   1,   0,   0,  77, 105, 
-     99, 114, 111, 115, 111, 102, 
-    116,  32,  40,  82,  41,  32, 
-     72,  76,  83,  76,  32,  83, 
-    104,  97, 100, 101, 114,  32, 
-     67, 111, 109, 112, 105, 108, 
-    101, 114,  32,  49,  48,  46, 
-     49,   0,  73,  83,  71,  78, 
-    136,   0,   0,   0,   4,   0, 
+     83,  97, 109, 112, 108, 101, 
+     84, 121, 112, 101,   0, 115, 
+    104,  97, 100, 101, 114,  84, 
+    101, 120, 116, 117, 114, 101, 
+      0,  77, 105,  99, 114, 111, 
+    115, 111, 102, 116,  32,  40, 
+     82,  41,  32,  72,  76,  83, 
+     76,  32,  83, 104,  97, 100, 
+    101, 114,  32,  67, 111, 109, 
+    112, 105, 108, 101, 114,  32, 
+     49,  48,  46,  49,   0, 171, 
+    171, 171,  73,  83,  71,  78, 
+    144,   0,   0,   0,   4,   0, 
       0,   0,   8,   0,   0,   0, 
     104,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -198,7 +110,7 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       3,   0,   0,   0,   2,   0, 
       0,   0,   3,   3,   0,   0, 
-    125,   0,   0,   0,   1,   0, 
+    134,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       3,   0,   0,   0,   3,   0, 
       0,   0,   7,   0,   0,   0, 
@@ -207,111 +119,45 @@ const BYTE DX12PixelShaderBytes[] =
      80,  79,  83,  73,  84,  73, 
      79,  78,   0,  84,  69,  88, 
      67,  79,  79,  82,  68,   0, 
-    171, 171,  79,  83,  71,  78, 
-     44,   0,   0,   0,   1,   0, 
-      0,   0,   8,   0,   0,   0, 
-     32,   0,   0,   0,   0,   0, 
+     78,  79,  82,  77,  65,  76, 
+      0, 171, 171, 171,  79,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  15,   0,   0,   0, 
-     83,  86,  95,  84,  65,  82, 
-     71,  69,  84,   0, 171, 171, 
-     83,  72,  69,  88,  28,   2, 
-      0,   0,  81,   0,   0,   0, 
-    135,   0,   0,   0, 106, 136, 
-      0,   1,  89,   0,   0,   7, 
-     70, 142,  48,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
-      3,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,  15,   0, 
+      0,   0,  83,  86,  95,  84, 
+     65,  82,  71,  69,  84,   0, 
+    171, 171,  83,  72,  69,  88, 
+    136,   0,   0,   0,  81,   0, 
+      0,   0,  34,   0,   0,   0, 
+    106, 136,   0,   1,  90,   0, 
+      0,   6,  70, 110,  48,   0, 
       0,   0,   0,   0,   0,   0, 
-     90,   0,   0,   6,  70, 110, 
-     48,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     88,  24,   0,   7,  70, 126, 
-     48,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  85,  85,   0,   0, 
-      0,   0,   0,   0,  98,  16, 
-      0,   3,  50,  16,  16,   0, 
-      2,   0,   0,   0, 101,   0, 
-      0,   3, 242,  32,  16,   0, 
-      0,   0,   0,   0, 104,   0, 
-      0,   2,   3,   0,   0,   0, 
-     43,   0,   0,   8, 114,   0, 
-     16,   0,   0,   0,   0,   0, 
-      2,  64,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,  43,   0,   0,   8, 
-    114,   0,  16,   0,   1,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  69,   0, 
-      0,  11, 242,   0,  16,   0, 
-      2,   0,   0,   0,  70,  16, 
-     16,   0,   2,   0,   0,   0, 
-     70, 126,  32,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  96,  32,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     56,   0,   0,   9, 114,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70,   2,  16,   0,   2,   0, 
-      0,   0,   6, 128,  48,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-     56,   0,   0,   9, 114,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   0,   0, 
-      0,   0,  86, 133,  48,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   7, 114,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      2,   0,   0,   0,  56,   0, 
-      0,   9, 114,   0,  16,   0, 
-      1,   0,   0,   0,  70,   2, 
-     16,   0,   1,   0,   0,   0, 
-    166, 138,  48,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   7, 114,   0,  16,   0, 
-      0,   0,   0,   0,  70,   2, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   1,   0, 
-      0,   0,  52,   0,   0,  10, 
-    114,   0,  16,   0,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      0,   0,   0,   0,   2,  64, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     51,   0,   0,  10, 114,   0, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   0,   0, 
-      0,   0,   2,  64,   0,   0, 
-      0,   0, 128,  63,   0,   0, 
-    128,  63,   0,   0, 128,  63, 
-      0,   0,   0,   0,  54,   0, 
-      0,   5, 130,   0,  16,   0, 
-      2,   0,   0,   0,  58,   0, 
-     16,   0,   2,   0,   0,   0, 
-     54,   0,   0,   5, 114,  32, 
-     16,   0,   0,   0,   0,   0, 
-     70,   2,  16,   0,   0,   0, 
-      0,   0,  54,   0,   0,   5, 
-    130,  32,  16,   0,   0,   0, 
-      0,   0,  58,   0,  16,   0, 
-      2,   0,   0,   0,  62,   0, 
+      0,   0,   0,   0,  88,  24, 
+      0,   7,  70, 126,  48,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     85,  85,   0,   0,   0,   0, 
+      0,   0,  98,  16,   0,   3, 
+     50,  16,  16,   0,   2,   0, 
+      0,   0, 101,   0,   0,   3, 
+    242,  32,  16,   0,   0,   0, 
+      0,   0,  69,   0,   0,  11, 
+    242,  32,  16,   0,   0,   0, 
+      0,   0,  70,  16,  16,   0, 
+      2,   0,   0,   0,  70, 126, 
+     32,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  96, 
+     32,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  62,   0, 
       0,   1,  83,  84,  65,  84, 
-    148,   0,   0,   0,  14,   0, 
-      0,   0,   3,   0,   0,   0, 
+    148,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   2,   0, 
-      0,   0,   7,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -321,8 +167,8 @@ const BYTE DX12PixelShaderBytes[] =
       1,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -342,8 +188,8 @@ const BYTE DX12PixelShaderBytes[] =
      26,  68,  83,   0,   0,   0, 
       0,   2,   0,   0,   2,   0, 
       0,   0,  39,   0,   0,   0, 
-    196,   0,   0,   0,   0,   0, 
-      0,   0,  38,   0,   0,   0, 
+    188,   0,   0,   0,   0,   0, 
+      0,   0,  36,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -506,7 +352,7 @@ const BYTE DX12PixelShaderBytes[] =
     255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 
     255, 255,  56,   0,   0,   0, 
-    128, 255, 255, 255, 255, 255, 
+    224, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 
@@ -762,10 +608,10 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0, 148,  46,  49,   1, 
-    245, 212,  86,  92,   1,   0, 
-      0,   0, 215,  73, 210, 232, 
-    170, 197, 237,  66, 134, 238, 
-    130, 179, 180,  81, 240,  71, 
+     58,  62,  92,  92,   1,   0, 
+      0,   0, 116,  17,  92, 154, 
+    100,  80, 124,  74, 180,  71, 
+    202, 147, 113, 214,  11,  18, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
@@ -858,93 +704,93 @@ const BYTE DX12PixelShaderBytes[] =
     112, 108, 101, 114,  83, 116, 
      97, 116, 101,  32,  83,  97, 
     109, 112, 108, 101,  84, 121, 
-    112, 101,  59,  13,  10,  13, 
-     10,  47,  47,  32,  84, 104, 
-    101,  32, 112, 111, 115, 105, 
-    116, 105, 111, 110,  32, 111, 
-    102,  32, 116, 104, 101,  32, 
-    107,  97, 109, 101, 114,  97, 
+    112, 101,  32,  58,  32, 114, 
+    101, 103, 105, 115, 116, 101, 
+    114,  40,  32, 115,  48,  32, 
+     41,  59,  13,  10,  13,  10, 
+     47,  47,  32,  77,  97, 116, 
+    114, 105, 122, 101, 110,  32, 
+    102, 114,  32, 100, 105, 101, 
+     32, 101, 105, 110, 122, 101, 
+    108, 110, 101, 110,  32,  75, 
+    110, 111,  99, 104, 101, 110, 
+     32, 100, 101, 115,  32,  77, 
+    111, 100, 101, 108, 108, 115, 
      13,  10, 115, 116, 114, 117, 
-     99, 116,  32,  75,  97, 109, 
-    101, 114,  97,  66, 117, 102, 
+     99, 116,  32,  77,  97, 116, 
+    114, 105, 120,  66, 117, 102, 
     102, 101, 114,  13,  10, 123, 
      13,  10,  32,  32,  32,  32, 
-    102, 108, 111,  97, 116,  52, 
-     32, 107,  80, 111, 115, 105, 
-    116, 105, 111, 110,  59,  13, 
-     10, 125,  59,  13,  10,  13, 
-     10,  47,  47,  32, 116, 104, 
-    101, 115, 101,  32, 118,  97, 
-    108, 117, 101, 115,  32, 115, 
-    104, 111, 117, 108, 100,  32, 
-    115, 117, 109,  32, 117, 112, 
-     32, 116, 111,  32,  49,  13, 
+    109,  97, 116, 114, 105, 120, 
+     32, 107, 110, 111,  99, 104, 
+    101, 110,  77,  97, 116, 114, 
+    105, 120,  91,  32,  49,  50, 
+     56,  32,  93,  59,  13,  10, 
+    125,  59,  13,  10,  13,  10, 
+     47,  47,  32,  84, 104, 101, 
+     32, 112, 114, 111, 106, 101, 
+     99, 116, 105, 111, 110,  32, 
+     97, 110, 100,  32, 118, 105, 
+    101, 119,  32, 109,  97, 116, 
+    114, 105, 120,  13,  10, 115, 
+    116, 114, 117,  99, 116,  32, 
+     75,  97, 109, 101, 114,  97, 
+     66, 117, 102, 102, 101, 114, 
+     50,  13,  10, 123,  13,  10, 
+     32,  32,  32,  32, 109,  97, 
+    116, 114, 105, 120,  32, 118, 
+    105, 101, 119,  59,  13,  10, 
+     32,  32,  32,  32, 109,  97, 
+    116, 114, 105, 120,  32, 112, 
+    114, 111, 106, 101,  99, 116, 
+    105, 111, 110,  59,  13,  10, 
+    125,  59,  13,  10,  13,  10, 
+     47,  47,  32,  84, 104, 101, 
+     32, 112, 111, 115, 105, 116, 
+    105, 111, 110,  32, 111, 102, 
+     32, 116, 104, 101,  32, 107, 
+     97, 109, 101, 114,  97,  13, 
      10, 115, 116, 114, 117,  99, 
-    116,  32,  77,  97, 116, 101, 
-    114, 105,  97, 108,  13,  10, 
-    123,  13,  10,  32,  32,  32, 
-     32, 102, 108, 111,  97, 116, 
-     32,  97, 109,  98, 105, 101, 
-    110, 116,  70,  97,  99, 116, 
+    116,  32,  75,  97, 109, 101, 
+    114,  97,  66, 117, 102, 102, 
+    101, 114,  13,  10, 123,  13, 
+     10,  32,  32,  32,  32, 102, 
+    108, 111,  97, 116,  52,  32, 
+    107,  80, 111, 115, 105, 116, 
+    105, 111, 110,  59,  13,  10, 
+    125,  59,  13,  10,  13,  10, 
+     47,  47,  32, 116, 104, 101, 
+    115, 101,  32, 118,  97, 108, 
+    117, 101, 115,  32, 115, 104, 
+    111, 117, 108, 100,  32, 115, 
+    117, 109,  32, 117, 112,  32, 
+    116, 111,  32,  49,  13,  10, 
+    115, 116, 114, 117,  99, 116, 
+     32,  77,  97, 116, 101, 114, 
+    105,  97, 108,  13,  10, 123, 
+     13,  10,  32,  32,  32,  32, 
+    102, 108, 111,  97, 116,  32, 
+     97, 109,  98, 105, 101, 110, 
+    116,  70,  97,  99, 116, 111, 
+    114,  59,  13,  10,  32,  32, 
+     32,  32, 102, 108, 111,  97, 
+    116,  32, 100, 105, 102, 102, 
+    117, 115,  70,  97,  99, 116, 
     111, 114,  59,  13,  10,  32, 
      32,  32,  32, 102, 108, 111, 
-     97, 116,  32, 100, 105, 102, 
-    102, 117, 115,  70,  97,  99, 
-    116, 111, 114,  59,  13,  10, 
-     32,  32,  32,  32, 102, 108, 
-    111,  97, 116,  32, 115, 112, 
-    101,  99, 117, 108,  97, 114, 
-     70,  97,  99, 116, 111, 114, 
-     59,  13,  10, 125,  59,  13, 
-     10,  13,  10, 115, 116, 114, 
-    117,  99, 116,  32,  76, 105, 
-    103, 104, 116,  67, 111, 117, 
-    110, 116,  13,  10, 123,  13, 
-     10,  32,  32,  32,  32, 105, 
-    110, 116,  32, 100, 105, 102, 
-    102, 117, 115, 101,  76, 105, 
-    103, 104, 116,  67, 111, 117, 
-    110, 116,  59,  13,  10,  32, 
-     32,  32,  32, 105, 110, 116, 
-     32, 112, 111, 105, 110, 116, 
-     76, 105, 103, 104, 116,  67, 
-    111, 117, 110, 116,  59,  13, 
-     10, 125,  59,  13,  10,  13, 
-     10,  67, 111, 110, 115, 116, 
-     97, 110, 116,  66, 117, 102, 
-    102, 101, 114,  60,  75,  97, 
-    109, 101, 114,  97,  66, 117, 
-    102, 102, 101, 114,  62,  32, 
-     75,  97, 109, 101, 114,  97, 
-     32,  58,  32, 114, 101, 103, 
-    105, 115, 116, 101, 114,  40, 
-     32,  98,  50,  32,  41,  59, 
-     13,  10,  67, 111, 110, 115, 
-    116,  97, 110, 116,  66, 117, 
-    102, 102, 101, 114,  60,  77, 
-     97, 116, 101, 114, 105,  97, 
-    108,  62,  32,  79,  98, 106, 
-    101,  99, 116,  32,  58,  32, 
-    114, 101, 103, 105, 115, 116, 
-    101, 114,  40,  32,  98,  51, 
-     32,  41,  59,  13,  10,  67, 
-    111, 110, 115, 116,  97, 110, 
-    116,  66, 117, 102, 102, 101, 
-    114,  60,  76, 105, 103, 104, 
-    116,  67, 111, 117, 110, 116, 
     198,  90,   0,   0, 117, 131, 
       1,   0,  76, 232,   3,   0, 
     242,  56,   1,   0,  43, 236, 
       3,   0,  28,  19,   2,   0, 
      65,  36,   1,   0, 236, 179, 
-      1,   0,  97, 167,   3,   0, 
+      1,   0, 249, 178,   1,   0, 
     125,  10,   2,   0, 125, 181, 
       2,   0, 200,  81,   2,   0, 
     193,  33,   3,   0,  65, 185, 
-      2,   0, 140, 239,   1,   0, 
-    246,  49,   0,   0, 213, 255, 
-      0,   0, 115, 108,   0,   0, 
-    202, 179,   0,   0,   0,  16, 
+      2,   0,   0,  16,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -1081,7 +927,47 @@ const BYTE DX12PixelShaderBytes[] =
     112, 108, 101, 114,  83, 116, 
      97, 116, 101,  32,  83,  97, 
     109, 112, 108, 101,  84, 121, 
-    112, 101,  59,  13,  10,  13, 
+    112, 101,  32,  58,  32, 114, 
+    101, 103, 105, 115, 116, 101, 
+    114,  40,  32, 115,  48,  32, 
+     41,  59,  13,  10,  13,  10, 
+     47,  47,  32,  77,  97, 116, 
+    114, 105, 122, 101, 110,  32, 
+    102, 252, 114,  32, 100, 105, 
+    101,  32, 101, 105, 110, 122, 
+    101, 108, 110, 101, 110,  32, 
+     75, 110, 111,  99, 104, 101, 
+    110,  32, 100, 101, 115,  32, 
+     77, 111, 100, 101, 108, 108, 
+    115,  13,  10, 115, 116, 114, 
+    117,  99, 116,  32,  77,  97, 
+    116, 114, 105, 120,  66, 117, 
+    102, 102, 101, 114,  13,  10, 
+    123,  13,  10,  32,  32,  32, 
+     32, 109,  97, 116, 114, 105, 
+    120,  32, 107, 110, 111,  99, 
+    104, 101, 110,  77,  97, 116, 
+    114, 105, 120,  91,  32,  49, 
+     50,  56,  32,  93,  59,  13, 
+     10, 125,  59,  13,  10,  13, 
+     10,  47,  47,  32,  84, 104, 
+    101,  32, 112, 114, 111, 106, 
+    101,  99, 116, 105, 111, 110, 
+     32,  97, 110, 100,  32, 118, 
+    105, 101, 119,  32, 109,  97, 
+    116, 114, 105, 120,  13,  10, 
+    115, 116, 114, 117,  99, 116, 
+     32,  75,  97, 109, 101, 114, 
+     97,  66, 117, 102, 102, 101, 
+    114,  50,  13,  10, 123,  13, 
+     10,  32,  32,  32,  32, 109, 
+     97, 116, 114, 105, 120,  32, 
+    118, 105, 101, 119,  59,  13, 
+     10,  32,  32,  32,  32, 109, 
+     97, 116, 114, 105, 120,  32, 
+    112, 114, 111, 106, 101,  99, 
+    116, 105, 111, 110,  59,  13, 
+     10, 125,  59,  13,  10,  13, 
      10,  47,  47,  32,  84, 104, 
     101,  32, 112, 111, 115, 105, 
     116, 105, 111, 110,  32, 111, 
@@ -1137,82 +1023,101 @@ const BYTE DX12PixelShaderBytes[] =
      97, 110, 116,  66, 117, 102, 
     102, 101, 114,  60,  75,  97, 
     109, 101, 114,  97,  66, 117, 
-    102, 102, 101, 114,  62,  32, 
-     75,  97, 109, 101, 114,  97, 
+    102, 102, 101, 114,  50,  62, 
+     32,  75,  97, 109, 101, 114, 
+     97,  50,  32,  58,  32, 114, 
+    101, 103, 105, 115, 116, 101, 
+    114,  40,  32,  98,  48,  32, 
+     41,  59,  13,  10,  67, 111, 
+    110, 115, 116,  97, 110, 116, 
+     66, 117, 102, 102, 101, 114, 
+     60,  77,  97, 116, 114, 105, 
+    120,  66, 117, 102, 102, 101, 
+    114,  62,  32,  83, 107, 101, 
+    108, 101, 116, 116,  32,  58, 
+     32, 114, 101, 103, 105, 115, 
+    116, 101, 114,  40,  32,  98, 
+     49,  32,  41,  59,  13,  10, 
+     67, 111, 110, 115, 116,  97, 
+    110, 116,  66, 117, 102, 102, 
+    101, 114,  60,  75,  97, 109, 
+    101, 114,  97,  66, 117, 102, 
+    102, 101, 114,  62,  32,  75, 
+     97, 109, 101, 114,  97,  32, 
+     58,  32, 114, 101, 103, 105, 
+    115, 116, 101, 114,  40,  32, 
+     98,  50,  32,  41,  59,  13, 
+     10,  67, 111, 110, 115, 116, 
+     97, 110, 116,  66, 117, 102, 
+    102, 101, 114,  60,  77,  97, 
+    116, 101, 114, 105,  97, 108, 
+     62,  32,  79,  98, 106, 101, 
+     99, 116,  32,  58,  32, 114, 
+    101, 103, 105, 115, 116, 101, 
+    114,  40,  32,  98,  51,  32, 
+     41,  59,  13,  10,  67, 111, 
+    110, 115, 116,  97, 110, 116, 
+     66, 117, 102, 102, 101, 114, 
+     60,  76, 105, 103, 104, 116, 
+     67, 111, 117, 110, 116,  62, 
+     32,  76, 105, 103, 104, 116, 
      32,  58,  32, 114, 101, 103, 
     105, 115, 116, 101, 114,  40, 
-     32,  98,  50,  32,  41,  59, 
-     13,  10,  67, 111, 110, 115, 
-    116,  97, 110, 116,  66, 117, 
-    102, 102, 101, 114,  60,  77, 
-     97, 116, 101, 114, 105,  97, 
-    108,  62,  32,  79,  98, 106, 
-    101,  99, 116,  32,  58,  32, 
-    114, 101, 103, 105, 115, 116, 
-    101, 114,  40,  32,  98,  51, 
-     32,  41,  59,  13,  10,  67, 
-    111, 110, 115, 116,  97, 110, 
-    116,  66, 117, 102, 102, 101, 
-    114,  60,  76, 105, 103, 104, 
-    116,  67, 111, 117, 110, 116, 
-     62,  32,  76, 105, 103, 104, 
-    116,  32,  58,  32, 114, 101, 
-    103, 105, 115, 116, 101, 114, 
-     40,  32,  98,  52,  32,  41, 
-     59,  13,  10,  13,  10,  47, 
-     47,  32, 108, 105, 103, 104, 
-    116, 115,  13,  10, 115, 116, 
-    114, 117,  99, 116,  32,  68, 
-    105, 102, 102, 117, 115, 101, 
-     76, 105, 103, 104, 116,  13, 
-     10, 123,  13,  10,  32,  32, 
-     32,  32, 102, 108, 111,  97, 
-    116,  51,  32, 100, 105, 114, 
-    101,  99, 116, 105, 111, 110, 
-     59,  13,  10,  32,  32,  32, 
+     32,  98,  52,  32,  41,  59, 
+     13,  10,  13,  10,  47,  47, 
+     32, 108, 105, 103, 104, 116, 
+    115,  13,  10, 115, 116, 114, 
+    117,  99, 116,  32,  68, 105, 
+    102, 102, 117, 115, 101,  76, 
+    105, 103, 104, 116,  13,  10, 
+    123,  13,  10,  32,  32,  32, 
      32, 102, 108, 111,  97, 116, 
-     51,  32,  99, 111, 108, 111, 
-    114,  59,  13,  10, 125,  59, 
-     13,  10,  13,  10, 115, 116, 
-    114, 117,  99, 116,  32,  80, 
-    111, 105, 110, 116,  76, 105, 
-    103, 104, 116,  13,  10, 123, 
+     51,  32, 100, 105, 114, 101, 
+     99, 116, 105, 111, 110,  59, 
      13,  10,  32,  32,  32,  32, 
     102, 108, 111,  97, 116,  51, 
-     32, 112, 111, 115, 105, 116, 
-    105, 111, 110,  59,  13,  10, 
-     32,  32,  32,  32, 102, 108, 
-    111,  97, 116,  51,  32,  99, 
-    111, 108, 111, 114,  59,  13, 
+     32,  99, 111, 108, 111, 114, 
+     59,  13,  10, 125,  59,  13, 
+     10,  13,  10, 115, 116, 114, 
+    117,  99, 116,  32,  80, 111, 
+    105, 110, 116,  76, 105, 103, 
+    104, 116,  13,  10, 123,  13, 
      10,  32,  32,  32,  32, 102, 
-    108, 111,  97, 116,  32, 114, 
-     97, 100, 105, 117, 115,  59, 
-     13,  10, 125,  59,  13,  10, 
+    108, 111,  97, 116,  51,  32, 
+    112, 111, 115, 105, 116, 105, 
+    111, 110,  59,  13,  10,  32, 
+     32,  32,  32, 102, 108, 111, 
+     97, 116,  51,  32,  99, 111, 
+    108, 111, 114,  59,  13,  10, 
+     32,  32,  32,  32, 102, 108, 
+    111,  97, 116,  32, 114,  97, 
+    100, 105, 117, 115,  59,  13, 
+     10, 125,  59,  13,  10,  13, 
+     10,  47,  47,  83, 116, 114, 
+    117,  99, 116, 117, 114, 101, 
+    100,  66, 117, 102, 102, 101, 
+    114,  60,  32,  68, 105, 102, 
+    102, 117, 115, 101,  76, 105, 
+    103, 104, 116,  32,  62,  32, 
+    100, 105, 102, 117, 115, 101, 
+     76, 105, 103, 104, 116, 115, 
+     32,  58,  32, 114, 101, 103, 
+    105, 115, 116, 101, 114,  40, 
+     32, 116,  49,  32,  41,  59, 
      13,  10,  47,  47,  83, 116, 
     114, 117,  99, 116, 117, 114, 
     101, 100,  66, 117, 102, 102, 
-    101, 114,  60,  32,  68, 105, 
-    102, 102, 117, 115, 101,  76, 
-    105, 103, 104, 116,  32,  62, 
-     32, 100, 105, 102, 117, 115, 
-    101,  76, 105, 103, 104, 116, 
-    115,  32,  58,  32, 114, 101, 
-    103, 105, 115, 116, 101, 114, 
-     40,  32, 116,  49,  32,  41, 
-     59,  13,  10,  47,  47,  83, 
-    116, 114, 117,  99, 116, 117, 
-    114, 101, 100,  66, 117, 102, 
-    102, 101, 114,  60,  32,  80, 
+    101, 114,  60,  32,  80, 111, 
+    105, 110, 116,  76, 105, 103, 
+    104, 116,  32,  62,  32, 112, 
     111, 105, 110, 116,  76, 105, 
-    103, 104, 116,  32,  62,  32, 
-    112, 111, 105, 110, 116,  76, 
-    105, 103, 104, 116, 115,  32, 
-     58,  32, 114, 101, 103, 105, 
-    115, 116, 101, 114,  40,  32, 
-    116,  50,  32,  41,  59,  13, 
-     10,  13,  10,  47,  47,  47, 
+    103, 104, 116, 115,  32,  58, 
+     32, 114, 101, 103, 105, 115, 
+    116, 101, 114,  40,  32, 116, 
+     50,  32,  41,  59,  13,  10, 
+     13,  10,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
-     47,  47,  47,  47,  47,  32, 
+     47,  47,  47,  47,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
@@ -1227,10 +1132,10 @@ const BYTE DX12PixelShaderBytes[] =
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  13, 
-     10,  47,  47,  32,  84,  89, 
-     80,  69,  68,  69,  70,  83, 
-     32,  47,  47,  32,  32,  32, 
+     32,  32,  32,  32,  13,  10, 
+     47,  47,  32,  84,  89,  80, 
+     69,  68,  69,  70,  83,  32, 
+     47,  47,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
@@ -1245,10 +1150,9 @@ const BYTE DX12PixelShaderBytes[] =
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  13,  10,  47, 
+     32,  32,  13,  10,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
-     47,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
@@ -1263,34 +1167,35 @@ const BYTE DX12PixelShaderBytes[] =
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  13,  10, 115, 116, 114, 
-    117,  99, 116,  32,  80, 105, 
-    120, 101, 108,  73, 110, 112, 
-    117, 116,  84, 121, 112, 101, 
-     13,  10, 123,  13,  10,  32, 
-     32,  32,  32, 102, 108, 111, 
-     97, 116,  52,  32, 119, 111, 
-    114, 108, 100,  80, 111, 115, 
-     32,  58,  32,  80,  79,  83, 
-     73,  84,  73,  79,  78,  59, 
-     13,  10,  32,  32,  32,  32, 
-    102, 108, 111,  97, 116,  52, 
-     32, 112, 111, 115, 105, 116, 
-    105, 111, 110,  32,  58,  32, 
-     83,  86,  95,  80,  79,  83, 
-     73,  84,  73,  79,  78,  59, 
-     13,  10,  32,  32,  32,  32, 
-    102, 108, 111,  97, 116,  50, 
-     32, 116, 101, 120,  32,  58, 
-     32,  84,  69,  88,  67,  79, 
-     79,  82,  68,  48,  59,  13, 
+     32,  32,  32,  32,  32,  32, 
+     13,  10, 115, 116, 114, 117, 
+     99, 116,  32,  80, 105, 120, 
+    101, 108,  73, 110, 112, 117, 
+    116,  84, 121, 112, 101,  13, 
+     10, 123,  13,  10,  32,  32, 
+     32,  32, 102, 108, 111,  97, 
+    116,  52,  32, 119, 111, 114, 
+    108, 100,  80, 111, 115,  32, 
+     58,  32,  80,  79,  83,  73, 
+     84,  73,  79,  78,  59,  13, 
      10,  32,  32,  32,  32, 102, 
-    108, 111,  97, 116,  51,  32, 
-    110, 111, 114, 109,  97, 108, 
-     32,  58,  32,  84,  69,  88, 
-     67,  79,  79,  82,  68,  49, 
-     59,  13,  10, 125,  59,  13, 
-     10,  13,  10,  47,  47,  47, 
+    108, 111,  97, 116,  52,  32, 
+    112, 111, 115, 105, 116, 105, 
+    111, 110,  32,  58,  32,  83, 
+     86,  95,  80,  79,  83,  73, 
+     84,  73,  79,  78,  59,  13, 
+     10,  32,  32,  32,  32, 102, 
+    108, 111,  97, 116,  50,  32, 
+    116, 101, 120,  32,  58,  32, 
+     84,  69,  88,  67,  79,  79, 
+     82,  68,  59,  13,  10,  32, 
+     32,  32,  32, 102, 108, 111, 
+     97, 116,  51,  32, 110, 111, 
+    114, 109,  97, 108,  32,  58, 
+     32,  78,  79,  82,  77,  65, 
+     76,  59,  13,  10, 125,  59, 
+     13,  10,  13,  10,  47,  47, 
+     47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
@@ -1303,14 +1208,13 @@ const BYTE DX12PixelShaderBytes[] =
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
-     47,  47,  47,  47,  47,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  13, 
-     10,  47,  47,  32,  80, 105, 
-    120, 101, 108,  32,  83, 104, 
-     97, 100, 101, 114,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     13,  10,  47,  47,  32,  80, 
+    105, 120, 101, 108,  32,  83, 
+    104,  97, 100, 101, 114,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
@@ -1325,7 +1229,7 @@ const BYTE DX12PixelShaderBytes[] =
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  13,  10,  47, 
+     32,  32,  32,  32,  13,  10, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
@@ -1339,249 +1243,260 @@ const BYTE DX12PixelShaderBytes[] =
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
-     47,  32,  32,  32,  32,  32, 
+     47,  47,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  13,  10, 102, 108, 111, 
-     97, 116,  52,  32, 109,  97, 
-    105, 110,  40,  32,  80, 105, 
-    120, 101, 108,  73, 110, 112, 
-    117, 116,  84, 121, 112, 101, 
-     32, 105, 110, 112, 117, 116, 
-     32,  41,  32,  58,  32,  83, 
-     86,  95,  84,  65,  82,  71, 
-     69,  84,  13,  10, 123,  13, 
-     10,  32,  32,  32,  32, 102, 
-    108, 111,  97, 116,  51,  32, 
-    100, 105, 102, 102, 117, 115, 
-    101,  76, 105, 103, 104, 116, 
-     32,  61,  32, 102, 108, 111, 
-     97, 116,  51,  40,  32,  48, 
-     44,  32,  48,  44,  32,  48, 
-     32,  41,  59,  13,  10,  32, 
-     32,  32,  32, 102, 108, 111, 
-     97, 116,  51,  32, 115, 112, 
-    101,  99, 117, 108,  97, 114, 
-     76, 105, 103, 104, 116,  32, 
-     61,  32, 102, 108, 111,  97, 
-    116,  51,  40,  32,  48,  44, 
-     32,  48,  44,  32,  48,  32, 
-     41,  59,  13,  10,  32,  32, 
-     32,  47,  42,  32, 102, 111, 
-    114,  40,  32, 105, 110, 116, 
-     32, 106,  32,  61,  32,  48, 
-     59,  32, 106,  32,  60,  32, 
-     76, 105, 103, 104, 116,  46, 
-    100, 105, 102, 102, 117, 115, 
-    101,  76, 105, 103, 104, 116, 
-     67, 111, 117, 110, 116,  59, 
-     32, 106,  43,  43,  32,  41, 
+     32,  32,  13,  10, 102, 108, 
+    111,  97, 116,  52,  32, 109, 
+     97, 105, 110,  40,  32,  80, 
+    105, 120, 101, 108,  73, 110, 
+    112, 117, 116,  84, 121, 112, 
+    101,  32, 105, 110, 112, 117, 
+    116,  32,  41,  32,  58,  32, 
+     83,  86,  95,  84,  65,  82, 
+     71,  69,  84,  13,  10, 123, 
      13,  10,  32,  32,  32,  32, 
-    123,  13,  10,  32,  32,  32, 
-     32,  32,  32,  32,  32, 105, 
-    102,  40,  32, 100, 111, 116, 
-     40,  32, 105, 110, 112, 117, 
-    116,  46, 110, 111, 114, 109, 
-     97, 108,  44,  32,  45, 100, 
-    105, 102, 117, 115, 101,  76, 
-    105, 103, 104, 116, 115,  91, 
-     32, 106,  32,  93,  46, 100, 
-    105, 114, 101,  99, 116, 105, 
-    111, 110,  32,  41,  32,  60, 
-     32,  48,  32,  41,  13,  10, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     99, 111, 110, 116, 105, 110, 
-    117, 101,  59,  13,  10,  32, 
-     32,  32,  32,  32,  32,  32, 
+    102, 108, 111,  97, 116,  51, 
      32, 100, 105, 102, 102, 117, 
     115, 101,  76, 105, 103, 104, 
-    116,  32,  43,  61,  32, 100, 
-    105, 102, 117, 115, 101,  76, 
-    105, 103, 104, 116, 115,  91, 
-     32, 106,  32,  93,  46,  99, 
-    111, 108, 111, 114,  32,  42, 
-     32, 100, 111, 116,  40,  32, 
-    105, 110, 112, 117, 116,  46, 
-    110, 111, 114, 109,  97, 108, 
-     44,  32,  45, 100, 105, 102, 
-    117, 115, 101,  76, 105, 103, 
-    104, 116, 115,  91,  32, 106, 
-     32,  93,  46, 100, 105, 114, 
-    101,  99, 116, 105, 111, 110, 
+    116,  32,  61,  32, 102, 108, 
+    111,  97, 116,  51,  40,  32, 
+     48,  44,  32,  48,  44,  32, 
+     48,  32,  41,  59,  13,  10, 
+     32,  32,  32,  32, 102, 108, 
+    111,  97, 116,  51,  32, 115, 
+    112, 101,  99, 117, 108,  97, 
+    114,  76, 105, 103, 104, 116, 
+     32,  61,  32, 102, 108, 111, 
+     97, 116,  51,  40,  32,  48, 
+     44,  32,  48,  44,  32,  48, 
      32,  41,  59,  13,  10,  32, 
-     32,  32,  32, 125,  13,  10, 
-     32,  32,  32,  32, 102, 111, 
-    114,  40,  32, 105, 110, 116, 
-     32, 105,  32,  61,  32,  48, 
-     59,  32, 105,  32,  60,  32, 
-     76, 105, 103, 104, 116,  46, 
-    112, 111, 105, 110, 116,  76, 
-    105, 103, 104, 116,  67, 111, 
-    117, 110, 116,  59,  32, 105, 
-     43,  43,  32,  41,  13,  10, 
-     32,  32,  32,  32, 123,  13, 
+     32,  32,  47,  42,  32, 102, 
+    111, 114,  40,  32, 105, 110, 
+    116,  32, 106,  32,  61,  32, 
+     48,  59,  32, 106,  32,  60, 
+     32,  76, 105, 103, 104, 116, 
+     46, 100, 105, 102, 102, 117, 
+    115, 101,  76, 105, 103, 104, 
+    116,  67, 111, 117, 110, 116, 
+     59,  32, 106,  43,  43,  32, 
+     41,  13,  10,  32,  32,  32, 
+     32, 123,  13,  10,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+    105, 102,  40,  32, 100, 111, 
+    116,  40,  32, 105, 110, 112, 
+    117, 116,  46, 110, 111, 114, 
+    109,  97, 108,  44,  32,  45, 
+    100, 105, 102, 117, 115, 101, 
+     76, 105, 103, 104, 116, 115, 
+     91,  32, 106,  32,  93,  46, 
+    100, 105, 114, 101,  99, 116, 
+    105, 111, 110,  32,  41,  32, 
+     60,  32,  48,  32,  41,  13, 
      10,  32,  32,  32,  32,  32, 
-     32,  32,  32, 102, 108, 111, 
-     97, 116,  51,  32, 108, 105, 
-    103, 104, 116,  68, 105, 114, 
-     32,  61,  32, 112, 111, 105, 
-    110, 116,  76, 105, 103, 104, 
-    116, 115,  91,  32, 105,  32, 
-     93,  46, 112, 111, 115, 105, 
-    116, 105, 111, 110,  32,  45, 
-     32, 105, 110, 112, 117, 116, 
-     46, 119, 111, 114, 108, 100, 
-     80, 111, 115,  46, 120, 121, 
-    122,  59,  13,  10,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-    102, 108, 111,  97, 116,  32, 
-    102,  97,  99, 116, 111, 114, 
-     32,  61,  32, 112, 111, 105, 
-    110, 116,  76, 105, 103, 104, 
-    116, 115,  91,  32, 105,  32, 
-     93,  46, 114,  97, 100, 105, 
-    117, 115,  32,  47,  32, 108, 
-    101, 110, 103, 116, 104,  40, 
-     32, 108, 105, 103, 104, 116, 
-     68, 105, 114,  32,  41,  59, 
-     13,  10,  32,  32,  32,  32, 
-     32,  32,  32,  32, 102, 108, 
-    111,  97, 116,  32, 102,  32, 
-     61,  32, 100, 111, 116,  40, 
+     32,  99, 111, 110, 116, 105, 
+    110, 117, 101,  59,  13,  10, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32, 100, 105, 102, 102, 
+    117, 115, 101,  76, 105, 103, 
+    104, 116,  32,  43,  61,  32, 
+    100, 105, 102, 117, 115, 101, 
+     76, 105, 103, 104, 116, 115, 
+     91,  32, 106,  32,  93,  46, 
+     99, 111, 108, 111, 114,  32, 
+     42,  32, 100, 111, 116,  40, 
      32, 105, 110, 112, 117, 116, 
      46, 110, 111, 114, 109,  97, 
-    108,  44,  32, 110, 111, 114, 
-    109,  97, 108, 105, 122, 101, 
+    108,  44,  32,  45, 100, 105, 
+    102, 117, 115, 101,  76, 105, 
+    103, 104, 116, 115,  91,  32, 
+    106,  32,  93,  46, 100, 105, 
+    114, 101,  99, 116, 105, 111, 
+    110,  32,  41,  59,  13,  10, 
+     32,  32,  32,  32, 125,  13, 
+     10,  32,  32,  32,  32, 102, 
+    111, 114,  40,  32, 105, 110, 
+    116,  32, 105,  32,  61,  32, 
+     48,  59,  32, 105,  32,  60, 
+     32,  76, 105, 103, 104, 116, 
+     46, 112, 111, 105, 110, 116, 
+     76, 105, 103, 104, 116,  67, 
+    111, 117, 110, 116,  59,  32, 
+    105,  43,  43,  32,  41,  13, 
+     10,  32,  32,  32,  32, 123, 
+     13,  10,  32,  32,  32,  32, 
+     32,  32,  32,  32, 102, 108, 
+    111,  97, 116,  51,  32, 108, 
+    105, 103, 104, 116,  68, 105, 
+    114,  32,  61,  32, 112, 111, 
+    105, 110, 116,  76, 105, 103, 
+    104, 116, 115,  91,  32, 105, 
+     32,  93,  46, 112, 111, 115, 
+    105, 116, 105, 111, 110,  32, 
+     45,  32, 105, 110, 112, 117, 
+    116,  46, 119, 111, 114, 108, 
+    100,  80, 111, 115,  46, 120, 
+    121, 122,  59,  13,  10,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32, 102, 108, 111,  97, 116, 
+     32, 102,  97,  99, 116, 111, 
+    114,  32,  61,  32, 112, 111, 
+    105, 110, 116,  76, 105, 103, 
+    104, 116, 115,  91,  32, 105, 
+     32,  93,  46, 114,  97, 100, 
+    105, 117, 115,  32,  47,  32, 
+    108, 101, 110, 103, 116, 104, 
      40,  32, 108, 105, 103, 104, 
     116,  68, 105, 114,  32,  41, 
-     32,  41,  59,  13,  10,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32, 105, 102,  40,  32, 102, 
-     32,  62,  32,  48,  32,  41, 
+     59,  13,  10,  32,  32,  32, 
+     32,  32,  32,  32,  32, 102, 
+    108, 111,  97, 116,  32, 102, 
+     32,  61,  32, 100, 111, 116, 
+     40,  32, 105, 110, 112, 117, 
+    116,  46, 110, 111, 114, 109, 
+     97, 108,  44,  32, 110, 111, 
+    114, 109,  97, 108, 105, 122, 
+    101,  40,  32, 108, 105, 103, 
+    104, 116,  68, 105, 114,  32, 
+     41,  32,  41,  59,  13,  10, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32, 105, 102,  40,  32, 
+    102,  32,  62,  32,  48,  32, 
+     41,  13,  10,  32,  32,  32, 
+     32,  32,  32,  32,  32, 123, 
      13,  10,  32,  32,  32,  32, 
-     32,  32,  32,  32, 123,  13, 
-     10,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32, 100, 105, 102, 102, 117, 
-    115, 101,  76, 105, 103, 104, 
-    116,  32,  43,  61,  32, 112, 
-    111, 105, 110, 116,  76, 105, 
-    103, 104, 116, 115,  91,  32, 
-    105,  32,  93,  46,  99, 111, 
-    108, 111, 114,  32,  42,  32, 
-    102,  32,  42,  32, 102,  97, 
-     99, 116, 111, 114,  59,  13, 
-     10,  32,  32,  32,  32,  32, 
+     32,  32, 100, 105, 102, 102, 
+    117, 115, 101,  76, 105, 103, 
+    104, 116,  32,  43,  61,  32, 
+    112, 111, 105, 110, 116,  76, 
+    105, 103, 104, 116, 115,  91, 
+     32, 105,  32,  93,  46,  99, 
+    111, 108, 111, 114,  32,  42, 
+     32, 102,  32,  42,  32, 102, 
+     97,  99, 116, 111, 114,  59, 
+     13,  10,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32, 102,  32,  61,  32, 100, 
-    111, 116,  40,  32, 110, 111, 
-    114, 109,  97, 108, 105, 122, 
-    101,  40,  32, 114, 101, 102, 
-    108, 101,  99, 116,  40,  32, 
-    110, 111, 114, 109,  97, 108, 
-    105, 122, 101,  40,  32,  45, 
-    108, 105, 103, 104, 116,  68, 
-    105, 114,  32,  41,  44,  32, 
-    105, 110, 112, 117, 116,  46, 
-    110, 111, 114, 109,  97, 108, 
-     32,  41,  32,  41,  44,  32, 
-    110, 111, 114, 109,  97, 108, 
-    105, 122, 101,  40,  32,  75, 
-     97, 109, 101, 114,  97,  46, 
-    107,  80, 111, 115, 105, 116, 
-    105, 111, 110,  46, 120, 121, 
-    122,  32,  45,  32, 105, 110, 
-    112, 117, 116,  46, 119, 111, 
-    114, 108, 100,  80, 111, 115, 
-     46, 120, 121, 122,  32,  41, 
-     32,  41,  59,  13,  10,  32, 
+     32,  32, 102,  32,  61,  32, 
+    100, 111, 116,  40,  32, 110, 
+    111, 114, 109,  97, 108, 105, 
+    122, 101,  40,  32, 114, 101, 
+    102, 108, 101,  99, 116,  40, 
+     32, 110, 111, 114, 109,  97, 
+    108, 105, 122, 101,  40,  32, 
+     45, 108, 105, 103, 104, 116, 
+     68, 105, 114,  32,  41,  44, 
+     32, 105, 110, 112, 117, 116, 
+     46, 110, 111, 114, 109,  97, 
+    108,  32,  41,  32,  41,  44, 
+     32, 110, 111, 114, 109,  97, 
+    108, 105, 122, 101,  40,  32, 
+     75,  97, 109, 101, 114,  97, 
+     46, 107,  80, 111, 115, 105, 
+    116, 105, 111, 110,  46, 120, 
+    121, 122,  32,  45,  32, 105, 
+    110, 112, 117, 116,  46, 119, 
+    111, 114, 108, 100,  80, 111, 
+    115,  46, 120, 121, 122,  32, 
+     41,  32,  41,  59,  13,  10, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32, 105, 
-    102,  40,  32, 102,  32,  62, 
-     32,  48,  32,  41,  13,  10, 
      32,  32,  32,  32,  32,  32, 
+    105, 102,  40,  32, 102,  32, 
+     62,  32,  48,  32,  41,  13, 
+     10,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32, 115, 112, 
-    101,  99, 117, 108,  97, 114, 
-     76, 105, 103, 104, 116,  32, 
-     43,  61,  32, 112, 111, 105, 
-    110, 116,  76, 105, 103, 104, 
-    116, 115,  91,  32, 105,  32, 
-     93,  46,  99, 111, 108, 111, 
-    114,  32,  42,  32, 102,  32, 
-     42,  32, 102,  97,  99, 116, 
-    111, 114,  59,  13,  10,  32, 
+     32,  32,  32,  32,  32, 115, 
+    112, 101,  99, 117, 108,  97, 
+    114,  76, 105, 103, 104, 116, 
+     32,  43,  61,  32, 112, 111, 
+    105, 110, 116,  76, 105, 103, 
+    104, 116, 115,  91,  32, 105, 
+     32,  93,  46,  99, 111, 108, 
+    111, 114,  32,  42,  32, 102, 
+     32,  42,  32, 102,  97,  99, 
+    116, 111, 114,  59,  13,  10, 
      32,  32,  32,  32,  32,  32, 
-     32, 125,  13,  10,  32,  32, 
-     32,  32, 125,  42,  47,  13, 
-     10,  32,  32,  32,  32, 102, 
-    108, 111,  97, 116,  52,  32, 
-    109,  97, 116, 101, 114, 105, 
-     97, 108,  67, 111, 108, 111, 
-    114,  32,  61,  32, 115, 104, 
-     97, 100, 101, 114,  84, 101, 
-    120, 116, 117, 114, 101,  46, 
-     83,  97, 109, 112, 108, 101, 
-     40,  32,  83,  97, 109, 112, 
-    108, 101,  84, 121, 112, 101, 
-     44,  32, 105, 110, 112, 117, 
-    116,  46, 116, 101, 120,  32, 
-     41,  59,  13,  10,  32,  32, 
-     32,  32, 102, 108, 111,  97, 
-    116,  52,  32, 116, 101, 120, 
-    116, 117, 114, 101,  67, 111, 
-    108, 111, 114,  32,  61,  32, 
-    115,  97, 116, 117, 114,  97, 
-    116, 101,  40,  32, 109,  97, 
-    116, 101, 114, 105,  97, 108, 
-     67, 111, 108, 111, 114,  32, 
+     32,  32, 125,  13,  10,  32, 
+     32,  32,  32, 125,  42,  47, 
+     13,  10,  32,  32,  32,  32, 
+     47,  47, 102, 108, 111,  97, 
+    116,  52,  32, 109,  97, 116, 
+    101, 114, 105,  97, 108,  67, 
+    111, 108, 111, 114,  32,  61, 
+     32, 115, 104,  97, 100, 101, 
+    114,  84, 101, 120, 116, 117, 
+    114, 101,  46,  83,  97, 109, 
+    112, 108, 101,  40,  32,  83, 
+     97, 109, 112, 108, 101,  84, 
+    121, 112, 101,  44,  32, 105, 
+    110, 112, 117, 116,  46, 116, 
+    101, 120,  32,  41,  59,  13, 
+     10,  32,  32,  32,  32,  47, 
+     47, 102, 108, 111,  97, 116, 
+     52,  32, 116, 101, 120, 116, 
+    117, 114, 101,  67, 111, 108, 
+    111, 114,  32,  61,  32, 115, 
+     97, 116, 117, 114,  97, 116, 
+    101,  40,  32, 109,  97, 116, 
+    101, 114, 105,  97, 108,  67, 
+    111, 108, 111, 114,  32,  42, 
+     32,  79,  98, 106, 101,  99, 
+    116,  46,  97, 109,  98, 105, 
+    101, 110, 116,  70,  97,  99, 
+    116, 111, 114,  32,  43,  32, 
+    102, 108, 111,  97, 116,  52, 
+     40,  32, 100, 105, 102, 102, 
+    117, 115, 101,  76, 105, 103, 
+    104, 116,  46, 120,  44,  32, 
+    100, 105, 102, 102, 117, 115, 
+    101,  76, 105, 103, 104, 116, 
+     46, 121,  44,  32, 100, 105, 
+    102, 102, 117, 115, 101,  76, 
+    105, 103, 104, 116,  46, 122, 
+     44,  32,  48,  32,  41,  32, 
      42,  32,  79,  98, 106, 101, 
-     99, 116,  46,  97, 109,  98, 
-    105, 101, 110, 116,  70,  97, 
-     99, 116, 111, 114,  32,  43, 
-     32, 102, 108, 111,  97, 116, 
-     52,  40,  32, 100, 105, 102, 
-    102, 117, 115, 101,  76, 105, 
-    103, 104, 116,  46, 120,  44, 
-     32, 100, 105, 102, 102, 117, 
-    115, 101,  76, 105, 103, 104, 
-    116,  46, 121,  44,  32, 100, 
-    105, 102, 102, 117, 115, 101, 
-     76, 105, 103, 104, 116,  46, 
-    122,  44,  32,  48,  32,  41, 
-     32,  42,  32,  79,  98, 106, 
-    101,  99, 116,  46, 100, 105, 
-    102, 102, 117, 115,  70,  97, 
-     99, 116, 111, 114,  32,  43, 
-     32, 102, 108, 111,  97, 116, 
-     52,  40,  32, 115, 112, 101, 
-     99, 117, 108,  97, 114,  76, 
-    105, 103, 104, 116,  46, 120, 
-     44,  32, 115, 112, 101,  99, 
+     99, 116,  46, 100, 105, 102, 
+    102, 117, 115,  70,  97,  99, 
+    116, 111, 114,  32,  43,  32, 
+    102, 108, 111,  97, 116,  52, 
+     40,  32, 115, 112, 101,  99, 
     117, 108,  97, 114,  76, 105, 
-    103, 104, 116,  46, 121,  44, 
+    103, 104, 116,  46, 120,  44, 
      32, 115, 112, 101,  99, 117, 
     108,  97, 114,  76, 105, 103, 
-    104, 116,  46, 122,  44,  32, 
-     48,  32,  41,  32,  42,  32, 
-     79,  98, 106, 101,  99, 116, 
-     46, 115, 112, 101,  99, 117, 
-    108,  97, 114,  70,  97,  99, 
-    116, 111, 114,  32,  41,  59, 
-     13,  10,  32,  32,  32,  32, 
+    104, 116,  46, 121,  44,  32, 
+    115, 112, 101,  99, 117, 108, 
+     97, 114,  76, 105, 103, 104, 
+    116,  46, 122,  44,  32,  48, 
+     32,  41,  32,  42,  32,  79, 
+     98, 106, 101,  99, 116,  46, 
+    115, 112, 101,  99, 117, 108, 
+     97, 114,  70,  97,  99, 116, 
+    111, 114,  32,  41,  59,  13, 
+     10,  32,  32,  32,  32,  47, 
+     47, 116, 101, 120, 116, 117, 
+    114, 101,  67, 111, 108, 111, 
+    114,  46,  97,  32,  61,  32, 
+    109,  97, 116, 101, 114, 105, 
+     97, 108,  67, 111, 108, 111, 
+    114,  46,  97,  59,  13,  10, 
+     32,  32,  32,  32, 114, 101, 
+    116, 117, 114, 110,  32, 115, 
+    104,  97, 100, 101, 114,  84, 
+    101, 120, 116, 117, 114, 101, 
+     46,  83,  97, 109, 112, 108, 
+    101,  40,  32,  83,  97, 109, 
+    112, 108, 101,  84, 121, 112, 
+    101,  44,  32, 105, 110, 112, 
+    117, 116,  46, 116, 101, 120, 
+     32,  41,  59,  13,  10,  32, 
+     32,  32,  32,  47,  47, 114, 
+    101, 116, 117, 114, 110,  32, 
     116, 101, 120, 116, 117, 114, 
     101,  67, 111, 108, 111, 114, 
-     46,  97,  32,  61,  32, 109, 
-     97, 116, 101, 114, 105,  97, 
-    108,  67, 111, 108, 111, 114, 
-     46,  97,  59,  13,  10,  32, 
-     32,  32,  32, 114, 101, 116, 
-    117, 114, 110,  32, 116, 101, 
-    120, 116, 117, 114, 101,  67, 
-    111, 108, 111, 114,  59,  13, 
-     10, 125,   0,   0,   0,   0, 
+     59,  13,  10, 125,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -1614,42 +1529,59 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 254, 239, 
-    254, 239,   1,   0,   0,   0, 
-    243,  13,   0,   0,   0,  67, 
-     58,  92,  85, 115, 101, 114, 
-    115,  92, 107, 111, 108, 106, 
-     97,  92,  79, 110, 101,  68, 
-    114, 105, 118, 101,  92,  68, 
-    101, 115, 107, 116, 111, 112, 
-     92,  75, 111, 108, 106,  97, 
-     45,  83, 116, 114, 111, 104, 
-    109,  45,  71,  97, 109, 101, 
-    115,  92,  65, 108, 108, 103, 
-    101, 109, 101, 105, 110,  92, 
-     70, 114,  97, 109, 101, 119, 
-    111, 114, 107,  92,  68,  88, 
-     49,  50,  80, 105, 120, 101, 
-    108,  83, 104,  97, 100, 101, 
-    114,  46, 104, 108, 115, 108, 
-      0,   0,  99,  58,  92, 117, 
-    115, 101, 114, 115,  92, 107, 
-    111, 108, 106,  97,  92, 111, 
-    110, 101, 100, 114, 105, 118, 
-    101,  92, 100, 101, 115, 107, 
-    116, 111, 112,  92, 107, 111, 
-    108, 106,  97,  45, 115, 116, 
-    114, 111, 104, 109,  45, 103, 
-     97, 109, 101, 115,  92,  97, 
-    108, 108, 103, 101, 109, 101, 
-    105, 110,  92, 102, 114,  97, 
-    109, 101, 119, 111, 114, 107, 
-     92, 100, 120,  49,  50, 112, 
-    105, 120, 101, 108, 115, 104, 
-     97, 100, 101, 114,  46, 104, 
-    108, 115, 108,   0,  47,  47, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    254, 239, 254, 239,   1,   0, 
+      0,   0, 146,  15,   0,   0, 
+      0,  67,  58,  92,  85, 115, 
+    101, 114, 115,  92, 107, 111, 
+    108, 106,  97,  92,  79, 110, 
+    101,  68, 114, 105, 118, 101, 
+     92,  68, 101, 115, 107, 116, 
+    111, 112,  92,  75, 111, 108, 
+    106,  97,  45,  83, 116, 114, 
+    111, 104, 109,  45,  71,  97, 
+    109, 101, 115,  92,  65, 108, 
+    108, 103, 101, 109, 101, 105, 
+    110,  92,  70, 114,  97, 109, 
+    101, 119, 111, 114, 107,  92, 
+     68,  88,  49,  50,  80, 105, 
+    120, 101, 108,  83, 104,  97, 
+    100, 101, 114,  46, 104, 108, 
+    115, 108,   0,   0,  99,  58, 
+     92, 117, 115, 101, 114, 115, 
+     92, 107, 111, 108, 106,  97, 
+     92, 111, 110, 101, 100, 114, 
+    105, 118, 101,  92, 100, 101, 
+    115, 107, 116, 111, 112,  92, 
+    107, 111, 108, 106,  97,  45, 
+    115, 116, 114, 111, 104, 109, 
+     45, 103,  97, 109, 101, 115, 
+     92,  97, 108, 108, 103, 101, 
+    109, 101, 105, 110,  92, 102, 
+    114,  97, 109, 101, 119, 111, 
+    114, 107,  92, 100, 120,  49, 
+     50, 112, 105, 120, 101, 108, 
+    115, 104,  97, 100, 101, 114, 
+     46, 104, 108, 115, 108,   0, 
      47,  47,  47,  47,  47,  47, 
-     47,  47,  47,  47,  47,  32, 
+     47,  47,  47,  47,  47,  47, 
+     47,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
@@ -1664,10 +1596,10 @@ const BYTE DX12PixelShaderBytes[] =
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
+     32,  32,  13,  10,  47,  47, 
+     32,  71,  76,  79,  66,  65, 
+     76,  83,  32,  47,  47,  32, 
      32,  32,  32,  32,  32,  32, 
-     13,  10,  47,  47,  32,  71, 
-     76,  79,  66,  65,  76,  83, 
-     32,  47,  47,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
@@ -1682,10 +1614,9 @@ const BYTE DX12PixelShaderBytes[] =
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  13,  10, 
-     47,  47,  47,  47,  47,  47, 
+     13,  10,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
-     47,  32,  32,  32,  32,  32, 
+     47,  47,  47,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
@@ -1700,26 +1631,26 @@ const BYTE DX12PixelShaderBytes[] =
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     27, 226,  48,   1, 128,   0, 
-      0,   0, 122, 170, 108,  83, 
-    182, 187, 212,   1,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
+     32,  32,  27, 226,  48,   1, 
+    128,   0,   0,   0, 175,  84, 
+    182,   2, 240, 190, 212,   1, 
+      1,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   2,   0,   0,   0, 
-      1,   0,   0,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
-     94,   0,   0,   0,  40,   0, 
-      0,   0,  27, 226,  48,   1, 
-    147,  82, 163, 245,  56,  13, 
+      1,   0,   0,   0,   2,   0, 
       0,   0,   1,   0,   0,   0, 
-     93,   0,   0,   0,  94,   0, 
-      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,  94,   0,   0,   0, 
+     40,   0,   0,   0,  27, 226, 
+     48,   1,  35,  96,  10, 107, 
+    216,  14,   0,   0,   1,   0, 
+      0,   0,  93,   0,   0,   0, 
+     94,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -1785,378 +1716,145 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   4,   0,   0,   0, 
-     66,   0,  60,  17,  16,   1, 
-      0,   0,   0,   1,  10,   0, 
-      1,   0,  15,   0, 171,  63, 
+      0,   0,   0,   0,   4,   0, 
+      0,   0,  66,   0,  60,  17, 
+     16,   1,   0,   0,   0,   1, 
      10,   0,   1,   0,  15,   0, 
-    171,  63,  77, 105,  99, 114, 
-    111, 115, 111, 102, 116,  32, 
-     40,  82,  41,  32,  72,  76, 
-     83,  76,  32,  83, 104,  97, 
-    100, 101, 114,  32,  67, 111, 
-    109, 112, 105, 108, 101, 114, 
-     32,  49,  48,  46,  49,   0, 
-      0,   0,  54,   0,  61,  17, 
-      1, 104, 108, 115, 108,  70, 
-    108,  97, 103, 115,   0,  48, 
-    120,  53,   0, 104, 108, 115, 
-    108,  84,  97, 114, 103, 101, 
-    116,   0, 112, 115,  95,  53, 
-     95,  49,   0, 104, 108, 115, 
-    108,  69, 110, 116, 114, 121, 
-      0, 109,  97, 105, 110,   0, 
-      0,   0,   0,   0,  42,   0, 
-     16,  17,   0,   0,   0,   0, 
-    216,   4,   0,   0,   0,   0, 
-      0,   0, 160,   1,   0,   0, 
-      0,   0,   0,   0, 160,   1, 
-      0,   0,   7,  16,   0,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160, 109,  97, 105, 110,   0, 
-     46,   0,  62,  17,   4,  16, 
-      0,   0,   9,   0, 105, 110, 
-    112, 117, 116,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,   0,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,   0,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,   4,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,   4,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,   8,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,   8,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  12,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  12,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  16,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  16,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  20,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  20,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  24,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  24,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  28,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  28,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  32,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  32,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  36,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  36,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  40,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  48,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  44,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  52,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  48,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  56,   0,   0,   0, 
-     58,   0,  62,  17,   6,  16, 
-      0,   0, 136,   0,  60, 109, 
-     97, 105, 110,  32, 114, 101, 
-    116, 117, 114, 110,  32, 118, 
-     97, 108, 117, 101,  62,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,   0,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,   0,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,   4,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,   4,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,   8,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,   8,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  12,   0,   4,   0, 
-    124,   0,   0,   0,   1,   0, 
-    160,   1,  12,   0,   0,   0, 
-     50,   0,  62,  17,   2,  16, 
-      0,   0,   8,   0, 100, 105, 
-    102, 102, 117, 115, 101,  76, 
-    105, 103, 104, 116,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  22,   0, 
-     80,  17,   0,   0,   5,   0, 
-      0,   0,   4,   0, 156,   0, 
-      0,   0,   1,   0, 148,   0, 
-      0,   0,   0,   0,  22,   0, 
-     80,  17,   0,   0,   5,   0, 
-      4,   0,   4,   0, 156,   0, 
-      0,   0,   1,   0, 148,   0, 
-      4,   0,   0,   0,  22,   0, 
-     80,  17,   0,   0,   5,   0, 
-      8,   0,   4,   0, 156,   0, 
-      0,   0,   1,   0, 148,   0, 
-      8,   0,   0,   0,  54,   0, 
-     62,  17,   2,  16,   0,   0, 
-      8,   0, 115, 112, 101,  99, 
-    117, 108,  97, 114,  76, 105, 
-    103, 104, 116,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,   0,   0,   4,   0, 
-    188,   0,   0,   0,   1,   0, 
-    180,   0,  16,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,   4,   0,   4,   0, 
-    188,   0,   0,   0,   1,   0, 
-    180,   0,  20,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,   8,   0,   4,   0, 
-    188,   0,   0,   0,   1,   0, 
-    180,   0,  24,   0,   0,   0, 
-     54,   0,  62,  17,   0,  16, 
-      0,   0,   8,   0, 109,  97, 
-    116, 101, 114, 105,  97, 108, 
-     67, 111, 108, 111, 114,   0, 
+    171,  63,  10,   0,   1,   0, 
+     15,   0, 171,  63,  77, 105, 
+     99, 114, 111, 115, 111, 102, 
+    116,  32,  40,  82,  41,  32, 
+     72,  76,  83,  76,  32,  83, 
+    104,  97, 100, 101, 114,  32, 
+     67, 111, 109, 112, 105, 108, 
+    101, 114,  32,  49,  48,  46, 
+     49,   0,   0,   0,  54,   0, 
+     61,  17,   1, 104, 108, 115, 
+    108,  70, 108,  97, 103, 115, 
+      0,  48, 120,  53,   0, 104, 
+    108, 115, 108,  84,  97, 114, 
+    103, 101, 116,   0, 112, 115, 
+     95,  53,  95,  49,   0, 104, 
+    108, 115, 108,  69, 110, 116, 
+    114, 121,   0, 109,  97, 105, 
+    110,   0,   0,   0,   0,   0, 
+     42,   0,  16,  17,   0,   0, 
+      0,   0, 176,   2,   0,   0, 
+      0,   0,   0,   0,  48,   0, 
+      0,   0,   0,   0,   0,   0, 
+     48,   0,   0,   0,   7,  16, 
+      0,   0,  88,   0,   0,   0, 
+      1,   0, 160, 109,  97, 105, 
+    110,   0,  46,   0,  62,  17, 
+      4,  16,   0,   0,   9,   0, 
+    105, 110, 112, 117, 116,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,  22,   0,  80,  17, 
-      0,   0,   5,   0,   0,   0, 
-      4,   0, 232,   0,   0,   0, 
-      1,   0,  36,   0,  32,   0, 
+      1,   0,   5,   0,   0,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,   0,   0, 
       0,   0,  22,   0,  80,  17, 
-      0,   0,   5,   0,   4,   0, 
-      4,   0, 232,   0,   0,   0, 
-      1,   0,  36,   0,  36,   0, 
+      1,   0,   5,   0,   4,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,   4,   0, 
       0,   0,  22,   0,  80,  17, 
-      0,   0,   5,   0,   8,   0, 
-      4,   0, 232,   0,   0,   0, 
-      1,   0,  36,   0,  40,   0, 
+      1,   0,   5,   0,   8,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,   8,   0, 
       0,   0,  22,   0,  80,  17, 
-      0,   0,   5,   0,  12,   0, 
-      4,   0, 232,   0,   0,   0, 
-      1,   0,  52,   1,  44,   0, 
-      0,   0,  50,   0,  62,  17, 
-      0,  16,   0,   0,   8,   0, 
-    116, 101, 120, 116, 117, 114, 
-    101,  67, 111, 108, 111, 114, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,   0,   0,   4,   0, 
-    220,   1,   0,   0,   1,   0, 
-     64,   0,   0,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,   4,   0,   4,   0, 
-    220,   1,   0,   0,   1,   0, 
-     64,   0,   4,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,   8,   0,   4,   0, 
-    220,   1,   0,   0,   1,   0, 
-     64,   0,   8,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  12,   0,   4,   0, 
-    240,   1,   0,   0,   1,   0, 
-     44,   0,  44,   0,   0,   0, 
-      2,   0,   6,   0, 244,   0, 
-      0,   0,  24,   0,   0,   0, 
-      1,   0,   0,   0,  16,   1, 
-      9, 171,  94, 129, 172, 190, 
-    169,  81, 129,  67,  77, 233, 
-     19, 241, 149, 165,   0,   0, 
-    242,   0,   0,   0, 104,   1, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   1,   0,  28,   2, 
-      0,   0,   0,   0,   0,   0, 
-     28,   0,   0,   0,  92,   1, 
-      0,   0, 124,   0,   0,   0, 
-     64,   0,   0, 128, 124,   0, 
-      0,   0,  64,   0,   0,   0, 
-    156,   0,   0,   0,  65,   0, 
-      0, 128, 156,   0,   0,   0, 
-     65,   0,   0,   0, 188,   0, 
-      0,   0,  85,   0,   0, 128, 
-    188,   0,   0,   0,  85,   0, 
-      0,   0, 232,   0,   0,   0, 
-     86,   0,   0, 128, 232,   0, 
-      0,   0,  86,   0,   0,   0, 
-     12,   1,   0,   0,  86,   0, 
-      0, 128,  12,   1,   0,   0, 
-     86,   0,   0,   0,  48,   1, 
-      0,   0,  86,   0,   0, 128, 
-     48,   1,   0,   0,  86,   0, 
-      0,   0,  76,   1,   0,   0, 
-     86,   0,   0, 128,  76,   1, 
-      0,   0,  86,   0,   0,   0, 
-    112,   1,   0,   0,  86,   0, 
-      0, 128, 112,   1,   0,   0, 
-     86,   0,   0,   0, 140,   1, 
-      0,   0,  86,   0,   0, 128, 
-    140,   1,   0,   0,  86,   0, 
-      0,   0, 180,   1,   0,   0, 
-     86,   0,   0, 128, 180,   1, 
-      0,   0,  86,   0,   0,   0, 
-    220,   1,   0,   0,  87,   0, 
-      0, 128, 220,   1,   0,   0, 
-     87,   0,   0,   0, 240,   1, 
-      0,   0,  88,   0,   0, 128, 
-    240,   1,   0,   0,  88,   0, 
-      0,   0,   4,   2,   0,   0, 
-     88,   0,   0, 128,   4,   2, 
-      0,   0,  88,   0,   0,   0, 
-     24,   2,   0,   0,  88,   0, 
-      0, 128,  24,   2,   0,   0, 
-     88,   0,   0,   0,   5,   0, 
-     44,   0,  27,   0,  43,   0, 
-      5,   0,  45,   0,  28,   0, 
-     44,   0,   5,   0,  73,   0, 
-     28,   0,  72,   0,   5,   0, 
-    248,   0,  37,   0,  72,   0, 
-      5,   0, 248,   0,  76,   0, 
-    156,   0,   5,   0, 248,   0, 
-     37,   0, 156,   0,   5,   0, 
-    248,   0, 160,   0, 245,   0, 
-      5,   0, 248,   0,  37,   0, 
-    245,   0,   5,   0, 248,   0, 
-     27,   0, 247,   0,   5,   0, 
-    248,   0,  27,   0, 247,   0, 
-      5,   0,  37,   0,   5,   0, 
-     36,   0,   5,   0,  24,   0, 
-      5,   0,  24,   0,   5,   0, 
-     24,   0,   5,   0,  24,   0, 
-      5,   0,  24,   0,   5,   0, 
-     24,   0, 246,   0,   0,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0,  20,   0, 
-      0,   0,  60,   0,   0,   0, 
-    100,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  17,  16, 
-      0,   0,   1,   0,   0,   2, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      1,   0,   5,   0,  12,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  12,   0, 
+      0,   0,  22,   0,  80,  17, 
+      1,   0,   5,   0,  16,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  16,   0, 
+      0,   0,  22,   0,  80,  17, 
+      1,   0,   5,   0,  20,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  20,   0, 
+      0,   0,  22,   0,  80,  17, 
+      1,   0,   5,   0,  24,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  24,   0, 
+      0,   0,  22,   0,  80,  17, 
+      1,   0,   5,   0,  28,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  28,   0, 
+      0,   0,  22,   0,  80,  17, 
+      1,   0,   5,   0,  32,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  32,   0, 
+      0,   0,  22,   0,  80,  17, 
+      1,   0,   5,   0,  36,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  36,   0, 
+      0,   0,  22,   0,  80,  17, 
+      1,   0,   5,   0,  40,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  48,   0, 
+      0,   0,  22,   0,  80,  17, 
+      1,   0,   5,   0,  44,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  52,   0, 
+      0,   0,  22,   0,  80,  17, 
+      1,   0,   5,   0,  48,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  56,   0, 
+      0,   0,  58,   0,  62,  17, 
+      6,  16,   0,   0, 136,   0, 
+     60, 109,  97, 105, 110,  32, 
+    114, 101, 116, 117, 114, 110, 
+     32, 118,  97, 108, 117, 101, 
+     62,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,  22,   0,  80,  17, 
+      2,   0,   5,   0,   0,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,   0,   0, 
+      0,   0,  22,   0,  80,  17, 
+      2,   0,   5,   0,   4,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,   4,   0, 
+      0,   0,  22,   0,  80,  17, 
+      2,   0,   5,   0,   8,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,   8,   0, 
+      0,   0,  22,   0,  80,  17, 
+      2,   0,   5,   0,  12,   0, 
+      4,   0,  88,   0,   0,   0, 
+      1,   0,  48,   0,  12,   0, 
+      0,   0,   2,   0,   6,   0, 
+    244,   0,   0,   0,  24,   0, 
+      0,   0,   1,   0,   0,   0, 
+     16,   1, 182,  90, 119,  81, 
+    172, 114, 236,  81, 169, 208, 
+      4,  74, 174,  77,  81, 105, 
+      0,   0, 242,   0,   0,   0, 
+     72,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   1,   0, 
+    136,   0,   0,   0,   0,   0, 
+      0,   0,   4,   0,   0,   0, 
+     60,   0,   0,   0,  88,   0, 
+      0,   0, 103,   0,   0, 128, 
+     88,   0,   0,   0, 103,   0, 
+      0,   0, 132,   0,   0,   0, 
+    103,   0,   0, 128, 132,   0, 
+      0,   0, 103,   0,   0,   0, 
+      5,   0,  57,   0,  12,   0, 
+     56,   0,   5,   0,  57,   0, 
+      5,   0,  57,   0, 246,   0, 
+      0,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,  12,   0, 
       0,   0,   0,   0,   0,   0, 
+     20,   0,   0,   0,  60,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2189,6 +1887,68 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,  11, 202,  49,   1, 
+     56,   0,   0,   0,   0,  16, 
+      0,   0,  14,  16,   0,   0, 
+     56,   1,   0,   0,  10,   0, 
+    255, 255,   4,   0,   0,   0, 
+    255, 255,   3,   0,   0,   0, 
+      0,   0,  56,   0,   0,   0, 
+     56,   0,   0,   0,   8,   0, 
+      0,   0,  64,   0,   0,   0, 
+      0,   0,   0,   0,  22,   0, 
+     27,  21,  64,   0,   0,   0, 
+      4,   0,   0,   0,  16,   0, 
+    102, 108, 111,  97, 116,  52, 
+      0, 243, 242, 241,  22,   0, 
+     27,  21,  64,   0,   0,   0, 
+      2,   0,   0,   0,   8,   0, 
+    102, 108, 111,  97, 116,  50, 
+      0, 243, 242, 241,  22,   0, 
+     27,  21,  64,   0,   0,   0, 
+      3,   0,   0,   0,  12,   0, 
+    102, 108, 111,  97, 116,  51, 
+      0, 243, 242, 241,  78,   0, 
+      3,  18,  13,  21,   3,   0, 
+      0,  16,   0,   0,   0,   0, 
+    119, 111, 114, 108, 100,  80, 
+    111, 115,   0, 241,  13,  21, 
+      3,   0,   0,  16,   0,   0, 
+     16,   0, 112, 111, 115, 105, 
+    116, 105, 111, 110,   0, 241, 
+     13,  21,   3,   0,   1,  16, 
+      0,   0,  32,   0, 116, 101, 
+    120,   0, 242, 241,  13,  21, 
+      3,   0,   2,  16,   0,   0, 
+     40,   0, 110, 111, 114, 109, 
+     97, 108,   0, 243, 242, 241, 
+     38,   0,   5,  21,   4,   0, 
+      0,   0,   3,  16,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  52,   0,  80, 105, 
+    120, 101, 108,  73, 110, 112, 
+    117, 116,  84, 121, 112, 101, 
+      0, 243, 242, 241,  10,   0, 
+      1,  18,   1,   0,   0,   0, 
+      4,  16,   0,   0,  10,   0, 
+     24,  21,   0,  16,   0,   0, 
+      1,   0,   1,   0,  14,   0, 
+      8,  16,   6,  16,   0,   0, 
+     23,   0,   1,   0,   5,  16, 
+      0,   0,  14,   0,  23,  21, 
+      0,  16,   0,   0,   3,   2, 
+    176,   3,   0,   0, 242, 241, 
+     10,   0,  24,  21,   8,  16, 
+      0,   0,   1,   0,   1,   0, 
+     10,   0,  24,  21,   9,  16, 
+      0,   0,   1,   0,   0,   2, 
+     14,   0,  23,  21,   0,   0, 
+      0,   0,  10,   2,   0,   0, 
+      0,   0, 242, 241,  10,   0, 
+     24,  21,  11,  16,   0,   0, 
+      1,   0,   1,   0,  10,   0, 
+     24,  21,  12,  16,   0,   0, 
+      1,   0,   0,   2,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2212,97 +1972,13 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-     11, 202,  49,   1,  56,   0, 
-      0,   0,   0,  16,   0,   0, 
-     19,  16,   0,   0, 208,   1, 
-      0,   0,  10,   0, 255, 255, 
-      4,   0,   0,   0, 255, 255, 
-      3,   0,   0,   0,   0,   0, 
-     76,   0,   0,   0,  76,   0, 
-      0,   0,   8,   0,   0,   0, 
-     84,   0,   0,   0,   0,   0, 
-      0,   0,  22,   0,  27,  21, 
-     64,   0,   0,   0,   4,   0, 
-      0,   0,  16,   0, 102, 108, 
-    111,  97, 116,  52,   0, 243, 
-    242, 241,  22,   0,  27,  21, 
-     64,   0,   0,   0,   2,   0, 
-      0,   0,   8,   0, 102, 108, 
-    111,  97, 116,  50,   0, 243, 
-    242, 241,  22,   0,  27,  21, 
-     64,   0,   0,   0,   3,   0, 
-      0,   0,  12,   0, 102, 108, 
-    111,  97, 116,  51,   0, 243, 
-    242, 241,  78,   0,   3,  18, 
-     13,  21,   3,   0,   0,  16, 
-      0,   0,   0,   0, 119, 111, 
-    114, 108, 100,  80, 111, 115, 
-      0, 241,  13,  21,   3,   0, 
-      0,  16,   0,   0,  16,   0, 
-    112, 111, 115, 105, 116, 105, 
-    111, 110,   0, 241,  13,  21, 
-      3,   0,   1,  16,   0,   0, 
-     32,   0, 116, 101, 120,   0, 
-    242, 241,  13,  21,   3,   0, 
-      2,  16,   0,   0,  40,   0, 
-    110, 111, 114, 109,  97, 108, 
-      0, 243, 242, 241,  38,   0, 
-      5,  21,   4,   0,   0,   0, 
-      3,  16,   0,   0,   0,   0, 
+      0,   0,   0,   0,  11, 202, 
+     49,   1,  56,   0,   0,   0, 
+      0,  16,   0,   0,   0,  16, 
       0,   0,   0,   0,   0,   0, 
-     52,   0,  80, 105, 120, 101, 
-    108,  73, 110, 112, 117, 116, 
-     84, 121, 112, 101,   0, 243, 
-    242, 241,  10,   0,   1,  18, 
-      1,   0,   0,   0,   4,  16, 
-      0,   0,  10,   0,  24,  21, 
-      0,  16,   0,   0,   1,   0, 
-      1,   0,  14,   0,   8,  16, 
-      6,  16,   0,   0,  23,   0, 
-      1,   0,   5,  16,   0,   0, 
-     14,   0,  23,  21,   0,  16, 
-      0,   0,   3,   2, 224,   3, 
-      0,   0, 242, 241,  10,   0, 
-     24,  21,   8,  16,   0,   0, 
-      1,   0,   1,   0,  10,   0, 
-     24,  21,   9,  16,   0,   0, 
-      1,   0,   0,   2,  14,   0, 
-     23,  21,   0,   0,   0,   0, 
-     10,   2,   0,   0,   0,   0, 
-    242, 241,  10,   0,  24,  21, 
-     11,  16,   0,   0,   1,   0, 
-      1,   0,  10,   0,  24,  21, 
-     12,  16,   0,   0,   1,   0, 
-      0,   2,  78,   0,   3,  18, 
-     13,  21,   3,   0,  64,   0, 
-      0,   0,   0,   0,  97, 109, 
-     98, 105, 101, 110, 116,  70, 
-     97,  99, 116, 111, 114,   0, 
-     13,  21,   3,   0,  64,   0, 
-      0,   0,   4,   0, 100, 105, 
-    102, 102, 117, 115,  70,  97, 
-     99, 116, 111, 114,   0, 241, 
-     13,  21,   3,   0,  64,   0, 
-      0,   0,   8,   0, 115, 112, 
-    101,  99, 117, 108,  97, 114, 
-     70,  97,  99, 116, 111, 114, 
-      0, 243, 242, 241,  30,   0, 
-      5,  21,   3,   0,   0,   0, 
-     14,  16,   0,   0,   0,   0, 
+     11,   0, 255, 255,   4,   0, 
+      0,   0, 255, 255,   3,   0, 
       0,   0,   0,   0,   0,   0, 
-     12,   0,  77,  97, 116, 101, 
-    114, 105,  97, 108,   0, 241, 
-     10,   0,  24,  21,  15,  16, 
-      0,   0,   1,   0,   1,   0, 
-     14,   0,  23,  21,  16,  16, 
-      0,   0,  36,   2,   0,   0, 
-      0,   0, 242, 241,  10,   0, 
-     24,  21,  11, 202,  49,   1, 
-     56,   0,   0,   0,   0,  16, 
-      0,   0,   0,  16,   0,   0, 
-      0,   0,   0,   0,  11,   0, 
-    255, 255,   4,   0,   0,   0, 
-    255, 255,   3,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2382,7 +2058,65 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  62,  32, 
+     97, 116,  32, 115, 112, 101, 
+     99, 117, 108,  97, 114,  70, 
+     97,  99, 116, 111, 114,  59, 
+     13,  10, 125,  59,  13,  10, 
+     13,  10, 115, 116, 114, 117, 
+     99, 116,  32,  76, 105, 103, 
+    104, 116,  67, 111, 117, 110, 
+    116,  13,  10, 123,  13,  10, 
+     32,  32,  32,  32, 105, 110, 
+    116,  32, 100, 105, 102, 102, 
+    117, 115, 101,  76, 105, 103, 
+    104, 116,  67, 111, 117, 110, 
+    116,  59,  13,  10,  32,  32, 
+     32,  32, 105, 110, 116,  32, 
+    112, 111, 105, 110, 116,  76, 
+    105, 103, 104, 116,  67, 111, 
+    117, 110, 116,  59,  13,  10, 
+    125,  59,  13,  10,  13,  10, 
+     67, 111, 110, 115, 116,  97, 
+    110, 116,  66, 117, 102, 102, 
+    101, 114,  60,  75,  97, 109, 
+    101, 114,  97,  66, 117, 102, 
+    102, 101, 114,  50,  62,  32, 
+     75,  97, 109, 101, 114,  97, 
+     50,  32,  58,  32, 114, 101, 
+    103, 105, 115, 116, 101, 114, 
+     40,  32,  98,  48,  32,  41, 
+     59,  13,  10,  67, 111, 110, 
+    115, 116,  97, 110, 116,  66, 
+    117, 102, 102, 101, 114,  60, 
+     77,  97, 116, 114, 105, 120, 
+     66, 117, 102, 102, 101, 114, 
+     62,  32,  83, 107, 101, 108, 
+    101, 116, 116,  32,  58,  32, 
+    114, 101, 103, 105, 115, 116, 
+    101, 114,  40,  32,  98,  49, 
+     32,  41,  59,  13,  10,  67, 
+    111, 110, 115, 116,  97, 110, 
+    116,  66, 117, 102, 102, 101, 
+    114,  60,  75,  97, 109, 101, 
+    114,  97,  66, 117, 102, 102, 
+    101, 114,  62,  32,  75,  97, 
+    109, 101, 114,  97,  32,  58, 
+     32, 114, 101, 103, 105, 115, 
+    116, 101, 114,  40,  32,  98, 
+     50,  32,  41,  59,  13,  10, 
+     67, 111, 110, 115, 116,  97, 
+    110, 116,  66, 117, 102, 102, 
+    101, 114,  60,  77,  97, 116, 
+    101, 114, 105,  97, 108,  62, 
+     32,  79,  98, 106, 101,  99, 
+    116,  32,  58,  32, 114, 101, 
+    103, 105, 115, 116, 101, 114, 
+     40,  32,  98,  51,  32,  41, 
+     59,  13,  10,  67, 111, 110, 
+    115, 116,  97, 110, 116,  66, 
+    117, 102, 102, 101, 114,  60, 
+     76, 105, 103, 104, 116,  67, 
+    111, 117, 110, 116,  62,  32, 
      76, 105, 103, 104, 116,  32, 
      58,  32, 114, 101, 103, 105, 
     115, 116, 101, 114,  40,  32, 
@@ -2511,14 +2245,13 @@ const BYTE DX12PixelShaderBytes[] =
     111,  97, 116,  50,  32, 116, 
     101, 120,  32,  58,  32,  84, 
      69,  88,  67,  79,  79,  82, 
-     68,  48,  59,  13,  10,  32, 
-     32,  32,  32, 102, 108, 111, 
-     97, 116,  51,  32, 110, 111, 
-    114, 109,  97, 108,  32,  58, 
-     32,  84,  69,  88,  67,  79, 
-     79,  82,  68,  49,  59,  13, 
-     10, 125,  59,  13,  10,  13, 
-     10,  47,  47,  47,  47,  47, 
+     68,  59,  13,  10,  32,  32, 
+     32,  32, 102, 108, 111,  97, 
+    116,  51,  32, 110, 111, 114, 
+    109,  97, 108,  32,  58,  32, 
+     78,  79,  82,  77,  65,  76, 
+     59,  13,  10, 125,  59,  13, 
+     10,  13,  10,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
@@ -2531,14 +2264,14 @@ const BYTE DX12PixelShaderBytes[] =
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
-     47,  47,  47,  32,  32,  32, 
+     47,  47,  47,  47,  47,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  13,  10,  47, 
-     47,  32,  80, 105, 120, 101, 
-    108,  32,  83, 104,  97, 100, 
-    101, 114,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  13, 
+     10,  47,  47,  32,  80, 105, 
+    120, 101, 108,  32,  83, 104, 
+     97, 100, 101, 114,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
@@ -2553,7 +2286,7 @@ const BYTE DX12PixelShaderBytes[] =
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  13,  10,  47,  47,  47, 
+     32,  32,  32,  13,  10,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
@@ -2566,48 +2299,70 @@ const BYTE DX12PixelShaderBytes[] =
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
      47,  47,  47,  47,  47,  47, 
-     47,  47,  47,  47,  47,  32, 
+     47,  47,  47,  47,  47,  47, 
+     47,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  13, 
-     10, 102, 108, 111,  97, 116, 
-     52,  32, 109,  97, 105, 110, 
-     40,  32,  80, 105, 120, 101, 
-    108,  73, 110, 112, 117, 116, 
-     84, 121, 112, 101,  32, 105, 
-    110, 112, 117, 116,  32,  41, 
-     32,  58,  32,  83,  86,  95, 
-     84,  65,  82,  71,  69,  84, 
-     13,  10, 123,  13,  10,  32, 
+     32,  13,  10, 102, 108, 111, 
+     97, 116,  52,  32, 109,  97, 
+    105, 110,  40,  32,  80, 105, 
+    120, 101, 108,  73, 110, 112, 
+    117, 116,  84, 121, 112, 101, 
+     32, 105, 110, 112, 117, 116, 
+     32,  41,  32,  58,  32,  83, 
+     86,  95,  84,  65,  82,  71, 
+     69,  84,  13,  10, 123,  13, 
+     10,  32,  32,  32,  32, 102, 
+    108, 111,  97, 116,  51,  32, 
+    100, 105, 102, 102, 117, 115, 
+    101,  76, 105, 103, 104, 116, 
+     32,  61,  32, 102, 108, 111, 
+     97, 116,  51,  40,  32,  48, 
+     44,  32,  48,  44,  32,  48, 
+     32,  41,  59,  13,  10,  32, 
      32,  32,  32, 102, 108, 111, 
-     97, 116,  51,  32, 100, 105, 
-    102, 102, 117, 115, 101,  76, 
-    105, 103, 104, 116,  32,  61, 
-     32, 102, 108, 111,  97, 116, 
-     51,  40,  32,  48,  44,  32, 
-     48,  44,  32,  48,  32,  41, 
-     59,  13,  10,  32,  32,  32, 
-     32, 102, 108, 111,  97, 116, 
-     51,  32, 115, 112, 101,  99, 
-    117, 108,  97, 114,  76, 105, 
-    103, 104, 116,  32,  61,  32, 
-    102, 108, 111,  97, 116,  51, 
-     40,  32,  48,  44,  32,  48, 
-     44,  32,  48,  32,  41,  59, 
-     13,  10,  32,  32,  32,  47, 
-     42,  32, 102, 111, 114,  40, 
-     32, 105, 110, 116,  32, 106, 
-     32,  61,  32,  48,  59,  32, 
-    106,  32,  60,  32,  76, 105, 
-    103, 104, 116,  46, 100, 105, 
-    102, 102, 117, 115, 101,  76, 
-    105, 103, 104, 116,  67, 111, 
-    117, 110, 116,  59,  32, 106, 
-     43,  43,  32,  41,  13,  10, 
-     32,  32,  32,  32, 123,  13, 
-     10,  32,  32,  32,  32,  32, 
-     32,  32,  32, 105, 102,  40, 
+     97, 116,  51,  32, 115, 112, 
+    101,  99, 117, 108,  97, 114, 
+     76, 105, 103, 104, 116,  32, 
+     61,  32, 102, 108, 111,  97, 
+    116,  51,  40,  32,  48,  44, 
+     32,  48,  44,  32,  48,  32, 
+     41,  59,  13,  10,  32,  32, 
+     32,  47,  42,  32, 102, 111, 
+    114,  40,  32, 105, 110, 116, 
+     32, 106,  32,  61,  32,  48, 
+     59,  32, 106,  32,  60,  32, 
+     76, 105, 103, 104, 116,  46, 
+    100, 105, 102, 102, 117, 115, 
+    101,  76, 105, 103, 104, 116, 
+     67, 111, 117, 110, 116,  59, 
+     32, 106,  43,  43,  32,  41, 
+     13,  10,  32,  32,  32,  32, 
+    123,  13,  10,  32,  32,  32, 
+     32,  32,  32,  32,  32, 105, 
+    102,  40,  32, 100, 111, 116, 
+     40,  32, 105, 110, 112, 117, 
+    116,  46, 110, 111, 114, 109, 
+     97, 108,  44,  32,  45, 100, 
+    105, 102, 117, 115, 101,  76, 
+    105, 103, 104, 116, 115,  91, 
+     32, 106,  32,  93,  46, 100, 
+    105, 114, 101,  99, 116, 105, 
+    111, 110,  32,  41,  32,  60, 
+     32,  48,  32,  41,  13,  10, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     99, 111, 110, 116, 105, 110, 
+    117, 101,  59,  13,  10,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32, 100, 105, 102, 102, 117, 
+    115, 101,  76, 105, 103, 104, 
+    116,  32,  43,  61,  32, 100, 
+    105, 102, 117, 115, 101,  76, 
+    105, 103, 104, 116, 115,  91, 
+     32, 106,  32,  93,  46,  99, 
+    111, 108, 111, 114,  32,  42, 
      32, 100, 111, 116,  40,  32, 
     105, 110, 112, 117, 116,  46, 
     110, 111, 114, 109,  97, 108, 
@@ -2616,83 +2371,101 @@ const BYTE DX12PixelShaderBytes[] =
     104, 116, 115,  91,  32, 106, 
      32,  93,  46, 100, 105, 114, 
     101,  99, 116, 105, 111, 110, 
-     32,  41,  32,  60,  32,  48, 
-     32,  41,  13,  10,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  99, 111, 
-    110, 116, 105, 110, 117, 101, 
-     59,  13,  10,  32,  32,  32, 
-     32,  32,  32,  32,  32, 100, 
-    105, 102, 102, 117, 115, 101, 
-     76, 105, 103, 104, 116,  32, 
-     43,  61,  32, 100, 105, 102, 
-    117, 115, 101,  76, 105, 103, 
-    104, 116, 115,  91,  32, 106, 
-     32,  93,  46,  99, 111, 108, 
-    111, 114,  32,  42,  32, 100, 
-    111, 116,  40,  32, 105, 110, 
-    112, 117, 116,  46, 110, 111, 
-    114, 109,  97, 108,  44,  32, 
-     45, 100, 105, 102, 117, 115, 
-    101,  76, 105, 103, 104, 116, 
-    115,  91,  32, 106,  32,  93, 
-     46, 100, 105, 114, 101,  99, 
-    116, 105, 111, 110,  32,  41, 
-     59,  13,  10,  32,  32,  32, 
-     32, 125,  13,  10,  32,  32, 
-     32,  32, 102, 111, 114,  40, 
-     32, 105, 110, 116,  32, 105, 
-     32,  61,  32,  48,  59,  32, 
-    105,  32,  60,  32,  76, 105, 
-    103, 104, 116,  46, 112, 111, 
-    105, 110, 116,  76, 105, 103, 
-    104, 116,  67, 111, 117, 110, 
-    116,  59,  32, 105,  43,  43, 
-     32,  41,  13,  10,  32,  32, 
-     32,  32, 123,  13,  10,  32, 
+     32,  41,  59,  13,  10,  32, 
+     32,  32,  32, 125,  13,  10, 
+     32,  32,  32,  32, 102, 111, 
+    114,  40,  32, 105, 110, 116, 
+     32, 105,  32,  61,  32,  48, 
+     59,  32, 105,  32,  60,  32, 
+     76, 105, 103, 104, 116,  46, 
+    112, 111, 105, 110, 116,  76, 
+    105, 103, 104, 116,  67, 111, 
+    117, 110, 116,  59,  32, 105, 
+     43,  43,  32,  41,  13,  10, 
+     32,  32,  32,  32, 123,  13, 
+     10,  32,  32,  32,  32,  32, 
+     32,  32,  32, 102, 108, 111, 
+     97, 116,  51,  32, 108, 105, 
+    103, 104, 116,  68, 105, 114, 
+     32,  61,  32, 112, 111, 105, 
+    110, 116,  76, 105, 103, 104, 
+    116, 115,  91,  32, 105,  32, 
+     93,  46, 112, 111, 115, 105, 
+    116, 105, 111, 110,  32,  45, 
+     32, 105, 110, 112, 117, 116, 
+     46, 119, 111, 114, 108, 100, 
+     80, 111, 115,  46, 120, 121, 
+    122,  59,  13,  10,  32,  32, 
      32,  32,  32,  32,  32,  32, 
-     32, 102, 108, 111,  97, 116, 
-     51,  32, 108, 105, 103, 104, 
-    116,  68, 105, 114,  32,  61, 
-     32, 112, 111, 105, 110, 116, 
-     76, 105, 103, 104, 116, 115, 
-     91,  32, 105,  32,  93,  46, 
-    112, 111, 115, 105, 116, 105, 
-    111, 110,  32,  45,  32, 105, 
-    110, 112, 117, 116,  46, 119, 
-    111, 114, 108, 100,  80, 111, 
-    115,  46, 120, 121, 122,  59, 
+    102, 108, 111,  97, 116,  32, 
+    102,  97,  99, 116, 111, 114, 
+     32,  61,  32, 112, 111, 105, 
+    110, 116,  76, 105, 103, 104, 
+    116, 115,  91,  32, 105,  32, 
+     93,  46, 114,  97, 100, 105, 
+    117, 115,  32,  47,  32, 108, 
+    101, 110, 103, 116, 104,  40, 
+     32, 108, 105, 103, 104, 116, 
+     68, 105, 114,  32,  41,  59, 
      13,  10,  32,  32,  32,  32, 
      32,  32,  32,  32, 102, 108, 
-    111,  97, 116,  32, 102,  97, 
-     99, 116, 111, 114,  32,  61, 
-     32, 112, 111, 105, 110, 116, 
-     76, 105, 103, 104, 116, 115, 
-     91,  32, 105,  32,  93,  46, 
-    114,  97, 100, 105, 117, 115, 
-     32,  47,  32, 108, 101, 110, 
-    103, 116, 104,  40,  32, 108, 
-    105, 103, 104, 116,  68, 105, 
-    114,  32,  41,  59,  13,  10, 
+    111,  97, 116,  32, 102,  32, 
+     61,  32, 100, 111, 116,  40, 
+     32, 105, 110, 112, 117, 116, 
+     46, 110, 111, 114, 109,  97, 
+    108,  44,  32, 110, 111, 114, 
+    109,  97, 108, 105, 122, 101, 
+     40,  32, 108, 105, 103, 104, 
+    116,  68, 105, 114,  32,  41, 
+     32,  41,  59,  13,  10,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32, 105, 102,  40,  32, 102, 
+     32,  62,  32,  48,  32,  41, 
+     13,  10,  32,  32,  32,  32, 
+     32,  32,  32,  32, 123,  13, 
+     10,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32, 100, 105, 102, 102, 117, 
+    115, 101,  76, 105, 103, 104, 
+    116,  32,  43,  61,  32, 112, 
+    111, 105, 110, 116,  76, 105, 
+    103, 104, 116, 115,  91,  32, 
+    105,  32,  93,  46,  99, 111, 
+    108, 111, 114,  32,  42,  32, 
+    102,  32,  42,  32, 102,  97, 
+     99, 116, 111, 114,  59,  13, 
+     10,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32, 102,  32,  61,  32, 100, 
+    111, 116,  40,  32, 110, 111, 
+    114, 109,  97, 108, 105, 122, 
+    101,  40,  32, 114, 101, 102, 
+    108, 101,  99, 116,  40,  32, 
+    110, 111, 114, 109,  97, 108, 
+    105, 122, 101,  40,  32,  45, 
+    108, 105, 103, 104, 116,  68, 
+    105, 114,  32,  41,  44,  32, 
+    105, 110, 112, 117, 116,  46, 
+    110, 111, 114, 109,  97, 108, 
+     32,  41,  32,  41,  44,  32, 
+    110, 111, 114, 109,  97, 108, 
+    105, 122, 101,  40,  32,  75, 
+     97, 109, 101, 114,  97,  46, 
+    107,  80, 111, 115, 105, 116, 
+    105, 111, 110,  46, 120, 121, 
+    122,  32,  45,  32, 105, 110, 
+    112, 117, 116,  46, 119, 111, 
+    114, 108, 100,  80, 111, 115, 
+     46, 120, 121, 122,  32,  41, 
+     32,  41,  59,  13,  10,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32, 102, 108, 111,  97, 
-    116,  32, 102,  32,  61,  32, 
-    100, 111, 116,  40,  32, 105, 
-    110, 112, 117, 116,  46, 110, 
-    111, 114, 109,  97, 108,  44, 
-     32, 110, 111, 114, 109,  97, 
-    108, 105, 122, 101,  40,  32, 
-    108, 105, 103, 104, 116,  68, 
-    105, 114,  32,  41,  32,  41, 
-     59,  13,  10,  32,  32,  32, 
      32,  32,  32,  32,  32, 105, 
     102,  40,  32, 102,  32,  62, 
      32,  48,  32,  41,  13,  10, 
      32,  32,  32,  32,  32,  32, 
-     32,  32, 123,  13,  10,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32, 100, 
-    105, 102, 102, 117, 115, 101, 
+     32,  32,  32,  32, 115, 112, 
+    101,  99, 117, 108,  97, 114, 
      76, 105, 103, 104, 116,  32, 
      43,  61,  32, 112, 111, 105, 
     110, 116,  76, 105, 103, 104, 
@@ -2702,61 +2475,22 @@ const BYTE DX12PixelShaderBytes[] =
      42,  32, 102,  97,  99, 116, 
     111, 114,  59,  13,  10,  32, 
      32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32, 102, 
-     32,  61,  32, 100, 111, 116, 
-     40,  32, 110, 111, 114, 109, 
-     97, 108, 105, 122, 101,  40, 
-     32, 114, 101, 102, 108, 101, 
-     99, 116,  40,  32, 110, 111, 
-    114, 109,  97, 108, 105, 122, 
-    101,  40,  32,  45, 108, 105, 
-    103, 104, 116,  68, 105, 114, 
-     32,  41,  44,  32, 105, 110, 
-    112, 117, 116,  46, 110, 111, 
-    114, 109,  97, 108,  32,  41, 
-     32,  41,  44,  32, 110, 111, 
-    114, 109,  97, 108, 105, 122, 
-    101,  40,  32,  75,  97, 109, 
-    101, 114,  97,  46, 107,  80, 
-    111, 115, 105, 116, 105, 111, 
-    110,  46, 120, 121, 122,  32, 
-     45,  32, 105, 110, 112, 117, 
-    116,  46, 119, 111, 114, 108, 
-    100,  80, 111, 115,  46, 120, 
-    121, 122,  32,  41,  32,  41, 
-     59,  13,  10,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32, 105, 102,  40, 
-     32, 102,  32,  62,  32,  48, 
-     32,  41,  13,  10,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32, 115, 112, 101,  99, 
-    117, 108,  97, 114,  76, 105, 
-    103, 104, 116,  32,  43,  61, 
-     32, 112, 111, 105, 110, 116, 
-     76, 105, 103, 104, 116, 115, 
-     91,  32, 105,  32,  93,  46, 
-     99, 111, 108, 111, 114,  32, 
-     42,  32, 102,  32,  42,  32, 
-    102,  97,  99, 116, 111, 114, 
-     59,  13,  10,  32,  32,  32, 
-     32,  32,  32,  32,  32, 125, 
-     13,  10,  32,  32,  32,  32, 
-    125,  42,  47,  13,  10,  32, 
-     32,  32,  32, 102, 108, 111, 
-     97, 116,  52,  32, 109,  97, 
-    116, 101, 114, 105,  97, 108, 
-     67, 111, 108, 111, 114,  32, 
-     61,  32, 115, 104,  97, 100, 
-    101, 114,  84, 101, 120, 116, 
-    117, 114, 101,  46,  83,  97, 
-    109, 112, 108, 101,  40,  32, 
-     83,  97, 109, 112, 108, 101, 
-     84, 121, 112, 101,  44,  32, 
-    105, 110, 112, 117, 116,  46, 
-    116, 101, 120,  32,  41,  59, 
-     13,  10,  32,  32,  32,  32, 
+     32, 125,  13,  10,  32,  32, 
+     32,  32, 125,  42,  47,  13, 
+     10,  32,  32,  32,  32,  47, 
+     47, 102, 108, 111,  97, 116, 
+     52,  32, 109,  97, 116, 101, 
+    114, 105,  97, 108,  67, 111, 
+    108, 111, 114,  32,  61,  32, 
+    115, 104,  97, 100, 101, 114, 
+     84, 101, 120, 116, 117, 114, 
+    101,  46,  83,  97, 109, 112, 
+    108, 101,  40,  32,  83,  97, 
+    109, 112, 108, 101,  84, 121, 
+    112, 101,  44,  32, 105, 110, 
+    112, 117, 116,  46, 116, 101, 
+    120,  32,  41,  59,  13,  10, 
+     32,  32,  32,  32,  47,  47, 
     102, 108, 111,  97, 116,  52, 
      32, 116, 101, 120, 116, 117, 
     114, 101,  67, 111, 108, 111, 
@@ -2798,24 +2532,34 @@ const BYTE DX12PixelShaderBytes[] =
     112, 101,  99, 117, 108,  97, 
     114,  70,  97,  99, 116, 111, 
     114,  32,  41,  59,  13,  10, 
-     32,  32,  32,  32, 116, 101, 
-    120, 116, 117, 114, 101,  67, 
-    111, 108, 111, 114,  46,  97, 
-     32,  61,  32, 109,  97, 116, 
-    101, 114, 105,  97, 108,  67, 
-    111, 108, 111, 114,  46,  97, 
-     59,  13,  10,  32,  32,  32, 
-     32, 114, 101, 116, 117, 114, 
-    110,  32, 116, 101, 120, 116, 
-    117, 114, 101,  67, 111, 108, 
-    111, 114,  59,  13,  10, 125, 
-      0,   7,   0,   0,   0,   0, 
-      0,   0,   0,  93,   0,   0, 
+     32,  32,  32,  32,  47,  47, 
+    116, 101, 120, 116, 117, 114, 
+    101,  67, 111, 108, 111, 114, 
+     46,  97,  32,  61,  32, 109, 
+     97, 116, 101, 114, 105,  97, 
+    108,  67, 111, 108, 111, 114, 
+     46,  97,  59,  13,  10,  32, 
+     32,  32,  32, 114, 101, 116, 
+    117, 114, 110,  32, 115, 104, 
+     97, 100, 101, 114,  84, 101, 
+    120, 116, 117, 114, 101,  46, 
+     83,  97, 109, 112, 108, 101, 
+     40,  32,  83,  97, 109, 112, 
+    108, 101,  84, 121, 112, 101, 
+     44,  32, 105, 110, 112, 117, 
+    116,  46, 116, 101, 120,  32, 
+     41,  59,  13,  10,  32,  32, 
+     32,  32,  47,  47, 114, 101, 
+    116, 117, 114, 110,  32, 116, 
+    101, 120, 116, 117, 114, 101, 
+     67, 111, 108, 111, 114,  59, 
+     13,  10, 125,   0,   7,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0, 186,   0,   0, 
-      0,   1,   0,   0,   0,  94, 
-      0,   0,   0,   4,   0,   0, 
+     93,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+    186,   0,   0,   0,   1,   0, 
+      0,   0,  94,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2826,10 +2570,13 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+     68,  51,  68,  83,  72,  68, 
+     82,   0, 136,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+     32,   0,   0,  96,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2894,14 +2641,9 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  68,  51, 
-     68,  83,  72,  68,  82,   0, 
-     28,   2,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  32,   0, 
-      0,  96,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2913,16 +2655,25 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0, 255, 255, 255, 255, 
+     26,   9,  47, 241,  24,   0, 
+      0,   0,  16,   2,   0,   0, 
+     21,   0,   0,   0,   1,   0, 
+      0,   0,   1,   0,   0,   0, 
+      1,   0,   0,   0,  61,   0, 
+      0,   0,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   1, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,  32,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2980,32 +2731,26 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    255, 255, 255, 255,  26,   9, 
-     47, 241,  32,   0,   0,   0, 
-     20,   2,   0,   0,  21,   0, 
-      0,   0,   1,   0,   0,   0, 
-      1,   0,   0,   0,   1,   0, 
-      0,   0, 101,   0,   0,   0, 
-      1,   0,   0,   0,  61,   0, 
-      0,   0,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,  32,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0, 128,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  12,   0, 
+      0,   0,  24,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3062,7 +2807,6 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,  16, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3070,13 +2814,9 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0, 128,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  12,   0, 
-      0,   0,  24,   0,   0,   0, 
-     36,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3086,10 +2826,22 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+     18,   0,  37,  17,   0,   0, 
+      0,   0, 128,   0,   0,   0, 
+      1,   0, 109,  97, 105, 110, 
+      0,   0,  38,   0, 100,  17, 
+     10,  16,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   7,   0, 115, 104, 
+     97, 100, 101, 114,  84, 101, 
+    120, 116, 117, 114, 101,   0, 
+     38,   0, 100,  17,  13,  16, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      6,   0,  83,  97, 109, 112, 
+    108, 101,  84, 121, 112, 101, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3150,31 +2902,22 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  18,   0, 
-     37,  17,   0,   0,   0,   0, 
-    128,   0,   0,   0,   1,   0, 
-    109,  97, 105, 110,   0,   0, 
-     38,   0, 100,  17,  10,  16, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      7,   0, 115, 104,  97, 100, 
-    101, 114,  84, 101, 120, 116, 
-    117, 114, 101,   0,  38,   0, 
-    100,  17,  13,  16,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   6,   0, 
-     83,  97, 109, 112, 108, 101, 
-     84, 121, 112, 101,   0,   0, 
-      0,   0,  34,   0, 100,  17, 
-     18,  16,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,   8,   0,  79,  98, 
-    106, 101,  99, 116,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  16,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    255, 255, 255, 255,  26,   9, 
+     47, 241,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3236,12 +2979,9 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,  26,   9,  47, 241, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3256,7 +2996,68 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 255, 255, 
+    255, 255, 119,   9,  49,   1, 
+      1,   0,   0,   0,  13,   0, 
+     10, 140,  14,   0, 180, 156, 
+     15,   0,  11,   0,  76,   0, 
+      0,   0,  32,   0,   0,   0, 
+     44,   0,   0,   0, 104,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  22,   0, 
+      0,   0,  25,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,  51,   1,   0,   0, 
+      0,   0, 136,   0,   0,   0, 
+     32,   0,   0,  96,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   2,   0, 
+      9,   0, 180,   2,   0,   0, 
+      0,   0,   0,   0, 124,   0, 
+      0,   0,   1,   0,   0,   0, 
+     88, 122, 161,   3,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    109,  97, 105, 110,   0, 110, 
+    111, 110, 101,   0,   0,   0, 
+     45, 186,  46, 241,   1,   0, 
+     51,   1,   0,   0,   0,   0, 
+    136,   0,   0,   0,  32,   0, 
+      0,  96,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   2,   0,   2,   0, 
+      7,   0,   0,   0,   0,   0, 
+      1,   0, 255, 255, 255, 255, 
+      0,   0,   0,   0, 136,   0, 
+      0,   0,   8,   2,   0,   0, 
+      0,   0,   0,   0, 255, 255, 
+    255, 255,   0,   0,   0,   0, 
+    255, 255, 255, 255,   1,   0, 
+      1,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,  67,  58, 
+     92,  85, 115, 101, 114, 115, 
+     92, 107, 111, 108, 106,  97, 
+     92,  79, 110, 101,  68, 114, 
+    105, 118, 101,  92,  68, 101, 
+    115, 107, 116, 111, 112,  92, 
+     75, 111, 108, 106,  97,  45, 
+     83, 116, 114, 111, 104, 109, 
+     45,  71,  97, 109, 101, 115, 
+     92,  65, 108, 108, 103, 101, 
+    109, 101, 105, 110,  92,  70, 
+    114,  97, 109, 101, 119, 111, 
+    114, 107,  92,  68,  88,  49, 
+     50,  80, 105, 120, 101, 108, 
+     83, 104,  97, 100, 101, 114, 
+     46, 104, 108, 115, 108,   0, 
+    254, 239, 254, 239,   1,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   1,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0, 255, 255, 255, 255, 255, 
+    255, 255, 255, 255, 255,  12, 
+      0, 255, 255, 255, 255, 255, 
+    255, 255, 255, 255, 255,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3281,6 +3082,45 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+    148,  46,  49,   1,  58,  62, 
+     92,  92,   1,   0,   0,   0, 
+    116,  17,  92, 154, 100,  80, 
+    124,  74, 180,  71, 202, 147, 
+    113, 214,  11,  18, 137,   0, 
+      0,   0,  47,  76, 105, 110, 
+    107,  73, 110, 102, 111,   0, 
+     47, 110,  97, 109, 101, 115, 
+      0,  47, 115, 114,  99,  47, 
+    104, 101,  97, 100, 101, 114, 
+     98, 108, 111,  99, 107,   0, 
+     47, 115, 114,  99,  47, 102, 
+    105, 108, 101, 115,  47,  99, 
+     58,  92, 117, 115, 101, 114, 
+    115,  92, 107, 111, 108, 106, 
+     97,  92, 111, 110, 101, 100, 
+    114, 105, 118, 101,  92, 100, 
+    101, 115, 107, 116, 111, 112, 
+     92, 107, 111, 108, 106,  97, 
+     45, 115, 116, 114, 111, 104, 
+    109,  45, 103,  97, 109, 101, 
+    115,  92,  97, 108, 108, 103, 
+    101, 109, 101, 105, 110,  92, 
+    102, 114,  97, 109, 101, 119, 
+    111, 114, 107,  92, 100, 120, 
+     49,  50, 112, 105, 120, 101, 
+    108, 115, 104,  97, 100, 101, 
+    114,  46, 104, 108, 115, 108, 
+      0,   4,   0,   0,   0,   6, 
+      0,   0,   0,   1,   0,   0, 
+      0,  58,   0,   0,   0,   0, 
+      0,   0,   0,  17,   0,   0, 
+      0,   7,   0,   0,   0,  10, 
+      0,   0,   0,   6,   0,   0, 
+      0,   0,   0,   0,   0,   5, 
+      0,   0,   0,  34,   0,   0, 
+      0,   8,   0,   0,   0,   0, 
+      0,   0,   0, 220,  81,  51, 
+      1,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3321,68 +3161,145 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-    119,   9,  49,   1,   1,   0, 
-      0,   0,  13,   0,  10, 140, 
-     14,   0, 180, 156,  15,   0, 
-     11,   0,  76,   0,   0,   0, 
-     32,   0,   0,   0,  44,   0, 
-      0,   0, 104,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  16,   0,   0,   0, 
+     32,   0,   0,   0, 229,   0, 
+      0,   0, 112,   1,   0,   0, 
+    111,   1,   0,   0,  56,   0, 
+      0,   0,   0,   0,   0,   0, 
+    194,  15,   0,   0, 128,   0, 
+      0,   0, 216,  14,   0,   0, 
+     64,   3,   0,   0,  64,   0, 
+      0,   0,   0,   0,   0,   0, 
+     40,   0,   0,   0,  56,   2, 
+      0,   0,  44,   0,   0,   0, 
+    100,   0,   0,   0,   3,   0, 
+      0,   0,  34,   0,   0,   0, 
+     20,   0,   0,   0,  33,   0, 
+      0,   0,  21,   0,   0,   0, 
+     16,   0,   0,   0,   6,   0, 
       0,   0,  22,   0,   0,   0, 
-     25,   0,   0,   0,   0,   0, 
+     23,   0,   0,   0,  24,   0, 
+      0,   0,  25,   0,   0,   0, 
+     26,   0,   0,   0,  27,   0, 
+      0,   0,  17,   0,   0,   0, 
+      8,   0,   0,   0,   9,   0, 
+      0,   0,  10,   0,   0,   0, 
+     11,   0,   0,   0,  12,   0, 
+      0,   0,  13,   0,   0,   0, 
+     14,   0,   0,   0,  15,   0, 
+      0,   0,  18,   0,   0,   0, 
+     19,   0,   0,   0,   7,   0, 
+      0,   0,  28,   0,   0,   0, 
+     29,   0,   0,   0,  30,   0, 
+      0,   0,  32,   0,   0,   0, 
+     31,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  35,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
-     28,   2,   0,   0,  32,   0, 
-      0,  96,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   2,   0,   9,   0, 
-    220,   4,   0,   0,   0,   0, 
-      0,   0, 156,   1,   0,   0, 
-      1,   0,   0,   0,  56, 122, 
-      0,   4,   0,   0,   0,   0, 
-      0,   0,   0,   0, 109,  97, 
-    105, 110,   0, 110, 111, 110, 
-    101,   0,   0,   0,  45, 186, 
-     46, 241,   1,   0,   0,   0, 
-      0,   0,   0,   0,  28,   2, 
-      0,   0,  32,   0,   0,  96, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      2,   0,   2,   0,   7,   0, 
-      0,   0,   0,   0,   1,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0,  28,   2,   0,   0, 
-      8,   2,   0,   0,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   1,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,  67,  58,  92,  85, 
-    115, 101, 114, 115,  92, 107, 
-    111, 108, 106,  97,  92,  79, 
-    110, 101,  68, 114, 105, 118, 
-    101,  92,  68, 101, 115, 107, 
-    116, 111, 112,  92,  75, 111, 
-    108, 106,  97,  45,  83, 116, 
-    114, 111, 104, 109,  45,  71, 
-     97, 109, 101, 115,  92,  65, 
-    108, 108, 103, 101, 109, 101, 
-    105, 110,  92,  70, 114,  97, 
-    109, 101, 119, 111, 114, 107, 
-     92,  68,  88,  49,  50,  80, 
-    105, 120, 101, 108,  83, 104, 
-     97, 100, 101, 114,  46, 104, 
-    108, 115, 108,   0, 254, 239, 
-    254, 239,   1,   0,   0,   0, 
-      1,   0,   0,   0,   0,   1, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0, 255, 
-    255, 255, 255, 255, 255, 255, 
-    255, 255, 255,  12,   0, 255, 
-    255, 255, 255, 255, 255, 255, 
-    255, 255, 255,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3406,45 +3323,8 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 148,  46, 
-     49,   1, 245, 212,  86,  92, 
-      1,   0,   0,   0, 215,  73, 
-    210, 232, 170, 197, 237,  66, 
-    134, 238, 130, 179, 180,  81, 
-    240,  71, 137,   0,   0,   0, 
-     47,  76, 105, 110, 107,  73, 
-    110, 102, 111,   0,  47, 110, 
-     97, 109, 101, 115,   0,  47, 
-    115, 114,  99,  47, 104, 101, 
-     97, 100, 101, 114,  98, 108, 
-    111,  99, 107,   0,  47, 115, 
-    114,  99,  47, 102, 105, 108, 
-    101, 115,  47,  99,  58,  92, 
-    117, 115, 101, 114, 115,  92, 
-    107, 111, 108, 106,  97,  92, 
-    111, 110, 101, 100, 114, 105, 
-    118, 101,  92, 100, 101, 115, 
-    107, 116, 111, 112,  92, 107, 
-    111, 108, 106,  97,  45, 115, 
-    116, 114, 111, 104, 109,  45, 
-    103,  97, 109, 101, 115,  92, 
-     97, 108, 108, 103, 101, 109, 
-    101, 105, 110,  92, 102, 114, 
-     97, 109, 101, 119, 111, 114, 
-    107,  92, 100, 120,  49,  50, 
-    112, 105, 120, 101, 108, 115, 
-    104,  97, 100, 101, 114,  46, 
-    104, 108, 115, 108,   0,   4, 
-      0,   0,   0,   6,   0,   0, 
-      0,   1,   0,   0,   0,  58, 
       0,   0,   0,   0,   0,   0, 
-      0,  17,   0,   0,   0,   7, 
-      0,   0,   0,  10,   0,   0, 
-      0,   6,   0,   0,   0,   0, 
-      0,   0,   0,   5,   0,   0, 
-      0,  34,   0,   0,   0,   8, 
       0,   0,   0,   0,   0,   0, 
-      0, 220,  81,  51,   1,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3492,39 +3372,6 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-     16,   0,   0,   0,  32,   0, 
-      0,   0, 229,   0,   0,   0, 
-      8,   2,   0,   0, 111,   1, 
-      0,   0,  56,   0,   0,   0, 
-      0,   0,   0,   0,  35,  14, 
-      0,   0, 128,   0,   0,   0, 
-     56,  13,   0,   0, 140,   6, 
-      0,   0,  84,   0,   0,   0, 
-      0,   0,   0,   0,  40,   0, 
-      0,   0,  68,   2,   0,   0, 
-     44,   0,   0,   0, 136,   0, 
-      0,   0,   3,   0,   0,   0, 
-     36,   0,   0,   0,  22,   0, 
-      0,   0,  21,   0,   0,   0, 
-     35,   0,   0,   0,  23,   0, 
-      0,   0,  15,   0,   0,   0, 
-      6,   0,   0,   0,  24,   0, 
-      0,   0,  25,   0,   0,   0, 
-     26,   0,   0,   0,  27,   0, 
-      0,   0,  28,   0,   0,   0, 
-     29,   0,   0,   0,  16,   0, 
-      0,   0,   8,   0,   0,   0, 
-      9,   0,   0,   0,  10,   0, 
-      0,   0,  11,   0,   0,   0, 
-     12,   0,   0,   0,  13,   0, 
-      0,   0,  14,   0,   0,   0, 
-     17,   0,   0,   0,  18,   0, 
-      0,   0,  19,   0,   0,   0, 
-     20,   0,   0,   0,   7,   0, 
-      0,   0,  30,   0,   0,   0, 
-     31,   0,   0,   0,  32,   0, 
-      0,   0,  34,   0,   0,   0, 
-     33,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3577,7 +3424,6 @@ const BYTE DX12PixelShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,  37,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 

+ 23 - 7
DX12PixelShader.hlsl

@@ -2,7 +2,20 @@
 // GLOBALS //                                                                                           
 /////////////                                                                                           
 Texture2D shaderTexture : register( t0 );
-SamplerState SampleType;
+SamplerState SampleType : register( s0 );
+
+// Matrizen für die einzelnen Knochen des Modells
+struct MatrixBuffer
+{
+    matrix knochenMatrix[ 128 ];
+};
+
+// The projection and view matrix
+struct KameraBuffer2
+{
+    matrix view;
+    matrix projection;
+};
 
 // The position of the kamera
 struct KameraBuffer
@@ -24,6 +37,8 @@ struct LightCount
     int pointLightCount;
 };
 
+ConstantBuffer<KameraBuffer2> Kamera2 : register( b0 );
+ConstantBuffer<MatrixBuffer> Skelett : register( b1 );
 ConstantBuffer<KameraBuffer> Kamera : register( b2 );
 ConstantBuffer<Material> Object : register( b3 );
 ConstantBuffer<LightCount> Light : register( b4 );
@@ -52,8 +67,8 @@ struct PixelInputType
 {
     float4 worldPos : POSITION;
     float4 position : SV_POSITION;
-    float2 tex : TEXCOORD0;
-    float3 normal : TEXCOORD1;
+    float2 tex : TEXCOORD;
+    float3 normal : NORMAL;
 };
 
 ////////////////////////////////////////////////////////////////////////////////                        
@@ -82,8 +97,9 @@ float4 main( PixelInputType input ) : SV_TARGET
                 specularLight += pointLights[ i ].color * f * factor;
         }
     }*/
-    float4 materialColor = shaderTexture.Sample( SampleType, input.tex );
-    float4 textureColor = saturate( materialColor * Object.ambientFactor + float4( diffuseLight.x, diffuseLight.y, diffuseLight.z, 0 ) * Object.diffusFactor + float4( specularLight.x, specularLight.y, specularLight.z, 0 ) * Object.specularFactor );
-    textureColor.a = materialColor.a;
-    return textureColor;
+    //float4 materialColor = shaderTexture.Sample( SampleType, input.tex );
+    //float4 textureColor = saturate( materialColor * Object.ambientFactor + float4( diffuseLight.x, diffuseLight.y, diffuseLight.z, 0 ) * Object.diffusFactor + float4( specularLight.x, specularLight.y, specularLight.z, 0 ) * Object.specularFactor );
+    //textureColor.a = materialColor.a;
+    return shaderTexture.Sample( SampleType, input.tex );
+    //return textureColor;
 }

+ 1357 - 1469
DX12VertexShader.h

@@ -5,19 +5,6 @@
 //
 // Buffer Definitions: 
 //
-// cbuffer Kamera
-// {
-//
-//   struct KameraBuffer
-//   {
-//       
-//       float4x4 view;                 // Offset:    0
-//       float4x4 projection;           // Offset:   64
-//
-//   } Kamera;                          // Offset:    0 Size:   128
-//
-// }
-//
 // cbuffer Skelett
 // {
 //
@@ -35,8 +22,7 @@
 //
 // Name                                 Type  Format         Dim      ID      HLSL Bind  Count
 // ------------------------------ ---------- ------- ----------- ------- -------------- ------
-// Kamera                            cbuffer      NA          NA     CB0            cb0      1 
-// Skelett                           cbuffer      NA          NA     CB1            cb1      1 
+// Skelett                           cbuffer      NA          NA     CB0            cb1      1 
 //
 //
 //
@@ -44,7 +30,7 @@
 //
 // Name                 Index   Mask Register SysValue  Format   Used
 // -------------------- ----- ------ -------- -------- ------- ------
-// POSITION                 0   xyzw        0     NONE   float   xyz 
+// POSITION                 0   xyz         0     NONE   float   xyz 
 // TEXCOORD                 0   xy          1     NONE   float   xy  
 // NORMAL                   0   xyz         2     NONE   float   xyz 
 // KNOCHEN_ID               0   x           3     NONE    uint   x   
@@ -57,12 +43,11 @@
 // POSITION                 0   xyzw        0     NONE   float   xyzw
 // SV_POSITION              0   xyzw        1      POS   float   xyzw
 // TEXCOORD                 0   xy          2     NONE   float   xy  
-// TEXCOORD                 1   xyz         3     NONE   float   xyz 
+// NORMAL                   0   xyz         3     NONE   float   xyz 
 //
 vs_5_1
 dcl_globalFlags refactoringAllowed | skipOptimization
-dcl_constantbuffer CB0[0:0][8], immediateIndexed, space=0
-dcl_constantbuffer CB1[1:1][512], dynamicIndexed, space=0
+dcl_constantbuffer CB0[1:1][512], dynamicIndexed, space=0
 dcl_input v0.xyz
 dcl_input v1.xy
 dcl_input v2.xyz
@@ -71,10 +56,10 @@ dcl_output o0.xyzw
 dcl_output_siv o1.xyzw, position
 dcl_output o2.xy
 dcl_output o3.xyz
-dcl_temps 5
+dcl_temps 4
 //
 // Initial variable locations:
-//   v0.x <- input.position.x; v0.y <- input.position.y; v0.z <- input.position.z; v0.w <- input.position.w; 
+//   v0.x <- input.position.x; v0.y <- input.position.y; v0.z <- input.position.z; 
 //   v1.x <- input.tex.x; v1.y <- input.tex.y; 
 //   v2.x <- input.normal.x; v2.y <- input.normal.y; v2.z <- input.normal.z; 
 //   v3.x <- input.knochen; 
@@ -83,151 +68,102 @@ dcl_temps 5
 //   o1.x <- <main return value>.position.x; o1.y <- <main return value>.position.y; o1.z <- <main return value>.position.z; o1.w <- <main return value>.position.w; 
 //   o0.x <- <main return value>.worldPos.x; o0.y <- <main return value>.worldPos.y; o0.z <- <main return value>.worldPos.z; o0.w <- <main return value>.worldPos.w
 //
-#line 37 "C:\Users\kolja\OneDrive\Desktop\Kolja-Strohm-Games\Allgemein\Framework\DX12VertexShader.hlsl"
+#line 64 "C:\Users\kolja\OneDrive\Desktop\Kolja-Strohm-Games\Allgemein\Framework\DX12VertexShader.hlsl"
 imul null, r0.x, v3.x, l(4)
-dp3 r1.x, v2.xyzx, CB1[1][r0.x + 0].xyzx
-dp3 r1.y, v2.xyzx, CB1[1][r0.x + 1].xyzx
-dp3 r1.z, v2.xyzx, CB1[1][r0.x + 2].xyzx
+dp3 r1.x, v2.xyzx, CB0[1][r0.x + 0].xyzx
+dp3 r1.y, v2.xyzx, CB0[1][r0.x + 1].xyzx
+dp3 r1.z, v2.xyzx, CB0[1][r0.x + 2].xyzx
 dp3 r0.x, r1.xyzx, r1.xyzx
 rsq r0.x, r0.x
 mul r0.xyz, r0.xxxx, r1.xyzx  // r0.x <- output.normal.x; r0.y <- output.normal.y; r0.z <- output.normal.z
 
-#line 40
-mov r1.w, l(1.000000)  // r1.w <- input.position.w
+#line 67
+mov r1.xyz, v0.xyzx  // r1.x <- position.x; r1.y <- position.y; r1.z <- position.z
+mov r1.w, l(1.000000)  // r1.w <- position.w
 
-#line 43
+#line 69
 mov r2.xy, v1.xyxx  // r2.x <- output.tex.x; r2.y <- output.tex.y
 
-#line 46
+#line 72
 imul null, r0.w, v3.x, l(4)
-mov r1.xyz, v0.xyzx
-dp4 r3.x, r1.xyzw, CB1[1][r0.w + 0].xyzw  // r3.x <- output.worldPos.x
-dp4 r3.y, r1.xyzw, CB1[1][r0.w + 1].xyzw  // r3.y <- output.worldPos.y
-dp4 r3.z, r1.xyzw, CB1[1][r0.w + 2].xyzw  // r3.z <- output.worldPos.z
-dp4 r3.w, r1.xyzw, CB1[1][r0.w + 3].xyzw  // r3.w <- output.worldPos.w
+dp4 r3.x, r1.xyzw, CB0[1][r0.w + 0].xyzw  // r3.x <- output.worldPos.x
+dp4 r3.y, r1.xyzw, CB0[1][r0.w + 1].xyzw  // r3.y <- output.worldPos.y
+dp4 r3.z, r1.xyzw, CB0[1][r0.w + 2].xyzw  // r3.z <- output.worldPos.z
+dp4 r3.w, r1.xyzw, CB0[1][r0.w + 3].xyzw  // r3.w <- output.worldPos.w
 
-#line 47
-dp4 r1.x, r3.xyzw, CB0[0][0].xyzw  // r1.x <- output.position.x
-dp4 r1.y, r3.xyzw, CB0[0][1].xyzw  // r1.y <- output.position.y
-dp4 r1.z, r3.xyzw, CB0[0][2].xyzw  // r1.z <- output.position.z
-dp4 r1.w, r3.xyzw, CB0[0][3].xyzw  // r1.w <- output.position.w
+#line 75
+mov r1.xyzw, r1.xyzw  // r1.x <- output.position.x; r1.y <- output.position.y; r1.z <- output.position.z; r1.w <- output.position.w
 
-#line 48
-dp4 r4.x, r1.xyzw, CB0[0][4].xyzw  // r4.x <- output.position.x
-dp4 r4.y, r1.xyzw, CB0[0][5].xyzw  // r4.y <- output.position.y
-dp4 r4.z, r1.xyzw, CB0[0][6].xyzw  // r4.z <- output.position.z
-dp4 r4.w, r1.xyzw, CB0[0][7].xyzw  // r4.w <- output.position.w
-
-#line 50
+#line 78
 mov o0.xyzw, r3.xyzw
-mov o1.xyzw, r4.xyzw
+mov o1.xyzw, r1.xyzw
 mov o3.xyz, r0.xyzx
 mov o2.xy, r2.xyxx
 ret 
-// Approximately 28 instruction slots used
+// Approximately 21 instruction slots used
 #endif
 
 const BYTE DX12VertexShaderBytes[] =
 {
-     68,  88,  66,  67,  79, 229, 
-    181, 227, 177, 213,  64, 111, 
-    196,  39,  29,  49,  65, 132, 
-     49, 234,   1,   0,   0,   0, 
-    100,  78,   0,   0,   6,   0, 
+     68,  88,  66,  67, 107,  51, 
+    214,   0, 120, 210, 146, 133, 
+    150,  28, 129, 212,  17, 179, 
+    157, 255,   1,   0,   0,   0, 
+     84,  76,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
-    124,   2,   0,   0,  16,   3, 
-      0,   0, 160,   3,   0,   0, 
-    192,   7,   0,   0,  92,   8, 
+    140,   1,   0,   0,  32,   2, 
+      0,   0, 184,   2,   0,   0, 
+    176,   5,   0,   0,  76,   6, 
       0,   0,  82,  68,  69,  70, 
-     60,   2,   0,   0,   2,   0, 
-      0,   0, 156,   0,   0,   0, 
-      2,   0,   0,   0,  60,   0, 
+     76,   1,   0,   0,   1,   0, 
+      0,   0, 108,   0,   0,   0, 
+      1,   0,   0,   0,  60,   0, 
       0,   0,   1,   5, 254, 255, 
-      5,   5,   0,   0,  20,   2, 
+      5,   5,   0,   0,  36,   1, 
       0,   0,  19,  19,  68,  37, 
      60,   0,   0,   0,  24,   0, 
       0,   0,  40,   0,   0,   0, 
      40,   0,   0,   0,  36,   0, 
       0,   0,  12,   0,   0,   0, 
-      0,   0,   0,   0, 140,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0, 100,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0, 147,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-     75,  97, 109, 101, 114,  97, 
-      0,  83, 107, 101, 108, 101, 
-    116, 116,   0, 171, 140,   0, 
-      0,   0,   1,   0,   0,   0, 
-    204,   0,   0,   0, 128,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 147,   0, 
+      0,   0,  83, 107, 101, 108, 
+    101, 116, 116,   0, 100,   0, 
       0,   0,   1,   0,   0,   0, 
-    124,   1,   0,   0,   0,  32, 
+    132,   0,   0,   0,   0,  32, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 140,   0, 
+      0,   0,   0,   0, 100,   0, 
       0,   0,   0,   0,   0,   0, 
-    128,   0,   0,   0,   2,   0, 
-      0,   0,  88,   1,   0,   0, 
+      0,  32,   0,   0,   2,   0, 
+      0,   0,   0,   1,   0,   0, 
       0,   0,   0,   0, 255, 255, 
     255, 255,   0,   0,   0,   0, 
     255, 255, 255, 255,   0,   0, 
-      0,   0,  75,  97, 109, 101, 
-    114,  97,  66, 117, 102, 102, 
-    101, 114,   0, 118, 105, 101, 
-    119,   0, 102, 108, 111,  97, 
-    116,  52, 120,  52,   0, 171, 
-      3,   0,   3,   0,   4,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   6,   1,   0,   0, 
-    112, 114, 111, 106, 101,  99, 
-    116, 105, 111, 110,   0, 171, 
-      1,   1,   0,   0,  16,   1, 
-      0,   0,   0,   0,   0,   0, 
-     52,   1,   0,   0,  16,   1, 
-      0,   0,  64,   0,   0,   0, 
-      5,   0,   0,   0,   1,   0, 
-     32,   0,   0,   0,   2,   0, 
-     64,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 244,   0,   0,   0, 
-    147,   0,   0,   0,   0,   0, 
-      0,   0,   0,  32,   0,   0, 
-      2,   0,   0,   0, 240,   1, 
-      0,   0,   0,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0,  77,  97, 
-    116, 114, 105, 120,  66, 117, 
-    102, 102, 101, 114,   0, 107, 
-    110, 111,  99, 104, 101, 110, 
-     77,  97, 116, 114, 105, 120, 
-      0, 171,   3,   0,   3,   0, 
+      0,   0,  77,  97, 116, 114, 
+    105, 120,  66, 117, 102, 102, 
+    101, 114,   0, 107, 110, 111, 
+     99, 104, 101, 110,  77,  97, 
+    116, 114, 105, 120,   0, 102, 
+    108, 111,  97, 116,  52, 120, 
+     52,   0,   3,   0,   3,   0, 
       4,   0,   4,   0, 128,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   6,   1, 
-      0,   0, 177,   1,   0,   0, 
-    192,   1,   0,   0,   0,   0, 
+      0,   0,   0,   0, 199,   0, 
+      0,   0, 185,   0,   0,   0, 
+    208,   0,   0,   0,   0,   0, 
       0,   0,   5,   0,   0,   0, 
       1,   0,   0,   8,   0,   0, 
-      1,   0, 228,   1,   0,   0, 
+      1,   0, 244,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 164,   1, 
+      0,   0,   0,   0, 172,   0, 
       0,   0,  77, 105,  99, 114, 
     111, 115, 111, 102, 116,  32, 
      40,  82,  41,  32,  72,  76, 
@@ -241,7 +177,7 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   3,   0, 
       0,   0,   0,   0,   0,   0, 
-     15,   7,   0,   0, 113,   0, 
+      7,   7,   0,   0, 113,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   3,   0, 
       0,   0,   1,   0,   0,   0, 
@@ -260,7 +196,7 @@ const BYTE DX12VertexShaderBytes[] =
      82,  77,  65,  76,   0,  75, 
      78,  79,  67,  72,  69,  78, 
      95,  73,  68,   0,  79,  83, 
-     71,  78, 136,   0,   0,   0, 
+     71,  78, 144,   0,   0,   0, 
       4,   0,   0,   0,   8,   0, 
       0,   0, 104,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -274,8 +210,8 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
       2,   0,   0,   0,   3,  12, 
-      0,   0, 125,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
+      0,   0, 134,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
       3,   0,   0,   0,   7,   8, 
       0,   0,  80,  79,  83,  73, 
@@ -283,77 +219,77 @@ const BYTE DX12VertexShaderBytes[] =
      86,  95,  80,  79,  83,  73, 
      84,  73,  79,  78,   0,  84, 
      69,  88,  67,  79,  79,  82, 
-     68,   0, 171, 171,  83,  72, 
-     69,  88,  24,   4,   0,   0, 
-     81,   0,   1,   0,   6,   1, 
-      0,   0, 106, 136,   0,   1, 
-     89,   0,   0,   7,  70, 142, 
-     48,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   8,   0,   0,   0, 
-      0,   0,   0,   0,  89,   8, 
-      0,   7,  70, 142,  48,   0, 
-      1,   0,   0,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   2,   0,   0,   0,   0, 
-      0,   0,  95,   0,   0,   3, 
-    114,  16,  16,   0,   0,   0, 
-      0,   0,  95,   0,   0,   3, 
-     50,  16,  16,   0,   1,   0, 
-      0,   0,  95,   0,   0,   3, 
-    114,  16,  16,   0,   2,   0, 
-      0,   0,  95,   0,   0,   3, 
-     18,  16,  16,   0,   3,   0, 
-      0,   0, 101,   0,   0,   3, 
-    242,  32,  16,   0,   0,   0, 
-      0,   0, 103,   0,   0,   4, 
-    242,  32,  16,   0,   1,   0, 
+     68,   0,  78,  79,  82,  77, 
+     65,  76,   0, 171, 171, 171, 
+     83,  72,  69,  88, 240,   2, 
+      0,   0,  81,   0,   1,   0, 
+    188,   0,   0,   0, 106, 136, 
+      0,   1,  89,   8,   0,   7, 
+     70, 142,  48,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
-    101,   0,   0,   3,  50,  32, 
+      1,   0,   0,   0,   0,   2, 
+      0,   0,   0,   0,   0,   0, 
+     95,   0,   0,   3, 114,  16, 
+     16,   0,   0,   0,   0,   0, 
+     95,   0,   0,   3,  50,  16, 
+     16,   0,   1,   0,   0,   0, 
+     95,   0,   0,   3, 114,  16, 
      16,   0,   2,   0,   0,   0, 
-    101,   0,   0,   3, 114,  32, 
+     95,   0,   0,   3,  18,  16, 
      16,   0,   3,   0,   0,   0, 
-    104,   0,   0,   2,   5,   0, 
-      0,   0,  38,   0,   0,   8, 
-      0, 208,   0,   0,  18,   0, 
+    101,   0,   0,   3, 242,  32, 
      16,   0,   0,   0,   0,   0, 
-     10,  16,  16,   0,   3,   0, 
-      0,   0,   1,  64,   0,   0, 
-      4,   0,   0,   0,  16,   0, 
-      0,  10,  18,   0,  16,   0, 
-      1,   0,   0,   0,  70,  18, 
-     16,   0,   2,   0,   0,   0, 
-     70, 130,  48,  32,   1,   0, 
+    103,   0,   0,   4, 242,  32, 
+     16,   0,   1,   0,   0,   0, 
+      1,   0,   0,   0, 101,   0, 
+      0,   3,  50,  32,  16,   0, 
+      2,   0,   0,   0, 101,   0, 
+      0,   3, 114,  32,  16,   0, 
+      3,   0,   0,   0, 104,   0, 
+      0,   2,   4,   0,   0,   0, 
+     38,   0,   0,   8,   0, 208, 
+      0,   0,  18,   0,  16,   0, 
+      0,   0,   0,   0,  10,  16, 
+     16,   0,   3,   0,   0,   0, 
+      1,  64,   0,   0,   4,   0, 
+      0,   0,  16,   0,   0,  10, 
+     18,   0,  16,   0,   1,   0, 
+      0,   0,  70,  18,  16,   0, 
+      2,   0,   0,   0,  70, 130, 
+     48,  32,   0,   0,   0,   0, 
+      1,   0,   0,   0,  10,   0, 
+     16,   0,   0,   0,   0,   0, 
+     16,   0,   0,  11,  34,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70,  18,  16,   0,   2,   0, 
+      0,   0,  70, 130,  48,  48, 
+      0,   0,   0,   0,   1,   0, 
       0,   0,   1,   0,   0,   0, 
      10,   0,  16,   0,   0,   0, 
       0,   0,  16,   0,   0,  11, 
-     34,   0,  16,   0,   1,   0, 
+     66,   0,  16,   0,   1,   0, 
       0,   0,  70,  18,  16,   0, 
       2,   0,   0,   0,  70, 130, 
-     48,  48,   1,   0,   0,   0, 
-      1,   0,   0,   0,   1,   0, 
+     48,  48,   0,   0,   0,   0, 
+      1,   0,   0,   0,   2,   0, 
       0,   0,  10,   0,  16,   0, 
       0,   0,   0,   0,  16,   0, 
-      0,  11,  66,   0,  16,   0, 
-      1,   0,   0,   0,  70,  18, 
-     16,   0,   2,   0,   0,   0, 
-     70, 130,  48,  48,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-      2,   0,   0,   0,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-     16,   0,   0,   7,  18,   0, 
-     16,   0,   0,   0,   0,   0, 
+      0,   7,  18,   0,  16,   0, 
+      0,   0,   0,   0,  70,   2, 
+     16,   0,   1,   0,   0,   0, 
      70,   2,  16,   0,   1,   0, 
-      0,   0,  70,   2,  16,   0, 
-      1,   0,   0,   0,  68,   0, 
-      0,   5,  18,   0,  16,   0, 
-      0,   0,   0,   0,  10,   0, 
-     16,   0,   0,   0,   0,   0, 
-     56,   0,   0,   7, 114,   0, 
+      0,   0,  68,   0,   0,   5, 
+     18,   0,  16,   0,   0,   0, 
+      0,   0,  10,   0,  16,   0, 
+      0,   0,   0,   0,  56,   0, 
+      0,   7, 114,   0,  16,   0, 
+      0,   0,   0,   0,   6,   0, 
      16,   0,   0,   0,   0,   0, 
-      6,   0,  16,   0,   0,   0, 
-      0,   0,  70,   2,  16,   0, 
-      1,   0,   0,   0,  54,   0, 
+     70,   2,  16,   0,   1,   0, 
+      0,   0,  54,   0,   0,   5, 
+    114,   0,  16,   0,   1,   0, 
+      0,   0,  70,  18,  16,   0, 
+      0,   0,   0,   0,  54,   0, 
       0,   5, 130,   0,  16,   0, 
       1,   0,   0,   0,   1,  64, 
       0,   0,   0,   0, 128,  63, 
@@ -365,93 +301,45 @@ const BYTE DX12VertexShaderBytes[] =
      16,   0,   0,   0,   0,   0, 
      10,  16,  16,   0,   3,   0, 
       0,   0,   1,  64,   0,   0, 
-      4,   0,   0,   0,  54,   0, 
-      0,   5, 114,   0,  16,   0, 
-      1,   0,   0,   0,  70,  18, 
-     16,   0,   0,   0,   0,   0, 
-     17,   0,   0,  10,  18,   0, 
-     16,   0,   3,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,  70, 142,  48,  32, 
+      4,   0,   0,   0,  17,   0, 
+      0,  10,  18,   0,  16,   0, 
+      3,   0,   0,   0,  70,  14, 
+     16,   0,   1,   0,   0,   0, 
+     70, 142,  48,  32,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+     58,   0,  16,   0,   0,   0, 
+      0,   0,  17,   0,   0,  11, 
+     34,   0,  16,   0,   3,   0, 
+      0,   0,  70,  14,  16,   0, 
+      1,   0,   0,   0,  70, 142, 
+     48,  48,   0,   0,   0,   0, 
       1,   0,   0,   0,   1,   0, 
       0,   0,  58,   0,  16,   0, 
       0,   0,   0,   0,  17,   0, 
-      0,  11,  34,   0,  16,   0, 
+      0,  11,  66,   0,  16,   0, 
       3,   0,   0,   0,  70,  14, 
      16,   0,   1,   0,   0,   0, 
-     70, 142,  48,  48,   1,   0, 
+     70, 142,  48,  48,   0,   0, 
       0,   0,   1,   0,   0,   0, 
-      1,   0,   0,   0,  58,   0, 
+      2,   0,   0,   0,  58,   0, 
      16,   0,   0,   0,   0,   0, 
-     17,   0,   0,  11,  66,   0, 
+     17,   0,   0,  11, 130,   0, 
      16,   0,   3,   0,   0,   0, 
      70,  14,  16,   0,   1,   0, 
       0,   0,  70, 142,  48,  48, 
-      1,   0,   0,   0,   1,   0, 
-      0,   0,   2,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   3,   0,   0,   0, 
      58,   0,  16,   0,   0,   0, 
-      0,   0,  17,   0,   0,  11, 
-    130,   0,  16,   0,   3,   0, 
+      0,   0,  54,   0,   0,   5, 
+    242,   0,  16,   0,   1,   0, 
       0,   0,  70,  14,  16,   0, 
-      1,   0,   0,   0,  70, 142, 
-     48,  48,   1,   0,   0,   0, 
-      1,   0,   0,   0,   3,   0, 
-      0,   0,  58,   0,  16,   0, 
-      0,   0,   0,   0,  17,   0, 
-      0,   9,  18,   0,  16,   0, 
-      1,   0,   0,   0,  70,  14, 
-     16,   0,   3,   0,   0,   0, 
-     70, 142,  48,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  17,   0, 
-      0,   9,  34,   0,  16,   0, 
-      1,   0,   0,   0,  70,  14, 
-     16,   0,   3,   0,   0,   0, 
-     70, 142,  48,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   0,   0,  17,   0, 
-      0,   9,  66,   0,  16,   0, 
-      1,   0,   0,   0,  70,  14, 
-     16,   0,   3,   0,   0,   0, 
-     70, 142,  48,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      2,   0,   0,   0,  17,   0, 
-      0,   9, 130,   0,  16,   0, 
-      1,   0,   0,   0,  70,  14, 
-     16,   0,   3,   0,   0,   0, 
-     70, 142,  48,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0,  17,   0, 
-      0,   9,  18,   0,  16,   0, 
-      4,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-     70, 142,  48,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      4,   0,   0,   0,  17,   0, 
-      0,   9,  34,   0,  16,   0, 
-      4,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-     70, 142,  48,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      5,   0,   0,   0,  17,   0, 
-      0,   9,  66,   0,  16,   0, 
-      4,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-     70, 142,  48,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      6,   0,   0,   0,  17,   0, 
-      0,   9, 130,   0,  16,   0, 
-      4,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-     70, 142,  48,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      7,   0,   0,   0,  54,   0, 
+      1,   0,   0,   0,  54,   0, 
       0,   5, 242,  32,  16,   0, 
       0,   0,   0,   0,  70,  14, 
      16,   0,   3,   0,   0,   0, 
      54,   0,   0,   5, 242,  32, 
      16,   0,   1,   0,   0,   0, 
-     70,  14,  16,   0,   4,   0, 
+     70,  14,  16,   0,   1,   0, 
       0,   0,  54,   0,   0,   5, 
     114,  32,  16,   0,   3,   0, 
       0,   0,  70,   2,  16,   0, 
@@ -461,9 +349,9 @@ const BYTE DX12VertexShaderBytes[] =
      16,   0,   2,   0,   0,   0, 
      62,   0,   0,   1,  83,  84, 
      65,  84, 148,   0,   0,   0, 
-     28,   0,   0,   0,   5,   0, 
+     21,   0,   0,   0,   4,   0, 
       0,   0,   0,   0,   0,   0, 
-      8,   0,   0,   0,  18,   0, 
+      8,   0,   0,   0,  10,   0, 
       0,   0,   2,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -473,7 +361,7 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   7,   0, 
+      0,   0,   0,   0,   8,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -494,8 +382,8 @@ const BYTE DX12VertexShaderBytes[] =
      13,  10,  26,  68,  83,   0, 
       0,   0,   0,   2,   0,   0, 
       2,   0,   0,   0,  35,   0, 
-      0,   0, 168,   0,   0,   0, 
-      0,   0,   0,   0,  31,   0, 
+      0,   0, 176,   0,   0,   0, 
+      0,   0,   0,   0,  33,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -658,7 +546,7 @@ const BYTE DX12VertexShaderBytes[] =
     255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255,  56,   0, 
-      0,   0, 255, 255, 255, 255, 
+      0,   0, 252, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 
     255, 255, 255, 255, 255, 255, 
@@ -914,11 +802,11 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0, 148,  46, 
-     49,   1, 222, 211,  86,  92, 
-      1,   0,   0,   0,  98, 149, 
-    195, 136, 142, 181, 237,  73, 
-    156, 159, 184, 121,  34,   7, 
-     43, 177,   0,   0,   0,   0, 
+     49,   1, 137,  68,  92,  92, 
+      1,   0,   0,   0, 248, 217, 
+    147, 230, 253,  12,  60,  66, 
+    137, 115, 217, 221, 222, 101, 
+    140, 223,   0,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -999,107 +887,104 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-     32,  58,  32, 114, 101, 103, 
-    105, 115, 116, 101, 114,  40, 
-     32,  98,  49,  32,  41,  59, 
-     13,  10,  13,  10, 115, 116, 
-    114, 117,  99, 116,  32,  86, 
-    101, 114, 116, 101, 120,  73, 
-    110, 112, 117, 116,  84, 121, 
-    112, 101,  13,  10, 123,  13, 
+     47,  32,  84, 104, 101,  32, 
+    112, 111, 115, 105, 116, 105, 
+    111, 110,  32, 111, 102,  32, 
+    116, 104, 101,  32, 107,  97, 
+    109, 101, 114,  97,  13,  10, 
+    115, 116, 114, 117,  99, 116, 
+     32,  75,  97, 109, 101, 114, 
+     97,  66, 117, 102, 102, 101, 
+    114,  50,  13,  10, 123,  13, 
      10,  32,  32,  32,  32, 102, 
     108, 111,  97, 116,  52,  32, 
-    112, 111, 115, 105, 116, 105, 
-    111, 110,  32,  58,  32,  80, 
-     79,  83,  73,  84,  73,  79, 
-     78,  59,  13,  10,  32,  32, 
-     32,  32, 102, 108, 111,  97, 
-    116,  50,  32, 116, 101, 120, 
-     32,  58,  32,  84,  69,  88, 
-     67,  79,  79,  82,  68,  48, 
-     59,  13,  10,  32,  32,  32, 
-     32, 102, 108, 111,  97, 116, 
-     51,  32, 110, 111, 114, 109, 
-     97, 108,  32,  58,  32,  78, 
-     79,  82,  77,  65,  76,  59, 
-     13,  10,  32,  32,  32,  32, 
-    117, 105, 110, 116,  32, 107, 
-    110, 111,  99, 104, 101, 110, 
-     32,  58,  32,  75,  78,  79, 
-     67,  72,  69,  78,  95,  73, 
-     68,  59,  13,  10, 125,  59, 
-     13,  10,  13,  10, 115, 116, 
-    114, 117,  99, 116,  32,  80, 
-    105, 120, 101, 108,  73, 110, 
-    112, 117, 116,  84, 121, 112, 
-    101,  13,  10, 123,  13,  10, 
-     32,  32,  32,  32, 102, 108, 
-    111,  97, 116,  52,  32, 119, 
-    111, 114, 108, 100,  80, 111, 
-    115,  32,  58,  32,  80,  79, 
-     83,  73,  84,  73,  79,  78, 
-     59,  13,  10,  32,  32,  32, 
-     32, 102, 108, 111,  97, 116, 
-     52,  32, 112, 111, 115, 105, 
-    116, 105, 111, 110,  32,  58, 
-     32,  83,  86,  95,  80,  79, 
-     83,  73,  84,  73,  79,  78, 
-     59,  13,  10,  32,  32,  32, 
-     32, 102, 108, 111,  97, 116, 
-     50,  32, 116, 101, 120,  32, 
-     58,  32,  84,  69,  88,  67, 
-     79,  79,  82,  68,  48,  59, 
+    107,  80, 111, 115, 105, 116, 
+    105, 111, 110,  59,  13,  10, 
+    125,  59,  13,  10,  13,  10, 
+     47,  47,  32, 116, 104, 101, 
+    115, 101,  32, 118,  97, 108, 
+    117, 101, 115,  32, 115, 104, 
+    111, 117, 108, 100,  32, 115, 
+    117, 109,  32, 117, 112,  32, 
+    116, 111,  32,  49,  13,  10, 
+    115, 116, 114, 117,  99, 116, 
+     32,  77,  97, 116, 101, 114, 
+    105,  97, 108,  13,  10, 123, 
      13,  10,  32,  32,  32,  32, 
-    102, 108, 111,  97, 116,  51, 
-     32, 110, 111, 114, 109,  97, 
-    108,  32,  58,  32,  84,  69, 
-     88,  67,  79,  79,  82,  68, 
-     49,  59,  13,  10, 125,  59, 
-     13,  10,  13,  10,  80, 105, 
-    120, 101, 108,  73, 110, 112, 
-    117, 116,  84, 121, 112, 101, 
-     32, 109,  97, 105, 110,  40, 
-     32,  86, 101, 114, 116, 101, 
-    120,  73, 110, 112, 117, 116, 
-     84, 121, 112, 101,  32, 105, 
-    110, 112, 117, 116,  32,  41, 
-     13,  10, 123,  13,  10,  32, 
-     32,  32,  32,  47,  47, 114, 
-    101, 116, 117, 114, 110,  32, 
-    105, 110, 112, 117, 116,  59, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  13,  10,  32, 
-     32,  32,  32,  80, 105, 120, 
-    101, 108,  73, 110, 112, 117, 
-    116,  84, 121, 112, 101,  32, 
-    111, 117, 116, 112, 117, 116, 
-     59,  13,  10,  32,  32,  32, 
-     32, 111, 198,  90,   0,   0, 
-    117, 131,   1,   0,  76, 232, 
-      3,   0, 251, 168,   1,   0, 
-    146, 183,   2,   0,  28,  19, 
-      2,   0, 242,  56,   1,   0, 
+    102, 108, 111,  97, 116,  32, 
+     97, 109,  98, 105, 101, 110, 
+    116,  70,  97,  99, 116, 111, 
+    114,  59,  13,  10,  32,  32, 
+     32,  32, 102, 108, 111,  97, 
+    116,  32, 100, 105, 102, 102, 
+    117, 115,  70,  97,  99, 116, 
+    111, 114,  59,  13,  10,  32, 
+     32,  32,  32, 102, 108, 111, 
+     97, 116,  32, 115, 112, 101, 
+     99, 117, 108,  97, 114,  70, 
+     97,  99, 116, 111, 114,  59, 
+     13,  10, 125,  59,  13,  10, 
+     13,  10, 115, 116, 114, 117, 
+     99, 116,  32,  76, 105, 103, 
+    104, 116,  67, 111, 117, 110, 
+    116,  13,  10, 123,  13,  10, 
+     32,  32,  32,  32, 105, 110, 
+    116,  32, 100, 105, 102, 102, 
+    117, 115, 101,  76, 105, 103, 
+    104, 116,  67, 111, 117, 110, 
+    116,  59,  13,  10,  32,  32, 
+     32,  32, 105, 110, 116,  32, 
+    112, 111, 105, 110, 116,  76, 
+    105, 103, 104, 116,  67, 111, 
+    117, 110, 116,  59,  13,  10, 
+    125,  59,  13,  10,  13,  10, 
+     67, 111, 110, 115, 116,  97, 
+    110, 116,  66, 117, 102, 102, 
+    101, 114,  60,  75,  97, 109, 
+    101, 114,  97,  66, 117, 102, 
+    102, 101, 114,  62,  32,  75, 
+     97, 109, 101, 114,  97,  32, 
+     58,  32, 114, 101, 103, 105, 
+    115, 116, 101, 114,  40,  32, 
+     98,  48,  32,  41,  59,  13, 
+     10,  67, 111, 110, 115, 116, 
+     97, 110, 116,  66, 117, 102, 
+    102, 101, 114,  60,  77,  97, 
+    116, 114, 105, 120,  66, 117, 
+    102, 102, 101, 114,  62,  32, 
+     83, 107, 101, 108, 101, 116, 
+    116,  32,  58,  32, 114, 101, 
+    103, 105, 115, 116, 101, 114, 
+     40,  32,  98,  49,  32,  41, 
+     59,  13,  10,  67, 111, 110, 
+    115, 116,  97, 110, 116,  66, 
+    117, 102, 102, 101, 114,  60, 
+     75,  97, 109, 101, 114,  97, 
+     66, 117, 102, 102, 101, 114, 
+     50,  62,  32,  75,  97, 109, 
+    101, 114,  97,  50,  32,  58, 
+     32, 114, 101, 103, 105, 115, 
+    116, 101, 114,  40,  32,  98, 
+     50,  32,  41,  59,  13,  10, 
+     67, 111, 110, 115, 116,  97, 
+    110, 116,  66, 117, 102, 102, 
+    101, 114,  60,  77,  97, 116, 
+    101, 114, 105,  97, 108,  62, 
+     32,  79,  98, 106, 101,  99, 
+    116,  32,  58,  32, 114, 101, 
+    103, 105,  76, 232,   3,   0, 
+    117, 131,   1,   0, 149,  77, 
+      0,   0, 146, 183,   2,   0, 
+     38, 247,   2,   0, 198,  90, 
+      0,   0,   4,  71,   2,   0, 
      43, 236,   3,   0, 217,  42, 
-      2,   0,  38, 107,   0,   0, 
-    103, 159,   1,   0, 179, 120, 
-      1,   0, 238,  97,   2,   0, 
-     90,  28,   0,   0,  20, 189, 
-      2,   0,  53, 174,   3,   0, 
-    206,  21,   0,   0, 193, 205, 
-      3,   0, 207, 193,   1,   0, 
-     62,   3,   3,   0, 134, 200, 
-      2,   0, 118, 199,   0,   0, 
-      0,  16,   0,   0,   0,   0, 
+      2,   0,  18,  44,   0,   0, 
+    103, 159,   1,   0, 206,  21, 
+      0,   0,  41, 201,   3,   0, 
+    207, 193,   1,   0, 209,  10, 
+      2,   0, 233, 214,   1,   0, 
+    125, 218,   1,   0,   0,  16, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -1169,7 +1054,25 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  47,  47, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  13,  10, 
+     84, 101, 120, 116, 117, 114, 
+    101,  50,  68,  32, 115, 104, 
+     97, 100, 101, 114,  84, 101, 
+    120, 116, 117, 114, 101,  32, 
+     58,  32, 114, 101, 103, 105, 
+    115, 116, 101, 114,  40,  32, 
+    116,  48,  32,  41,  59,  13, 
+     10,  83,  97, 109, 112, 108, 
+    101, 114,  83, 116,  97, 116, 
+    101,  32,  83,  97, 109, 112, 
+    108, 101,  84, 121, 112, 101, 
+     32,  58,  32, 114, 101, 103, 
+    105, 115, 116, 101, 114,  40, 
+     32, 115,  48,  32,  41,  59, 
+     13,  10,  13,  10,  47,  47, 
      32,  77,  97, 116, 114, 105, 
     122, 101, 110,  32, 102, 252, 
     114,  32, 100, 105, 101,  32, 
@@ -1206,77 +1109,154 @@ const BYTE DX12VertexShaderBytes[] =
     105, 120,  32, 112, 114, 111, 
     106, 101,  99, 116, 105, 111, 
     110,  59,  13,  10, 125,  59, 
-     13,  10,  13,  10,  67, 111, 
-    110, 115, 116,  97, 110, 116, 
+     13,  10,  13,  10,  47,  47, 
+     32,  84, 104, 101,  32, 112, 
+    111, 115, 105, 116, 105, 111, 
+    110,  32, 111, 102,  32, 116, 
+    104, 101,  32, 107,  97, 109, 
+    101, 114,  97,  13,  10, 115, 
+    116, 114, 117,  99, 116,  32, 
+     75,  97, 109, 101, 114,  97, 
      66, 117, 102, 102, 101, 114, 
-     60,  75,  97, 109, 101, 114, 
-     97,  66, 117, 102, 102, 101, 
-    114,  62,  32,  75,  97, 109, 
-    101, 114,  97,  32,  58,  32, 
-    114, 101, 103, 105, 115, 116, 
-    101, 114,  40,  32,  98,  48, 
-     32,  41,  59,  13,  10,  67, 
-    111, 110, 115, 116,  97, 110, 
-    116,  66, 117, 102, 102, 101, 
-    114,  60,  77,  97, 116, 114, 
-    105, 120,  66, 117, 102, 102, 
-    101, 114,  62,  32,  83, 107, 
-    101, 108, 101, 116, 116,  32, 
-     58,  32, 114, 101, 103, 105, 
-    115, 116, 101, 114,  40,  32, 
-     98,  49,  32,  41,  59,  13, 
-     10,  13,  10, 115, 116, 114, 
-    117,  99, 116,  32,  86, 101, 
-    114, 116, 101, 120,  73, 110, 
-    112, 117, 116,  84, 121, 112, 
-    101,  13,  10, 123,  13,  10, 
+     50,  13,  10, 123,  13,  10, 
      32,  32,  32,  32, 102, 108, 
-    111,  97, 116,  52,  32, 112, 
-    111, 115, 105, 116, 105, 111, 
-    110,  32,  58,  32,  80,  79, 
-     83,  73,  84,  73,  79,  78, 
+    111,  97, 116,  52,  32, 107, 
+     80, 111, 115, 105, 116, 105, 
+    111, 110,  59,  13,  10, 125, 
+     59,  13,  10,  13,  10,  47, 
+     47,  32, 116, 104, 101, 115, 
+    101,  32, 118,  97, 108, 117, 
+    101, 115,  32, 115, 104, 111, 
+    117, 108, 100,  32, 115, 117, 
+    109,  32, 117, 112,  32, 116, 
+    111,  32,  49,  13,  10, 115, 
+    116, 114, 117,  99, 116,  32, 
+     77,  97, 116, 101, 114, 105, 
+     97, 108,  13,  10, 123,  13, 
+     10,  32,  32,  32,  32, 102, 
+    108, 111,  97, 116,  32,  97, 
+    109,  98, 105, 101, 110, 116, 
+     70,  97,  99, 116, 111, 114, 
      59,  13,  10,  32,  32,  32, 
      32, 102, 108, 111,  97, 116, 
-     50,  32, 116, 101, 120,  32, 
-     58,  32,  84,  69,  88,  67, 
-     79,  79,  82,  68,  48,  59, 
-     13,  10,  32,  32,  32,  32, 
-    102, 108, 111,  97, 116,  51, 
-     32, 110, 111, 114, 109,  97, 
-    108,  32,  58,  32,  78,  79, 
-     82,  77,  65,  76,  59,  13, 
-     10,  32,  32,  32,  32, 117, 
-    105, 110, 116,  32, 107, 110, 
-    111,  99, 104, 101, 110,  32, 
-     58,  32,  75,  78,  79,  67, 
-     72,  69,  78,  95,  73,  68, 
-     59,  13,  10, 125,  59,  13, 
-     10,  13,  10, 115, 116, 114, 
-    117,  99, 116,  32,  80, 105, 
-    120, 101, 108,  73, 110, 112, 
-    117, 116,  84, 121, 112, 101, 
+     32, 100, 105, 102, 102, 117, 
+    115,  70,  97,  99, 116, 111, 
+    114,  59,  13,  10,  32,  32, 
+     32,  32, 102, 108, 111,  97, 
+    116,  32, 115, 112, 101,  99, 
+    117, 108,  97, 114,  70,  97, 
+     99, 116, 111, 114,  59,  13, 
+     10, 125,  59,  13,  10,  13, 
+     10, 115, 116, 114, 117,  99, 
+    116,  32,  76, 105, 103, 104, 
+    116,  67, 111, 117, 110, 116, 
      13,  10, 123,  13,  10,  32, 
-     32,  32,  32, 102, 108, 111, 
-     97, 116,  52,  32, 119, 111, 
-    114, 108, 100,  80, 111, 115, 
-     32,  58,  32,  80,  79,  83, 
-     73,  84,  73,  79,  78,  59, 
-     13,  10,  32,  32,  32,  32, 
-    102, 108, 111,  97, 116,  52, 
-     32, 112, 111, 115, 105, 116, 
-    105, 111, 110,  32,  58,  32, 
-     83,  86,  95,  80,  79,  83, 
+     32,  32,  32, 105, 110, 116, 
+     32, 100, 105, 102, 102, 117, 
+    115, 101,  76, 105, 103, 104, 
+    116,  67, 111, 117, 110, 116, 
+     59,  13,  10,  32,  32,  32, 
+     32, 105, 110, 116,  32, 112, 
+    111, 105, 110, 116,  76, 105, 
+    103, 104, 116,  67, 111, 117, 
+    110, 116,  59,  13,  10, 125, 
+     59,  13,  10,  13,  10,  67, 
+    111, 110, 115, 116,  97, 110, 
+    116,  66, 117, 102, 102, 101, 
+    114,  60,  75,  97, 109, 101, 
+    114,  97,  66, 117, 102, 102, 
+    101, 114,  62,  32,  75,  97, 
+    109, 101, 114,  97,  32,  58, 
+     32, 114, 101, 103, 105, 115, 
+    116, 101, 114,  40,  32,  98, 
+     48,  32,  41,  59,  13,  10, 
+     67, 111, 110, 115, 116,  97, 
+    110, 116,  66, 117, 102, 102, 
+    101, 114,  60,  77,  97, 116, 
+    114, 105, 120,  66, 117, 102, 
+    102, 101, 114,  62,  32,  83, 
+    107, 101, 108, 101, 116, 116, 
+     32,  58,  32, 114, 101, 103, 
+    105, 115, 116, 101, 114,  40, 
+     32,  98,  49,  32,  41,  59, 
+     13,  10,  67, 111, 110, 115, 
+    116,  97, 110, 116,  66, 117, 
+    102, 102, 101, 114,  60,  75, 
+     97, 109, 101, 114,  97,  66, 
+    117, 102, 102, 101, 114,  50, 
+     62,  32,  75,  97, 109, 101, 
+    114,  97,  50,  32,  58,  32, 
+    114, 101, 103, 105, 115, 116, 
+    101, 114,  40,  32,  98,  50, 
+     32,  41,  59,  13,  10,  67, 
+    111, 110, 115, 116,  97, 110, 
+    116,  66, 117, 102, 102, 101, 
+    114,  60,  77,  97, 116, 101, 
+    114, 105,  97, 108,  62,  32, 
+     79,  98, 106, 101,  99, 116, 
+     32,  58,  32, 114, 101, 103, 
+    105, 115, 116, 101, 114,  40, 
+     32,  98,  51,  32,  41,  59, 
+     13,  10,  67, 111, 110, 115, 
+    116,  97, 110, 116,  66, 117, 
+    102, 102, 101, 114,  60,  76, 
+    105, 103, 104, 116,  67, 111, 
+    117, 110, 116,  62,  32,  76, 
+    105, 103, 104, 116,  32,  58, 
+     32, 114, 101, 103, 105, 115, 
+    116, 101, 114,  40,  32,  98, 
+     52,  32,  41,  59,  13,  10, 
+     13,  10, 115, 116, 114, 117, 
+     99, 116,  32,  86, 101, 114, 
+    116, 101, 120,  73, 110, 112, 
+    117, 116,  84, 121, 112, 101, 
+     13,  10, 123,  13,  10,  32, 
+     32,  32,  32, 102, 108, 111, 
+     97, 116,  51,  32, 112, 111, 
+    115, 105, 116, 105, 111, 110, 
+     32,  58,  32,  80,  79,  83, 
      73,  84,  73,  79,  78,  59, 
      13,  10,  32,  32,  32,  32, 
     102, 108, 111,  97, 116,  50, 
      32, 116, 101, 120,  32,  58, 
      32,  84,  69,  88,  67,  79, 
-     79,  82,  68,  48,  59,  13, 
-     10,  32,  32,  32,  32, 102, 
-    108, 111,  97, 116,  51,  32, 
-    110, 111, 114, 109,  97, 108, 
-     32,  58,  32,  84,  69,  88, 
-     67,  79,  79,  82,  68,  49, 
+     79,  82,  68,  59,  13,  10, 
+     32,  32,  32,  32, 102, 108, 
+    111,  97, 116,  51,  32, 110, 
+    111, 114, 109,  97, 108,  32, 
+     58,  32,  78,  79,  82,  77, 
+     65,  76,  59,  13,  10,  32, 
+     32,  32,  32, 117, 105, 110, 
+    116,  32, 107, 110, 111,  99, 
+    104, 101, 110,  32,  58,  32, 
+     75,  78,  79,  67,  72,  69, 
+     78,  95,  73,  68,  59,  13, 
+     10, 125,  59,  13,  10,  13, 
+     10, 115, 116, 114, 117,  99, 
+    116,  32,  80, 105, 120, 101, 
+    108,  73, 110, 112, 117, 116, 
+     84, 121, 112, 101,  13,  10, 
+    123,  13,  10,  32,  32,  32, 
+     32, 102, 108, 111,  97, 116, 
+     52,  32, 119, 111, 114, 108, 
+    100,  80, 111, 115,  32,  58, 
+     32,  80,  79,  83,  73,  84, 
+     73,  79,  78,  59,  13,  10, 
+     32,  32,  32,  32, 102, 108, 
+    111,  97, 116,  52,  32, 112, 
+    111, 115, 105, 116, 105, 111, 
+    110,  32,  58,  32,  83,  86, 
+     95,  80,  79,  83,  73,  84, 
+     73,  79,  78,  59,  13,  10, 
+     32,  32,  32,  32, 102, 108, 
+    111,  97, 116,  50,  32, 116, 
+    101, 120,  32,  58,  32,  84, 
+     69,  88,  67,  79,  79,  82, 
+     68,  59,  13,  10,  32,  32, 
+     32,  32, 102, 108, 111,  97, 
+    116,  51,  32, 110, 111, 114, 
+    109,  97, 108,  32,  58,  32, 
+     78,  79,  82,  77,  65,  76, 
      59,  13,  10, 125,  59,  13, 
      10,  13,  10,  80, 105, 120, 
     101, 108,  73, 110, 112, 117, 
@@ -1340,11 +1320,21 @@ const BYTE DX12VertexShaderBytes[] =
     111, 110, 115,  46,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      32,  13,  10,  32,  32,  32, 
-     32, 105, 110, 112, 117, 116, 
-     46, 112, 111, 115, 105, 116, 
-    105, 111, 110,  46, 119,  32, 
-     61,  32,  49,  46,  48, 102, 
-     59,  13,  10,  13,  10,  32, 
+     32, 102, 108, 111,  97, 116, 
+     52,  32, 112, 111, 115, 105, 
+    116, 105, 111, 110,  32,  61, 
+     32, 102, 108, 111,  97, 116, 
+     52,  40,  32, 105, 110, 112, 
+    117, 116,  46, 112, 111, 115, 
+    105, 116, 105, 111, 110,  46, 
+    120,  44,  32, 105, 110, 112, 
+    117, 116,  46, 112, 111, 115, 
+    105, 116, 105, 111, 110,  46, 
+    121,  44,  32, 105, 110, 112, 
+    117, 116,  46, 112, 111, 115, 
+    105, 116, 105, 111, 110,  46, 
+    122,  44,  32,  49,  46, 102, 
+     32,  41,  59,  13,  10,  32, 
      32,  32,  32,  47,  47,  32, 
      83, 116, 111, 114, 101,  32, 
     116, 104, 101,  32, 116, 101, 
@@ -1385,8 +1375,7 @@ const BYTE DX12VertexShaderBytes[] =
     116, 112, 117, 116,  46, 119, 
     111, 114, 108, 100,  80, 111, 
     115,  32,  61,  32, 109, 117, 
-    108,  40,  32, 105, 110, 112, 
-    117, 116,  46, 112, 111, 115, 
+    108,  40,  32, 112, 111, 115, 
     105, 116, 105, 111, 110,  44, 
      32,  83, 107, 101, 108, 101, 
     116, 116,  46, 107, 110, 111, 
@@ -1416,688 +1405,40 @@ const BYTE DX12VertexShaderBytes[] =
     109, 101, 114,  97,  46, 112, 
     114, 111, 106, 101,  99, 116, 
     105, 111, 110,  32,  41,  59, 
-     13,  10,  13,  10,  32,  32, 
-     32,  32, 114, 101, 116, 117, 
-    114, 110,  32, 111, 117, 116, 
-    112, 117, 116,  59,  13,  10, 
-    125,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 254, 239, 
-    254, 239,   1,   0,   0,   0, 
-    155,   6,   0,   0,   0,  67, 
-     58,  92,  85, 115, 101, 114, 
-    115,  92, 107, 111, 108, 106, 
-     97,  92,  79, 110, 101,  68, 
-    114, 105, 118, 101,  92,  68, 
-    101, 115, 107, 116, 111, 112, 
-     92,  75, 111, 108, 106,  97, 
-     45,  83, 116, 114, 111, 104, 
-    109,  45,  71,  97, 109, 101, 
-    115,  92,  65, 108, 108, 103, 
-    101, 109, 101, 105, 110,  92, 
-     70, 114,  97, 109, 101, 119, 
-    111, 114, 107,  92,  68,  88, 
-     49,  50,  86, 101, 114, 116, 
-    101, 120,  83, 104,  97, 100, 
-    101, 114,  46, 104, 108, 115, 
-    108,   0,   0,  99,  58,  92, 
-    117, 115, 101, 114, 115,  92, 
-    107, 111, 108, 106,  97,  92, 
-    111, 110, 101, 100, 114, 105, 
-    118, 101,  92, 100, 101, 115, 
-    107, 116, 111, 112,  92, 107, 
-    111, 108, 106,  97,  45, 115, 
-    116, 114, 111, 104, 109,  45, 
-    103,  97, 109, 101, 115,  92, 
-     97, 108, 108, 103, 101, 109, 
-    101, 105, 110,  92, 102, 114, 
-     97, 109, 101, 119, 111, 114, 
-    107,  92, 100, 120,  49,  50, 
-    118, 101, 114, 116, 101, 120, 
-    115, 104,  97, 100, 101, 114, 
-     46, 104, 108, 115, 108,   0, 
-     47,  47,  32,  77,  97, 116, 
-    114, 105, 122, 101, 110,  32, 
-    102, 114,  32, 100, 105, 101, 
-     32, 101, 105, 110, 122, 101, 
-    108, 110, 101, 110,  32,  75, 
-    110, 111,  99, 104, 101, 110, 
-     32, 100, 101, 115,  32,  77, 
-    111, 100, 101, 108, 108, 115, 
-     13,  10, 115, 116, 114, 117, 
-     99, 116,  32,  77,  97, 116, 
-    114, 105, 120,  66, 117, 102, 
-    102, 101, 114,  13,  10, 123, 
      13,  10,  32,  32,  32,  32, 
-    109,  97, 116, 114, 105, 120, 
-     32, 107, 110, 111,  99, 104, 
-    101, 110,  77,  97, 116, 114, 
-    105, 120,  91,  32,  49,  50, 
-     56,  32,  93,  59,  13,  10, 
-    125,  59,  13,  10,  13,  10, 
-     47,  47,  32,  84, 104, 101, 
-     32, 112, 114, 111, 106, 101, 
-     99, 116, 105, 111, 110,  32, 
-     97, 110, 100,  32, 118, 105, 
-    101, 119,  32, 109,  97, 116, 
-    114, 105, 120,  13,  10, 115, 
-    116, 114, 117,  99, 116,  32, 
-     75,  97, 109, 101, 114,  97, 
-     66, 117, 102, 102, 101, 114, 
-     13,  10, 123,  13,  10,  32, 
-     32,  32,  32, 109,  97, 116, 
-    114, 105, 120,  32, 118, 105, 
-    101, 119,  59,  13,  10,  32, 
-     32,  32,  32, 109,  97, 116, 
-    114, 105, 120,  32, 112, 114, 
-    111, 106, 101,  99, 116, 105, 
-    111, 110,  59,  13,  10, 125, 
-     59,  13,  10,  13,  10,  67, 
-    111, 110, 115, 116,  97, 110, 
-    116,  66, 117, 102, 102, 101, 
-    114,  60,  75,  97, 109, 101, 
-    114,  97,  66, 117, 102, 102, 
-    101, 114,  62,  32,  75,  97, 
-    109, 101, 114,  97,  32,  58, 
-     32, 114, 101, 103, 105, 115, 
-    116, 101, 114,  40,  32,  98, 
-     48,  32,  41,  59,  13,  10, 
-     67, 111, 110, 115, 116,  97, 
-    110, 116,  66, 117, 102, 102, 
-    101, 114,  60,  77,  97, 116, 
-    114, 105, 120,  66, 117, 102, 
-    102, 101, 114,  62,  32,  83, 
-    107, 101, 108, 101, 116, 116, 
-     27, 226,  48,   1, 128,   0, 
-      0,   0,  54,  95,  43, 173, 
-    181, 187, 212,   1,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
-      0,   0,   2,   0,   0,   0, 
-      1,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-     95,   0,   0,   0,  40,   0, 
-      0,   0,  27, 226,  48,   1, 
-     12, 108, 182,  46, 223,   5, 
-      0,   0,   1,   0,   0,   0, 
-     94,   0,   0,   0,  95,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   4,   0,   0,   0, 
-     66,   0,  60,  17,  16,   1, 
-      0,   0,   0,   1,  10,   0, 
-      1,   0,  15,   0, 171,  63, 
-     10,   0,   1,   0,  15,   0, 
-    171,  63,  77, 105,  99, 114, 
-    111, 115, 111, 102, 116,  32, 
-     40,  82,  41,  32,  72,  76, 
-     83,  76,  32,  83, 104,  97, 
-    100, 101, 114,  32,  67, 111, 
-    109, 112, 105, 108, 101, 114, 
-     32,  49,  48,  46,  49,   0, 
-      0,   0,  54,   0,  61,  17, 
-      1, 104, 108, 115, 108,  70, 
-    108,  97, 103, 115,   0,  48, 
-    120,  53,   0, 104, 108, 115, 
-    108,  84,  97, 114, 103, 101, 
-    116,   0, 118, 115,  95,  53, 
-     95,  49,   0, 104, 108, 115, 
-    108,  69, 110, 116, 114, 121, 
-      0, 109,  97, 105, 110,   0, 
-      0,   0,   0,   0,  42,   0, 
-     16,  17,   0,   0,   0,   0, 
-     32,   5,   0,   0,   0,   0, 
-      0,   0, 104,   3,   0,   0, 
-      0,   0,   0,   0, 104,   3, 
-      0,   0,   9,  16,   0,   0, 
-    176,   0,   0,   0,   1,   0, 
-    160, 109,  97, 105, 110,   0, 
-     46,   0,  62,  17,   4,  16, 
-      0,   0,   9,   0, 105, 110, 
-    112, 117, 116,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,   0,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,   0,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,   4,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,   4,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,   8,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,   8,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  12,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  12,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  16,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  16,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  20,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  20,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  24,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  32,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  28,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  36,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  32,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  40,   0,   0,   0, 
-     22,   0,  80,  17,   1,   0, 
-      5,   0,  36,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  48,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  12,   0,   4,   0, 
-    176,   1,   0,   0,   1,   0, 
-    132,   1,  28,   0,   0,   0, 
-     58,   0,  62,  17,   8,  16, 
-      0,   0, 136,   0,  60, 109, 
-     97, 105, 110,  32, 114, 101, 
-    116, 117, 114, 110,  32, 118, 
-     97, 108, 117, 101,  62,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  40,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  48,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  44,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  52,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  48,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  56,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  32,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  32,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  36,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  36,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  16,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  16,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  20,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  20,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  24,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  24,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  28,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  28,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,   0,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,   0,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,   4,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,   4,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,   8,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,   8,   0,   0,   0, 
-     22,   0,  80,  17,   2,   0, 
-      5,   0,  12,   0,   4,   0, 
-    176,   0,   0,   0,   1,   0, 
-    104,   3,  12,   0,   0,   0, 
-     46,   0,  62,  17,   7,  16, 
-      0,   0,   8,   0, 111, 117, 
-    116, 112, 117, 116,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  40,   0,   4,   0, 
-    156,   1,   0,   0,   1,   0, 
-    124,   2,   0,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  44,   0,   4,   0, 
-    156,   1,   0,   0,   1,   0, 
-    124,   2,   4,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  48,   0,   4,   0, 
-    156,   1,   0,   0,   1,   0, 
-    124,   2,   8,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  32,   0,   4,   0, 
-    196,   1,   0,   0,   1,   0, 
-     84,   2,  32,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  36,   0,   4,   0, 
-    196,   1,   0,   0,   1,   0, 
-     84,   2,  36,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,   0,   0,   4,   0, 
-     32,   2,   0,   0,   1,   0, 
-    248,   1,  48,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,   4,   0,   4,   0, 
-     76,   2,   0,   0,   1,   0, 
-    204,   1,  52,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,   8,   0,   4,   0, 
-    120,   2,   0,   0,   1,   0, 
-    160,   1,  56,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  12,   0,   4,   0, 
-    164,   2,   0,   0,   1,   0, 
-    116,   1,  60,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  16,   0,   4,   0, 
-    200,   2,   0,   0,   1,   0, 
-    144,   0,  16,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  20,   0,   4,   0, 
-    236,   2,   0,   0,   1,   0, 
-    144,   0,  20,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  24,   0,   4,   0, 
-     16,   3,   0,   0,   1,   0, 
-    144,   0,  24,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  28,   0,   4,   0, 
-     52,   3,   0,   0,   1,   0, 
-    144,   0,  28,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  16,   0,   4,   0, 
-     88,   3,   0,   0,   1,   0, 
-    192,   0,  64,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  20,   0,   4,   0, 
-    124,   3,   0,   0,   1,   0, 
-    156,   0,  68,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  24,   0,   4,   0, 
-    160,   3,   0,   0,   1,   0, 
-    120,   0,  72,   0,   0,   0, 
-     22,   0,  80,  17,   0,   0, 
-      5,   0,  28,   0,   4,   0, 
-    196,   3,   0,   0,   1,   0, 
-     84,   0,  76,   0,   0,   0, 
-      2,   0,   6,   0, 244,   0, 
-      0,   0,  24,   0,   0,   0, 
-      1,   0,   0,   0,  16,   1, 
-    126,  37, 101,   4,  78, 246, 
-    180,  66, 137, 155, 214, 115, 
-    121, 220,  67,  56,   0,   0, 
-    242,   0,   0,   0, 184,   2, 
-      0,   0,   0,   0,   0,   0, 
-      1,   0,   1,   0,  24,   4, 
-      0,   0,   0,   0,   0,   0, 
-     56,   0,   0,   0, 172,   2, 
-      0,   0, 176,   0,   0,   0, 
-     37,   0,   0, 128, 176,   0, 
-      0,   0,  37,   0,   0,   0, 
-    208,   0,   0,   0,  37,   0, 
-      0, 128, 208,   0,   0,   0, 
-     37,   0,   0,   0, 248,   0, 
-      0,   0,  37,   0,   0, 128, 
-    248,   0,   0,   0,  37,   0, 
-      0,   0,  36,   1,   0,   0, 
-     37,   0,   0, 128,  36,   1, 
-      0,   0,  37,   0,   0,   0, 
-     80,   1,   0,   0,  37,   0, 
-      0, 128,  80,   1,   0,   0, 
-     37,   0,   0,   0, 108,   1, 
-      0,   0,  37,   0,   0, 128, 
-    108,   1,   0,   0,  37,   0, 
-      0,   0, 128,   1,   0,   0, 
-     37,   0,   0, 128, 128,   1, 
-      0,   0,  37,   0,   0,   0, 
-    156,   1,   0,   0,  40,   0, 
-      0, 128, 156,   1,   0,   0, 
-     40,   0,   0,   0, 176,   1, 
-      0,   0,  43,   0,   0, 128, 
-    176,   1,   0,   0,  43,   0, 
-      0,   0, 196,   1,   0,   0, 
-     46,   0,   0, 128, 196,   1, 
-      0,   0,  46,   0,   0,   0, 
-    228,   1,   0,   0,  46,   0, 
-      0, 128, 228,   1,   0,   0, 
-     46,   0,   0,   0, 248,   1, 
-      0,   0,  46,   0,   0, 128, 
-    248,   1,   0,   0,  46,   0, 
-      0,   0,  32,   2,   0,   0, 
-     46,   0,   0, 128,  32,   2, 
-      0,   0,  46,   0,   0,   0, 
-     76,   2,   0,   0,  46,   0, 
-      0, 128,  76,   2,   0,   0, 
-     46,   0,   0,   0, 120,   2, 
-      0,   0,  46,   0,   0, 128, 
-    120,   2,   0,   0,  46,   0, 
-      0,   0, 164,   2,   0,   0, 
-     47,   0,   0, 128, 164,   2, 
-      0,   0,  47,   0,   0,   0, 
-    200,   2,   0,   0,  47,   0, 
-      0, 128, 200,   2,   0,   0, 
-     47,   0,   0,   0, 236,   2, 
-      0,   0,  47,   0,   0, 128, 
-    236,   2,   0,   0,  47,   0, 
-      0,   0,  16,   3,   0,   0, 
-     47,   0,   0, 128,  16,   3, 
-      0,   0,  47,   0,   0,   0, 
-     52,   3,   0,   0,  48,   0, 
-      0, 128,  52,   3,   0,   0, 
-     48,   0,   0,   0,  88,   3, 
-      0,   0,  48,   0,   0, 128, 
-     88,   3,   0,   0,  48,   0, 
-      0,   0, 124,   3,   0,   0, 
-     48,   0,   0, 128, 124,   3, 
-      0,   0,  48,   0,   0,   0, 
-    160,   3,   0,   0,  48,   0, 
-      0, 128, 160,   3,   0,   0, 
-     48,   0,   0,   0, 196,   3, 
-      0,   0,  50,   0,   0, 128, 
-    196,   3,   0,   0,  50,   0, 
-      0,   0, 216,   3,   0,   0, 
-     50,   0,   0, 128, 216,   3, 
-      0,   0,  50,   0,   0,   0, 
-    236,   3,   0,   0,  50,   0, 
-      0, 128, 236,   3,   0,   0, 
-     50,   0,   0,   0,   0,   4, 
-      0,   0,  50,   0,   0, 128, 
-      0,   4,   0,   0,  50,   0, 
-      0,   0,  20,   4,   0,   0, 
-     50,   0,   0, 128,  20,   4, 
-      0,   0,  50,   0,   0,   0, 
-      5,   0, 105,   0,  63,   0, 
-    100,   0,   5,   0, 105,   0, 
-     32,   0, 102,   0,   5,   0, 
-    105,   0,  32,   0, 102,   0, 
-      5,   0, 105,   0,  32,   0, 
-    102,   0,   5,   0, 105,   0, 
-     21,   0, 104,   0,   5,   0, 
-    105,   0,  21,   0, 104,   0, 
-      5,   0, 105,   0,  21,   0, 
-    104,   0,   5,   0,  28,   0, 
-      5,   0,  27,   0,   5,   0, 
-     27,   0,   5,   0,  26,   0, 
-      5,   0,  84,   0,  44,   0, 
-     81,   0,   5,   0,  84,   0, 
-     23,   0,  83,   0,   5,   0, 
-     84,   0,  23,   0,  83,   0, 
-      5,   0,  84,   0,  23,   0, 
-     83,   0,   5,   0,  84,   0, 
-     23,   0,  83,   0,   5,   0, 
-     84,   0,  23,   0,  83,   0, 
-      5,   0,  58,   0,  23,   0, 
-     57,   0,   5,   0,  58,   0, 
-     23,   0,  57,   0,   5,   0, 
-     58,   0,  23,   0,  57,   0, 
-      5,   0,  58,   0,  23,   0, 
-     57,   0,   5,   0,  64,   0, 
-     23,   0,  63,   0,   5,   0, 
-     64,   0,  23,   0,  63,   0, 
-      5,   0,  64,   0,  23,   0, 
-     63,   0,   5,   0,  64,   0, 
-     23,   0,  63,   0,   5,   0, 
-     18,   0,   5,   0,  18,   0, 
-      5,   0,  18,   0,   5,   0, 
-     18,   0,   5,   0,  18,   0, 
-      5,   0,  18,   0,   5,   0, 
-     18,   0,   5,   0,  18,   0, 
-      5,   0,  18,   0,   5,   0, 
-     18,   0, 246,   0,   0,   0, 
-      4,   0,   0,   0,   0,   0, 
-      0,   0,  12,   0,   0,   0, 
-      0,   0,   0,   0,  20,   0, 
-      0,   0,  56,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     66, 117, 102, 102, 101, 114, 
-      0, 241,  10,   0,  24,  21, 
-     12,  16,   0,   0,   1,   0, 
-      1,   0,  14,   0,  23,  21, 
-     13,  16,   0,   0,  36,   2, 
-     16,  92,   0,   0, 242, 241, 
-     10,   0,  24,  21,  14,  16, 
-      0,   0,   1,   0,   0,   2, 
-     18,   0,  22,  21,  10,  16, 
-      0,   0,  34,   0,   0,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0, 241,  26,   0,   3,  18, 
-     13,  21,   3,   0,  16,  16, 
-      0,   0,   0,   0, 107, 110, 
+    111, 117, 116, 112, 117, 116, 
+     46, 112, 111, 115, 105, 116, 
+    105, 111, 110,  32,  61,  32, 
+    112, 111, 115, 105, 116, 105, 
+    111, 110,  59,  13,  10,  32, 
+     32,  32,  47,  47,  32, 111, 
+    117, 116, 112, 117, 116,  46, 
+    116, 101, 120,  46, 120,  32, 
+     61,  32,  83, 107, 101, 108, 
+    101, 116, 116,  46, 107, 110, 
     111,  99, 104, 101, 110,  77, 
-     97, 116, 114, 105, 120,   0, 
-     34,   0,   5,  21,   1,   0, 
-      0,   0,  17,  16,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  32,  77,  97, 
-    116, 114, 105, 120,  66, 117, 
-    102, 102, 101, 114,   0, 241, 
-     10,   0,  24,  21,  18,  16, 
-      0,   0,   1,   0,   1,   0, 
-     14,   0,  23,  21,  19,  16, 
-      0,   0,  36,   2,   0,   0, 
-      0,   0, 242, 241,  10,   0, 
-     24,  21,  20,  16,   0,   0, 
-      1,   0,   0,   2,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+     97, 116, 114, 105, 120,  91, 
+     32, 105, 110, 112, 117, 116, 
+     46, 107, 110, 111,  99, 104, 
+    101, 110,  32,  93,  91,  32, 
+     48,  32,  93,  91,  32,  50, 
+     32,  93,  59,  13,  10,  32, 
+     32,  32,  47,  47,  32, 111, 
+    117, 116, 112, 117, 116,  46, 
+    116, 101, 120,  46, 121,  32, 
+     61,  32,  83, 107, 101, 108, 
+    101, 116, 116,  46, 107, 110, 
+    111,  99, 104, 101, 110,  77, 
+     97, 116, 114, 105, 120,  91, 
+     32, 105, 110, 112, 117, 116, 
+     46, 107, 110, 111,  99, 104, 
+    101, 110,  32,  93,  91,  32, 
+     48,  32,  93,  91,  32,  51, 
+     32,  93,  59,  13,  10,  32, 
+     32,  32,  32, 114, 101, 116, 
+    117, 114, 110,  32, 111, 117, 
+    116, 112, 117, 116,  59,  13, 
+     10, 125,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2108,97 +1449,9 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,  11, 202,  49,   1, 
-     56,   0,   0,   0,   0,  16, 
-      0,   0,  22,  16,   0,   0, 
-    116,   2,   0,   0,  10,   0, 
-    255, 255,   4,   0,   0,   0, 
-    255, 255,   3,   0,   0,   0, 
-      0,   0,  88,   0,   0,   0, 
-     88,   0,   0,   0,   8,   0, 
-      0,   0,  96,   0,   0,   0, 
-      0,   0,   0,   0,  22,   0, 
-     27,  21,  64,   0,   0,   0, 
-      4,   0,   0,   0,  16,   0, 
-    102, 108, 111,  97, 116,  52, 
-      0, 243, 242, 241,  22,   0, 
-     27,  21,  64,   0,   0,   0, 
-      2,   0,   0,   0,   8,   0, 
-    102, 108, 111,  97, 116,  50, 
-      0, 243, 242, 241,  22,   0, 
-     27,  21,  64,   0,   0,   0, 
-      3,   0,   0,   0,  12,   0, 
-    102, 108, 111,  97, 116,  51, 
-      0, 243, 242, 241,  78,   0, 
-      3,  18,  13,  21,   3,   0, 
-      0,  16,   0,   0,   0,   0, 
-    112, 111, 115, 105, 116, 105, 
-    111, 110,   0, 241,  13,  21, 
-      3,   0,   1,  16,   0,   0, 
-     16,   0, 116, 101, 120,   0, 
-    242, 241,  13,  21,   3,   0, 
-      2,  16,   0,   0,  24,   0, 
-    110, 111, 114, 109,  97, 108, 
-      0, 243, 242, 241,  13,  21, 
-      3,   0, 117,   0,   0,   0, 
-     36,   0, 107, 110, 111,  99, 
-    104, 101, 110,   0, 242, 241, 
-     38,   0,   5,  21,   4,   0, 
-      0,   0,   3,  16,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,  40,   0,  86, 101, 
-    114, 116, 101, 120,  73, 110, 
-    112, 117, 116,  84, 121, 112, 
-    101,   0, 242, 241,  10,   0, 
-      1,  18,   1,   0,   0,   0, 
-      4,  16,   0,   0,  78,   0, 
-      3,  18,  13,  21,   3,   0, 
-      0,  16,   0,   0,   0,   0, 
-    119, 111, 114, 108, 100,  80, 
-    111, 115,   0, 241,  13,  21, 
-      3,   0,   0,  16,   0,   0, 
-     16,   0, 112, 111, 115, 105, 
-    116, 105, 111, 110,   0, 241, 
-     13,  21,   3,   0,   1,  16, 
-      0,   0,  32,   0, 116, 101, 
-    120,   0, 242, 241,  13,  21, 
-      3,   0,   2,  16,   0,   0, 
-     40,   0, 110, 111, 114, 109, 
-     97, 108,   0, 243, 242, 241, 
-     38,   0,   5,  21,   4,   0, 
-      0,   0,   6,  16,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,  52,   0,  80, 105, 
-    120, 101, 108,  73, 110, 112, 
-    117, 116,  84, 121, 112, 101, 
-      0, 243, 242, 241,  10,   0, 
-     24,  21,   7,  16,   0,   0, 
-      1,   0,   1,   0,  14,   0, 
-      8,  16,   8,  16,   0,   0, 
-     23,   0,   1,   0,   5,  16, 
-      0,   0,  30,   0,  28,  21, 
-     64,   0,   0,   0,   4,   0, 
-      0,   0,   4,   0,   0,   0, 
-     16,   0,   0,   0,   0,  64, 
-      0, 102, 108, 111,  97, 116, 
-     52, 120,  52,   0,  42,   0, 
-      3,  18,  13,  21,   3,   0, 
-     10,  16,   0,   0,   0,   0, 
-    118, 105, 101, 119,   0, 241, 
-     13,  21,   3,   0,  10,  16, 
-      0,   0,  64,   0, 112, 114, 
-    111, 106, 101,  99, 116, 105, 
-    111, 110,   0, 243, 242, 241, 
-     34,   0,   5,  21,   2,   0, 
-      0,   0,  11,  16,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0, 128,   0,  75,  97, 
-    109, 101, 114,  97,  11, 202, 
-     49,   1,  56,   0,   0,   0, 
-      0,  16,   0,   0,   0,  16, 
       0,   0,   0,   0,   0,   0, 
-     11,   0, 255, 255,   4,   0, 
-      0,   0, 255, 255,   3,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2231,6 +1484,95 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0, 254, 239, 254, 239, 
+      1,   0,   0,   0, 168,   9, 
+      0,   0,   0,  67,  58,  92, 
+     85, 115, 101, 114, 115,  92, 
+    107, 111, 108, 106,  97,  92, 
+     79, 110, 101,  68, 114, 105, 
+    118, 101,  92,  68, 101, 115, 
+    107, 116, 111, 112,  92,  75, 
+    111, 108, 106,  97,  45,  83, 
+    116, 114, 111, 104, 109,  45, 
+     71,  97, 109, 101, 115,  92, 
+     65, 108, 108, 103, 101, 109, 
+    101, 105, 110,  92,  70, 114, 
+     97, 109, 101, 119, 111, 114, 
+    107,  92,  68,  88,  49,  50, 
+     86, 101, 114, 116, 101, 120, 
+     83, 104,  97, 100, 101, 114, 
+     46, 104, 108, 115, 108,   0, 
+      0,  99,  58,  92, 117, 115, 
+    101, 114, 115,  92, 107, 111, 
+    108, 106,  97,  92, 111, 110, 
+    101, 100, 114, 105, 118, 101, 
+     92, 100, 101, 115, 107, 116, 
+    111, 112,  92, 107, 111, 108, 
+    106,  97,  45, 115, 116, 114, 
+    111, 104, 109,  45, 103,  97, 
+    109, 101, 115,  92,  97, 108, 
+    108, 103, 101, 109, 101, 105, 
+    110,  92, 102, 114,  97, 109, 
+    101, 119, 111, 114, 107,  92, 
+    100, 120,  49,  50, 118, 101, 
+    114, 116, 101, 120, 115, 104, 
+     97, 100, 101, 114,  46, 104, 
+    108, 115, 108,   0,  13,  10, 
+     84, 101, 120, 116, 117, 114, 
+    101,  50,  68,  32, 115, 104, 
+     97, 100, 101, 114,  84, 101, 
+    120, 116, 117, 114, 101,  32, 
+     58,  32, 114, 101, 103, 105, 
+    115, 116, 101, 114,  40,  32, 
+    116,  48,  32,  41,  59,  13, 
+     10,  83,  97, 109, 112, 108, 
+    101, 114,  83, 116,  97, 116, 
+    101,  32,  83,  97, 109, 112, 
+    108, 101,  84, 121, 112, 101, 
+     32,  58,  32, 114, 101, 103, 
+    105, 115, 116, 101, 114,  40, 
+     32, 115,  48,  32,  41,  59, 
+     13,  10,  13,  10,  47,  47, 
+     32,  77,  97, 116, 114, 105, 
+    122, 101, 110,  32, 102, 114, 
+     32, 100, 105, 101,  32, 101, 
+    105, 110, 122, 101, 108, 110, 
+    101, 110,  32,  75, 110, 111, 
+     99, 104, 101, 110,  32, 100, 
+    101, 115,  32,  77, 111, 100, 
+    101, 108, 108, 115,  13,  10, 
+    115, 116, 114, 117,  99, 116, 
+     32,  77,  97, 116, 114, 105, 
+    120,  66, 117, 102, 102, 101, 
+    114,  13,  10, 123,  13,  10, 
+     32,  32,  32,  32, 109,  97, 
+    116, 114, 105, 120,  32, 107, 
+    110, 111,  99, 104, 101, 110, 
+     77,  97, 116, 114, 105, 120, 
+     91,  32,  49,  50,  56,  32, 
+     93,  59,  13,  10, 125,  59, 
+     13,  10,  13,  10,  47,  47, 
+     32,  84, 104, 101,  32, 112, 
+    114, 111, 106, 101,  99, 116, 
+    105, 111, 110,  32,  97, 110, 
+    100,  32, 118, 105, 101, 119, 
+     32, 109,  97, 116, 114, 105, 
+    120,  13,  10, 115, 116, 114, 
+    117,  99, 116,  32,  75,  97, 
+    109, 101, 114,  97,  66, 117, 
+    102, 102, 101, 114,  13,  10, 
+    123,  13,  10,  32,  32,  32, 
+     32, 109,  97, 116, 114, 105, 
+    120,  32, 118, 105, 101, 119, 
+     59,  13,  10,  32,  32,  32, 
+     32, 109,  97, 116, 114, 105, 
+    120,  32, 112, 114, 111, 106, 
+    101,  99, 116, 105, 111, 110, 
+     59,  13,  10, 125,  59,  13, 
+     10,  13,  10,  47,  27, 226, 
+     48,   1, 128,   0,   0,   0, 
+    181, 224,  25, 197, 243, 190, 
+    212,   1,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2238,6 +1580,15 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      2,   0,   0,   0,   1,   0, 
+      0,   0,   2,   0,   0,   0, 
+      0,   0,   0,   0,  95,   0, 
+      0,   0,  40,   0,   0,   0, 
+     27, 226,  48,   1,  52,  89, 
+     71, 101, 236,   8,   0,   0, 
+      1,   0,   0,   0,  94,   0, 
+      0,   0,  95,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2279,125 +1630,7 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    117, 116, 112, 117, 116,  46, 
-    110, 111, 114, 109,  97, 108, 
-     32,  61,  32, 110, 111, 114, 
-    109,  97, 108, 105, 122, 101, 
-     40,  32, 109, 117, 108,  40, 
-     32, 105, 110, 112, 117, 116, 
-     46, 110, 111, 114, 109,  97, 
-    108,  44,  32,  40,  32, 102, 
-    108, 111,  97, 116,  51, 120, 
-     51,  32,  41,  83, 107, 101, 
-    108, 101, 116, 116,  46, 107, 
-    110, 111,  99, 104, 101, 110, 
-     77,  97, 116, 114, 105, 120, 
-     91,  32, 105, 110, 112, 117, 
-    116,  46, 107, 110, 111,  99, 
-    104, 101, 110,  32,  93,  32, 
-     41,  32,  41,  59,  13,  10, 
-     13,  10,  32,  32,  32,  32, 
-     47,  47,  32,  67, 104,  97, 
-    110, 103, 101,  32, 116, 104, 
-    101,  32, 112, 111, 115, 105, 
-    116, 105, 111, 110,  32, 118, 
-    101,  99, 116, 111, 114,  32, 
-    116, 111,  32,  98, 101,  32, 
-     52,  32, 117, 110, 105, 116, 
-    115,  32, 102, 111, 114,  32, 
-    112, 114, 111, 112, 101, 114, 
-     32, 109,  97, 116, 114, 105, 
-    120,  32,  99,  97, 108,  99, 
-    117, 108,  97, 116, 105, 111, 
-    110, 115,  46,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     13,  10,  32,  32,  32,  32, 
-    105, 110, 112, 117, 116,  46, 
-    112, 111, 115, 105, 116, 105, 
-    111, 110,  46, 119,  32,  61, 
-     32,  49,  46,  48, 102,  59, 
-     13,  10,  13,  10,  32,  32, 
-     32,  32,  47,  47,  32,  83, 
-    116, 111, 114, 101,  32, 116, 
-    104, 101,  32, 116, 101, 120, 
-    116, 117, 114, 101,  32,  99, 
-    111, 111, 114, 100, 105, 110, 
-     97, 116, 101, 115,  32, 102, 
-    111, 114,  32, 116, 104, 101, 
-     32, 112, 105, 120, 101, 108, 
-     32, 115, 104,  97, 100, 101, 
-    114,  46,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  32,  32,  32,  32, 
-     32,  32,  13,  10,  32,  32, 
-     32,  32, 111, 117, 116, 112, 
-    117, 116,  46, 116, 101, 120, 
-     32,  61,  32, 105, 110, 112, 
-    117, 116,  46, 116, 101, 120, 
-     59,  13,  10,  13,  10,  32, 
-     32,  32,  32,  47,  47,  32, 
-     67,  97, 108,  99, 117, 108, 
-     97, 116, 101,  32, 116, 104, 
-    101,  32, 112, 111, 115, 105, 
-    116, 105, 111, 110,  32, 111, 
-    102,  32, 116, 104, 101,  32, 
-    118, 101, 114, 116, 101, 120, 
-     32,  97, 103,  97, 105, 110, 
-    115, 116,  32, 116, 104, 101, 
-     32, 119, 111, 114, 108, 100, 
-     44,  32, 118, 105, 101, 119, 
-     44,  32,  97, 110, 100,  32, 
-    112, 114, 111, 106, 101,  99, 
-    116, 105, 111, 110,  32, 109, 
-     97, 116, 114, 105,  99, 101, 
-    115,  46,  32,  13,  10,  32, 
-     32,  32,  32, 111, 117, 116, 
-    112, 117, 116,  46, 119, 111, 
-    114, 108, 100,  80, 111, 115, 
-     32,  61,  32, 109, 117, 108, 
-     40,  32, 105, 110, 112, 117, 
-    116,  46, 112, 111, 115, 105, 
-    116, 105, 111, 110,  44,  32, 
-     83, 107, 101, 108, 101, 116, 
-    116,  46, 107, 110, 111,  99, 
-    104, 101, 110,  77,  97, 116, 
-    114, 105, 120,  91,  32, 105, 
-    110, 112, 117, 116,  46, 107, 
-    110, 111,  99, 104, 101, 110, 
-     32,  93,  32,  41,  59,  13, 
-     10,  32,  32,  32,  32, 111, 
-    117, 116, 112, 117, 116,  46, 
-    112, 111, 115, 105, 116, 105, 
-    111, 110,  32,  61,  32, 109, 
-    117, 108,  40,  32, 111, 117, 
-    116, 112, 117, 116,  46, 119, 
-    111, 114, 108, 100,  80, 111, 
-    115,  44,  32,  75,  97, 109, 
-    101, 114,  97,  46, 118, 105, 
-    101, 119,  32,  41,  59,  13, 
-     10,  32,  32,  32,  32, 111, 
-    117, 116, 112, 117, 116,  46, 
-    112, 111, 115, 105, 116, 105, 
-    111, 110,  32,  61,  32, 109, 
-    117, 108,  40,  32, 111, 117, 
-    116, 112, 117, 116,  46, 112, 
-    111, 115, 105, 116, 105, 111, 
-    110,  44,  32,  75,  97, 109, 
-    101, 114,  97,  46, 112, 114, 
-    111, 106, 101,  99, 116, 105, 
-    111, 110,  32,  41,  59,  13, 
-     10,  13,  10,  32,  32,  32, 
-     32, 114, 101, 116, 117, 114, 
-    110,  32, 111, 117, 116, 112, 
-    117, 116,  59,  13,  10, 125, 
-      0,   7,   0,   0,   0,   0, 
-      0,   0,   0,  94,   0,   0, 
-      0,   1,   0,   0,   0,  95, 
-      0,   0,   0, 188,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   4,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2420,15 +1653,326 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      4,   0,   0,   0,  66,   0, 
+     60,  17,  16,   1,   0,   0, 
+      0,   1,  10,   0,   1,   0, 
+     15,   0, 171,  63,  10,   0, 
+      1,   0,  15,   0, 171,  63, 
+     77, 105,  99, 114, 111, 115, 
+    111, 102, 116,  32,  40,  82, 
+     41,  32,  72,  76,  83,  76, 
+     32,  83, 104,  97, 100, 101, 
+    114,  32,  67, 111, 109, 112, 
+    105, 108, 101, 114,  32,  49, 
+     48,  46,  49,   0,   0,   0, 
+     54,   0,  61,  17,   1, 104, 
+    108, 115, 108,  70, 108,  97, 
+    103, 115,   0,  48, 120,  53, 
+      0, 104, 108, 115, 108,  84, 
+     97, 114, 103, 101, 116,   0, 
+    118, 115,  95,  53,  95,  49, 
+      0, 104, 108, 115, 108,  69, 
+    110, 116, 114, 121,   0, 109, 
+     97, 105, 110,   0,   0,   0, 
+      0,   0,  42,   0,  16,  17, 
+      0,   0,   0,   0,  32,   5, 
+      0,   0,   0,   0,   0,   0, 
+     92,   2,   0,   0,   0,   0, 
+      0,   0,  92,   2,   0,   0, 
+      9,  16,   0,   0, 148,   0, 
+      0,   0,   1,   0, 160, 109, 
+     97, 105, 110,   0,  46,   0, 
+     62,  17,   3,  16,   0,   0, 
+      9,   0, 105, 110, 112, 117, 
+    116,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  22,   0, 
+     80,  17,   1,   0,   5,   0, 
+      0,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+      0,   0,   0,   0,  22,   0, 
+     80,  17,   1,   0,   5,   0, 
+      4,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+      4,   0,   0,   0,  22,   0, 
+     80,  17,   1,   0,   5,   0, 
+      8,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+      8,   0,   0,   0,  22,   0, 
+     80,  17,   1,   0,   5,   0, 
+     12,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     16,   0,   0,   0,  22,   0, 
+     80,  17,   1,   0,   5,   0, 
+     16,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     20,   0,   0,   0,  22,   0, 
+     80,  17,   1,   0,   5,   0, 
+     20,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     32,   0,   0,   0,  22,   0, 
+     80,  17,   1,   0,   5,   0, 
+     24,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     36,   0,   0,   0,  22,   0, 
+     80,  17,   1,   0,   5,   0, 
+     28,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     40,   0,   0,   0,  22,   0, 
+     80,  17,   1,   0,   5,   0, 
+     32,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     48,   0,   0,   0,  58,   0, 
+     62,  17,   8,  16,   0,   0, 
+    136,   0,  60, 109,  97, 105, 
+    110,  32, 114, 101, 116, 117, 
+    114, 110,  32, 118,  97, 108, 
+    117, 101,  62,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     40,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     48,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     44,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     52,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     48,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     56,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     32,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     32,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     36,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     36,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     16,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     16,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     20,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     20,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     24,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     24,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     28,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     28,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+      0,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+      0,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+      4,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+      4,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+      8,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+      8,   0,   0,   0,  22,   0, 
+     80,  17,   2,   0,   5,   0, 
+     12,   0,   4,   0, 148,   0, 
+      0,   0,   1,   0,  92,   2, 
+     12,   0,   0,   0,  46,   0, 
+     62,  17,   7,  16,   0,   0, 
+      8,   0, 111, 117, 116, 112, 
+    117, 116,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     40,   0,   4,   0, 128,   1, 
+      0,   0,   1,   0, 112,   1, 
+      0,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     44,   0,   4,   0, 128,   1, 
+      0,   0,   1,   0, 112,   1, 
+      4,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     48,   0,   4,   0, 128,   1, 
+      0,   0,   1,   0, 112,   1, 
+      8,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     32,   0,   4,   0, 188,   1, 
+      0,   0,   1,   0,  52,   1, 
+     32,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     36,   0,   4,   0, 188,   1, 
+      0,   0,   1,   0,  52,   1, 
+     36,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+      0,   0,   4,   0,   4,   2, 
+      0,   0,   1,   0, 236,   0, 
+     48,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+      4,   0,   4,   0,  48,   2, 
+      0,   0,   1,   0, 192,   0, 
+     52,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+      8,   0,   4,   0,  92,   2, 
+      0,   0,   1,   0, 148,   0, 
+     56,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     12,   0,   4,   0, 136,   2, 
+      0,   0,   1,   0, 104,   0, 
+     60,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     16,   0,   4,   0, 156,   2, 
+      0,   0,   1,   0,  84,   0, 
+     16,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     20,   0,   4,   0, 156,   2, 
+      0,   0,   1,   0,  84,   0, 
+     20,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     24,   0,   4,   0, 156,   2, 
+      0,   0,   1,   0,  84,   0, 
+     24,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     28,   0,   4,   0, 156,   2, 
+      0,   0,   1,   0,  84,   0, 
+     28,   0,   0,   0,  46,   0, 
+     62,  17,   5,  16,   0,   0, 
+      8,   0, 112, 111, 115, 105, 
+    116, 105, 111, 110,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+      0,   0,   4,   0, 148,   1, 
+      0,   0,   1,   0,  92,   1, 
+     16,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+      4,   0,   4,   0, 148,   1, 
+      0,   0,   1,   0,  92,   1, 
+     20,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+      8,   0,   4,   0, 148,   1, 
+      0,   0,   1,   0,  92,   1, 
+     24,   0,   0,   0,  22,   0, 
+     80,  17,   0,   0,   5,   0, 
+     12,   0,   4,   0, 168,   1, 
+      0,   0,   1,   0,  72,   1, 
+     28,   0,   0,   0,   2,   0, 
+      6,   0, 244,   0,   0,   0, 
+     24,   0,   0,   0,   1,   0, 
+      0,   0,  16,   1, 230, 185, 
+    145,  92, 255, 224,  73, 107, 
+    176,  26,   8, 179, 165,  17, 
+    249,  18,   0,   0, 242,   0, 
+      0,   0,  16,   2,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      1,   0, 240,   2,   0,   0, 
+      0,   0,   0,   0,  42,   0, 
+      0,   0,   4,   2,   0,   0, 
+    148,   0,   0,   0,  64,   0, 
+      0, 128, 148,   0,   0,   0, 
+     64,   0,   0,   0, 180,   0, 
+      0,   0,  64,   0,   0, 128, 
+    180,   0,   0,   0,  64,   0, 
+      0,   0, 220,   0,   0,   0, 
+     64,   0,   0, 128, 220,   0, 
+      0,   0,  64,   0,   0,   0, 
+      8,   1,   0,   0,  64,   0, 
+      0, 128,   8,   1,   0,   0, 
+     64,   0,   0,   0,  52,   1, 
+      0,   0,  64,   0,   0, 128, 
+     52,   1,   0,   0,  64,   0, 
+      0,   0,  80,   1,   0,   0, 
+     64,   0,   0, 128,  80,   1, 
+      0,   0,  64,   0,   0,   0, 
+    100,   1,   0,   0,  64,   0, 
+      0, 128, 100,   1,   0,   0, 
+     64,   0,   0,   0, 128,   1, 
+      0,   0,  67,   0,   0, 128, 
+    128,   1,   0,   0,  67,   0, 
+      0,   0, 148,   1,   0,   0, 
+     67,   0,   0, 128, 148,   1, 
+      0,   0,  67,   0,   0,   0, 
+    168,   1,   0,   0,  69,   0, 
+      0, 128, 168,   1,   0,   0, 
+     69,   0,   0,   0, 188,   1, 
+      0,   0,  72,   0,   0, 128, 
+    188,   1,   0,   0,  72,   0, 
+      0,   0, 220,   1,   0,   0, 
+     72,   0,   0, 128, 220,   1, 
+      0,   0,  72,   0,   0,   0, 
+      4,   2,   0,   0,  72,   0, 
+      0, 128,   4,   2,   0,   0, 
+     72,   0,   0,   0,  48,   2, 
+      0,   0,  72,   0,   0, 128, 
+     48,   2,   0,   0,  72,   0, 
+      0,   0,  92,   2,   0,   0, 
+     72,   0,   0, 128,  92,   2, 
+      0,   0,  72,   0,   0,   0, 
+    136,   2,   0,   0,  75,   0, 
+      0, 128, 136,   2,   0,   0, 
+     75,   0,   0,   0, 156,   2, 
+      0,   0,  78,   0,   0, 128, 
+    156,   2,   0,   0,  78,   0, 
+      0,   0, 176,   2,   0,   0, 
+     78,   0,   0, 128, 176,   2, 
+      0,   0,  78,   0,   0,   0, 
+    196,   2,   0,   0,  78,   0, 
+      0, 128, 196,   2,   0,   0, 
+     78,   0,   0,   0, 216,   2, 
+      0,   0,  78,   0,   0, 128, 
+    216,   2,   0,   0,  78,   0, 
+      0,   0, 236,   2,   0,   0, 
+     78,   0,   0, 128, 236,   2, 
+      0,   0,  78,   0,   0,   0, 
+      5,   0, 105,   0,  63,   0, 
+    100,   0,   5,   0, 105,   0, 
+     32,   0, 102,   0,   5,   0, 
+    105,   0,  32,   0, 102,   0, 
+      5,   0, 105,   0,  32,   0, 
+    102,   0,   5,   0, 105,   0, 
+     21,   0, 104,   0,   5,   0, 
+    105,   0,  21,   0, 104,   0, 
+      5,   0, 105,   0,  21,   0, 
+    104,   0,   5,   0,  90,   0, 
+     12,   0,  89,   0,   5,   0, 
+     90,   0,  12,   0,  89,   0, 
+      5,   0,  27,   0,   5,   0, 
+     26,   0,   5,   0,  78,   0, 
+     38,   0,  75,   0,   5,   0, 
+     78,   0,  23,   0,  77,   0, 
+      5,   0,  78,   0,  23,   0, 
+     77,   0,   5,   0,  78,   0, 
+     23,   0,  77,   0,   5,   0, 
+     78,   0,  23,   0,  77,   0, 
+      5,   0,  31,   0,   5,   0, 
+     30,   0,   5,   0,  18,   0, 
+      5,   0,  18,   0,   5,   0, 
+     18,   0,   5,   0,  18,   0, 
+      5,   0,  18,   0,   5,   0, 
+     18,   0,   5,   0,  18,   0, 
+      5,   0,  18,   0,   5,   0, 
+     18,   0,   5,   0,  18,   0, 
+    246,   0,   0,   0,   4,   0, 
       0,   0,   0,   0,   0,   0, 
+      8,   0,   0,   0,   0,   0, 
+      0,   0,  20,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2449,14 +1993,18 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  68,  51, 
-     68,  83,  72,  68,  82,   0, 
-     24,   4,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  32,   0, 
-      0,  96,   0,   0,   0,   0, 
+      0,   0, 116, 114, 105, 120, 
+     66, 117, 102, 102, 101, 114, 
+      0, 241,  10,   0,  24,  21, 
+     13,  16,   0,   0,   1,   0, 
+      1,   0,  14,   0,  23,  21, 
+     14,  16,   0,   0,  36,   2, 
+     96,  15,   0,   0, 242, 241, 
+     10,   0,  24,  21,  15,  16, 
+      0,   0,   1,   0,   0,   2, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2533,15 +2081,103 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  11, 202, 
+     49,   1,  56,   0,   0,   0, 
+      0,  16,   0,   0,  17,  16, 
+      0,   0, 252,   1,   0,   0, 
+     10,   0, 255, 255,   4,   0, 
+      0,   0, 255, 255,   3,   0, 
+      0,   0,   0,   0,  68,   0, 
+      0,   0,  68,   0,   0,   0, 
+      8,   0,   0,   0,  76,   0, 
       0,   0,   0,   0,   0,   0, 
+     22,   0,  27,  21,  64,   0, 
+      0,   0,   3,   0,   0,   0, 
+     12,   0, 102, 108, 111,  97, 
+    116,  51,   0, 243, 242, 241, 
+     22,   0,  27,  21,  64,   0, 
+      0,   0,   2,   0,   0,   0, 
+      8,   0, 102, 108, 111,  97, 
+    116,  50,   0, 243, 242, 241, 
+     78,   0,   3,  18,  13,  21, 
+      3,   0,   0,  16,   0,   0, 
+      0,   0, 112, 111, 115, 105, 
+    116, 105, 111, 110,   0, 241, 
+     13,  21,   3,   0,   1,  16, 
+      0,   0,  12,   0, 116, 101, 
+    120,   0, 242, 241,  13,  21, 
+      3,   0,   0,  16,   0,   0, 
+     20,   0, 110, 111, 114, 109, 
+     97, 108,   0, 243, 242, 241, 
+     13,  21,   3,   0, 117,   0, 
+      0,   0,  32,   0, 107, 110, 
+    111,  99, 104, 101, 110,   0, 
+    242, 241,  38,   0,   5,  21, 
+      4,   0,   0,   0,   2,  16, 
       0,   0,   0,   0,   0,   0, 
-    255, 255, 255, 255,  26,   9, 
-     47, 241,  24,   0,   0,   0, 
-     16,   2,   0,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-     21,   0,   0,   0,   1,   0, 
-      0,   0,  57,   0,   0,   0, 
+      0,   0,   0,   0,  36,   0, 
+     86, 101, 114, 116, 101, 120, 
+     73, 110, 112, 117, 116,  84, 
+    121, 112, 101,   0, 242, 241, 
+     10,   0,   1,  18,   1,   0, 
+      0,   0,   3,  16,   0,   0, 
+     22,   0,  27,  21,  64,   0, 
+      0,   0,   4,   0,   0,   0, 
+     16,   0, 102, 108, 111,  97, 
+    116,  52,   0, 243, 242, 241, 
+     78,   0,   3,  18,  13,  21, 
+      3,   0,   5,  16,   0,   0, 
+      0,   0, 119, 111, 114, 108, 
+    100,  80, 111, 115,   0, 241, 
+     13,  21,   3,   0,   5,  16, 
+      0,   0,  16,   0, 112, 111, 
+    115, 105, 116, 105, 111, 110, 
+      0, 241,  13,  21,   3,   0, 
+      1,  16,   0,   0,  32,   0, 
+    116, 101, 120,   0, 242, 241, 
+     13,  21,   3,   0,   0,  16, 
+      0,   0,  40,   0, 110, 111, 
+    114, 109,  97, 108,   0, 243, 
+    242, 241,  38,   0,   5,  21, 
+      4,   0,   0,   0,   6,  16, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  52,   0, 
+     80, 105, 120, 101, 108,  73, 
+    110, 112, 117, 116,  84, 121, 
+    112, 101,   0, 243, 242, 241, 
+     10,   0,  24,  21,   7,  16, 
+      0,   0,   1,   0,   1,   0, 
+     14,   0,   8,  16,   8,  16, 
+      0,   0,  23,   0,   1,   0, 
+      4,  16,   0,   0,  30,   0, 
+     28,  21,  64,   0,   0,   0, 
+      4,   0,   0,   0,   4,   0, 
+      0,   0,  16,   0,   0,   0, 
+      0,  64,   0, 102, 108, 111, 
+     97, 116,  52, 120,  52,   0, 
+     18,   0,  22,  21,  10,  16, 
+      0,   0,  34,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
+      0, 241,  26,   0,   3,  18, 
+     13,  21,   3,   0,  11,  16, 
+      0,   0,   0,   0, 107, 110, 
+    111,  99, 104, 101, 110,  77, 
+     97, 116, 114, 105, 120,   0, 
+     34,   0,   5,  21,   1,   0, 
+      0,   0,  12,  16,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,  32,  77,  97, 
+     11, 202,  49,   1,  56,   0, 
+      0,   0,   0,  16,   0,   0, 
+      0,  16,   0,   0,   0,   0, 
+      0,   0,  11,   0, 255, 255, 
+      4,   0,   0,   0, 255, 255, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2553,7 +2189,6 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-     32,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2589,7 +2224,6 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  16,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2618,18 +2252,269 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0, 115, 116, 101, 114, 
+     40,  32,  98,  51,  32,  41, 
+     59,  13,  10,  67, 111, 110, 
+    115, 116,  97, 110, 116,  66, 
+    117, 102, 102, 101, 114,  60, 
+     76, 105, 103, 104, 116,  67, 
+    111, 117, 110, 116,  62,  32, 
+     76, 105, 103, 104, 116,  32, 
+     58,  32, 114, 101, 103, 105, 
+    115, 116, 101, 114,  40,  32, 
+     98,  52,  32,  41,  59,  13, 
+     10,  13,  10, 115, 116, 114, 
+    117,  99, 116,  32,  86, 101, 
+    114, 116, 101, 120,  73, 110, 
+    112, 117, 116,  84, 121, 112, 
+    101,  13,  10, 123,  13,  10, 
+     32,  32,  32,  32, 102, 108, 
+    111,  97, 116,  51,  32, 112, 
+    111, 115, 105, 116, 105, 111, 
+    110,  32,  58,  32,  80,  79, 
+     83,  73,  84,  73,  79,  78, 
+     59,  13,  10,  32,  32,  32, 
+     32, 102, 108, 111,  97, 116, 
+     50,  32, 116, 101, 120,  32, 
+     58,  32,  84,  69,  88,  67, 
+     79,  79,  82,  68,  59,  13, 
+     10,  32,  32,  32,  32, 102, 
+    108, 111,  97, 116,  51,  32, 
+    110, 111, 114, 109,  97, 108, 
+     32,  58,  32,  78,  79,  82, 
+     77,  65,  76,  59,  13,  10, 
+     32,  32,  32,  32, 117, 105, 
+    110, 116,  32, 107, 110, 111, 
+     99, 104, 101, 110,  32,  58, 
+     32,  75,  78,  79,  67,  72, 
+     69,  78,  95,  73,  68,  59, 
+     13,  10, 125,  59,  13,  10, 
+     13,  10, 115, 116, 114, 117, 
+     99, 116,  32,  80, 105, 120, 
+    101, 108,  73, 110, 112, 117, 
+    116,  84, 121, 112, 101,  13, 
+     10, 123,  13,  10,  32,  32, 
+     32,  32, 102, 108, 111,  97, 
+    116,  52,  32, 119, 111, 114, 
+    108, 100,  80, 111, 115,  32, 
+     58,  32,  80,  79,  83,  73, 
+     84,  73,  79,  78,  59,  13, 
+     10,  32,  32,  32,  32, 102, 
+    108, 111,  97, 116,  52,  32, 
+    112, 111, 115, 105, 116, 105, 
+    111, 110,  32,  58,  32,  83, 
+     86,  95,  80,  79,  83,  73, 
+     84,  73,  79,  78,  59,  13, 
+     10,  32,  32,  32,  32, 102, 
+    108, 111,  97, 116,  50,  32, 
+    116, 101, 120,  32,  58,  32, 
+     84,  69,  88,  67,  79,  79, 
+     82,  68,  59,  13,  10,  32, 
+     32,  32,  32, 102, 108, 111, 
+     97, 116,  51,  32, 110, 111, 
+    114, 109,  97, 108,  32,  58, 
+     32,  78,  79,  82,  77,  65, 
+     76,  59,  13,  10, 125,  59, 
+     13,  10,  13,  10,  80, 105, 
+    120, 101, 108,  73, 110, 112, 
+    117, 116,  84, 121, 112, 101, 
+     32, 109,  97, 105, 110,  40, 
+     32,  86, 101, 114, 116, 101, 
+    120,  73, 110, 112, 117, 116, 
+     84, 121, 112, 101,  32, 105, 
+    110, 112, 117, 116,  32,  41, 
+     13,  10, 123,  13,  10,  32, 
+     32,  32,  32,  47,  47, 114, 
+    101, 116, 117, 114, 110,  32, 
+    105, 110, 112, 117, 116,  59, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  13,  10,  32, 
+     32,  32,  32,  80, 105, 120, 
+    101, 108,  73, 110, 112, 117, 
+    116,  84, 121, 112, 101,  32, 
+    111, 117, 116, 112, 117, 116, 
+     59,  13,  10,  32,  32,  32, 
+     32, 111, 117, 116, 112, 117, 
+    116,  46, 110, 111, 114, 109, 
+     97, 108,  32,  61,  32, 110, 
+    111, 114, 109,  97, 108, 105, 
+    122, 101,  40,  32, 109, 117, 
+    108,  40,  32, 105, 110, 112, 
+    117, 116,  46, 110, 111, 114, 
+    109,  97, 108,  44,  32,  40, 
+     32, 102, 108, 111,  97, 116, 
+     51, 120,  51,  32,  41,  83, 
+    107, 101, 108, 101, 116, 116, 
+     46, 107, 110, 111,  99, 104, 
+    101, 110,  77,  97, 116, 114, 
+    105, 120,  91,  32, 105, 110, 
+    112, 117, 116,  46, 107, 110, 
+    111,  99, 104, 101, 110,  32, 
+     93,  32,  41,  32,  41,  59, 
+     13,  10,  13,  10,  32,  32, 
+     32,  32,  47,  47,  32,  67, 
+    104,  97, 110, 103, 101,  32, 
+    116, 104, 101,  32, 112, 111, 
+    115, 105, 116, 105, 111, 110, 
+     32, 118, 101,  99, 116, 111, 
+    114,  32, 116, 111,  32,  98, 
+    101,  32,  52,  32, 117, 110, 
+    105, 116, 115,  32, 102, 111, 
+    114,  32, 112, 114, 111, 112, 
+    101, 114,  32, 109,  97, 116, 
+    114, 105, 120,  32,  99,  97, 
+    108,  99, 117, 108,  97, 116, 
+    105, 111, 110, 115,  46,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  13,  10,  32,  32, 
+     32,  32, 102, 108, 111,  97, 
+    116,  52,  32, 112, 111, 115, 
+    105, 116, 105, 111, 110,  32, 
+     61,  32, 102, 108, 111,  97, 
+    116,  52,  40,  32, 105, 110, 
+    112, 117, 116,  46, 112, 111, 
+    115, 105, 116, 105, 111, 110, 
+     46, 120,  44,  32, 105, 110, 
+    112, 117, 116,  46, 112, 111, 
+    115, 105, 116, 105, 111, 110, 
+     46, 121,  44,  32, 105, 110, 
+    112, 117, 116,  46, 112, 111, 
+    115, 105, 116, 105, 111, 110, 
+     46, 122,  44,  32,  49,  46, 
+    102,  32,  41,  59,  13,  10, 
+     32,  32,  32,  32,  47,  47, 
+     32,  83, 116, 111, 114, 101, 
+     32, 116, 104, 101,  32, 116, 
+    101, 120, 116, 117, 114, 101, 
+     32,  99, 111, 111, 114, 100, 
+    105, 110,  97, 116, 101, 115, 
+     32, 102, 111, 114,  32, 116, 
+    104, 101,  32, 112, 105, 120, 
+    101, 108,  32, 115, 104,  97, 
+    100, 101, 114,  46,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  32,  32, 
+     32,  32,  32,  32,  13,  10, 
+     32,  32,  32,  32, 111, 117, 
+    116, 112, 117, 116,  46, 116, 
+    101, 120,  32,  61,  32, 105, 
+    110, 112, 117, 116,  46, 116, 
+    101, 120,  59,  13,  10,  13, 
+     10,  32,  32,  32,  32,  47, 
+     47,  32,  67,  97, 108,  99, 
+    117, 108,  97, 116, 101,  32, 
+    116, 104, 101,  32, 112, 111, 
+    115, 105, 116, 105, 111, 110, 
+     32, 111, 102,  32, 116, 104, 
+    101,  32, 118, 101, 114, 116, 
+    101, 120,  32,  97, 103,  97, 
+    105, 110, 115, 116,  32, 116, 
+    104, 101,  32, 119, 111, 114, 
+    108, 100,  44,  32, 118, 105, 
+    101, 119,  44,  32,  97, 110, 
+    100,  32, 112, 114, 111, 106, 
+    101,  99, 116, 105, 111, 110, 
+     32, 109,  97, 116, 114, 105, 
+     99, 101, 115,  46,  32,  13, 
+     10,  32,  32,  32,  32, 111, 
+    117, 116, 112, 117, 116,  46, 
+    119, 111, 114, 108, 100,  80, 
+    111, 115,  32,  61,  32, 109, 
+    117, 108,  40,  32, 112, 111, 
+    115, 105, 116, 105, 111, 110, 
+     44,  32,  83, 107, 101, 108, 
+    101, 116, 116,  46, 107, 110, 
+    111,  99, 104, 101, 110,  77, 
+     97, 116, 114, 105, 120,  91, 
+     32, 105, 110, 112, 117, 116, 
+     46, 107, 110, 111,  99, 104, 
+    101, 110,  32,  93,  32,  41, 
+     59,  13,  10,  32,  32,  32, 
+     32, 111, 117, 116, 112, 117, 
+    116,  46, 112, 111, 115, 105, 
+    116, 105, 111, 110,  32,  61, 
+     32, 109, 117, 108,  40,  32, 
+    111, 117, 116, 112, 117, 116, 
+     46, 119, 111, 114, 108, 100, 
+     80, 111, 115,  44,  32,  75, 
+     97, 109, 101, 114,  97,  46, 
+    118, 105, 101, 119,  32,  41, 
+     59,  13,  10,  32,  32,  32, 
+     32, 111, 117, 116, 112, 117, 
+    116,  46, 112, 111, 115, 105, 
+    116, 105, 111, 110,  32,  61, 
+     32, 109, 117, 108,  40,  32, 
+    111, 117, 116, 112, 117, 116, 
+     46, 112, 111, 115, 105, 116, 
+    105, 111, 110,  44,  32,  75, 
+     97, 109, 101, 114,  97,  46, 
+    112, 114, 111, 106, 101,  99, 
+    116, 105, 111, 110,  32,  41, 
+     59,  13,  10,  32,  32,  32, 
+     32, 111, 117, 116, 112, 117, 
+    116,  46, 112, 111, 115, 105, 
+    116, 105, 111, 110,  32,  61, 
+     32, 112, 111, 115, 105, 116, 
+    105, 111, 110,  59,  13,  10, 
+     32,  32,  32,  47,  47,  32, 
+    111, 117, 116, 112, 117, 116, 
+     46, 116, 101, 120,  46, 120, 
+     32,  61,  32,  83, 107, 101, 
+    108, 101, 116, 116,  46, 107, 
+    110, 111,  99, 104, 101, 110, 
+     77,  97, 116, 114, 105, 120, 
+     91,  32, 105, 110, 112, 117, 
+    116,  46, 107, 110, 111,  99, 
+    104, 101, 110,  32,  93,  91, 
+     32,  48,  32,  93,  91,  32, 
+     50,  32,  93,  59,  13,  10, 
+     32,  32,  32,  47,  47,  32, 
+    111, 117, 116, 112, 117, 116, 
+     46, 116, 101, 120,  46, 121, 
+     32,  61,  32,  83, 107, 101, 
+    108, 101, 116, 116,  46, 107, 
+    110, 111,  99, 104, 101, 110, 
+     77,  97, 116, 114, 105, 120, 
+     91,  32, 105, 110, 112, 117, 
+    116,  46, 107, 110, 111,  99, 
+    104, 101, 110,  32,  93,  91, 
+     32,  48,  32,  93,  91,  32, 
+     51,  32,  93,  59,  13,  10, 
+     32,  32,  32,  32, 114, 101, 
+    116, 117, 114, 110,  32, 111, 
+    117, 116, 112, 117, 116,  59, 
+     13,  10, 125,   0,   7,   0, 
+      0,   0,   0,   0,   0,   0, 
+     94,   0,   0,   0,   1,   0, 
+      0,   0,  95,   0,   0,   0, 
+      0,   0,   0,   0, 188,   0, 
+      0,   0,   0,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,  68,  51,  68,  83, 
+     72,  68,  82,   0, 240,   2, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,  32,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,  12,   0,   0,   0, 
-     24,   0,   0,   0,   0,   0, 
+      0,   0,  32,   0,   0,  96, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2705,22 +2590,15 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  18,   0, 
-     37,  17,   0,   0,   0,   0, 
-    128,   0,   0,   0,   1,   0, 
-    109,  97, 105, 110,   0,   0, 
-     34,   0, 100,  17,  15,  16, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      8,   0,  75,  97, 109, 101, 
-    114,  97,   0,   0,   0,   0, 
-     34,   0, 100,  17,  21,  16, 
+      0,   0,   0,   0, 255, 255, 
+    255, 255,  26,   9,  47, 241, 
+     16,   0,   0,   0,  12,   2, 
       0,   0,   1,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  21,   0, 
       0,   0,   1,   0,   0,   0, 
-      8,   0,  83, 107, 101, 108, 
-    101, 116, 116,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2732,6 +2610,7 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,  32,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2791,12 +2670,9 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-     16,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,  26,   9,  47, 241, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2806,8 +2682,10 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,  32,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  12,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2876,73 +2754,26 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-    119,   9,  49,   1,   1,   0, 
-      0,   0,  13,   0,  10, 140, 
-     14,   0, 180, 156,  15,   0, 
-     11,   0,  76,   0,   0,   0, 
-     32,   0,   0,   0,  44,   0, 
-      0,   0, 108,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,  22,   0,   0,   0, 
-     25,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   1,   0, 
       0,   0,   0,   0,   0,   0, 
-     24,   4,   0,   0,  32,   0, 
-      0,  96,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   2,   0,   9,   0, 
-     36,   5,   0,   0,   0,   0, 
-      0,   0, 236,   2,   0,   0, 
-      1,   0,   0,   0,  88, 121, 
-     47,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0, 109,  97, 
-    105, 110,   0, 110, 111, 110, 
-    101,   0,   0,   0,  45, 186, 
-     46, 241,   1,   0,   0,   0, 
-      0,   0,   0,   0,  24,   4, 
-      0,   0,  32,   0,   0,  96, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      2,   0,   2,   0,   7,   0, 
-      0,   0,   0,   0,   1,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0,  24,   4,   0,   0, 
-      8,   2,   0,   0,   0,   0, 
-      0,   0, 255, 255, 255, 255, 
-      0,   0,   0,   0, 255, 255, 
-    255, 255,   1,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-      0,   0,  67,  58,  92,  85, 
-    115, 101, 114, 115,  92, 107, 
-    111, 108, 106,  97,  92,  79, 
-    110, 101,  68, 114, 105, 118, 
-    101,  92,  68, 101, 115, 107, 
-    116, 111, 112,  92,  75, 111, 
-    108, 106,  97,  45,  83, 116, 
-    114, 111, 104, 109,  45,  71, 
-     97, 109, 101, 115,  92,  65, 
-    108, 108, 103, 101, 109, 101, 
-    105, 110,  92,  70, 114,  97, 
-    109, 101, 119, 111, 114, 107, 
-     92,  68,  88,  49,  50,  86, 
-    101, 114, 116, 101, 120,  83, 
-    104,  97, 100, 101, 114,  46, 
-    104, 108, 115, 108,   0,   0, 
-      0,   0, 254, 239, 254, 239, 
-      1,   0,   0,   0,   1,   0, 
-      0,   0,   0,   1,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0, 255, 255, 255, 
-    255, 255, 255, 255, 255, 255, 
-    255,  12,   0, 255, 255, 255, 
-    255, 255, 255, 255, 255, 255, 
-    255,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,  18,   0,  37,  17, 
+      0,   0,   0,   0, 128,   0, 
+      0,   0,   1,   0, 109,  97, 
+    105, 110,   0,   0,  34,   0, 
+    100,  17,  16,  16,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+     83, 107, 101, 108, 101, 116, 
+    116,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -2961,45 +2792,6 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0, 148,  46, 
-     49,   1, 222, 211,  86,  92, 
-      1,   0,   0,   0,  98, 149, 
-    195, 136, 142, 181, 237,  73, 
-    156, 159, 184, 121,  34,   7, 
-     43, 177, 138,   0,   0,   0, 
-     47,  76, 105, 110, 107,  73, 
-    110, 102, 111,   0,  47, 110, 
-     97, 109, 101, 115,   0,  47, 
-    115, 114,  99,  47, 104, 101, 
-     97, 100, 101, 114,  98, 108, 
-    111,  99, 107,   0,  47, 115, 
-    114,  99,  47, 102, 105, 108, 
-    101, 115,  47,  99,  58,  92, 
-    117, 115, 101, 114, 115,  92, 
-    107, 111, 108, 106,  97,  92, 
-    111, 110, 101, 100, 114, 105, 
-    118, 101,  92, 100, 101, 115, 
-    107, 116, 111, 112,  92, 107, 
-    111, 108, 106,  97,  45, 115, 
-    116, 114, 111, 104, 109,  45, 
-    103,  97, 109, 101, 115,  92, 
-     97, 108, 108, 103, 101, 109, 
-    101, 105, 110,  92, 102, 114, 
-     97, 109, 101, 119, 111, 114, 
-    107,  92, 100, 120,  49,  50, 
-    118, 101, 114, 116, 101, 120, 
-    115, 104,  97, 100, 101, 114, 
-     46, 104, 108, 115, 108,   0, 
-      4,   0,   0,   0,   6,   0, 
-      0,   0,   1,   0,   0,   0, 
-     58,   0,   0,   0,   0,   0, 
-      0,   0,  17,   0,   0,   0, 
-      7,   0,   0,   0,  10,   0, 
-      0,   0,   6,   0,   0,   0, 
-      0,   0,   0,   0,   5,   0, 
-      0,   0,  34,   0,   0,   0, 
-      8,   0,   0,   0,   0,   0, 
-      0,   0, 220,  81,  51,   1, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3047,34 +2839,6 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-     16,   0,   0,   0,  32,   0, 
-      0,   0, 230,   0,   0,   0, 
-    172,   2,   0,   0, 115,   1, 
-      0,   0,  56,   0,   0,   0, 
-      0,   0,   0,   0, 203,   6, 
-      0,   0, 128,   0,   0,   0, 
-    223,   5,   0,   0,  32,   8, 
-      0,   0,  96,   0,   0,   0, 
-      0,   0,   0,   0,  40,   0, 
-      0,   0,  56,   2,   0,   0, 
-     44,   0,   0,   0,  92,   0, 
-      0,   0,   3,   0,   0,   0, 
-     29,   0,   0,   0,  19,   0, 
-      0,   0,  18,   0,   0,   0, 
-     28,   0,   0,   0,  20,   0, 
-      0,   0,  11,   0,   0,   0, 
-      6,   0,   0,   0,  21,   0, 
-      0,   0,  22,   0,   0,   0, 
-     12,   0,   0,   0,   8,   0, 
-      0,   0,   9,   0,   0,   0, 
-     10,   0,   0,   0,  13,   0, 
-      0,   0,  14,   0,   0,   0, 
-     15,   0,   0,   0,  16,   0, 
-      0,   0,  17,   0,   0,   0, 
-      7,   0,   0,   0,  23,   0, 
-      0,   0,  24,   0,   0,   0, 
-     25,   0,   0,   0,  27,   0, 
-      0,   0,  26,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3085,8 +2849,13 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 255, 255, 255, 255, 
+     26,   9,  47, 241,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3132,7 +2901,6 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,  30,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3167,16 +2935,68 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+    255, 255, 255, 255, 119,   9, 
+     49,   1,   1,   0,   0,   0, 
+     13,   0,  10, 140,  14,   0, 
+    180, 156,  15,   0,  11,   0, 
+     76,   0,   0,   0,  32,   0, 
+      0,   0,  44,   0,   0,   0, 
+    108,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+     22,   0,   0,   0,  25,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0, 240,   2, 
+      0,   0,  32,   0,   0,  96, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      2,   0,   9,   0,  36,   5, 
       0,   0,   0,   0,   0,   0, 
+     68,   2,   0,   0,   1,   0, 
+      0,   0,  56, 122,   2,   3, 
       0,   0,   0,   0,   0,   0, 
+      0,   0, 109,  97, 105, 110, 
+      0, 110, 111, 110, 101,   0, 
+      0,   0,  45, 186,  46, 241, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0, 240,   2,   0,   0, 
+     32,   0,   0,  96,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   2,   0, 
+      2,   0,   7,   0,   0,   0, 
+      0,   0,   1,   0, 255, 255, 
+    255, 255,   0,   0,   0,   0, 
+    240,   2,   0,   0,   8,   2, 
       0,   0,   0,   0,   0,   0, 
+    255, 255, 255, 255,   0,   0, 
+      0,   0, 255, 255, 255, 255, 
+      1,   0,   1,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+     67,  58,  92,  85, 115, 101, 
+    114, 115,  92, 107, 111, 108, 
+    106,  97,  92,  79, 110, 101, 
+     68, 114, 105, 118, 101,  92, 
+     68, 101, 115, 107, 116, 111, 
+    112,  92,  75, 111, 108, 106, 
+     97,  45,  83, 116, 114, 111, 
+    104, 109,  45,  71,  97, 109, 
+    101, 115,  92,  65, 108, 108, 
+    103, 101, 109, 101, 105, 110, 
+     92,  70, 114,  97, 109, 101, 
+    119, 111, 114, 107,  92,  68, 
+     88,  49,  50,  86, 101, 114, 
+    116, 101, 120,  83, 104,  97, 
+    100, 101, 114,  46, 104, 108, 
+    115, 108,   0,   0,   0,   0, 
+    254, 239, 254, 239,   1,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   1,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0, 255, 255, 255, 255, 255, 
+    255, 255, 255, 255, 255,  12, 
+      0, 255, 255, 255, 255, 255, 
+    255, 255, 255, 255, 255,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3200,8 +3020,45 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0, 148,  46,  49,   1, 
+    137,  68,  92,  92,   1,   0, 
+      0,   0, 248, 217, 147, 230, 
+    253,  12,  60,  66, 137, 115, 
+    217, 221, 222, 101, 140, 223, 
+    138,   0,   0,   0,  47,  76, 
+    105, 110, 107,  73, 110, 102, 
+    111,   0,  47, 110,  97, 109, 
+    101, 115,   0,  47, 115, 114, 
+     99,  47, 104, 101,  97, 100, 
+    101, 114,  98, 108, 111,  99, 
+    107,   0,  47, 115, 114,  99, 
+     47, 102, 105, 108, 101, 115, 
+     47,  99,  58,  92, 117, 115, 
+    101, 114, 115,  92, 107, 111, 
+    108, 106,  97,  92, 111, 110, 
+    101, 100, 114, 105, 118, 101, 
+     92, 100, 101, 115, 107, 116, 
+    111, 112,  92, 107, 111, 108, 
+    106,  97,  45, 115, 116, 114, 
+    111, 104, 109,  45, 103,  97, 
+    109, 101, 115,  92,  97, 108, 
+    108, 103, 101, 109, 101, 105, 
+    110,  92, 102, 114,  97, 109, 
+    101, 119, 111, 114, 107,  92, 
+    100, 120,  49,  50, 118, 101, 
+    114, 116, 101, 120, 115, 104, 
+     97, 100, 101, 114,  46, 104, 
+    108, 115, 108,   0,   4,   0, 
+      0,   0,   6,   0,   0,   0, 
+      1,   0,   0,   0,  58,   0, 
       0,   0,   0,   0,   0,   0, 
+     17,   0,   0,   0,   7,   0, 
+      0,   0,  10,   0,   0,   0, 
+      6,   0,   0,   0,   0,   0, 
+      0,   0,   5,   0,   0,   0, 
+     34,   0,   0,   0,   8,   0, 
       0,   0,   0,   0,   0,   0, 
+    220,  81,  51,   1,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3248,6 +3105,36 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,  32,   0,   0,   0, 
+    230,   0,   0,   0,  52,   2, 
+      0,   0, 115,   1,   0,   0, 
+     56,   0,   0,   0,   0,   0, 
+      0,   0, 216,   9,   0,   0, 
+    128,   0,   0,   0, 236,   8, 
+      0,   0, 116,   7,   0,   0, 
+     76,   0,   0,   0,   0,   0, 
+      0,   0,  40,   0,   0,   0, 
+     44,   2,   0,   0,  44,   0, 
+      0,   0,  56,   0,   0,   0, 
+      3,   0,   0,   0,  31,   0, 
+      0,   0,  20,   0,   0,   0, 
+     19,   0,   0,   0,  30,   0, 
+      0,   0,  21,   0,   0,   0, 
+     13,   0,   0,   0,   6,   0, 
+      0,   0,  22,   0,   0,   0, 
+     23,   0,   0,   0,  24,   0, 
+      0,   0,  14,   0,   0,   0, 
+      8,   0,   0,   0,   9,   0, 
+      0,   0,  10,   0,   0,   0, 
+     11,   0,   0,   0,  12,   0, 
+      0,   0,  15,   0,   0,   0, 
+     16,   0,   0,   0,  17,   0, 
+      0,   0,  18,   0,   0,   0, 
+      7,   0,   0,   0,  25,   0, 
+      0,   0,  26,   0,   0,   0, 
+     27,   0,   0,   0,  29,   0, 
+      0,   0,  28,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3304,6 +3191,7 @@ const BYTE DX12VertexShaderBytes[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
+     32,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 

+ 36 - 8
DX12VertexShader.hlsl

@@ -1,3 +1,7 @@
+
+Texture2D shaderTexture : register( t0 );
+SamplerState SampleType : register( s0 );
+
 // Matrizen für die einzelnen Knochen des Modells
 struct MatrixBuffer
 {
@@ -11,13 +15,36 @@ struct KameraBuffer
     matrix projection;
 };
 
+// The position of the kamera
+struct KameraBuffer2
+{
+    float4 kPosition;
+};
+
+// these values should sum up to 1
+struct Material
+{
+    float ambientFactor;
+    float diffusFactor;
+    float specularFactor;
+};
+
+struct LightCount
+{
+    int diffuseLightCount;
+    int pointLightCount;
+};
+
 ConstantBuffer<KameraBuffer> Kamera : register( b0 );
 ConstantBuffer<MatrixBuffer> Skelett : register( b1 );
+ConstantBuffer<KameraBuffer2> Kamera2 : register( b2 );
+ConstantBuffer<Material> Object : register( b3 );
+ConstantBuffer<LightCount> Light : register( b4 );
 
 struct VertexInputType
 {
-    float4 position : POSITION;
-    float2 tex : TEXCOORD0;
+    float3 position : POSITION;
+    float2 tex : TEXCOORD;
     float3 normal : NORMAL;
     uint knochen : KNOCHEN_ID;
 };
@@ -26,8 +53,8 @@ struct PixelInputType
 {
     float4 worldPos : POSITION;
     float4 position : SV_POSITION;
-    float2 tex : TEXCOORD0;
-    float3 normal : TEXCOORD1;
+    float2 tex : TEXCOORD;
+    float3 normal : NORMAL;
 };
 
 PixelInputType main( VertexInputType input )
@@ -37,15 +64,16 @@ PixelInputType main( VertexInputType input )
     output.normal = normalize( mul( input.normal, ( float3x3 )Skelett.knochenMatrix[ input.knochen ] ) );
 
     // Change the position vector to be 4 units for proper matrix calculations.         
-    input.position.w = 1.0f;
-
+    float4 position = float4( input.position.x, input.position.y, input.position.z, 1.f );
     // Store the texture coordinates for the pixel shader.                              
     output.tex = input.tex;
 
     // Calculate the position of the vertex against the world, view, and projection matrices. 
-    output.worldPos = mul( input.position, Skelett.knochenMatrix[ input.knochen ] );
+    output.worldPos = mul( position, Skelett.knochenMatrix[ input.knochen ] );
     output.position = mul( output.worldPos, Kamera.view );
     output.position = mul( output.position, Kamera.projection );
-
+    output.position = position;
+   // output.tex.x = Skelett.knochenMatrix[ input.knochen ][ 0 ][ 2 ];
+   // output.tex.y = Skelett.knochenMatrix[ input.knochen ][ 0 ][ 3 ];
     return output;
 }

+ 94 - 5
DXBuffer.cpp

@@ -1,4 +1,5 @@
 #include "DXBuffer.h"
+#include "DXCommandQueue.h"
 #include <iostream>
 #ifdef WIN32
 #include <d3d11.h>
@@ -242,12 +243,12 @@ void DX12Buffer::copieren( int byteCount )
     if( !buffer )
     {
         D3D12_HEAP_PROPERTIES hprop;
-        hprop.Type = D3D12_HEAP_TYPE_DEFAULT;
+        hprop.Type = D3D12_HEAP_TYPE_UPLOAD;
         hprop.CPUPageProperty = D3D12_CPU_PAGE_PROPERTY_UNKNOWN;
         hprop.MemoryPoolPreference = D3D12_MEMORY_POOL_UNKNOWN;
         hprop.CreationNodeMask = 1;
         hprop.VisibleNodeMask = 1;
-        device->CreateCommittedResource( &hprop, D3D12_HEAP_FLAG_NONE, description, D3D12_RESOURCE_STATE_COPY_DEST, 0, __uuidof( ID3D12Resource ), (void **)& buffer );
+        device->CreateCommittedResource( &hprop, D3D12_HEAP_FLAG_NONE, description, D3D12_RESOURCE_STATE_GENERIC_READ, 0, __uuidof( ID3D12Resource ), (void **)& buffer );
         hprop.Type = D3D12_HEAP_TYPE_UPLOAD;
         device->CreateCommittedResource( &hprop, D3D12_HEAP_FLAG_NONE, description, D3D12_RESOURCE_STATE_GENERIC_READ, 0, __uuidof( ID3D12Resource ), (void **)& intermediate );
         if( data )
@@ -256,10 +257,14 @@ void DX12Buffer::copieren( int byteCount )
     if( changed && data )
     {
         BYTE *pData;
-        intermediate->Map( 0, nullptr, reinterpret_cast<void **>( &pData ) );
+        D3D12_RANGE r;
+        r.Begin = 0;
+        r.End = 0;
+        buffer->Map( 0, &r, (void **)&pData );
         memcpy( pData, data, byteCount );
-        intermediate->Unmap( 0, nullptr );
-        list->CopyBufferRegion( buffer, 0, intermediate, 0, byteCount );
+        r.End = byteCount;
+        buffer->Unmap( 0, &r );
+        //list->CopyBufferRegion( buffer, 0, intermediate, 0, len );
         changed = 0;
     }
 }
@@ -270,4 +275,88 @@ ID3D12Resource *DX12Buffer::zBuffer() const
     return buffer;
 }
 
+
+DX12IndexBuffer::DX12IndexBuffer( int eSize, ID3D12Device2 *device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct )
+    : DX12Buffer( eSize, device, copy->getCommandList(), D3D12_RESOURCE_FLAG_NONE ),
+    copy( copy ),
+    direct( direct )
+{
+    ibs = 0;
+}
+
+DX12IndexBuffer::~DX12IndexBuffer()
+{}
+
+// Kopiert die Daten in den Buffer, fals sie sich verändert haben
+void DX12IndexBuffer::copieren( int byteCount )
+{
+    /*if( ibs )
+    {
+        D3D12_RESOURCE_BARRIER barrier;
+        barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
+        barrier.Transition.pResource = buffer;
+        barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_INDEX_BUFFER;
+        barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST;
+        barrier.Transition.Subresource = 0;
+        barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
+        direct->getCommandList()->ResourceBarrier( 1, &barrier );
+        direct->execute();
+        ibs = 0;
+    }*/
+    DX12Buffer::copieren( byteCount );
+    //copy->execute();
+    /*D3D12_RESOURCE_BARRIER barrier;
+    barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
+    barrier.Transition.pResource = buffer;
+    barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
+    barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_INDEX_BUFFER;
+    barrier.Transition.Subresource = 0;
+    barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
+    direct->getCommandList()->ResourceBarrier( 1, &barrier );
+    direct->execute();
+    ibs = 1;*/
+}
+
+
+DX12VertexBuffer::DX12VertexBuffer( int eSize, ID3D12Device2 *device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct )
+    : DX12Buffer( eSize, device, copy->getCommandList(), D3D12_RESOURCE_FLAG_NONE ),
+    copy( copy ),
+    direct( direct )
+{
+    vbs = 0;
+}
+
+DX12VertexBuffer::~DX12VertexBuffer()
+{}
+
+// Kopiert die Daten in den Buffer, fals sie sich verändert haben
+void DX12VertexBuffer::copieren( int byteCount )
+{
+    /*if( vbs )
+    {
+        D3D12_RESOURCE_BARRIER barrier;
+        barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
+        barrier.Transition.pResource = buffer;
+        barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER;
+        barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST;
+        barrier.Transition.Subresource = 0;
+        barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
+        direct->getCommandList()->ResourceBarrier( 1, &barrier );
+        direct->execute();
+        vbs = 0;
+    }*/
+    DX12Buffer::copieren( byteCount );
+    //copy->execute();
+    /*D3D12_RESOURCE_BARRIER barrier;
+    barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
+    barrier.Transition.pResource = buffer;
+    barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
+    barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER;
+    barrier.Transition.Subresource = 0;
+    barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
+    direct->getCommandList()->ResourceBarrier( 1, &barrier );
+    direct->execute();
+    vbs = 1;*/
+}
+
 #endif

+ 30 - 1
DXBuffer.h

@@ -16,7 +16,8 @@ struct ID3D12GraphicsCommandList2;
 
 namespace Framework
 {
-    class Render3D;
+    class DX12CopyCommandQueue;
+    class DX12DirectCommandQueue;
 
     // Eine Schnittstelle zwischen dem Arbeitsspeicher und dem Grafikspeicher
     class DXBuffer
@@ -115,5 +116,33 @@ namespace Framework
         // Gibt den Buffer zurück
         __declspec( dllexport ) ID3D12Resource *zBuffer() const;
     };
+
+    class DX12IndexBuffer : public DX12Buffer
+    {
+    private:
+        bool ibs;
+        DX12DirectCommandQueue *direct;
+        DX12CopyCommandQueue *copy;
+
+    public:
+        DX12IndexBuffer( int eSize, ID3D12Device2 *device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct );
+        ~DX12IndexBuffer();
+        // Kopiert die Daten in den Buffer, fals sie sich verändert haben
+        __declspec( dllexport ) void copieren( int byteCount = -1 ) override;
+    };
+
+    class DX12VertexBuffer : public DX12Buffer
+    {
+    private:
+        bool vbs;
+        DX12DirectCommandQueue *direct;
+        DX12CopyCommandQueue *copy;
+
+    public:
+        DX12VertexBuffer( int eSize, ID3D12Device2 *device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct );
+        ~DX12VertexBuffer();
+        // Kopiert die Daten in den Buffer, fals sie sich verändert haben
+        __declspec( dllexport ) void copieren( int byteCount = -1 ) override;
+    };
 #endif
 }

+ 4 - 2
GraphicsApi.h

@@ -64,6 +64,8 @@ namespace Framework
     class DX12ComputeCommandQueue;
     class DX12PixelShader;
     class DX12VertexShader;
+    class DX12VertexBuffer;
+    class DX12IndexBuffer;
 
     enum GraphicApiType
     {
@@ -206,8 +208,8 @@ namespace Framework
         RECT *allowedRenderArea;
         D3D12_VERTEX_BUFFER_VIEW *vertexBufferView;
         D3D12_INDEX_BUFFER_VIEW *indexBufferView;
-        DX12Buffer *vertexBuffer;
-        DX12Buffer *indexBuffer;
+        DX12VertexBuffer *vertexBuffer;
+        DX12IndexBuffer *indexBuffer;
         ID3D12RootSignature *signature;
         ID3D12PipelineState *pipeline;
         Mat4< float > matrixBuffer[ MAX_KNOCHEN_ANZ ];

+ 12 - 0
RenderThread.cpp

@@ -2,6 +2,8 @@
 #include "Bildschirm.h"
 #include "Zeit.h"
 
+#include <iostream>
+
 using namespace Framework;
 
 // Inhalt der RenderTh Klasse aus RenderThread.h
@@ -53,6 +55,8 @@ void RenderTh::setBildschirm( Bildschirm *bildschirm ) // setzt den Bildschirm
 
 void RenderTh::thread() // Render Schleife
 {
+    int val = 0;
+    double time = 0;
     zeit->messungStart();
     double ausgleich = 0;
     while( !stoppen )
@@ -63,10 +67,18 @@ void RenderTh::thread() // Render Schleife
             if( renderFunktion )
                 renderFunktion( renderParameter, this, bildschirm->zRenderBild() );
             bildschirm->render();
+            val++;
             if( tickFunktion )
                 tickFunktion( tickParameter, this, renderTickZeit );
             bildschirm->tick( renderTickZeit );
+            time += renderTickZeit;
             unlock();
+            if( time > 1 )
+            {
+                time -= 1;
+                std::cout << "FPS: " << val << "\n";
+                val = 0;
+            }
         }
         else
         {

+ 9 - 7
Shader.cpp

@@ -238,12 +238,14 @@ void DX11VertexShader::benutzeShader()
 }
 
 
-DX12Shader::DX12Shader( ID3D12Device2 * device, ID3D12GraphicsCommandList2 * list )
+DX12Shader::DX12Shader( ID3D12Device2 * device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct )
+    : Shader()
 {
     shaderByteBuffer = 0;
     byteBufferSize = 0;
     this->device = device;
-    this->list = list;
+    this->copy = copy;
+    this->direct = direct;
 }
 
 DX12Shader::~DX12Shader()
@@ -262,7 +264,7 @@ bool DX12Shader::erstelleConstBuffer( int size, int index )
         return 0;
     while( ( size / 256 ) * 256 != size )
         size++;
-    constBuffers->set( new DX12Buffer( 1, device, list, D3D12_RESOURCE_FLAG_NONE ), index );
+    constBuffers->set( new DX12VertexBuffer( 1, device, copy, direct ), index );
     constBuffers->z( index )->setLength( size );
     constBuffers->z( index )->copieren();
     return 1;
@@ -314,14 +316,14 @@ void DX12Shader::getViewDesc( int index, D3D12_CONSTANT_BUFFER_VIEW_DESC &view )
 }
 
 
-DX12PixelShader::DX12PixelShader( ID3D12Device2 * device, ID3D12GraphicsCommandList2 * list )
-    : DX12Shader( device, list )
+DX12PixelShader::DX12PixelShader( ID3D12Device2 * device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct )
+    : DX12Shader( device, copy, direct )
 {}
 
 
 // Konstruktor
-DX12VertexShader::DX12VertexShader( ID3D12Device2 * device, ID3D12GraphicsCommandList2 * list )
-    : DX12Shader( device, list )
+DX12VertexShader::DX12VertexShader( ID3D12Device2 * device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct )
+    : DX12Shader( device, copy, direct )
 {
     inputLayout = 0;
     inputLayoutSize = 0;

+ 7 - 4
Shader.h

@@ -21,6 +21,8 @@ namespace Framework
 {
     class Text;
     class DXBuffer;
+    class DX12CopyCommandQueue;
+    class DX12DirectCommandQueue;
 
     enum ShaderType
     {
@@ -153,12 +155,13 @@ namespace Framework
     {
     protected:
         ID3D12Device2 *device;
-        ID3D12GraphicsCommandList2 *list;
+        DX12CopyCommandQueue *copy;
+        DX12DirectCommandQueue *direct;
         unsigned char *shaderByteBuffer;
         int byteBufferSize;
 
     public:
-        DX12Shader( ID3D12Device2 *device, ID3D12GraphicsCommandList2 *list );
+        DX12Shader( ID3D12Device2 *device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct );
         virtual ~DX12Shader();
         // erstellt ein constanten Buffer, der constante daten an den Shader übergibt
         // es können maximal 14 Buffer erstellt werden
@@ -188,7 +191,7 @@ namespace Framework
     class DX12PixelShader : public DX12Shader
     {
     public:
-        DX12PixelShader( ID3D12Device2 *device, ID3D12GraphicsCommandList2 *list );
+        DX12PixelShader( ID3D12Device2 *device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct );
     };
 
     class DX12VertexShader : public DX12Shader
@@ -199,7 +202,7 @@ namespace Framework
 
     public:
         // Konstruktor
-        DX12VertexShader( ID3D12Device2 *device, ID3D12GraphicsCommandList2 *list );
+        DX12VertexShader( ID3D12Device2 *device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct );
         // Destruktor
         ~DX12VertexShader();
         // erstellt ein InputLayout für den Shader

+ 7 - 6
Textur.cpp

@@ -1,5 +1,6 @@
 #include "Textur.h"
 #include "Bild.h"
+#include "DXCommandQueue.h"
 #ifdef WIN32
 #include <d3d11.h>
 #include <d3d12.h>
@@ -169,7 +170,7 @@ DX11Textur::operator ID3D11ShaderResourceView *( ) const
 }
 
 
-DX12Textur::DX12Textur( ID3D12Device2 *device, ID3D12GraphicsCommandList2 *copy, ID3D12GraphicsCommandList2 *direct )
+DX12Textur::DX12Textur( ID3D12Device2 *device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct )
     : Textur(),
     buffer( 0 ),
     intermediate( 0 ),
@@ -236,26 +237,26 @@ bool DX12Textur::updateTextur()
             D3D12_RESOURCE_BARRIER barrier;
             barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
             barrier.Transition.pResource = buffer;
-            barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
+            barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE;
             barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_COPY_DEST;
             barrier.Transition.Subresource = 0;
             barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
-            direct->ResourceBarrier( 1, &barrier );
+            direct->getCommandList()->ResourceBarrier( 1, &barrier );
             shaderResource = 0;
         }
         D3D12_SUBRESOURCE_DATA textureData = {};
         textureData.pData = bild->getBuffer();
         textureData.RowPitch = bild->getBreite() * sizeof( int );
         textureData.SlicePitch = textureData.RowPitch * bild->getHeight();
-        UpdateSubresources( copy, buffer, intermediate, 0, 0, 1, &textureData );
+        UpdateSubresources( direct->getCommandList(), buffer, intermediate, 0, 0, 1, &textureData );
         D3D12_RESOURCE_BARRIER barrier;
         barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
         barrier.Transition.pResource = buffer;
         barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_COPY_DEST;
-        barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
+        barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE;
         barrier.Transition.Subresource = 0;
         barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
-        direct->ResourceBarrier( 1, &barrier );
+        direct->getCommandList()->ResourceBarrier( 1, &barrier );
         shaderResource = 1;
     }
     return 1;

+ 5 - 3
Textur.h

@@ -17,6 +17,8 @@ namespace Framework
     class Bild; // Bild.h
     class Render3D; // Render3D.h
     class TexturList; // TexturList.h
+    class DX12CopyCommandQueue;
+    class DX12DirectCommandQueue;
 
     // Wandelt ein Bild in eine Textur um, die an die Grafikkarte zum rendern übergeben werden kann
     class Textur
@@ -83,12 +85,12 @@ namespace Framework
         ID3D12Resource *buffer;
         ID3D12Resource *intermediate;
         ID3D12Device2 *device;
-        ID3D12GraphicsCommandList2 *copy;
-        ID3D12GraphicsCommandList2 *direct;
+        DX12CopyCommandQueue *copy;
+        DX12DirectCommandQueue *direct;
         bool shaderResource;
 
     public:
-        __declspec( dllexport ) DX12Textur( ID3D12Device2 *device, ID3D12GraphicsCommandList2 *copy, ID3D12GraphicsCommandList2 *direct );
+        __declspec( dllexport ) DX12Textur( ID3D12Device2 *device, DX12CopyCommandQueue *copy, DX12DirectCommandQueue *direct );
         __declspec( dllexport ) ~DX12Textur();
         // Aktualisiert die Textur. Die Pixel des aktuellen Bildes werden in den Graphikspeicher kopiert
         __declspec( dllexport ) bool updateTextur() override;

+ 1 - 0
TexturModel.cpp

@@ -38,6 +38,7 @@ TexturModel::TexturModel()
     model->addPolygon( p );
 
     textur = new Model3DTextur();
+    model->calculateNormals();
 }
 
 // Setzt die Textur die angezeigt werden soll 

+ 18 - 18
UIPixelShader.h

@@ -262,10 +262,10 @@ ret
 
 const BYTE UIPixelShader[] =
 {
-     68,  88,  66,  67, 146, 225, 
-      5, 229,  26, 132,  14, 224, 
-    199, 183,  54, 131,  74,  29, 
-    244,  69,   1,   0,   0,   0, 
+     68,  88,  66,  67,  59,  57, 
+    102, 138,  45,  55, 102, 224, 
+    185,  50,  67, 251,   2, 103, 
+    136,  35,   1,   0,   0,   0, 
     136, 104,   0,   0,   6,   0, 
       0,   0,  56,   0,   0,   0, 
     124,   5,   0,   0,  12,   6, 
@@ -1480,10 +1480,10 @@ const BYTE UIPixelShader[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0, 148,  46,  49,   1, 
-    239,   9,  86,  92,   1,   0, 
-      0,   0, 181,   8, 118, 233, 
-     34,  59, 232,  73, 154, 102, 
-    224,  97, 252,  30, 120, 109, 
+    143, 106,  88,  92,   1,   0, 
+      0,   0,  31,   5,  41,  63, 
+    172, 185, 111,  73, 184,  43, 
+      0, 146, 205,  33, 189, 184, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
@@ -1655,7 +1655,7 @@ const BYTE UIPixelShader[] =
     242,  56,   1,   0,  43, 236, 
       3,   0,  28,  19,   2,   0, 
      65,  36,   1,   0, 236, 179, 
-      1,   0, 133, 187,   3,   0, 
+      1,   0, 172, 161,   1,   0, 
     125,  10,   2,   0, 125, 181, 
       2,   0, 200,  81,   2,   0, 
     193,  33,   3,   0,  65, 185, 
@@ -2419,8 +2419,8 @@ const BYTE UIPixelShader[] =
      32,  32,  32,  32,  32,  32, 
      32,  32,  32,  32,  32,  32, 
      27, 226,  48,   1, 128,   0, 
-      0,   0, 145, 188, 144,  80, 
-     61, 187, 212,   1,   1,   0, 
+      0,   0, 245,  46,  97,  21, 
+    168, 188, 212,   1,   1,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
@@ -3406,7 +3406,7 @@ const BYTE UIPixelShader[] =
       0,   0,  23,   0,   1,   0, 
       5,  16,   0,   0,  14,   0, 
      23,  21,   0,  16,   0,   0, 
-      3,   2,  96,   3,   0,   0, 
+      3,   2, 208,   3,   0,   0, 
     242, 241,  10,   0,  24,  21, 
       8,  16,   0,   0,   1,   0, 
       1,   0,  10,   0,  24,  21, 
@@ -4400,7 +4400,7 @@ const BYTE UIPixelShader[] =
       9,   0, 160,   7,   0,   0, 
       0,   0,   0,   0, 244,   9, 
       0,   0,   1,   0,   0,   0, 
-    136, 122, 136,   3,   0,   0, 
+     72, 121, 235,   2,   0,   0, 
       0,   0,   0,   0,   0,   0, 
      84, 101, 120, 116, 117, 114, 
     101,  80, 105, 120, 101, 108, 
@@ -4466,11 +4466,11 @@ const BYTE UIPixelShader[] =
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-    148,  46,  49,   1, 239,   9, 
-     86,  92,   1,   0,   0,   0, 
-    181,   8, 118, 233,  34,  59, 
-    232,  73, 154, 102, 224,  97, 
-    252,  30, 120, 109, 137,   0, 
+    148,  46,  49,   1, 143, 106, 
+     88,  92,   1,   0,   0,   0, 
+     31,   5,  41,  63, 172, 185, 
+    111,  73, 184,  43,   0, 146, 
+    205,  33, 189, 184, 137,   0, 
       0,   0,  47,  76, 105, 110, 
     107,  73, 110, 102, 111,   0, 
      47, 110,  97, 109, 101, 115,