► uNormal ◄

uNormal is tool for fast generating Normal, Specular and AO maps from a simple Heightmap texture.

For editor and run-time use.
No hardware or software requirements. Works on any device.

Purchase On The Asset Store

VacuumShaders - Facebook Twitter YouTube

4 Likes

VacuumShaders - Facebook Twitter YouTube

1 Like

Can you talk a bit about the intended usage here?

Is the idea to store just albedo and heightmap textures, and let the game produce any needed normal, specular, and AO textures on the fly?

Exactly.

VacuumShaders - Facebook Twitter YouTube

Released: uNormal | Level Design | Unity Asset Store

2920203--215650--uNormal.png

VacuumShaders - Facebook Twitter YouTube

1 Like

This is very interesting. I would love to see a video of how you set it up for runtime use. It seems rather mysterious at the moment. Also, can this be used to make texture maps from a diffuse in the editor? Or is it only during runtime? What ab out changing settings on the maps during runtime?

Basically, can you give an demonstration on how to use this? Thanks.

1 Like

I am interested in having a smaller drive footprint and faster download for my game, but I’m not sure this method translates well to all types of art.

Is this intended mainly for something like low poly art? Or architecture more than characters? Or is it more broadly applicable than I think?

Editor and run-time functionality are the same. Options can be changed dynamically.

Run-time API is very simple, just like this:

using UnityEngine;

using VacuumShaders.uNormal;


public class uNormal_Runtime : MonoBehaviour
{
    public Texture sourceHeightmap;


    public uNormal_NormalMap normal;
    public uNormal_SpecularMap specular; 
    public uNormal_AmbientOcclusionMap occlusion;

    // Use this for initialization
    void Start ()
    {
        //Normal map
        Texture2D tN = normal.RenderToTexture2D(sourceHeightmap);
        GetComponent<Renderer>().sharedMaterial.SetTexture("_BumpMap", tN);


        //Specular map
        Texture2D tS = specular.RenderToTexture2D(sourceHeightmap);
        GetComponent<Renderer>().sharedMaterial.SetTexture("_MetallicGlossMap", tS);


        //Ambient Oclusion map
        Texture2D tAO = occlusion.RenderToTexture2D(sourceHeightmap);
        GetComponent<Renderer>().sharedMaterial.SetTexture("_OcclusionMap", tAO);
    }
}

Run-time API offers two functions only:

  • public Texture2D RenderToTexture2D(Texture _heightmap) - Resultant texture is returned as Texture2D object.

  • public void RenderToRenderTexture(Texture _heightmap, RenderTexture _dstTexture) - Generated texture is saved inside _dstTexture RenderTexture object.

2920540--215688--uNormal.jpg

Normalmap, Specular and Occlusion maps are generated from Heightmap. If Diffuse texture is used instead then R channel will be used as Heightmap source.

VacuumShaders - Facebook Twitter YouTube

1 Like

2920566--215696--uNormal_N.gif

2920566--215697--uNormal_S.gif

VacuumShaders - Facebook Twitter YouTube

1 Like

The code is almost meaningless to anyone not a coder, but thanks for sharing anyway. The gifs are great, thank you.

So the only problem I see is that I wanted to use this to make maps for artwork that does not have them (3rd party models) but not all artists supply a height map. I can make from diffuse though as you said so that might work.

Looks very interesting and I will probably get it. It is priced so that I don’t mind an experiment although I imagine it might be worth more than your price. :slight_smile:

Thank you!

1 Like

For others, make sure you preload shaders and have those materials in resource folders for this to work at runtime!.

Hi, I just wanted to say that I find your asset a great addition to my workflow. Any plans to update it for Unity 2017?

After official release.
Beta versions can not be supported.

VacuumShaders - Facebook Twitter YouTube

so you whould need just acolour texture like tiles, and it whould be converted? Awsome if true:)

It must be heightmap. If you use regular diffuse texture then tool will read height info from Red channel.

VacuumShaders - Facebook Twitter YouTube

1 - what whould be the best and easyest way to create a heightmap if only have a picture or a regular photo?
EDIT: atm i am using Oculus Meduim with opacity painter, but havent mastered it yet tho:)

2 - whould it be a idea to auto name as the type of map when export, having hard time knowing what map it is when export :slight_smile:

3 - Whats the Roadmap, are theer plans for to suport more map types?
Anyway i am hapy as it is, but curioas if there is a roadmap, i am new to unity maping stuf :slight_smile:
and this looks very intresting and powerful tool, even more so if it gets more feutures. it is realy cheap. sale or no sale :slight_smile:

intrested in:

  • Metalic,heightlight,reflection map
  • Emission map
  • Detail map
  • Translucent map
  • secondary Detail albedo x2
  • Secondary Normal map

dont know if those are the way it works, i am new but very intrested in maping:)

Kind Regards
Daniel

Hi Davit,

Just got this yesterday, and it is a wonderful tool! Just like TerrainToMesh and Beast, which I use a lot too. I asked this on FB, but thought I’d ask here as well. The result seems to be clamped to 255 bytes, so detailed heightmaps are giving out quantized normals. I’m assuming you are clamping it to a byte’s max value. Would it be possible to add an option to use a float’s max value? That way, higher quality normals would be an option.

Thanks,
Dax

1 Like

I’ll check it what can I do.

VacuumShaders - Facebook Twitter YouTube

Hi there!

Could you please extend the tool so that it can use a normal to generate an approximate heightmap as well?

I’ve seen some approaches/tools to such task, and I’d be glad to just use uNormal instead of having to resort to multiple tools.

Also, it’s more frequent to just have albedo and normal maps available, so that would extend the field of use of uNormal quite a lot!

Best,
Alessandro

2 Likes

Does this work on 2018.3 as well?