Welcome to Antonio's Portfolio

The Home Section it's dedicated to general VFX subject.
To view my works please click in one of the tabs above.
I am responsible for modeling, texturing, shading, lighting, rendering and compositing.
Thanks for visiting, I hope you enjoy.

Monday, April 6, 2015

Renders Comparison part 2

Ok I finished some roughly tests to see how each render perform in a large scale scene.
This scene was an fbx file provided by Rodrigo Albano, an architect and great friend of mine.
I had the freedom to change a few things there, like some furniture downloaded from internet.
It has a little bit over 3.1 millions polygons, around 45 lights distributed over the ceiling(tray ceiling), under light shapes geo, and 1 HDR(shot at night) used in the light for the Sky, that illuminates the apartment by passing through windows with glass and open doors on the left side of the picture and a glass door behind the camera... And more then 100 shaders.
From one render to another I converted the shaders and lights as best as I could, trying to match same values in terms of color, glossiness/roughness, and light intensity, size, position etc... using a script that I wrote for this...
The renders settings for each of them was following the same process like in the simple scene test article that I wrote. If you didn't read that one, I high recommend you read it first to undestand the methodology used to make a fair compararison between them, so here's the link:
http://netocg.blogspot.com.br/2015/03/renders-comparisons.html
The only difference is that I raised the AA subdivds to 10 = 100samples and shaders, lights, GI samples to 2=400, max 800samples.
So here are the results:

V-ray
For Vray everything is straight forward, and the Vray-RT running in IPR mode was fast an crucial to easily have some interior light mood for a night scene that we do have in real life. The default shaders of the scene was all phongs, and I converted them really quickly to the standard Vray material VrayMtl... I added in Camera DOF, and a Vray Fur in the carpet with a VrayHair shader, I couldn't make the default maya fur to work I am not very into it.  I also used a VraySSSkin shader to the dragon statue on the right side of the picture.
The render came fast after hitting render. And after 1 hour and 11 min it was done. There is a bit of noise in the ceiling from the GI for sure and some white speckles here and there from the DOF, but the overall is good and consistent.



Renderman
The render took some minutes to be compiled/translated and then after that it really starts to "spit" the pixels to the Image Tool Screen.
Renderman Lights has only exposure feature to control the light intensity, so the light intensity may not match at some points, getting underexposure at some point and overexposure at others...
Also considering Renderman doesn't not have it's own fur system, I couldn't use any fur on the carpet, and I couldn't find a way to use the DOF in camera as well...
The shaders have been converted from the vray scene one to PxrDisney, PxrMetal, PxrGlass, and PxrSkin.
After renders is done, we still see noise in the ceiling where it is illuminated mainly by the indirect illumination(GI)...


Arnold
In Arnold, I couldn't figure out what was causing the super green color in the right side of the picture, for this scene I am using alShaders for everything, including the dragon statue in the right side(remember that the aLShader has SSS builtin)  and there is colors above one where you would see the visible lights, so ignoring those things we have an initial render time to compile/translate the scene a bit faster than Renderman, but still more slowly then Vray...
There was some DOF in camera but since I didn't render all we can see very much how it was. I couldn't use fur for the same reasons as in Renderman.
The render took more than 10h to render 22% of it, so I had to hit cancel because does not worth conclude it for this test... Whatever I am trying to prove by comparison here, is now pretty obvious... but the part in the center that get complete rendered is very clean and have a nice result and to be honest I was not expecting that render time so high! I was imagine something 4 times more the V-ray render like in the simple scene test. I double checked each thing in the scene, and couldn't figure out why that render time so enormously, every sample was right in the lights, shaders, render settings. The geos was all good with their normal and stuff, because I had checked as soon as I put my hands on them, and I fixed whatever imperfection I spot on, so considering the other renders get a decent render time, I really don't understand what happened here. Without the object or even with just one shader for everything, and deleted a few lights near that region, disable the DOF and the green thing still persist... Even at this setup to conclude 6% of render it took roughly 2h... So from past test using Arnold, we may say well it doesn't need 2 samples for light and for the diffuse, glossy, refraction and SSS render sampling, because Arnold cleanup super well with less than that, maybe you should not even need AA 10 because you not using textures at this test, only the DOF in camera... Well you're right in say that, and that could probably make the render drop 2-4 times,  so if that drops 5x let's say, the 22% that took me 10h would translate in 10h to render it 100% right? Well I guess so... Why not to take even lower, 4-6 AA only and rest is 1? Well AA 6 may do the job like the other ones, and have more reasonable time, but still high than the other I guess, but I have to say that at AA 4 the edges/shapes of your object look fuzzy/blurried, so your render will not look very define and crips as it should. I did this test with the simple scene once and the render time drop by half if I am not wrong, but the result was not acceptable... So in the end I beat if I cut all the "fat" Arnold may finish the render in the time I had presumed, something around 4x more then V-Ray, but if I do that, it means that I took more easily with him in terms of numbers considering that was the same settings I used for the others and it worked pretty decent...



