private void TestEmptySpaceGeneration(string filename) { var img = IO.LoadImageTexture(TestData.Directory + filename); var helpTex = new Texture3D(img.NumMipmaps, img.Size, Format.R8_UInt, true, false); var tmpTex = new Texture3D(img.NumMipmaps, img.Size, Format.R8_UInt, true, false); var s = new EmptySpaceSkippingShader(); s.Run(img, helpTex, tmpTex, LayerMipmapSlice.Mip0, new UploadBuffer(256)); var shaderResultColors = helpTex.GetPixelColors(LayerMipmapSlice.Mip0); //get values from the red channel int[] shaderValues = new int[img.Size.Product]; for (int i = 0; i < shaderValues.Length; i++) { shaderValues[i] = (int)(shaderResultColors[i].Red + 0.5); } int[] expectedValues = CalcEmptySpace(img); for (int i = 0; i < shaderValues.Length; i++) { Assert.AreEqual(expectedValues[i], shaderValues[i]); } }
public RayCastingView(ModelsEx models) : base(models) { shader = new RayCastingShader(models); marchingShader = new RayMarchingShader(models); emptySpaceSkippingShader = new EmptySpaceSkippingShader(); displayEx = (RayCastingDisplayModel)models.Display.ExtendedViewData; helpTextures = new SpaceSkippingTexture3D[models.NumPipelines]; }
public VolumeView(ModelsEx models) : base(models) { smooth = new SmoothVolumeShader(models); cube = new CubeVolumeShader(models); emptySpaceSkippingShader = new EmptySpaceSkippingShader(); cubeSkippingShader = new CubeSkippingShader(); displayEx = (RayCastingDisplayModel)models.Display.ExtendedViewData; helpTextures = new HelpTextureData[models.NumPipelines]; textureCache = new ImageModelTextureCache(models.Images, Format.R8_UInt, true, false); }