Colouring Terrain

Started by Erwin0265, November 23, 2014, 06:48:43 AM

Previous topic - Next topic

Erwin0265

Hi all,
I'm still mucking around with heightfield shaders and Image map shaders (trying to get good snow distribution on a single mountain imported from World Machine 2).
Currently, I have imported a WM terrain and played with dimensions using both a Heightfield resize and a Heightfield adjust vertical shaders and have obtained what I was after.
Now, I am playing with blending this imported terrain with the existing fractal terrain (I had it disabled previously, to see what effects I was obtaining with my imported heightfield terrain.
To aid me with seeing what I was doing, I coloured the fractal terrain dark blue and the imported heightfield terrain magenta.
However, no matter the settings, there is no colour change to be seen in the 3D preview; leaving me with a felling of "WTF??"
Below, there are two screencaps that hopefully provide all of the required settings to show what I had done; hopefully, this will show anyone in the know what I am doing wrong.
The Wiki explains colour in much the same way as I expected; unfortunately, my results are not the same (ie. what I expected)............
OK, who farted?

Dune

Click on the button next to reset.

Erwin0265

I presume you mean this one?
[attach=1]
I just tried that (can't believe I forgot about that); great suggestion but no joy.
Any other suggestions?
Thanks for your reply; even though it wasn't the solution; any and all help is always appreciated.............
OK, who farted?

Erwin0265

I just re-read the Heightfield Shader - Colour Tab entry in the Wiki and noticed this little snippet of information;
QuoteIt's important to note that just turning on these parameters will not show any colour if the heightfield shader is connected into the terrain part of the node network in the normal fashion. You will also need to connect the heightfield shader output to a shader which handles colour information, for example by connecting it to the Colour function input of a Surface Layer shader.

So I added a Surface Layer shader; it took me a while to work out where to connect the shader but I knew that the Heightfield shader output (in addition to being plugged into the "Compute Terrain" shader) had to be connected to the "Colour function" input of the Surface shader.
Then, after trying a few connections, I discovered that the Surface layer output had to be connected to the "Mask shader" input of the Base colours shader; then I had colour!!

I must admit, I am confused as to why it was meant to be connected to the Mask shader input and not the Input node of the Base colours shader...
I was also surprised that I got both the Heightfield shader colour AND the Fractal terrain colour showing when I had used only one Surface layer shader - but then, both the Fractal terrain and the Heightfield terrain shaders are in the same "branch" (terminology??)
Further playing confused me more because I later disconnected the Heightfield shader output to the Colour function input of the Surface shader but still had the colours on the terrain.............
Perhaps I should stop playing; if anyone can explain all this, I would love to hear from you as I hate just randomly plugging stuff in to get an effect; I'd rather it made sense than it remain "magical".................

OK, who farted?

Erwin0265

#4
Now I'm back to the WTF frame of mind...........
I deleted the Surface layer shader but we still have colour!!
So I had to create this shader to get the colour but then, if I delete the same shader, the colour remains.............. as I said; WTF???

My brain hurts................
OK, who farted?

AP

#5
That is rather odd.

Kadri

Please put a small TGD file here with the objects if you can.
Don't know the others but i have a hard time to understand your problem by reading.

Erwin0265

No problem Kadri; I also have a hard time understanding what I have written (seriously, I thought my description was rather convoluted)...

I just made another version as the one I showed earlier on now has an image map shader to play with material distribution............

I appear to have managed to get the colouring to work but it's currently 'magical' in my mind as I don't understand how it's working; especially when disconnecting the input of the Surface layer - yet the colour remains.
Other confusions are noted in previous posts......................
OK, who farted?

Kadri

#8
The disabled "Surface layer 01" node is still masking the "Base colours" node despite it looks disabled.
So you should disable the masking in the "Base colours" with the  "Mask by shader" box or break the connection to the mask input altogether.
There was a thread ealier when a disabled node still influenced other nodes.
So when in doubt better break the connection completely.
What i understand here is that because that the "Base colour" is for colour used , when you mask it , the colours upper-above on the node tree does come thru.
Not sure if this is what you asking for?

Erwin0265

#9
Thanks Kadri; I'll have another look at it perhaps later today or tomorrow (my brain has had too much to process so I'm going to do something else for a bit)..........
Cheers.

PS. if anyone else wants to add their "2 cents worth", please feel free to do so; the more info I have to process at a single "sitting" the better.
It gives me more to go on (especially when I'm having difficulty understanding a given concept).............
OK, who farted?

Oshyan

OK, so the Base Colors has full coverage, it covers everything above it. So you won't get any color that's being generated above it unless you either disable it or mask it. It's not ideal to generate color above it anyway, but it can work if you're using it for test purposes. I'd really just disable Base Colors in that case and be done with it. Any color you setup in the Terrain nodes will then come through (with normal rules of precedence and blending in terms of how the network flow works, e.g. nodes further down, below, in the network will cover the ones above it unless they have limited coverage or are otherwise masked).

Regarding masking, if you disable a node that is being used as a mask, it then essentially reads as 0 or black, but it *does not disable the masking function* in the node it is masking. That can be potentially confusing, but it's working by design, because disabling the masking function is *a function of the node being masked*, not a function of the masking node. In other words if you want to stop a node from being masked, don't disable its masking input, if you do that you just get no output from the masked node because its mask input is reading all black. Instead disable the Mask by shader checkbox in the node you are masking.

- Oshyan

Erwin0265

Thanks Oshyan.
Some more info to play with (I haven't been back to it as I have been sick - as I always seem to be)..........
OK, who farted?

Erwin0265

I've had another look at this and both of you (ie. Kadri & Oshyan) have given me very useful info as it helped me to understand most of what was going on in another tutorial; especially the fact that disabled masking layers still mask but in black as there is no other information enabled [again, sorry for any incorrect terminology] - I think that's right.....

Whilst playing with this other tutorial from GeekAtPlay (I tend to play with the beginnings of several (or more) tutorials at once so I can get more of the basics down before delving into the "nitty-gritty" - unless the whole tutorial remains basic - aka - I can understand it), I have come across something else I thought weird.

I wanted to see the colour disribution on a Fake rocks shader created by a Power fractal and so I used the Power fractal shader assigned to the Fake Rocks shader as a "Mask by shader", er, shader (I inversed the mask so that everything other than where the fake stones were present would allow the colour of the Base colour shader through).
I found that using the Fake rocks shader as the mask gave the same results..........
It worked fine for the Base colour shader but the colours on the Fake rocks became washed out (presumably the grey colour of the Base colour shader not being fully masked).
Oshyan, is this why you said
QuoteIt's not ideal to generate color above it anyway, but it can work if you're using it for test purposes. I'd really just disable Base Colors in that case and be done with it.
?

I just want to know why this is occurring; if it's a bug or similar; fine - but if I am missing something - I'd like to know........
Below I have attached a few test renders showing the fake rock colours (again - testing colours) with the Base colour shader disabled and another with the Base colour shader masked.
Also the tgd currently saved to this stage (where the Base colour shader is masked)..............
OK, who farted?

Oshyan

I'm a bit confused by your question and your setup, but no, this is not why I was saying it's best not to add color in the Terrain group (or maybe it partly is, now that I think about it). Basically it's because the Compute Terrain node that normally forms the exit point of the Terrain network basically takes a holistic look at all the displacement above it and makes it so you can apply color in a consistent way to the terrain, using correct normals and texture coordinates. Without that, results can be unpredictable, not disastrously so, but worth being aware of at least. So the reason I say maybe it "partly is" above is that your question is unclear to me, but perhaps you're in part confused by how the texture aligns (or doesn't) with your terrain displacement.

Anyway, I looked at your TGD and your Power Fractal is providing both displacement and color. When you mask it by the same shader that is providing color above it, you get color that is in effect semi-masking itself in reverse, or something... It's confusing, hah. Suffice to say this is not a node setup I would recommend. First, avoid using color above the Compute Terrain, for reasons I hopefully explained above. Second, if you want to visualize the output of a particular shader, the best option is to simply plug it in to the made shader chain at the bottom of the Shaders network, which will then show you its color (if any) and displacement (which you may want to disable) applied to the terrain directly.

- Oshyan

Erwin0265

If you're confused, imagine how I feel........................ ??? :'(
QuoteSecond, if you want to visualize the output of a particular shader, the best option is to simply plug it in to the made shader chain at the bottom of the Shaders network

What is "the made shader chain"?

Gotta say, it's becoming a pet peeve when someone says, "Simply do this or that..." It may be simple for some, but not so simple for noobs who haven't got a clue................
OK, who farted?