netpyoung / unity.webp

:art: WebP made easy for Unity3d
https://netpyoung.github.io/unity.webp/
MIT License
237 stars 28 forks source link

EncodeToWebP flips the texture #25

Closed zerg4000 closed 8 months ago

zerg4000 commented 3 years ago

After EncodeToWebP result image wrong shot-006

`var textasset = Resources.Load ("webp"); var bytes = textasset.bytes;

Error lError; Texture2D texture = Texture2DExt.CreateTexture2DFromWebP(bytes, lMipmaps: true, lLinear: true, lError: out lError);

if (lError == Error.Success) { image2.texture = texture; } else { Debug.LogError("Webp Load Error : " + lError.ToString()); }

RenderTexture tmp = RenderTexture.GetTemporary( texture.width, texture.height, 0, RenderTextureFormat.Default, RenderTextureReadWrite.Linear);

// Blit the pixels on texture to the RenderTexture Graphics.Blit(texture, tmp); // Backup the currently set RenderTexture RenderTexture previous = RenderTexture.active; // Set the current RenderTexture to the temporary one we created RenderTexture.active = tmp;

// Create a new readable Texture2D to copy the pixels to it Texture2D myTexture2D = new Texture2D(texture.width, texture.height);

// Copy the pixels from the RenderTexture to the new Texture myTexture2D.ReadPixels(new Rect(0, 0, tmp.width, tmp.height), 0, 0); myTexture2D.Apply();

// Reset the active RenderTexture RenderTexture.active = previous;

// Release the temporary RenderTexture RenderTexture.ReleaseTemporary(tmp);

// "myTexture2D" now has the same pixels from "texture" and it's readable.

string fExport = Application.dataPath + "/test.webp"; byte[] bExport = myTexture2D.EncodeToWebP(25, out lError); File.WriteAllBytes(fExport, bExport);`

netpyoung commented 3 years ago

That is problem to using webp on unity. Unity's texture need to flip updown.

To archive that flip like that

https://github.com/netpyoung/unity.webp/blob/76a58b03aadc57a3d9d22e21a04dd4bd83566136/unity_project/Assets/example4/EncodeToWebP.cs#L61

or using advanced config with WebPEncode API

https://developers.google.com/speed/webp/docs/api

netpyoung commented 8 months ago