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