Isotropix Forums

how to render grass properly?

General Discussion about Isotropix and CG related topics

Re: how to render grass properly?

Unread postby sam » Mon Feb 08, 2021 5:59 pm

So just so you know SSS needs a geometry defining a volume to work properly. So unless your grass has a thickness like in real life (and not a flat polygon) it won't work. This is why you need to use diffuse backlighting on geometries that don't have any thickness.
Sam Assadian
Isotropix
CEO/Founder
User avatar
sam
 
Posts: 1670
Joined: Fri Jan 25, 2013 11:33 pm

Re: how to render grass properly?

Unread postby sam » Wed Feb 10, 2021 8:18 pm

Just a disclosure about SSS. SSS is an approximation to render objects that have a volume. Today the best approximation to SSS on very thin surfaces is diffuse backlighting since it actually evaluates everything coming behind: lights, emission, diffuse reflection etc...

SSS (diffusion or random walk) is a way to approximate what's inside a geometry from the entry color of the surface. In a way that's reverse rendering. To do so, it considers the inside of a geometry to be an homogenous volume with fixed set of physical properties (attenuation...). It doesn't evaluate objects within nor the light it receives or reflects/scatter inside.

True SSS would be transmission scattering, but you would need to actually model the different layers down to the bones. Obviously that would be insanely slow to render, not to mention difficult to model. So all we do is a (smart) approximation of an effect.

BxDFs are also approximations of a microfacet surface etc... everything is. So contrary to what you say diffuse backlighting IS the way to go when using flat geometries that have no thickness like grass.
Sam Assadian
Isotropix
CEO/Founder
User avatar
sam
 
Posts: 1670
Joined: Fri Jan 25, 2013 11:33 pm

Re: how to render grass properly?

Unread postby RayCaster » Fri Feb 12, 2021 4:37 pm

is he trying this with opacity maps or clip maps?
RayCaster
 
Posts: 54
Joined: Fri Oct 11, 2019 5:02 pm

Re: how to render grass properly?

Unread postby kirkr22 » Thu May 13, 2021 1:41 pm

Is there anything that makes grass /foliage rendering quicker in Clarisse5? Aadaptive AA ? Translucency?

I had to switch to Octane . While Clarisse does it slightly more realistic it's either forever on my 12 core Ryzen or smeared by denoiser.

With GPU renders getting more interactive and videocards getting more memory it's kind of making Clarisse a bit out of use for my tasks. So I need a reason to buy another year.
kirkr22
 
Posts: 122
Joined: Sat Apr 11, 2015 3:27 am

Re: how to render grass properly?

Unread postby mdkai » Fri May 14, 2021 7:42 am

Well don't get me wrong but did you see Akams example ?
Image
2,5 Minutes for a well looking patch of grass ?

About what timescale are we talking ? Did you set things up properly, with opacity map, translucency(back light) ?
Join us at the Discord https://discord.gg/G5cJj9A
mdkai
 
Posts: 354
Joined: Tue Oct 07, 2014 7:24 pm

Re: how to render grass properly?

Unread postby sam » Fri May 14, 2021 8:09 am

Hi Kirk22,

If your scene is GPU compliant (not too many BSDFS, bounces and fit in memory), GPU rendering offers the most bang for the buck. Period. I don't know which graphics card you have but an old GTX1060 should be about on par with a 12 core ryzen. We don't have a magic wand. For the money CPU are slower than GPUs for rendering simple scenes. But you can't really compare the two. It's like comparing a van and all its super high practicality to a Formula One.

If you want faster performance out of Clarisse, you need to invest in a bigger CPU because it only uses the CPU. For example, a AMD 3990x 64 core Ryzen really competes with GPUs but even though it is twice up to 4 times slower than a 3090. However, unlike with GPUs, performance is linear with complexity and more importantly you don't have any memory limitations whatsoever.

And grass fits in the simple scene cases. It's a lot of instances made of a simple 3 lobe material (diffuse, glossy and back diffuse)
Sam Assadian
Isotropix
CEO/Founder
User avatar
sam
 
Posts: 1670
Joined: Fri Jan 25, 2013 11:33 pm

Re: how to render grass properly?

Unread postby kirkr22 » Fri May 14, 2021 5:52 pm

mdkai wrote:Well don't get me wrong but did you see Akams example ?
Image
2,5 Minutes for a well looking patch of grass ?

About what timescale are we talking ? Did you set things up properly, with opacity map, translucency(back light) ?


I'd love to see a screen of raytracer and material settings . Because on my ryzen 3900x it would take around 40 minutes I think for 2k resolution. I use no alpha clip but rather flat geometry for each grass blade although. No SSS, just backlight .

So maybe I am doing a silly mistake I am not aware of.

I hate Octane actually. it's always a memory issue with it and you have to render you scene in parts to compose later and waste huge time for all that. Also Clarisse is so much more convenient in every detail . But Octane introduced the scatter node recently that allows to tweak scattering totally interactive. It serves now that purpose of look development too, to certain extent at least so it's a big question for me now to decide what to use.
kirkr22
 
Posts: 122
Joined: Sat Apr 11, 2015 3:27 am

Re: how to render grass properly?