Conclusion
Just to resume, we are not here to look at pretty picture, but looking forward to see an engine fire proof test, in this case for general things that we normally use in a daily basis scene. Not trying to compare this or that particularly support feature that the other render does not, as well not been picky in better looking things like for example this render does a better SSSkin shader or a displacement... Things like that could fall into a more "subject" realm that each person will have a different opinion about it...
Of course in this scene, some pipeline stuff get in my way, and I don't have time and patience to fine tuning 3 renders just for test... So I hope you understand that, instead of start to blame on me.
In the end what I was looking for is to compare the general behavior of each render in in most cases scenarios where the standard shader of each render are the shaders that are been used in the scene, I beliave that is what we normally have for most of our scenes in a daily-basis...
I thank you for your time in reading this "case study", for me it worth the try.

Sunday, March 29, 2015

Renders Comparisons

Hey guys, I've been using Vray and Arnold Render for a long time, and last week Renderman 19 was released so I couldn't skip a spin with it, and see how it looks in comparison with the renders that I normally use.

So here's a quick scene I did to test each of them, and some of their different GI calculation method.
It is a "cubic room" so no light can't get in, and GI can bounce all the way around. There are a few other objects in the left of the camera that you can't see at this distance.
The main light is a Big Area Light with an HDR image assigned to it that illuminates the scene from right to left, and the number of bounces are limited to 5.
I tried to match the same light intensity and shaders look. Basically Diffuse 0.5 for all and Specular pure white with 1.56 of IOR and some value in the spec roughness/glossiness.
I locked the resolution of each render to Full HD 1080p and it is been rendered in a 2.0ghz 8cores machine with 8gb of ram.
Also the numbers of the Samples/Subdivds used by Camera rays(AA), shaders, GI, and lights for all the renderers in order to produce similar results. Then we can compare quality/speed between their engines, of course some of them will have optimizations that others don't have, and that will affect render time vs quality, but this is the most correct methodology to use, considering that quality could be a subject thing that may vary between each person... In theory all of them have similar math in what relates to Monte Carlo Ray traicing. 
Another methodology could be if all of them have support to progressive render, where you set a time of 20min to render a frame. Then you would just go and compare results in a fixed time, instead of a "fixed sampling ratio".
Keep in mind that the test does not count subjective aspects related to artists or pipeline. We are trying to keep it out of the equation here, comparing general fixed aspects of the renders, this should cover general scenes that people may face from time to time. In other means nothing very fancy with millions of geometry, with a lot of lights, complex shaders and textures. We may try something more complex in future.

So here are the results:
Vray - the fastest one:

Renderman:
Arnold  - Slowest one but best quality of all:


Some notes:
First of all the models are from the internet, and I should had fix the quads with issues in the front...
All the three renders were done using the latest versions of each respective render for Maya.

For some reason I don't know why, Renderman got a warm color temperature. But I checked my lights in all settings, and none of them was been tweaked by any color swatch or color temperature attribute and even so I in all of the renders they was set to 6500K.
Also I am not sure why some parts of the car in the second image of Arnold test, had presented a bright highlight. I will not consider that assuming that could be something with the geometry or for some odd reason the shader may not get assign to those parts(the scene make uses of referenced objects...)

