I’m working on a package of shaders for character materials using the high definition rendering pipeline. Still a way to go before I release anything but I thought I’d share a couple of images. HDRP seems pretty stable now and allows for more impressive visual effects than previous versions of Unity. I’ve been able to create skin shaders that support subsurface scattering, transmission, bent normals, plus blending of up to four combined smoothness/normal maps controlled by a four channel mask map. Along with the base smoothness and normal maps this results in a very detailed skin material, even though the individual texture maps are quite low resolution. These material options allow for detailed art direction.
PLEASE SEE THE LATER POSTS FOR UP TO DATE NEWS. (You also get to laugh at me contradicting myself as I work through options and generally go in circles.)
Next on the list is wrinkles based on realtime tension maps. After that I’ll look at eye shaders, then move onto textile shaders for character clothing. My plan is to build a package that handles most, if not all of your character material needs. (The main skin shader and bundled detail maps alone should be very useful.)
I’ll consider the package to be in beta for as long as HDRP is. Once HDRP is finalised I’ll create the first official release of Character Kit. However, I plan to keep everything up to date with the latest version of Unity and HDRP, so you can use it day to day. (I also hope to provide shaders based on the older Standard Shader. Obviously these won’t support everything the HDRP versions can, but I’ll do my best to make them look good.)
Please let me know if you think this would be worth purchasing. Obviously there’s no point in me working on it if no one plans to buy it. Initial beta releases would be cheap, with the price increasing as features are added, so early adopters will get the best deal.
Blending detail smoothness/normal maps with the mask:
Hi Paul, that does indeed sound quite interesting.
As for wrinkles: I’ve only done some superficial reading/thinking on real-time tension maps but it seems like a rather involved and mostly performance intensive process - so if you do find a performant solution that just works™, that’d be pretty sweet. Not just for skin, but also clothes. Other than that, having a weight-based wrinkle system (probably with a map) would already be pretty nice as well.
It seems like unity is looking into creating its own set of character shaders, though, so you might want to look into features they probably won’t cover. I’d assume wrinkles being one of them. I think I recall them working on skin, cloth and eye shading.
I haven’t decided on how to tackle wrinkles, but performance will be very important. It will be a compromise between that and visual appearance. I also want it to be easy to use.
Do you have any links for the character shaders Unity is planning? Definitely worth seeing what they have planned.
I’ll add more updates here as I work on the shaders. Comments and questions are always welcome.
Had to google a bit - I recall this from reading various posts all over the forum over the course of the last year or so.
Here’s someone from Unity saying they work on a hair shader , here’s a bit of (placeholder) documentation for a fabric shader. I could imagine they’re calling it a day for the skin shader by providing a SSS profile tweaked for skin. I don’t think they’re looking at wrinkle maps, though - even though I’m sure some people (myself included) are very interested in that. Personally, I’d just ask the HDRP team which features they aren’t/won’t be working on (at least in the foreseeable future) and focus on that. They’re quite active on the SRP forum.
Thanks. I noticed the mention of fabric shaders. Will be interesting to see what they come up with for hair. I think wrinkle maps are worth investigating. It’s been mentioned on the forums in the last couple of years but nothing ever came of it.
Hi,
very interesting project and I used a similar skin normal detail controlling approach in a paper.
What is Detail Smootness Intensity going to accomplish? As there are no Smoothness Detail Maps?
Sorry about not responding. I’ve been busy with other work and didn’t get updates about new messages. The shader allows up to four detail smoothness/normal textures to be blended with the main textures. The intensity controls allow you to control how strong the smoothness/normal effect is.
I’m going to see what Unity releases with The Heretic assets. I suspect they’ll have a lot of skin shader stuff I can borrow.
Nothing I’d feel happy with people using at the moment. Let’s see what is released with the Heretic assets. I suspect the shaders in this will be very useful.
I looked, and was not able to find anywhere of them saying they are releasing The Heretic shaders, assets? or anything. Do they say that somewhere, I waited for the MegaCity the same way, but can’t find where they say it about Heretic.
On the main Heretic page they said “the Demo team is preparing a package with the tech and shaders used for the digital human in the film so you will be able to use them in your own projects.” Hopefully won’t be too long. https://unity3d.com/the-heretic
Still waiting for shaders from The Heretic. In the meantime I’m looking at raymarching for eye occlusion. Unfortunately this all has to fit around real work.
I’ll keep an eye out too. I can throw you some bones for early access, I like to get in early. Sounds like you are doing it right, if you build and sell tools around what you yourself use, I always find those the best is what I mean.
I tidied up the shader code and combined texture channels for efficiency. The main skin shader is working quite well now. Would anyone be interested in an early access asset? My plan is to add features and increase pricing until there’s enough for a version 1 release. All going well the asset will cover:
Skin shaders for HDRP
Eye shaders for HDRP
Hair shaders for HDRP
Wrinkle maps and scripts for realtime blending
At the moment I have a skin shader for HDRP that uses a standard albedo, smoothness, AO and normal setup, but also allows you to blend 4 detail normal/smoothness textures on top of this using a mask. E.g. specific normal/smoothness for forehead, another for cheeks, another for nose, another for neck. These detail textures don’t need to be high resolution because they’re tiled. I’m currently using 512px detail textures and getting good results. The shader also uses SSS which is controlled by a mask in the albedo alpha, plus a thickness map from the combined smoothness/AO/thickness texture.
The asset will include pre-set detail normal/smoothness textures for forehead, nose, cheek etc, so you don’t have to worry about creating these.
I’m looking at two techniques for implementing wrinkle maps. The first defines facial regions with a texture map, while the second uses the movement of vertices. Each is pretty complex and would require custom tools to help artists set things up. So, as well as implementing these techniques in the shader I need to look at what tools will be required for the user. E.g. a paint tool to set up facial regions, or a tool to record the initial ‘relaxed’ face vertex positions. As well as runtime performance, ease-of-use is key. I want the asset to be artist-friendly.