Unread postby kirkr22 » Fri May 14, 2021 6:39 pm

sam wrote:Hi Kirk22,

If your scene is GPU compliant (not too many BSDFS, bounces and fit in memory), GPU rendering offers the most bang for the buck. Period. I don't know which graphics card you have but an old GTX1060 should be about on par with a 12 core ryzen. We don't have a magic wand. For the money CPU are slower than GPUs for rendering simple scenes. But you can't really compare the two. It's like comparing a van and all its super high practicality to a Formula One.

If you want faster performance out of Clarisse, you need to invest in a bigger CPU because it only uses the CPU. For example, a AMD 3990x 64 core Ryzen really competes with GPUs but even though it is twice up to 4 times slower than a 3090. However, unlike with GPUs, performance is linear with complexity and more importantly you don't have any memory limitations whatsoever.

And grass fits in the simple scene cases. It's a lot of instances made of a simple 3 lobe material (diffuse, glossy and back diffuse)



I would be appreciative for such simple scene example . I think I have something excessive somewhere that makes it longer than necessary. I recall I used Metal ray in 3d max years ago in some minimal but still enough and ok settings and it was nowhere that slow as I have in Clarisse.
kirkr22
 
Posts: 122
Joined: Sat Apr 11, 2015 3:27 am

Re: how to render grass properly?

Unread postby ionut_armasu » Mon May 24, 2021 1:58 pm

sam wrote:Just a disclosure about SSS. SSS is an approximation to render objects that have a volume. Today the best approximation to SSS on very thin surfaces is diffuse backlighting since it actually evaluates everything coming behind: lights, emission, diffuse reflection etc...

SSS (diffusion or random walk) is a way to approximate what's inside a geometry from the entry color of the surface. In a way that's reverse rendering. To do so, it considers the inside of a geometry to be an homogenous volume with fixed set of physical properties (attenuation...). It doesn't evaluate objects within nor the light it receives or reflects/scatter inside.

True SSS would be transmission scattering, but you would need to actually model the different layers down to the bones. Obviously that would be insanely slow to render, not to mention difficult to model. So all we do is a (smart) approximation of an effect.

BxDFs are also approximations of a microfacet surface etc... everything is. So contrary to what you say diffuse backlighting IS the way to go when using flat geometries that have no thickness like grass.


We are all right. Is just a matter of tools and what they are fit for. For example, after extensive tests , I can confirm that(as I like the subsurface scattering effect that I can achieve for grass in other software) in clarrise I can achieve it by applying SSS but not in an efficient manner after the whole thing is scaled up to billion of grass strand. It works to some degree, but not realistic unless you are prepared to wait for centuries to compute after it is combined with extensive AA strategy, so an animation will be bye-bye(which will confirm what Sam said). Yes, backface illumination is a form or doing it especially when the camera is not very upclose. Now, if back face illumination will have a gradient input so that you could mimick the scattering of light just like in real world, could work but keep in mind, the closer you get, the more you will start to see the limits of backface illumination and the more you wish to do something about it. After all, backface illumination is an approximation, so the closer you get, the more you will understand it is an approximation and why it looks fake.
I did try to use transparency channel driven by a megascans translucency map and the reduction in speed is up to killing the session completely because of lack of resources I suppose(mind that I do have a ryzen 3990x and still killed the session).
I find the best solution is to use transmission channel just as the opacity channel would be used and voila, the extremely realistic grass strands will start to appear. The transmission channel will be driven by a texture so that the scattering of light could be represented realistically.
There is another factor to take into account. The closer you are from the grass strands, the more you will like to increase the bounces of light so that it will also start to be visible that the grass has some level of translucency.

I did reply because I have a huge respect for people that are so determined that they built their own render engine. All my replies about this subject are not tested in clarrise 5.
ionut_armasu
 
Posts: 13
Joined: Fri Jun 19, 2020 5:52 pm

Re: how to render grass properly?

Unread postby ionut_armasu » Mon May 24, 2021 8:31 pm

Just as an example of light scattering into billion of grass strands,I attached this picture. Could be done using back face illumination? Most probably yes. But here is the thing... Would I, as a user, want to adjust the back face illumination of bilion of grass strands using a map that I will have to create from scratch just so that I have a very fine control over the light that is scattered and constantly adjust all until I reach the thing i like most or should I just use the map I have for translucency from megascans and just let the software do the job for me? I chose to let the software do the job even if the job might take longer compared to back face illumination.
But Indeed, if one wants animation, sss (even with thickened grass strands) or using the transmission, is not the way to go. The only option that will remain will be back face illumination. However,back face illumination on its own will not be sufficient in a scene like this.
Hard to fake translucency of stuff using illumination on the other face of the object while the object is not translucent. In the picture below is no cheating.. the effect is done purely by the translucency of the grass. Even on the hills, the subtle gradient in colour is done by the grass translucent properties. I didn't try to see how is with Clarisse 5 using SSS just to see how it goes since it would be faster, but maybe in the future I'll try it again

Nevermind the bad render...is just an example...
Attachments
20210524_203105.png
ionut_armasu
 
Posts: 13
Joined: Fri Jun 19, 2020 5:52 pm

Previous

Return to General Discussion
cron