Surprisingly the BF+LC render time was 7minutes lower then the settings that I tend to use with Irradiance Map + Light Cache in Vray...
Also the render times could be lower if you don't need to use the LC feature Retrace Threshold, I will explain why in the conclusion.
I am sure that people will think that for the Vray tests the Light Cache Subdivs are too low. I would say maybe, but as a secondary GI it doesn't need as much as people think out there over the net... In other renders of mine even for animation the LC for second GI don't make much difference for the final quality from a 100 Subdivds to something like 1500...


Conclusion
In this initial test it's proved how each engine perform and their quality withing a "fixed Sample". Keep in mind that in a Complex scene you probably need AA 10 or 16 if you dealing with Motion Blur and Dof in render. Also you may have to rise your shaders, lights and GI samples as well, and I would say probably 2-4x times if you want fine results.
The images above have some noise inside the shadows that are related to the contribution of the Indirect Specular or GI that is hitting those part. None of the parts of the images that are been illuminated directly by the light have any kind of noise. And from what I know AA does help to alleviate noise in images but it can't do it efficiently or remove completely some specific type of noises, like the ones related to low samples in light that normally cause noise in it's shadow, that could also affect the speculars, and GI. or lower sample values in the shaders, that normally create noises in the reflection or refraction of it, or over GI
Now a days you can get rid of shadow noise in GI and lights by using a Denoiser in Comp, but I would advice that specular/reflection pass can't take benefit from that.

It's obvious that Arnold needs optimization in their render settings like the others.
From past experiences with Vray I know for sure that he needs the Russian Roulette optimization as well, to avoid spawning unnecessary rays. That is essentially critical with Refraction because of the Retrace Threshold feature Vray would shot Brute Force rays where he thinks it's necessary, and that tend to slowdown a bit everywhere the bucket goes rendering your scene. But the main issue will be objects with Refraction where he always will shot that type of rays really slowing down the render. Without that feature ON your animation will get flickering in the GI, and not only that but the GI and Direct light pass contribution in the materials with refraction will be wrong.
I suffered a huge impact by that feature in an animation project involving Blended Glass materials, with 2 glass objects one inside of the other, using Bump, Refraction glossiness texture maps and non-white color in their Refraction Fog color swatch... The impact would make the render time goes up close to the render time of the BF+BF mode depending on the scene considering he will shot BF rays for the secondary rays(all the other ray bounces after the first hit)...

So I guess for that particularly scenario I would try to use Renderman now a days because of the Russian Roulette optimization, and see how it goes, specially when they appear big in screen close to the camera like mine was...
Also I am sure there is still people how complain about Vray quality, or some issues it may appear surprisingly in render. I will assume part of that has gone in it's latest version 3.0. I could complain so far, 1 year of using this version already, and it was a good upgrade since the version 2.0 where I started to use it when I was studying at Gnomon School.

Despite the fact I like Arnold Render for what it is, "a beautiful pure Brute Force Render that create very good quality images", and have been using/testing it for 1 year, I can't fit him in my projects because of his higher render times for my taste. I am more happy now with it because the alShaders(shader developed by Anders Langlands) has some nice optimizations that makes it render times got much more acceptable, but even so it still the slowest of them.

I would like to open a little parenthesis here to mention what I hear from friends of mine who was big users of Vray in Architectural projects. Now a days they all switched to Corona Render. They say it is more fast then Vray with same or better quality(it seems Corona have all the optimizations up to these days, like Russian Roulette and others...). For now I can't test it in Maya, it still under development, and I don't know how well he does in Animation, of course he still does not have all the many features the above renders have support such as skin shaders, hair, volumetrics and many others features crucial to the standards of big vfx productions of our time...

So that's it for now, more over I will add few more lights and shaders for the other objects and see how it's going to behave.

Feel free to leave your comments and questions many thanks,
Antonio Neto.

Render Comparisons part 2 - Complex Scene:
http://netocg.blogspot.com.br/2015/04/renders-comparison-part-2.html


Additional notes updates:
I've spook with Vlado from Chaos group about the Russian Roulette technique, and he pointed me out this:
In V-Ray 2.x, this was controlled by the adaptive amount. In V-Ray 3.x, it is completely automatic depending on the type of ray and the situation in which the shading evaluation takes place - the user shouldn't have to worry about any of that.