// Distinguish completely transparent pixels from significant pixel by
    // "binarizing" the texture via a bit array.
    // false if a pixel is not significant (= transparent), true otherwise
    public static BinarizedImage BinarizeTexture( Texture2D a_rTextureToFilter, float a_fAlphaCutOff )
    {
        if(a_rTextureToFilter == null)
        {
            return null;
        }

        float fAlphaCutOff32 = a_fAlphaCutOff * 255;

        // Retrieve texture pixels (in 32bits format)
        // Array is flattened / pixels laid left to right, bottom to top
        Color32[ ] oTexturePixels = a_rTextureToFilter.GetPixels32( );
        int iPixelCount = oTexturePixels.Length;

        // Create (padded) sprite shape pixels array (bit array)
        BinarizedImage oBinarizedTexture = new BinarizedImage( a_rTextureToFilter.width, a_rTextureToFilter.height, false );

        // Parse all pixels
        for( int iPixelIndex = 0; iPixelIndex < iPixelCount; ++iPixelIndex )
        {
            Color32 f4Pixel = oTexturePixels[ iPixelIndex ];

            oBinarizedTexture.SetUnpaddedPixel( iPixelIndex, ( f4Pixel.a >= fAlphaCutOff32 ) );
        }

        // Fill 1px holes
        oBinarizedTexture.FillInsulatedHoles( );
        return oBinarizedTexture;
    }