I was making stylized grass following a YouTube tutorial (I can provide a link to the original creator), and I ran into a problem when converting the system from EEVEE to Cycles.
For the most part, the entire grass system still works, except for one thing. I wanted the grass blades to keep consistent lighting while still receiving light from the environment, so I used a “Diffuse BSDF” and connected an “Attribute” to its “Normal” input. The attribute was the “Normal” output from “Distribute Points on Faces”.
As far as I understand, this was giving all the grass blades the normal of the surface they were distributed on. This system works in EEVEE, but in Cycles the “Attribute” connection seems to be ignored.
So my question is: is there a way to replace this method with something that works in Cycles?
I’d really appreciate any suggestions or possible solutions. Thank you!
This method won’t be able to work perfectly in Cycles. It’s usually done in Eevee and there is a reason for that.
Eevee is able to use rotated normals and make a face be lit from any direction, including from the rear. Eevee does its direct lighting like a video game, by just changing the brightness of a face depending on if its normal is turned toward the light or not.
Cycles however uses realistic light rays and so is highly dependent on the actual shape and position of faces. If a light ray is coming from the rear, no amount of normal trickery will compensate for that, the ray is just on the wrong side of the face.
Something that you could try in Cycles is to mix some translucency into the material. It will be a bit closer, but never quite the exact same as the Eevee version.
Thank you very much for your response! Yes, I arrived at a similar compromise using a Mix Shader with Diffuse and a Color Ramp. Unfortunately, I can’t move away from Cycles.
Thank you for such a detailed answer. I’ll keep the thread open for now, in case someone comes up with another idea.
In any case, I really appreciate your support and help with getting deeper into the topic
Upd: I tried adding translucency, and it’s actually interesting solution. It definitely allows a wider range of possible camera angles
The Key is to use curves(in render) and to turn off Light Tree in Cycles render properties. Also try to store the same attributes names in the base plane.
Wow, thank you for an entirely new approach to the problem. I really appreciate the time you put into this. There really are some wizards roaming this forum. And a huge thank you for the file as well, it really gives me something to study, and hopefully I’ll learn something new from it. Thank you so much for the help!