Forum: Poser - OFFICIAL


Subject: Image size Power of 2?

chris1972 opened this issue on Dec 26, 2014 · 14 posts


bagginsbill posted Tue, 30 December 2014 at 8:02 AM

I was trying to be Socratic and ask a question that would cause people to think about what they're saying and why. That didn't work. I was asking for source - where did you get this notion that internally the mipmaps are all square? If I were writing the mipmap code, I would not inflate the shorter dimension beyond whatever power of two I need.

UV space is not square if the object in question does not use the entire UV space. Nor is the rendered space occupied by any given pixel necessarily square just because UV space defining the boundaries of an image is 0 to 1 in both dimensions. Consider my environment sphere, in which the equator (horizontal = U) is 0 to 1 but is twice as long as pole to pole (vertical = V). Despite both dimensions being 0 to 1, the best looking image map for an equirectangular image to be used as an environment is twice as wide as it is high - that is the only way to get a consistent apparent resolution near the equator. But this is beside the point I'm trying to get at here.

You guys are saying things that I, as a programmer, know are not required. Yes, there are hardware mipmaps that are always square but Poser is not using hardware rendering. It's entirely driven by the software. Further, the mipmapping technique in Firefly recently was improved (the new Crisp setting). This implies that it is even more modern than it was before, and there is no evidence that it can only mipmap square images into square images.

shvrdavid brought up ripmaps - I know what those are and I'm not talking about ripmaps. But since you raised the point, let's be clear:

I am saying that uniform image size reduction (mipmapping) refers to using a uniform ratio in both dimensions. That is to say if the starting texture is W x H, then each level of mipmapping is kW x kH, where k is 1/2, 1/4, 1/8, 1/16th, etc.

I am trying to make you understand then that a 2048 x 1024 image would then be mipmapped to 1024 x 512 at first level, 512 x 256 at second level, and so on. Each level has a uniform scale applied with respect to the original image. That is mipmapping and that is the meaning of "uniform":. It doesn't mean each mipmap is square - if the original is square, then each mipmap is square, but if the original is not square then each level is also not square, until one of the dimensions reaches 1. Then the other dimension shrinks until the last mipmap is 1x1, regardless of the original dimensions. 

On the other hand, non-uniform or anisotropic image reduction is called ripmapping. In a ripmap, the original W x H image is scaled with independent scaling factors k and j, such that reduced size images are produced at kW x jH, where k and j are 1/2, 1/4, 1/8, but independent of each other.

In ripmapping, square images become reduced to square AND non-square, and non-square images also become reduced to square AND non-square. In my original question, trying to get people to think for a second, I was not in any way asking about ripmapping. 

Furthermore, whether or not it is common or rare in GPU programming has nothing to do with Poser Firefly rendering.

Now - back to the question.

Please cite your source - what makes you believe that Poser software is written with an internal requirement to inflate texture data so that it is square? If it's because Stefan said so (author of Firefly) then I would like to read what he said. If it was some forum member who you're repeating, just say so. I want to understand where this notion came from.


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)