RobynsVeil opened this issue on Jan 24, 2009 · 490 posts
bagginsbill posted Mon, 25 May 2009 at 8:06 PM
Beautiful discussion - very subtle points being raised. This is Node Cult stuff, but here at Renderosity. Ha!
Anyway, RV you're correct that for x = 0 or x = 1, x ^ 2.2 = x so gc and anti-gc don't matter. For any other value (or any color containing such value as a component) you must think about what it means and whether or not to use it.
RV, the Weave is blending the colors you give it, but in a complicated pattern (shaped like a weave.) This blending is the same as the Blend node, and it is color math. You are correct to wonder if it is a mistake to anti-GC the colors before using them in the Weave node.
Based on the weave node alone (leaving aside how its being used later) if we're thinking about it as if it were a baked image map node instead, we'd want to anti-GC it AFTERWARD, not BEFORE. Why?
Do you remember my demonstration a few weeks ago regarding the Blender node to produce a gradient between two colors?
Do you remember that when we make a gradient in linear space, we pass through different intermediate colors compared to the same gradient in sRGB space?
Everybody needs to go here:
http://www.renderosity.com/mod/forumpro/showthread.php?thread_id=2762503&page=6#message_3428749
Look at my gradient demos comparing a gradient in linear color space with the same gradient in sRGB color space. (or more specifically, the approximation to sRGB called GC(2.2) color space). Read what I wrote there until you can explain it without me.
So if we're talking about a pattern generating node that produces a pleasing color pattern involving gradients, and the author made his/her choices of colors and parameters interactively, while viewing a preview of this pattern on in the material room, then you must conclude you do not want to change the author's pattern. Procedural patterns are not right or wrong - they are what you wanted them to be. As the result of experimentally interacting with a gradient that was working in sRGB space, the results should be considered to be correct, a priori. Therefore, anti-GC that node after it does its gradient pattern building work.
Note, however, that this is precisely NOT, I repeat NOT, what happens in Poser Pro when you enable render GC. In that case, each incoming individual parameter is anti-GC'd and THEN the nodes get to make their patterns. In that case, there will be subtle differences between the GC and non-GC rendering of that shader, differences that go beyond luminance. They will involve the evolution of gradients through a different color space.
For this reason, the mechanical conversion of shaders to become GC shaders, while maintaining the original author's intent, will be very difficult.
After you get done figuring out whether to anti-GC before or after the Weave node, you have the odd fact that it then is multiplied with a shade of blue. Now you have to ask (as Izi pointed out) was that blue the result of a visual choice (I like this shade of blue) or was that blue the result of a ratio choice (I like this ratio of R, G, and B, as a multiplier, and the fact that said multiplier has an appearance of this blue is not relevant at all.)
Which is it?
Or, should you wait till after the multiply with blue to do the anti-GC? That's not what Poser Pro would do.
Poser Pro would have anti-GC'd the incoming colors to the Weave, which would alter the gradient intermediate colors produced. It would also have anti-GC'd that blue mutliplier. The product of those would be a new color that bears little to no resemblance, mathematically, to the color the original author intended, no matter how you look at it.
No, I'm afraid that the only way to maintain any conformance with the pattern the original author intended is to understand how the author arrived at that. In my opinion, the correct place to insert the anti-GC in that shader is right before the Diffuse node, not earlier.
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)