internal void Render()
        {
            UpdateSceneBuffer();

            engine.Device.RenderClearBuffer();

            engine.Device.SetRenderTexture(renderTexture);
            renderTexture.Clear(1, 1, 1, 1);

            sceneBuffer.UpdateBuffer(ref sceneData);
            sceneBuffer.Activate(Constants.SCENE_BUFFER_INDEX);

            pixelShaderSceneBuffer.UpdateBuffer(ref scenePixelData);
            pixelShaderSceneBuffer.Activate(Constants.PIXEL_SCENE_BUFFER_INDEX);

            objectBuffer.Activate(Constants.OBJECT_BUFFER_INDEX);

            defaultSampler.Activate(Constants.DEFAULT_SAMPLER);

            RenderAll(null);

            engine.Device.RenderClearBuffer();
            engine.Device.SetRenderTexture(outlineTexture);
            outlineTexture.Clear(0, 0, 0, 0);

            RenderAll(unlitMaterial);

            engine.Device.SetRenderTexture(null);

            blitMaterial.Shader.Activate();
            SetZWrite(false);
            renderTexture.Activate(0);
            outlineTexture.Activate(1);
            engine.meshManager.GetMeshByHandle(planeMesh.Handle).IndicesBuffer.Activate(0);
            engine.meshManager.GetMeshByHandle(planeMesh.Handle).VerticesBuffer.Activate(0);
            engine.Device.DrawIndexed(engine.meshManager.GetMeshByHandle(planeMesh.Handle).IndexCount, 0, 0);


            engine.Device.RenderBlitBuffer();
        }