public void Render(VoxelStorageContext storageContext, IVoxelStorage Storage, RenderDrawContext drawContext)
    {
        if (NeedToRecreateTexture(MSAARenderTarget, new Vector3(voxelizationView.ViewSize.X, voxelizationView.ViewSize.Y, 1), PixelFormat.R8G8B8A8_UNorm, MultisampleCount.X8))
        {
            MSAARenderTarget = Texture.New(storageContext.device, TextureDescription.New2D((int)voxelizationView.ViewSize.X, (int)voxelizationView.ViewSize.Y, new MipMapCount(false), PixelFormat.R8G8B8A8_UNorm, TextureFlags.RenderTarget, 1, GraphicsResourceUsage.Default, MultisampleCount.X8), null);
        }
        drawContext.CommandList.ResetTargets();
        if (MSAARenderTarget != null)
        {
            drawContext.CommandList.SetRenderTarget(null, MSAARenderTarget);
        }

        Storage.Render(storageContext, drawContext, voxelizationView);
    }
    public RenderView CollectViews(RenderStage stage, RenderVoxelVolume volume, VoxelStorageContext storageContext, RenderContext RenderContext)
    {
        Matrix BaseVoxelMatrix = volume.VoxelMatrix * Matrix.Identity;

        BaseVoxelMatrix.Invert();
        BaseVoxelMatrix = BaseVoxelMatrix * Matrix.Scaling(2f, 2f, 2f);

        voxelizationView.View           = Matrix.Identity;
        voxelizationView.Projection     = BaseVoxelMatrix;
        voxelizationView.ViewProjection = voxelizationView.Projection;

        voxelizationView.Frustum       = new BoundingFrustum(ref voxelizationView.ViewProjection);
        voxelizationView.CullingMode   = CameraCullingMode.None;
        voxelizationView.NearClipPlane = 0.1f;
        voxelizationView.FarClipPlane  = 1000.0f;
        voxelizationView.RenderStages.Add(stage);

        return(volume.Storage.CollectViews(storageContext, RenderContext, voxelizationView));
    }
 public void PrepareLocalStorage(VoxelStorageContext context, IVoxelStorage storage)
 {
 }