- Home /
Issues getting WWW.LoadImageIntoTexture to use DXT1 compression at runtime
Hi all -
A bit of context - I'm trying to load image "tiles" from the web to use as textures. The tiles are all 2048x2048 and I have full control over file format (ie. PNG or JPG) and bit depth. At runtime, however, I am having trouble getting my tiles to load as DXT1. This results in excessive memory use since I'm using a lot of tiles.
According to the Unity documentation, "If texture format before calling LoadImage is DXT1 or DXT5, then the loaded image will be DXT-compressed (into DXT1 for JPG images and DXT5 for PNG images)". The problem is that my JPG tiles are still getting loaded as DXT5 RGBA rather than DXT1 RGB.
How can I get these images to load at runtime as DXT1? I've met the criteria, but it still doesn't seem to work:
Image size must be multiple of 8
JPG image, 24bit depth
Other undocumented requirements?
Any thoughts or insights here would be helpful. I've also attached a sample JPG for reference. (in the editor it loads with DXT1 compression).
Code:
Texture2D tex = new Texture2D (2048, 2048, TextureFormat.DXT1, true);
WWW www = new WWW("http://localhost/0.jpg");
yield return www;
www.LoadImageIntoTexture (tex);
material.SetTexture ("_Tile0", tex);
Related article: https://forum.unity3d.com/threads/cant-compress-a-runtime-loaded-png-texture-to-dxt1-instead-of-dxt5.118083/
Your answer
Follow this Question
Related Questions
Does Unity decompress Truecolor RGBA format textures when loading? 0 Answers
How can I load pre-compressed textures at run-time (without using assetBundles) 3 Answers
Only RGBA32bit works when setting Texture2D pixels on iOS? 0 Answers
Crunch compressed textures are not supported with CopyTexture 0 Answers
How to handle the ground [mesh?] of an infinitely large world? 1 Answer