- Home /
The question is answered, right answer was accepted
Texture quality in Unity not as good as expected
Hi! I'm making a simulator of the Mercury-Redstone spacecraft and I'm integrating the 3D model of the cockpit into Unity. Although the model is being correctly imported, I'm afraid the resulting texture quality image is not as good as I expected, so I'm sure I'm doing something wrong. Here's a screenshot of the output I'm getting in Unity's editor: and here's a screenshot of the spacecraft's panel taken from Max:
Some info about my workspace settings: I'm using the "Beautiful" quality settings, the model makes use of 3 JPG textures of 4096x4096. All textures have its mipmaps disabled and they use the "Automatic Truecolor" texture format.
Do you have any suggestions so that I can improve the image quality?
Thanks in advance!
--Nacho
Re-reading my post, I've noticed that maybe the title of "Texture quality in Unity not as good as expected" sounds a little bit harsh. What I meant is that the texture quality I'm getting in the editor is not as good as the one I'm getting in $$anonymous$$ax.
Why did you use jpg? Jpg is a lossy format use at least png. You could even directly use photoshops psd files. Also you could play a bit with the texture import settings like Dave already mentioned.
Yes, I think that using JPG is not a very good idea. I've written an e-mail to the artist so that he re-exports the model using PNG textures. I'll try the new model as soon as possible and let you know about the results. Thanks for your reply!
As others have pointed out, it is hard to tell from those screenshots what is actually "bad" about those textures. Can you elaborate?
Yes, no problem! I've uploaded a zip package with the output from both Unity and $$anonymous$$ax. I've also attached one of the 4096 textures. Link: http://rapidshare.com/files/451881504/Panel.zip
Answer by Noise crime · Mar 10, 2011 at 08:17 AM
Well the screenshots you've posted look rather nice, likely due to being resized so its difficult to see the problem.
A few points
You're textures are already lossy compressed via jpg so that might be having an effect.
Not sure why you disabled mipmaps, that means you are going to be using point filtering which can sometimes not look good, especially if you have large textures that are then downsampled in the render view. I'd recommend switching mipmaps back on, using trilinear filtering and increasing the ansio setting. Its also less efficient due to cache misses, though its difficult to know just how much of an effect it will have on performance as its dependant upon the project.
I'm not convinced that you need 4096x4096, not unless you are using something higher than 2560x1600 display, since the textures will have to be downsampled. Taken into account the use of point filtering (since you disabled mipmaps) I could imagine this might have a determental effect.
The only reason for using such large textures (IMHO) is if you are displaying on a very high resolution monitor (or spanning several monitors) or if you can zoom right ito the controls.
Unity settings to check
a. The texture size default is 1024, make sure you've increased the value to 4096 and hit apply.
b. Check the ansiotropic setting, though off-hand I can't remember if this requires mipmaps to have an effect.
c. Check the texture format, its likely to be using compressed (or DXT1/DXT5) and instead try truecolour or RGB24 or RGBA 32.
If you are still having problems, you may need to post a demo or link to some full size screenshots (don't embedded actual images in the question since they wil be so big) and perhaps a sample of one of the actual textures. That might make it easier to see the problem.
Thanks for your reply! I've uploaded a zip file with higher resolution images (see the link as a comment from my original post). Indeed, I'd like to zoom into the instruments, that's why I'm using 4096 textures. But I'd also like the instruments to "look good" from a certain distance as well. I've already checked that the texture size in Unity is 4096 and I'm currently using an RGBA 32 bit format. Enabling mip-maps and changing the aniso level to 5 and the filtering mode to trilinear hasn't improved the situation. Let me know if you need further info.
Had a quick look at the samples you posted and I can see the problem, though nothing jumps out as a solution over than what i've mentioned previously. Something does look odd though from the Unity screenshot. Its difficult to know exactly what though. Could it be that your gpu doesn't support 4096 textures and is downsampling it (unlikely), more likely is that the texture is only being stored at say 1024, but even then i'm think i'd expect much clearer results than you are getting. Possibly the use of extremely large textures being rendered into an area 1/4 its size might be responsible.
What happens in Unity if you zoom in towards the controls? If the text on the texture gets clearer then it suggests that its the high dimensions of the texture and downsampling to blame. If there is no change that suggests the texture is being downsampled (i.e resized by Unity from say 4096 to 1024). There may even be a case to suggest that perhaps something is wrong with the gpu. Perhaps you should post a simple Unity source demo of just the console and texture so others can run it on their system.
Finally I would also suggest that perhaps the use of texture is not the best. I would be tempted to have a texture sheet with say all the text rendered on to it in rows/columns (and thus straight lines of text not angled) and then uv map these to specific areas of the controls. It would increase polygon count as you need a quad for each text area, but it should allow more effcient texture use and perhaps better quality.
Answer by DaveA · Mar 09, 2011 at 10:02 PM
First let me say: Awesome! Secondly, it's kinda hard to see in the images you posted how bad it's gotten. I try to avoid textures over 1024 myself to accommodate older/smaller hardware (phones and such). So my suggestions are to a) use smaller textures, just more of them, and/or b) check the texture's settings. I think the default 'max size' is 1024, so Unity will automatically resize to that, but you can override it by checking 'Override for (platform)' and setting the max size to 4096. Good luck!
Glad you like it! Yes, I have admit that the images don't show an accurate picture of the situation but trust me, it doesn't look very good. I have no problem in using large textures, since I'm not planning to deploy the simulator in mobile platforms and I've also checked the textures' settings by specifying a max size of 4056 for all of them. Do you have any other suggestions?
Answer by Dave M · Mar 11, 2011 at 06:29 AM
please check the quality settings. Edit--project settings--quality settings. There you can change the editor and stand alone quality settings to fantastic. Maybe the texture size is set to half there??
Answer by Baldinoboy · Aug 26, 2012 at 07:22 AM
I'm sure your not but check if you are in any Graphic Emulation modes.
Answer by Dave M · Mar 09, 2011 at 11:17 PM
If you select the Image you have imported in Unity you will see the properties of it. Im not sure but I think Unity imports all images at 1024 automaticaly.But in the properties you can change the resolution and the aniso level and the Filter mode to trilinear.
Using trilinear filtering will do nothing, since Ignacio indicated that mipmaps are disabled.
Yes, that's right, I've already disabled mip levels and manually set all images to 4056. Do you have any other suggestions?
Follow this Question
Related Questions
resolution of textures with camera distance? 0 Answers
Android texture quality problem 0 Answers
Skybox is low quality no matter what the actual resolution is 0 Answers
Textures faded in distance 1 Answer
Texture quality and quality settings 1 Answer