Jump to content
  • entries
    4
  • comments
    57
  • views
    13,867

Substances, metal and roughness and Leadwerks


shadmar

15,323 views

 Share

The most used wokflow is metal/roughness (I think)

  1. metalness gives the environment reflection amount.
  2. roughness does two things
    • spreads the light so environment reflection would be more blurred
    • spreads the light so specular reflection from light sources would be spread/blurred

.

Like this:

f50cf483bb0388bec1e3b83e69c0f019.jpg

 

I'm not doing PBR discussion on how to correctly compute energy conservation and all that. It's not really important. But looking at some of the methods anyway on how metal and roughness workflow works.

The shader I have used is not accurate PBR shader, but the results are almost similar from what I can tell smile.png

 

Usage in Leadwerks

 

1. Download and install the substance addon from the workshop. [ http://www.leadwerks.com/werkspace/page/viewitem?fileid=658772226 ]

WARNING, this will overwrite lighting shaders for directional, point and spotlight in order to read GLOSS

However all your old materials not using substances will look almost the same so you don't need to do an all substance game if you don't want to, you can mix.

 

2. Export materials from tools like Substance Designer (they will fit right in) using the metalness/roughness workflow or just create your own from scratch, metals are pretty easy to do using just Leadwerks.

 

Exports from Substance Designer should be set up like this with 7 textures:

 

Texture Tab

substance_mat1.JPG

 

slot 0 (Diffuse) - diffuse/color/albedo map

slot 1 (Normal) - normal map

slot 2 (Specular) - roughness map

slot 3 (Displace) - height map (this texture isn't used, but will be here for future use)

slot 4 (Texture 4) - metal map, black is non metal, white is full metal

slot 5 (Texture 5) - AO map, this is multiplied by diffuse/color, so use a white if you don't have an AO one.

slot 6 (Texture 6) - ***Environment map, used for reflection and ambient, this map must have (important settings)

  • Compression : uncompressed
  • FilterMode : smooth
  • Generate mipmaps, yes
  • Clamp : X,Y,Z
  • ps! Leadwerks default skybox doesn't contain any mipmps and source is not provided and therfore is is useless for usage with substances

.

***In game environment mapping (for slot 6)

Not so smooth but a possible way:

http://www.leadwerks.com/werkspace/topic/11224-skybox-rendering/#entry82736

 

 

Properties Tab

 

Usually Leadwerks created materials have Specular values set to 128,128,128,128

But we're using these for tuning/offsetting substances, so a good starting point is 255 across the board.

substance_mat2.JPG

 

A = modifier for ambient envmap lighting (multipled by texture value)

R = modifier for the roughness value after specular is read from texture and modified by S

S = modfier for the specular term (multipled by texture value)

M = modfier for metalness (multipled by texture value)

 

Usually you do not need to tune these since metal, roughness and env are all read from textures, but they are there if you want to fine tune.

 

Shaders Tab

Two choices,

  • substance_static.shader for most models
  • substance_anim.shader for bone animated models.

substance_mat3.JPG

 

Don't have Substance Designer? (neither do I)

 

Ok, very well but I don't have Substance Designer and I need to make gold and iron. That is quite easy:

 

Creating metals from scratch using just Leadwerks, lets make gold:

Gold RGB color (google the values):

Normalized = 1.000,0.766,0.336 or RGB = 255,195,86

 

1. Create a new material

2. Assign basic textures an all 7 slots.

  • 0 - white.tex
  • 1 - any normal texture
  • 2 - black.tex
  • 3 - -
  • 4 - white.tex
  • 5 - white.tex
  • 6 - env.tex

3. Adjust diffuse color to 255,195,86,255 (gold color) and Specular to 255,220,255,255 (applying abit roughness)

4. Assign the substance_static.shader:

 

substance_mat4.JPG

 

For Iron, use same setup in textures, but these values for diffuse/specular:

 

substance_mat5.JPG

  • Upvote 17
 Share

40 Comments


Recommended Comments



Funny, Last night I've just did the hellish part of generating cubemaps during level load with modding Matt's PBR code. I was gonna write a blog entry when I was done. I just need to correct the cubemap pivot's search distance for surfaces.

Link to comment

What you have is great, but this video came to me when I saw the map reflection in the floor.

 

 

If you are gonna do this, maybe make it it's own shader file perhaps.

Link to comment

When this interesting package is uninstalled, it removes the following shaders: directionallight.shader pointlight.shader spotlight.shader. Perhaps backing them up before installation would be an idea.

Link to comment

I'm loving the suggestions here!

 

I think I smell some possible PBR coming?

 

That would be amazing if we could make that happen. Rastar and Matt's versions of that look amazing!

 

This shader takes us a little closer to that nice look :D

Link to comment

I'm adding BuildMipmaps() to the Lua API and making it official.

 

Perspective-corrected cubemaps are indeed very nice.

 

I may consider adding "environment probes" like Source has. They would basically work exactly the same way as what Scrotie did.

 

Note that cubemaps aren't going to reflect dynamic objects or changing in lighting the way that GI post-effect shader does.

  • Upvote 5
Link to comment

Yeah env probes was exactly what I would aim for, that ontime or ondemand update of a mipmapped cubemap texture.

Link to comment

Geez man.. this is cool !! very nice work man!

You just save my time to moderate the shader scrips for my needs..)

 

PS: I'm glad tha you share it.. this is my first time that ill using somthning like this from community))

Link to comment

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...