Version 4.16 bug? Upgrading from 4.14 to 4.16 messes up materials.

It’s easier to explain with this video:Ue4 - upgrading from 4.14 to 4.16 material bug? - YouTube
So as you can see, when I mouse over that node, you can see that the material changes on the left-hand side. (It also sometimes happens in the viewport too on the mesh itself)
This only happened right after I upgraded my project from ue4.14 to ue4.16. It’s not supposed to do that, obviously. So as a result, this causes part of any mesh I apply this to, to be totally borked, with no textures. Any idea what causes this? These textures are from the marketplace called Supergrid starter pack. And all of the textures are all messed up like this. Is this a bug, or some weird hidden setting somewhere that is flipped on by default when version 4.16 is launched? Because when I mouse over a node, the texture behaves as how it normally should.

I’ve tried to google my issue, but can’t find any answers.

Also, there’s another weird change that I’m not used to but when I play the level and exit, I used to hear a sound effect after I hit the escape button, but now it’s gone. Not a big deal, but I kinda liked it. But the point is, it makes me think maybe it is an issue with my ue4.16 download itself that is causing my material issues?

Maybe try going from 4.14 to 4.15 then to 4.16…

Jumping multiple versions seems more error prone

I just tried, but still the same thing happens ;(

There was a power node change in 4.16. Do you have one in material?

Not sure I understand what you mean. Is that like an option I have to tick somewhere? How do I check if I have one of these? And I wouldn’t mind if I had to manually fix this. Just no clue on how to do it.

Oddly enough, when I open Supergrid from it’s own uproject file, the textures work. But when I copy paste the nodes from that uproject onto my own, it does not work ;(. I’ve compared my own uproject file onto the Supergrid uproject file, which is working there. Mine looks and is set up exactly the same way, but somehow mine is broken. I’m so confused.

Here’s a look of how it’s configured.



It might be the power node, as Deathrey suggested. But it’d be inside the UV_ObjectScalable function in your material.

Open up the function (it’s in your last screenshot, with the comment box “Keep UV size relative…”)
and insert the “abs” node as detailed in this post:

https://forums.unrealengine.com/showthread.php?63107-Free-demo-SuperGrid-Fast-Level-Prototyping&p=713750&viewfull=1#post713750

My god, that worked, thank you so much! :cool: You have no idea how long ive refreshed and tried to find the right google keywords but failed.

I found this post because after debugging why my materials broke in 4.16, I traced it back to the power node being broken for negative values. Pow( some negative value, 2 ) doesn’t return the same value as Pow( same value but positive, 2 ). Rather than a “change”, isn’t it simply a bug and should be reported?

Nope, that was intended change. You can mimic old functionality using Abs.

I’m not convinced, can you give me a good reason for why Pow(-1, 2) = 0 is the intended result? Power is a well defined mathematical operation and not supporting negative values is strange.

I have found the reasoning for it elsewhere… its because negative base values with fractional exponents like Pow(-1, 0.5) would result in imaginary numbers which aren’t supported. To prevent unexpected behavior when the user plugs in these kinds of values, all negative values are unsupported (even when the exponent is an integer). Its not ideal but I can get behind this.

Pow is implemented using hlsl’s pow, which gives NAN (not a number) for negative base values.

We used to hack around that by applying an abs on the base, which doesn’t really make sense, -3 ^ 3 != 27. If the exponent is even, it does make sense, but that’s not how the pow() function actually works. Now we do pow(max(X,0.0f),Y), to match hlsl behavior, while preventing NaN’s which are always undesired (spreads all over your screen like a virus).

Sorry for the inconvenience though. Ideally we would have gotten it right the first time, and not had to change it at all. This was listed in the upgrade notes for 4.16:

"New: Updated default behavior of “Power” node to no longer “abs” or “max” against an arbitrary value as the results were incorrect.

  • Previous version available by calling ClampedPow(x, y) in a “Custom” node."

Same thing happened to me. Went from 4.16 to 4.17 i think? O forget the numbers. But it was a small update i think. But when i opened my scene… some materials were glowing. No matter what i did, nothing worked. I tried every solition. Only 1 thing fixed it. Restart from the first stage. Reimport everything and start clean. Terrible bug.

I have like 50 power nodes inside one material. How are we supposed to find the power nodes that need the change?

Also, wouldn’t it have been made much more sense if there would be a new extra power node with the new behaviour instead of destroying everyones material when they upgrade?

I onve had a ossue where my interior wall went full white glow. Going from 4.14 to 4.16. No matter what i did, [delete reimport] nothing worked. My solution was to delete the whole file and reimport everything in a new map. Lol. Pain in the arsr but worked. I still think Unreal should implement a traditional renderer material UI. Im noy a fan of these nodes. Some of them have so much going on that its funny. Buy still like the engine. Awrsome job.