internal void Record(CommandBuffer commandbuffer, int swapchainIndex) { ThrowIfDisposed(); BeginDebugMarker(commandbuffer, "RenderScene"); { //First render the gbuffer and shadow targets gbufferTechnique.Record(commandbuffer, swapchainIndex); shadowTechnique.Record(commandbuffer, swapchainIndex); //Insert barrier because bloom and ao depend on gbuffer output Renderer.InsertOutputReadBarrier(commandbuffer); bloomTechnique.Record(commandbuffer); aoTechnique.Record(commandbuffer, swapchainIndex); //Insert barrier because deferred pass depends on all other outputs Renderer.InsertOutputReadBarrier(commandbuffer); deferredTechnique.Record(commandbuffer, swapchainIndex); } EndDebugMarker(commandbuffer); //All added / removed objects have been taking into account so we can unset the dirty flag dirty = false; }