Physically Based Headaches

Just wanted to write an awesome title, but I would also like to voice some concerns with the new material editor. Overall it’s a huge improvement: I love the linear color space and complete integration of DX 11. Physically based shading will take some getting used to, but it looks awesome. No more hassling with cubemaps: everything just reflects the way it should!

I attempted a cartoon skin shader with subsurface scattering, and I found the single SSS node to be less than useful. It doesn’t seem to take values greater than 1. The results are pleasing of course, but more control would be very nice. I’d like to exaggerate the transmission effect of putting a light between your fingers all over the character, and the default SSS settings just seem too soft and subtle to really notice. UE3’s transmission didn’t work as nicely, but it did have control to exaggerate the effect. I was also hoping I could make an advanced blend between this and a translucent water shader (been trying to do this since a year ago with UE3, actually), but it seems the material can’t blend between translucent and subsurface even if it uses material layers.

Another problem I have is how much dang power is necessary to run this engine! The default chair and tables brings my GT 640 down to 20 frames per second. Deleting everything in the level and staring off into space gives me 29 frames per second. This is the only program where looking at the grid actually caused a noticeable framerate drop. I will have to upgrade my GPU to at least a GTX 660 or 750 Ti to run the editor properly. I know it’s a much lesser engine, but just for comparison’s sake, DX 9 on UE3 runs silky smooth all the time. Even using a global dynamic light function on everything doesn’t cause a slowdown this bad!

Can’t wait to see where this engine gets going because it’s really, really nice.

Try adjusting the opacity of your shader. It controls how much light is coming “through” the SSS surface. Also make sure that you have the correct blend mode enabled.

Thank you! I was able to get pretty good results from adjusting the opacity setting. Interesting how that changes things. It seems the best way to control SSS is with a translucency map, so softer areas like the belly don’t appear as hard as fingers. 0.5 is default, but it’s too soft on fingers and too hard on the belly. Thanks!

I’ll also say that there really isn’t a point to exaggerating the effect beyond this. With the opacity brought down to 0, you’ll have SSS absolutely everywhere, it’s ridi****us. Thanks, Epic!

I really recommend turning off any post processing effects you can do without, there are actually more than there were in UE3 even the later UDKs :cool:

I messed with post processing and physically based shaders, and I discovered something Epic really needs to fix: All colors are clamped to 1, and auto exposure prevents bloom from appearing. Unless you have a light with a brightness greater than 1, it will be impossible to exaggerate bloom on an object. My simple character has gold rings which I’d like to exaggerate the lighting on. I don’t want to use emissive because they shouldn’t really emit light in a dark environment. As of right now, it’s impossible to scale the lighting beyond 1,0.7,0 (my preferred color).

If I want to fix this issue at the moment, I need to darken all the other colors on my character to lighten up the gold rings, and raise the brightness of all lights where this character will be placed to compensate.

If you create a post process volume it will give you control over eye adaption and bloom. You could set the min and max exposure to 1 and use offset to manually adjust it. Then you can adjust bloom threshold and intensity to tweak for the look you want.

Well that part makes sense, if you think about using 0 to 1 as a ramp between fully on and fully off and any value in between is a fraction of 1.0.

It will take some getting used to for people who just use HDR tweaking in Materials to get the effects they want. I will say I was able to use the manual adjustment in the post process to get what I wanted, but in the end I will have to make sure that the values for other objects are more realistic so that only the highest values actually yield blooming. Post process is really great in this engine compared to UDK. Thanks, Epic!