How to match shading on two not parallel surfaces?

How to match shading on the fin to the ground? I applied data transfer , face corners, normals but looks like neighter option in drop down is capable to make that grass “fin” be seamless with the ground . Is there any trick to do so?

Is this not just a material/light issue?

1 Like

material is same . the fin object just has an alpha

There is an angle between the gras and the ground… if you do not have multiple gras planes in some criss cross manner ( i guess you do not want particles for the grass ) and different sizes there always will be a visible different in lighting even when using the same solid material.
:person_shrugging:

AlsoL:
You might lighten and darken your material… or (especially when not real gras texture is applied) the difference is not directly visible (i explictely lightened the lower part but the “border” is less visible because the green strips “overcast” this)


So i gues syou have a second look if the texture is complete and do not overthink this in this early state :wink:

1 Like

Shading is a matter of vertex normals, not necessarily an angle in between faces . My guess it’s a precision matter of data transfer modifier I use to borrow normals from the ground. I have seen people do it seamlessly in mobile games before. Actually I did too and not sure why I can’t now.
Also there is an ancient “fin shader” idea where pixel shader samples surface normals and put a fin by vertex shader . Seen it in one of GPU gems Nvidia published decade ago. So if a shader can why we can’t just by Blender tools. Wonder whats the trick?

The inital normals of the ground and the grass fins are orthogonal to each other. Of course you may change them.
But again: a simple grey material simply may be to simple and show too much difference.
Also: som mixing with the ground material to “shade” the grass accordingly may do the trick.

So when you have seen and done this before… tell the community ??


 

( And the moaning about blender doesn’t help if you give no reference about some technic you think of so that someone may show how do do this in blender. :person_shrugging: Or someone may learn something from that. There are dozen of gras shader for blender. )

The fact that the material is the same - well, that’s sort of what I was getting at. The problem could simply be the material and the angle of lighting.

The same sort of thing, both objects have same material:

We see the circle over the ground nonetheless, because that’s how the 3D shader works. It’s at a different surface angle to the light.

If I rotate the circle 90 degrees parallel, the shading now matches.

So ultimately, I would possibly address this by not using a BSDF in the first place. There’s no data transfer, normal editing, etc etc etc… just a shader change.

As to “how nvidia does a thing with whatever” - i know nothing about that, so cannot offer an idea on how to recreate their approach within blender.

2 Likes

Maybe there should be some more context. Even in 2024 racing games the grass don’t blend into the ground but there are tuft of grass clearly different from the sandy ground…

So if there is no further texture applied i don’t know why to discuss some slightly different shades of gray here… :person_shrugging:

ok. thanks guys . I didn’t mean flat color shader. I need the grass fin share the shading and highlight spot with the ground. I wonder if normal transfer could be done by geometry nodes somehow or its just doesn’t have such a domain ?