# procedurally generating a texture overlay simulating shrink wrap

I'm looking for a way to procedurally create a realistically looking texture overlay simulating the object being shrink wrapped.

It is only used to be added to single images, so it does not need to behave correctly in an animation with changes of position or angle of the object, camera or light source(s).

I already tried by implementing a grayscale plasma effect. It looks nice but not real:

Below you can find some examples of what I am hoping to achieve.

Do you have any suggestions on how something like this could be generated? I'm looking to produce thousands of unique textures, so there should be some variation/randomness involved.

• Does it have to be a procedural texture? A photo of a shrink-wrapped black box would be the obvious solution. – Dan Hulme Jul 6 '17 at 8:48
• Yes, because I would like to generate thousands of unique textures. Thanks for the remark, I updated my question accordingly. – Tobias Hermann Jul 6 '17 at 8:51
• You'll want to generate a bump map/normal and use that for the reflective highlights. Getting the tension streaks to look realistic on the geometry is going to be challenging though. – ratchet freak Jul 6 '17 at 9:24
• I wonder if you took something like your original plasma texture and stretched it along a random axis and used the result as ratchet freak suggests above, if that would look decent? – user1118321 Jul 7 '17 at 1:19
• I would suggest using the "ridged" version of FBM/Perlin noise to mimic the crests and branchiness you get with cling film. This can do done using something like 1-abs(FBM). visualisation of ridge FBM here : accidentalintricacy.blogspot.hk/2009/04/base-landmass.html – PaulHK Jul 10 '17 at 3:23

I finally arrived at a solution that is not perfect, but seems to be good enough for my application right now.

The pipeline is as follows:

-> grayscale perlin noise with affine transformed (stretched and rotated) coordinate system
-> gaussian blur (sigma 3.0)
-> normalize (range 0.0 to 1.0)
-> pixels = pixels - 0.5
-> pixels = pixels * 2
-> threshold (change everything below 0 to 0)
-> add pixels to original image with an alpha value of 0.7


Here are some of the results: