Material renders differently depending on output px dimensions

Started by DMerz III, July 12, 2017, 09:18:01 AM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

DMerz III

Currently stumped on a weird problem.

We have an anisotropic metallic finish with a bump (bump is custom made 32bit at 3200dpi at the exact size of the object it is mapped onto).
I wish I could share the images, but due to proprietary concerns, I am unable to do so.

Anyway, we are using the bump in order to create an 'S' curve effect on the anisotropy reflection, as without it, the highlights only can stretch X or Y.
When we render the image at 3000px squared, we have one result...but when we render the image with the exact same settings but at twice the resolution (6000px squared), we're getting a completely different result. We even tried rendering at different resolutions in between, such as 4500px, and again, it seems to change in between the two results, which means to me that this change is linear and dependent on the output resolution.

Problem is, I need to deliver this file at 6K. But because my viewport can only get so large, it has become impossible to get predictable results when lighting this object.

I know it is hard to illustrate the problem without being able to show you guys visually, but I am wondering if anyone has experienced this kind of issue before.

TLDR; material changes in appearance drastically depending on final output resolution, pretty sure it is caused by the super high resolution bump map, but need the bump map to get the 'S' effect in the highlights.

(Currently trying to replicate this issue on a different piece of geometry so I can share something).

Any help is appreciated!


DMerz III

Attached is a reproduction of the problem. Again, same exact settings on both, same mapping, same everything. The only thing that is different was that one was rendered at 3k pixels and the other at 6k pixels. (Yes, when you look at both in photoshop at 100% they are still vastly different.) As you can see in this mockup, the textured highlight effect just appears very different from one to the other. This is making it impossible for me to control where the 'shapes' are produced. (Especially since at 1500 pixel on screen) I am getting a different result than these two here.

I have narrowed it down to being the bump map, but I do not know what to do about it, as I need the bump map to get the 'effect'.

Thanks in advance!

richardfunnell

Have you tried converting the bump map to a normal map? Not saying it makes sense as a fix, but I would try to use a normal map over bump when possible.

DMerz III

EDIT:

NORMAL MAP FIXED IT. (either that or converting the 32bit down to 16bit helped, I did both, either way, it works now!)
WHEW!!!! Just saved me a whole night at the office, thanks for the suggestion Richard, I thought about trying a NRM map, but just didn't think that'd be the issue. Your suggestion made it give it another shot.


I'll give it a shot Richard! At the moment, I'm trying to figure out a way to create the 'S' curve of the anisotropic highlight procedurally to remove the bump map factor altogether.

I figured if I could somehow map the X roughness and Y roughness variably, perhaps I can create the 's' curve effect...not sucessful yet, but if anyone has ideas I'm all ears. The actual part in reality is a very wicked material, I was excited when I produced a bump map (of slightly warped but concentric circles) that actually created the desired effect. However, the output issue has dampened my excitement, haha.

soren

As Richard mentions, Normal Maps are likely a bit better in this case. You are running into issues with texture filtering and anti-aliasing: in regular cases, it is a good idea to "smooth out" images when the texture pixels gets smaller then a pixel on the final output image [this is why you are seeing difference depending on output size here - it is intended on usually results in a higher quality image].

For technical reasons, normal maps are typically a bit more well-behaved than bump maps for this use-case, which is why this fix Richard gave you works. You seem to be trying to achieve a kind of custom roughness using bump/normal maps; this approach makes a lot of sense, but it will have some fundamental limitations in that the normal map will not be dealt with correctly when viewed from afar. Normal/Bump maps are designed to emulate visible changes to surface normals, not micro-surface details (at least in the current implementation).

I know this does not really solve your problem, but it may give you an indication of why bump-maps fail in this case.
Søren

richardfunnell

Awesome, glad this worked for you! And thanks for the background info Søren :)

DMerz III

False alarm, actually. The NRM map did give us a predictable result no matter the output size, but it does not seem to be giving us the 'S' curve effect. After what Soren wrote, it seems that is because the texture is basically too small and is being averaged out.

So I'm kind of back to square one, either making the normal map less sub-pixel in size or finding some other way to achieve a curved anisotropy. Unfortunately, our client hasn't been much help with explaining how this microtexture effect is created in reality. Will report back if I figure anything out!

richardfunnell

Dang :/

As I understand it (although I have only tried basic tests) Anisotropy can be UV mapped as well. Not sure if this is possible for your workflow, but it would allow you to define the "s curve" in your 3D model.

DMerz III

I thought about that. It could be done, I am not a pro by any means with distorting the UVs. At the moment this geometry isn't polygonal, but if we had to as a last resort, we could remodel that part. Either way, this has a been a great learning experience and helpful to understand the limitations with bump mapping. It's such a new 'finish' material for us, so it has been a handful of trial and error.