Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void RenderLightShadingPass(){  //Render pass 3
  2.     gDeviceContext->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);   //kan byta till LIST nen då krävs 6 drawcalls
  3.  
  4.     gDeviceContext->IASetInputLayout(NULL);
  5.  
  6.     gDeviceContext->OMSetRenderTargets(1, &gLightShadingPassRTV, nullptr);  //riktiga
  7.  
  8.     //--------------------
  9.  
  10.     gDeviceContext->VSSetShader(gVertexShaderLightShadingPass, nullptr, 0);
  11.     gDeviceContext->HSSetShader(nullptr, nullptr, 0);
  12.     gDeviceContext->DSSetShader(nullptr, nullptr, 0);
  13.     gDeviceContext->GSSetShader(nullptr, nullptr, 0);
  14.     gDeviceContext->PSSetShader(gPixelShaderLightShadingPass, nullptr, 0);
  15.  
  16.     //--------------------
  17.  
  18.     gDeviceContext->IASetVertexBuffers(0, 0, nullptr, nullptr, nullptr);
  19.  
  20.     gDeviceContext->PSSetConstantBuffers(0, 1, &LightBuffer_1); //light
  21.     gDeviceContext->PSSetConstantBuffers(1, 1, &CamPosBuffer);
  22.     gDeviceContext->PSSetConstantBuffers(2, 1, &ShadowBuffer_1);
  23.     gDeviceContext->PSSetConstantBuffers(3, 1, &MatriserBuffer);
  24.  
  25.     gDeviceContext->PSSetShaderResources(0, 1, &gFirstPassSRV[0]);  //texturer från light shading pass
  26.     gDeviceContext->PSSetShaderResources(1, 1, &gFirstPassSRV[1]);
  27.     gDeviceContext->PSSetShaderResources(2, 1, &gFirstPassSRV[2]);
  28.     gDeviceContext->PSSetShaderResources(3, 1, &gFirstPassSRV[3]);
  29.     gDeviceContext->PSSetShaderResources(4, 1, &gShadowView);       //shadow mapping
  30.  
  31.     //--------------------
  32.  
  33.     gDeviceContext->Draw(3, 0); //DRAW
  34.  
  35.     //--------------------  cleanup -   trying to clear SRVs
  36.     ID3D11ShaderResourceView* srvs[D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT] = { 0 };
  37.     gDeviceContext->PSSetShaderResources(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT, srvs);
  38. }
  39.  
  40. void ComputeBloom() {   //Render pass 4
  41.     //----- cleanup from RenderLightShadingPass     -   might not be necessary
  42.     gDeviceContext->OMSetRenderTargets(0, nullptr, nullptr);
  43.     //-----
  44.  
  45.     gDeviceContext->VSSetShader(nullptr, nullptr, 0);
  46.     gDeviceContext->HSSetShader(nullptr, nullptr, 0);
  47.     gDeviceContext->DSSetShader(nullptr, nullptr, 0);
  48.     gDeviceContext->GSSetShader(nullptr, nullptr, 0);
  49.     gDeviceContext->PSSetShader(nullptr, nullptr, 0);
  50.     gDeviceContext->CSSetShader(gComputeShaderBloom, nullptr, 0);
  51.  
  52.     //--------------------
  53.  
  54.     gDeviceContext->CSSetShaderResources(0, 1, &gLightShadingPassSRV);
  55.     gDeviceContext->CSSetUnorderedAccessViews(0, 1, &computeTextureUAV, NULL);
  56.  
  57.     gDeviceContext->Dispatch(32, 18, 1);    //DISPATCH  -   works with res 1280x720 (generates 40x40 blocks)
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement