void MSAAFilter::RenderBackgroundVelocity() { PIXEvent pixEvent(L"Render Background Velocity"); ID3D11DeviceContextPtr context = deviceManager.ImmediateContext(); SetViewport(context, velocityTarget.Width, velocityTarget.Height); // Don't use camera translation for background velocity FirstPersonCamera tempCamera = camera; tempCamera.SetPosition(Float3(0.0f, 0.0f, 0.0f)); backgroundVelocityConstants.Data.InvViewProjection = Float4x4::Transpose(Float4x4::Invert(tempCamera.ViewProjectionMatrix())); backgroundVelocityConstants.Data.PrevViewProjection = Float4x4::Transpose(prevViewProjection); backgroundVelocityConstants.Data.RTSize.x = float(velocityTarget.Width); backgroundVelocityConstants.Data.RTSize.y = float(velocityTarget.Height); backgroundVelocityConstants.Data.JitterOffset = jitterOffset; backgroundVelocityConstants.ApplyChanges(context); backgroundVelocityConstants.SetPS(context, 0); prevViewProjection = tempCamera.ViewProjectionMatrix(); float blendFactor[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; context->OMSetBlendState(blendStates.BlendDisabled(), blendFactor, 0xFFFFFFFF); context->OMSetDepthStencilState(depthStencilStates.DepthEnabled(), 0); context->RSSetState(rasterizerStates.NoCull()); ID3D11RenderTargetView* rtvs[1] = { velocityTarget.RTView }; context->OMSetRenderTargets(1, rtvs, depthBuffer.DSView); context->VSSetShader(backgroundVelocityVS, nullptr, 0); context->PSSetShader(backgroundVelocityPS, nullptr, 0); context->GSSetShader(nullptr, nullptr, 0); context->HSSetShader(nullptr, nullptr, 0); context->DSSetShader(nullptr, nullptr, 0); ID3D11Buffer* vbs[1] = { nullptr }; UINT strides[1] = { 0 }; UINT offsets[1] = { 0 }; context->IASetVertexBuffers(0, 1, vbs, strides, offsets); context->IASetInputLayout(nullptr); context->IASetIndexBuffer(nullptr, DXGI_FORMAT_R16_UINT, 0); context->Draw(3, 0); rtvs[0] = nullptr; context->OMSetRenderTargets(1, rtvs, nullptr); }
void Shader::set() const { Context->VSSetShader(vertexShader, nullptr, 0); Context->PSSetShader(pixelShader, nullptr, 0); }