Iray vs LuxCore: "Heads to Heads" Blind Comparison
Both images are 20 minute renders using the exact same scene file, HDRI lighting, models, morphs, textures and shader settings. Can you spot the differences? Which one is the Iray Reference? Which one do you prefer? Comment and discuss below. Thanks.
The LuxCore image was produced using the latest alpha version of the open-source Daz to LuxCore Render plugin and custom version of LuxCore Render v2.5. My goal is to reach 100% visual parity with Iray, then focus on the strengths of LuxCore: free network rendering, pre-tonemapper 32bit HDR image output, offline rendering with resume, real-time 32bit HDR light-group adjustments, OpenCL support, non-Nvidia GPU support, etc.
Links:
- yaluxplug thread: https://www.daz3d.com/forums/discussion/499531/open-source-release-daz-render-plugin-framework-with-yet-another-lux-plugin#latest
- yaluxplug github: https://github.com/danielbui78/yaluxplug/tree/experimental-4
- custom luxcore github: https://github.com/danielbui78/LuxCore/tree/experimental
Models: Twosret 8 HD, Victoria 8.1
EDIT: Images re-uploaded with labels.
Comments
a is lux render, b is iray, I prefer a
Good job. Maybe soon DAZ 3D will release the beta for DAZ Studio 5 using the new DAZ SDK and QT version and you can upgrade those APIs.
I plan on getting a Ryzen 7 5700H with Radeon Vega 8 GPU integrated by January; your work will put those cores to serious good use.
Thanks! I won't comment on which is which for now, to keep the "blind comparison" thread going a little longer. However, I will say that I like the greater range of lighting detail in "a", but I also think "b" gives a bolder, dramatic first impression. An true HDR image displayed on a HDR-capable monitor would hopefully give the best of both.
Regarding DS5 and the new Daz SDK/Qt versions, I look forward to a new official Daz API which officially exposes many of the currently undocumented feature additions and improvements over the years: like dForce simulation, GPU accelleration, etc... but I also feel some dread at the potential growing pains in porting plugins from DS4.5 compliant API to DS5.
I prefer b, with better shadows and reflections on the eyes.
I was glad to see your plugin & also your integrated LuxCore renderer in DAZ Studio (more or less, is this how I think DAZ Studio builds a scene to render? DS builts it in shared memory and then hands it over to a child renderer process?) although I think you said that remains unfinished.
Question: Is LuxCore migrating from the LuxCore file format that I am guessing you are exporting to, to USD format?
B is Iray
higher contrast with greater 3d depth
A looks more like an bad Blender renderer ;)
32 bit pre tonedmapped HDR images right?
if you are planning on doing HDR10 renderers like i do you dont need any pre tonemapped 32bit renderers.
HDR10 renderers looks best if you dont mess around with tonemapping but only use exposure and gamma settings.
Both images are actually 24-bit-per-pixel (8bit-per-channel), post-tonemapped images which is the only output Iray can do. To clarify, I was actually talking about luxcore's support for 32bit-per-channel raw HDR image file output, like EXR. I think HDR10 and other common HDR formats are good for distributing final render images, but my preferred work cycle is to keep render project data in 32bit-per-channel format and resume renders/modify data/tonemap an unlimited number of times as desired to produce new final renderes ready for distribution, like in HDR10.
I like B cause I like a little extra contrast in my images. I also like the reflection in the eyes more.
I have no idea which is which but I prefer "a" because of the skin SSS. Looking at the nose tip, for example, I get the impression of skin. I'm not sure how you would compare the two engines if the settings aren't directly equivalent.
Thanks for everyone's participation and comments so far! It seems the majority opinion is that they prefer the higher contrast (aka stronger highlights, darker shadows) in image "b". A few went further to point out that image "b" had more detailed eye reflections. All very good points, thanks!
Agreed: it's difficult to compare the two engines directly (aka "head to head"), so this is only a proxy-comparison using the output from the Daz to Iray Plugin vs the output from the Daz to LuxCore Plugin. Both are using the same exact project file, settings and source images. I am just clicking the Engine drop down and switching between "NVIDIA Iray" and "yaluxplug Render", in the DazStudio Render Settings pane. Both render engines were set to 20 minutes of render time and both were allowed to automatically stop when time was completed. I apoogize for the "Heads to Heads" pun in the title, since this could be confused for "head to head".
And thanks for bringing up SSS! I agree that SSS (Sub-Surface Scattering) is really important in making renders of human skin look life-like, and not look like a wax replica or a painted statue. Of course, too much SSS can make renders look like there are no underlying bones or muscles, just 100% glowing skin and subcutaneous fat.
In my opinion, other important components for life-like skin are: oily highlights, skin pores, and bumps/ridges which accurately conform to anatomical skin tension lines (Langer's lines). And all those oily highlights, pores, bumps and ridges need to properly express SSS in life-like ways. Example: a few screenshots for Daz HD models show close-up of the skin texture to advertise the detail... but they fail to reproduce how the real-world behavior of light reflecting/transmitting/scattering through these skin bumps and ridges is different from the flatter parts of the skin. For example: some bumps/blemishes may be filled with higher density collagen content and less water or fat content, which may decrease transmission and increase scattering. If these properties aren't reproduced, the visual effect of the skin bump looks like it's a caked on clump of makeup or excessive use of foundation/concealer. There are many academic papers discussing reproduction of skin using biologically based models based on real human skin. However, I'm not aware of any projects which take this a step further to accurately render scars, burns, acne, psoriasis, moles, freckles, cancers, etc. using their histological/pathological characteristics which have been well-known and documented with light microscopy and spectrometry for many decades.
Now a plot twist....
So far, many people have pointed out the differences and why they feel one is better than the other. However, no one yet has explicitly commented on their similarities or why they differ in the ways they do. Thanks to marble for bringing up SSS, I am now posting a new twist: both images are re-rendered with just one single change: SSS/Translucency is disabled.
Now which is which? How are they different from each other? How are they different from their previous renders with SSS/Translucency enabled? Which do you prefer? Comment, discuss, enjoy. Thanks!
EDIT: Images re-uploaded with labels, sorry for the confusion!
I prefer (a), which I also believe to be LuxCore. Although the eyes and skin in the iRay might have more detail then in the LuxCore; for me the net effect of the iRay render seems like diffuse lighting is missing or artificially tamped down to lower values.
Once again I prefer "a" even though it has been suggested that the order has been switched.
The reason this time (without SSS) is that "a" looks more natural for skin. Somehow the details of the creases and pores look softer and more skin-like. By comparison, "b" looks harsh, like painted plaster or stone. Also, that harshness affects the specularity so that "a" looks to have a more natural sheen than "b". The harshness shows, in particular, on the lips. Also compare shadow of the jaw line on each - "b" is severe by comparison although that might be more to do with how the render engine handles reflected light.
Thanks for everyone's participation! I'm really enjoying your opinions and explanations. I decided to re-upload the images with "A" and "B" labels printed directly on the images. I kept confusing which was "a" and which was "b" because my browser likes to insert new tabs into the middle of the tab bar rather than intuitively putting them at the end of the queue, hehe. Based on some of the descriptions for "a" and "b", I think some of you may have been having the same problem. Hopefully this will help avoid any further confusion.
Also, FYI: New alpha version of yaluxplug and custom luxcorerender have been released. Get them here:
OK, I still like A & I still think A is LuxCore.
Ok - so tell us already. :)
Hehe, sorry for keeping everyone in suspense! Here is the reveal....
Set 1:
Set 2:
As was pointed out, some of the things present in the Iray reference that was not in the LuxCore image were:
And here are a few addiional things that some people might have missed:
In my opinion, the brighter hightlights and darker shadows in the Iray renders are due to an additional non-linear tonemapping step that is not implemented by the yaluxplug plugin yet: “burn highlights” and “crush shadows”. Readers familiar with photoshop post-processing are probably well aware of these operations. However, the one advantage you can get from using Iray to do those steps is that they are done while the image is still in its internal HDR 32bits-per-pixel format. So there is no loss of image detail.
I think the subtle shadows on the jaw line and on surfaces that are at sharp angles to the camera are created by the TopCoat rendering phase. When viewed directly on, you don’t notice this TopCoat layer because it is so thin, but at an angle, you start seeing the TopCoat layer, especially on Victoria 8.1, as subtle shadows. This is also not implemented in yaluxplug yet.
Glossy Anisotropy, Refractions and Dual Lobe Specular rendering are other areas that need more work in the yaluxplug plugin.
As for most of the other differences, yaluxplug is not yet fully tuned so that the Iray parameters are converted to the proper LuxCore parameters to produce an identical visual result. I need to go back and tweak the roughness values, bump map strengths, SSS strengths, and specular strengths.
I’ll conclude my ramblings with these final thoughts: In my opinion, Iray and LuxCore are both really good physically based renderers. Both are capable of making very good renders, whether you think that means images with high contrast lighting or a wide range of color and luminance details. The brush is only good as the artist who wields it.
Two final renders for you:
Thanks again for everyone's involvement and participation!
I have just realised that I might have fallen into the browser tab order trap that you mentioned earlier so I'm not sure that I got my a & b correct but I hope that it was obvious from my descriptions (better SSS or jaw line shadow) which I was talking about. I opened these two images in two tabs and realised that the second was inserted before the first and not after it.
Anywhow, with these two renders, the jaw line shadow (light skinned model) is still more pronounced in one than the other yet the contrast is oddly less pronounced in that image so each image has features that look better than the other. I wouldn't know which is better but both are pretty good. I don't do many close-ups so either engine would be good enough for me.
Looks awesome. Would be great to see the LuxCore look like that particular iRay render.
...would like to see a side by side comparison of a wide shot oustide environment scene using both of the render engines' "Sun/Sky" mode instead of an HDRI.
...looked at the site and while I like some of the features (particularly out of core rendering and random tiling) I have one concern. It mentions that for Nvidia GPUs, V. 2.5 supports OptiX for RTX cards. Will this force it on older non-RTX cards like the current version of Iray does? Also wondering so you have to convert materials for rendering (like old LuxRender through the Reality plugin used to require)?
This is awesome, as a diehard Reality user dreading the day the authentification server goes offline I am extremely interested in what you are doing.
Yep, that's the goal! With each update of yaluxplug plugin, the LuxCore render is getting closer and closer to identical to Iray. Even with the latest version, I get confused and have to check which render engine is selected half of the time.
Yes, agreed - a physical sun/sky comparison would be interesting. Currently, I don't think the sun/sky features of Iray are accessible from DazStudio. For yaluxplug, naming any Daz light as "sun" or "sky" is enough to trigger the plugin to replace it with the corresponding LuxCore sun/sky components, and also transfers the translation/rotation properties from the Daz Light over to LuxCore's sun/sky.
You'll have to ask on the LuxCore forums for future plans for Optix and RTX. As far as I know, automatic enabling of Optix is only a behavior in the Blender LuxCore plugin. Yaluxplug talks directly to LuxCore and as long as the API supports it, I'll try to make sure non-Optix pathway is available. Also, there is an option in the advanced render settings where you can type in the exact render engine settings you want yaluxplug to send to LuxCore.
No. yaluxplug is a native DazStudio render plugin and is designed to read in IrayUber and PBRSkin shader settings and scale/convert them to the proper LuxCore settings. This works because both Iray and LuxCore natively use physically based rendering, so in most cases it is just a matter of converting to the proper units and scale. Almost all of the mathematical formulas are equivalent, since they are all based on the real-world physics of light (hence the term "physically based renderer"). Switching to and rendering with yaluxplug is like switching from Iray to 3Delight, just 3 clicks to get from the Iray rendered image to the LuxCore rendered image: (1) one click to select the drop down menu for render engine, (2) second click to select the desired engine, (3) third click on the Render button to start the render.
In many ways, Reality (and Paolo) and also Luxus were ahead of their time. Reality was designed to convert materials and settings from a non-physically based renderer (3Delight) to a physically based one. Since the mathematical formulas to calculate the renders were so different, Reality had to create a huge database with custom render settings for each material/model/texture. By contrast, converting from Iray to LuxCore is more like converting inches to centimeters or Celsius to Fahrenheit. I do have some support for 3Delight shaders and materials in yaluxplug, but you can also use the Conversion Plugin which converts 3Delight to Iray to create materials that will be compatible with yaluxplug/LuxCore.
Once I have Iray compatibility working more smoothly, I will actually go back and implement all the Reality plugin features, and the same goes with Luxus. That way, all your custom Reality scene files with Reality lighting and materials will hopefully work seamlessly with yaluxplug. I will also re-enable classic luxrender support too (my old luxrender code is still there, but I just haven't refactored it to be compatible with the new C++ class tree I'm using with LuxCore).
...actually in Iray there is a Sun/Sky setting that is a part of the integration into the Daz programme. it offers two options, one based on time, date, and latitude/lognitude and another that uses what is called the "sun chain" which allows the user to manually set the sun altitude and azimuth. I use the latter.
That's really awesome! Please post instructions and screenshots on how to find and set those parameters, because I've not been able to find anything to do that. Thanks!
EDIT: Nevermind, found them! FYI, it is in the Parameters Pane when you select the "Environment Options" node. Then click "Environment Mode" drop down and there will be the "Sun-Sky Only" option. Selecting this will unhide all the Sun-Sky options. I probably should just keep "Show Hidden Properties" permanently on to avoid this kind of embarrassment and days/weeks of effort searching for options. lol
I'll put Iray Sun-Sky conversion to LuxCore on my todo list, but right now, my project priority queue is packed full for the next 1-2 months....
...will do so tomorrow, getting late here and need to turn in.
Hi,
I found Your project just now.
Nice !!!
I have a question. Lights is not implemented yet ? Only distance light ? Because the spot light not working on the rendered image.
Thank You.
Just stumbled across this - it looks really promising.
Only issues I see with the render comparisons previously posted (at a cursory glance) is that the LuxCore noses are very translucent - I wonder if the transmit and/or scattering distances are being translated correctly? That will also explain the less pronounced jaw shadow. The iray version looks more accurate - the light should just be peeling around the edges - not illuminating the entire interior. That said, I do like the irises - much brighter and lively compared to iray.
I look forward to having a play with it when time allows!