コード例 #1
0
        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]);
            }
        }
コード例 #2
0
 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];
 }
コード例 #3
0
 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);
 }