private void RegenerateVoxelVolumes()
        {
            //if (!isDirty)
            //    return;
            renderVoxelVolumes.Clear();
            foreach (var pair in ComponentDatas)
            {
                if (!pair.Key.Enabled)
                {
                    continue;
                }

                var volume = pair.Key;

                RenderVoxelVolume data;
                if (!renderVoxelVolumes.TryGetValue(volume, out data))
                {
                    renderVoxelVolumes.Add(volume, data = new RenderVoxelVolume());
                }

                data.VoxelMatrix    = volume.Entity.Transform.LocalMatrix;
                data.Voxelize       = volume.Voxelize;
                data.AproxVoxelSize = volume.AproximateVoxelSize;

                data.VisualizeVoxels    = volume.VisualizeVoxels;
                data.VoxelVisualization = volume.Visualization;
                data.Attributes         = volume.Attributes;
                data.Storage            = volume.Storage;
                data.VoxelizationMethod = volume.VoxelizationMethod;
            }
        }
        private void RegenerateVoxelVolumes()
        {
            //if (!isDirty)
            //    return;
            renderVoxelVolumes.Clear();
            foreach (var pair in ComponentDatas)
            {
                if (!pair.Key.Enabled)
                {
                    continue;
                }

                var volume = pair.Key;

                RenderVoxelVolume data;
                if (!renderVoxelVolumes.TryGetValue(volume, out data))
                {
                    renderVoxelVolumes.Add(volume, data = new RenderVoxelVolume());
                }

                data.ClipMapMatrix  = volume.Entity.Transform.LocalMatrix;
                data.ClipMapCount   = volume.ClipMapCount;
                data.AproxVoxelSize = volume.AproximateVoxelSize;
            }
        }
    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));
    }