Hey all,
So I have been playing around with node materials and am using a PBRMetallicRoughness node. What I would like to do is plug in a light map for my over all lighting but I am struggling on how best to do that. I have worked a fair amount in the past using PBRMaterial and setting up a light map for those is pretty straight forward. However, as I don’t see a light map attribute for PBRMetallicRoughness I am not sure how best to go about setting things up.
Anyway, I am hoping that someone may be able to point me to an example of how best to take advantage of lightmaps using the node material and PBRMetallicRoughness.
In the PBR material, the lightmap color is simply either added or multiplied (if lightmap is used as shadow map) to the final color output.
For best results, your lightmap color should be in linear space, so the final output color of the PBRMaterial should also be in linear space but the PBRMetallicRoughness.lighting output is in gamma space.
To work in linear space, instead of using PBRMetallicRoughness.lighting you should add up all the individual outputs of the PBRMetallicRoughness block (from AmbientClr to refraction - you can omit some if you don’t use the corresponding feature - for eg, you don’t need to sum with the sheen outputs if you don’t use sheen) and use the result to add or multiply with your linear lightmap color. You can convert the final result to gamma space by using the Convert to gamma space switch of the FragmentOutput block.
Thanks Evgeni_Popov, I think I understand what you are saying there. Let me give it a shot and I will post an example of what I come up with to make sure I understood you correctly.
Note that if the lightmap has been designed in gamma space, you need to enable the “Convert to linear space” switch on the lightmap texture.
Also, the texture you plug into the baseColor entry of the PBR block should probably enable the “Convert to linear space” switch as it is normally authored in gamma space.
Ok, so I tested the shader network I had posted earlier but outside of nme and for the life of me cannot get the shader to compile do to errors connecting the Ind outputs. I then tried to simplyfy my problem by removing the add nodes and connecting the diffuseInd directly into the rgb on the fragment slot. While the shader compiles in nme when I take the resulting code and try to use it, I get an error. However if I connect the dir contribution in to the rgb of the fragment slot is works. I am so confused. Here are some links illustrating what I mean: