Hello Arnold Community, I have just a simple question to ask about the way ray tracing works.
From what I remember, ray tracing is suppose to scale linearly the more polygons you throw at it?
But what happens if you have two models with identical polygon counts, but the way they're modeled has different surfaces and complexities.
Would both objects still render at the same speed, or would the object that has more bumpy surfaces take longer than an object that was more smooth/flat?
Here's an example I whipped up quickly in 3DS Max.
Both objects have the same polycount, but the one on the right has been given a displacement map to make it bumpy. Because a bumpy object creates more shadows and bounces around more light, do ray tracers need to create extra calculations for this, or do they handle the rendering the same as if it were completely flat?
Ray tracing generally has logarithmic scaling, not linear, with respect to increasing triangle counts. That means it can handle scenes with lots of geometry without slowing down too much. It doesn't mean that render times are identical for identical triangle counts when the triangles are modeled differently, since as you point out other things can happen, such as casting more rays, which can make the renderer slower.
Try it and check the Arnold log.
00:00:01 681MB | ----------------------------------------------------------------------------------- 00:00:01 681MB | ray counts ( /pixel, /sample) (% total) (avg. hits) (max hits) 00:00:01 682MB | camera 1202960 ( 9.28, 1.00) ( 37.63%) ( 0.22) ( 1) 00:00:01 676MB | shadow 443696 ( 3.42, 0.37) ( 13.88%) ( 0.05) ( 1) 00:00:01 677MB | diffuse_reflect 835687 ( 6.45, 0.69) ( 26.14%) ( 0.14) ( 1) 00:00:01 678MB | specular_reflect 714567 ( 5.51, 0.59) ( 22.35%) ( 0.20) ( 1) 00:00:01 678MB | total 3196910 ( 24.67, 2.66) (100.00%) ( 0.17) ( 1) 00:00:01 679MB | by ray depth: 0 1 2 00:00:01 679MB | total 45.3% 50.4% 4.3%
The number of camera rays won't change.
But you'll probably have more shadow rays with the displaced surface. That's how shadows are calculated, Arnold traces shadow rays to see if the lights are blocked by geometry.
You may or may not have less diffuse and specular reflection rays. Depends on the lighting and scene set up.
Also note that displacement takes time. And if you add subdivision to get better displacement, then there will be more polygons. Both of those happen before any rays are traced.
I'm having trouble loading up the raycounts in my Render log, but I did save out the information that popped up. Here is the render with the displaced surface (I collapsed the modifiers so it's actually just one mesh) END FRAME 0; TASK 1 OF 1; ; 9.75s; 0 faces; MEM 1453 MB; Timing Statistics Report: Translation - Total: 0.297s Translation - Geometry: 0.228s Translation - Translation Misc.: 0.061s Translation - Scene: 0.006s Translation - Materials & Textures: 0.002s Translation - Environment: 0.000s Translation - Camera: 0.000s Translation - Lights: 0.000s Session Destruction: 0.000s Session Creation: 0.000s Here is render with the smooth surface only: END FRAME 0; TASK 1 OF 1; ; 9.98s; 0 faces; MEM 1449 MB; Timing Statistics Report: Translation - Total: 0.299s Translation - Geometry: 0.231s Translation - Translation Misc.: 0.060s Translation - Scene: 0.005s Translation - Materials & Textures: 0.002s Translation - Environment: 0.000s Translation - Camera: 0.000s Translation - Lights: 0.000s Session Destruction: 0.000s Session Creation: 0.000s From what I can tell, the object with the smooth surface took longer to render? But only by .2 seconds.