Cycles has the shading offset, which lets you push the terminator along the normals towards the light. What I’m looking for is a way to push the terminator AWAY from the light, effectively lighting geo that is facing away from the light. Negative shading offset.
There’s also the bevel node, which kindaaaa does this for sharp edges, but doesn’t help for something like a sphere here.
Translucent shader also kinda is helpful in doing this, but it (and SSS) are impacted by intersecting geometry too much.
Ideas would be helpful. I feel like there’s a material solution with normal bending and the light paths? but not sure I have the maths to figure that out?
This is for npr shading stuff, so just adjusting the lighting isn’t a solution. Looking for a solution I can drag and drop on characters, objects, etc.
It’s quite simple- plug a shader to RGB between your shader and material output, and add a color ramp after it. If you want to preserve light color, use three color ramps- split the shader to RGB with a separate RGB node, and then combine the three ramps with a combine RGB node. Move the ramp stops to change the light/shadow amount
shader to rgb (in addition to not working in cycles) does let you control shadows and lights, but doesn’t change the terminator position at all unfortunately.
that DOES make me think of a weird bad solution to this which is making light sources that wrap around the object and then using the shading offset to get back to a normal-ish shadow terminator. So here the sun is set almost to wrap completely around the sphere, and then pulling the shading offset back on the sphere.
a very bad solution haha. for one thing, shadows would be super broken. and also you wouldn’t be able to use point lights at all. hoping for a better solution than that haha
It absolutely lets you push it the other direction, I’ve done it myself Just move the stops to the right. If that’s still not doing enough, add a Math node between the shader to RGB and the color ramp set to multiply. Turn it up until you get what you want
add an ANTI LIGHT(with negative power) opposite your light. this will give you some dynamic range to work with on the dark side, but it is likewise going to ruin everything else in your scene, haha.
Hey @joseph , curious how you got it to work because it’s certainly not working that way anyhow I try it here. Like Sterling mentioned, lightening up the dark side is easy to achieve, but it does it uniformly, without changing the shadow terminator. maybe you used a translucent shader or SSS to achieve what you’re talking about?
here’s a super simple blend file for ease of demonstration. Perhaps if you have a second, you could show what you’re talking about?
@SterlingRoth that is a delightfully imaginative, but also bad solution haha I’m gonna play with this a little bit, but every time I’ve used negative lights it’s never worked the way I wanted it to.
I’m realizing that I spoke too soon, or rather, I misunderstood what you’re trying to achieve. This is quite easy to do with cel-shading, which I assumed was what you meant when you said NPR:
no worries on the misunderstanding haha, I was worried I had a small brain over here haha. I’m definitely trying to stay away from a cell shading effect. The effect I’m after is more of a game engine shader trick, it’s been used a lot for faking SSS in games.
Generally I’m finding references to it under light wrap shader? but I think it’s also been called diffuse wrapping?
I’m near positive this is possible in blender, esp with access to the light path node and the geometry normal data. Just not sure how to actually do it haha
I didn’t understand if you want such a rendering instead of the original light render or as an addition (see below) but…
The shadertoy example is interesting… but you need the info anout the position of the light… that’s not directly accessible via shader nodes. But ther is this trick to use drivers… Original light is white and the red-green colorramp is to show the influence of the wrap parameter… (if the lamp has zero energy you got “pure” rendering similar to shadertoy…)
holy goodness that’s wild, I’m gonna check this out. Thanks for investigating that! did you set that node tree up looking at the shadertoy example?
I think that probably answers my question? It sounds like for a true drag and drop solution to this, you need the light position to get this to work seamlessly with x number of lights, which just doesn’t exist right now.
I’m gonna check out this node tree tho and see if I can make it work for my use case. Thanks @Okidoki !!!
You’re welcome and yepp… the shadertoy example does compute the “complete lighteffect” without actually using any light information expect the position as far i understand this to make a compeete “faked light”… so i just used the main part of this code… (again AFAIK). The position information via drivers is an trick i once saw because of shaders (or other shader languages) doesn’t always know every other geometry… but i wasn’t too deep into shaders yet (just interested reading) because my graphic card abilities wheren’t sooo good since rencently…