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)); }