Ok thanks, you are correct that my openCL is now 3.0. I am guessing it was the lates nvidia driver update since thats the only thing updated in the time this happened.
/edit: okay that wasn't it, the earlier drivers also install 3.0 so Im not sure thats my particular problem here.
Ok thanks, you are correct that my openCL is now 3.0. I am guessing it was the lates nvidia driver update since thats the only thing updated in the time this happened.
/edit: okay that wasn't it, the earlier drivers also install 3.0 so Im not sure thats my particular problem here.
Like I said, uninstalling AMD APP SDK didn't fix it for me either: the only fix was to pull the original OpenCL v2 DLL that is installed with Windows off of a hard-drive backup. I still think that OpenCL v3.x will cause Reality_DS.exe to crash without any error messages, but that's just my opinion. Best of luck to you.
I understand but uninstalling my drivers did remove the opencl.dll, installing an earlier driver where everything was working also installed 3.0, so reality apparently was working with 3.0 since it did not come from the latest release as I had hoped. But it is academic as I have bought a new machine and learning iray finally. It was worth a shot, and Im still interested to see what happens with your work, a luxrender plugin that actually understands the iray surface would be amazing, something reality couldnt do. Cheers!
I understand but uninstalling my drivers did remove the opencl.dll, installing an earlier driver where everything was working also installed 3.0, so reality apparently was working with 3.0 since it did not come from the latest release as I had hoped. But it is academic as I have bought a new machine and learning iray finally. It was worth a shot, and Im still interested to see what happens with your work, a luxrender plugin that actually understands the iray surface would be amazing, something reality couldnt do. Cheers!
I can't argue with your logical conclusions there, but if you just want to double-check just for giggles, the following A/B test to see if it is related to opencl.dll will only take you 1 minute or less:
Test A:
1) Run Reality.exe and confirm that it crashes instantly without opening any windows.
Test B:
1) Create an empty text file in the Reality_DS folder, next to the Reality.exe.
2) Rename the empty text file to "opencl.dll".
3) Run Reality.exe.
Anyway, thanks for the kind words! Feel free to try yaluxplug+LuxCoreRender in its current state: there is already decent Iray Uber and PBR Skin shader support, it's just missing a few more features like Top Coat and Iray's default post-effects for burning highlights and crushing shadows.
Well it turns out you were right about opencl, I found 2.0 online (I did this before I saw your reply above), grabbed it and tried it and lo and behold reality launched. Why reality was working until the very latest nvidia driver update is... weird. So thanks for your help, I do plan on checking out your plugin once I get my new system. Cheers!
I added a new options for setting the CPU cores number for render.
A selectable imagepipeline plugin "CAMERA_RESPONSE_FUNC".
I modified Your Override saturate options to changeable (scale 0-2 default 1).
I will add a new Override option for change the skin reflection (some character have a too shiny skin when the normal maps on).
I will a new Render mode " Full hybrid" - openCL-CPU + openCL-GPU + CPU, Tested working well with selected CPU-cores.
And now I need Your help.
How can I send a command to the Luxcore in realtime to change the imagepipeline like: Film::SetImagePipelines(const u_int index, ImagePipeline *newImagePiepeline).
I would like to change the "CAMERA_RESPONSE_FUNC" in realtime by enum on logwindow like Luxrender (what using for Reality).
At the moment I can get a relative quiet and fast render with my amd rig, faster than the Iray-CPU.
Thanks for the feedback! I am very happy to hear that you are able to use the plugin and even extend the source code!! There are a few things that I would like to add in ASAP, but just have not had the time: Subdivision support to enhance/smooth the rendered geometry, TopCoat support and Burn/Crush support to better match Iray's render output. I should just block out time to do this, since it would only take me about 2-3 hours of work to hardcode some preliminary settings. Then I can go back and add in customizability and UI for those features, that usually takes me the longest amount of development time.
How can I send a command to the Luxcore in realtime to change the imagepipeline like: Film::SetImagePipelines(const u_int index, ImagePipeline *newImagePiepeline).
I would like to change the "CAMERA_RESPONSE_FUNC" in realtime by enum on logwindow like Luxrender (what using for Reality).
I actually want to do some realtime changes too: add DeNoise as a final exit stage before quitting instead of at the end of each render pass. Right now, real-time changes require modification of luxcoreconsole.exe. You can see some of my modifications here: https://github.com/danielbui78/LuxCore/commits/experimental
luxcoreconsole.exe is actually just a small wrapper that passes CFG and SCN files directly into the main render engine loop for parsing and processing, like a black box. So it is not very helpful in learning how to manipulate the rendering and image pipeline API. When I have time, I will study the luxcoreui and pylux source files... maybe they will have some source code that does something similar to what we want ... or maybe I will just ask Dade or someone on the LuxCoreRender forums. hehe, that will probably be fastest.
So We can set up the denoiser start on the options panel slider, by the percent of the render proccess. ex: 10 percent - after the render started, 95 percent - nearly end of the rendering...
This working with haltspp, halttime, and the haltthreshold too. And We can start or stop, on Your LogWindow.
We can select 3 Quality level "BASIC" , "MEDIUM" , "HIGH"
I added options for Samplers "SOBOL" , "METROPOLIS"
I added options for Filters "NONE" , "BOX" , "GAUSSIAN" , "MITCHELL" , "MITCHELL_SS" , "BLACKMANHARRIS" and a film.filter.width slider.
I added options for Light Strategy "UNIFORM" , "POWER" , "LOG_POWER" , "DLS_CACHE"
I added Contrast, Brightness, Saturation, Hue, Sharpen/Blur sliders to Your LogWindow. This working real time. We can save and load the settings.
So at the moment We have a very handy plugin.
You can focus to the material conversion. :)
And last. I need a little help.
How can I get the actual(selected) viewport camera dimensions like width height
Because if I have more different camera, with different setup, this system not realy good.
The problem is. The SDK version of DzCamera, do not have a pixelsHeight an pixelWidth parameters. I don not Know why, because the script version have.
I tried : getViewportMgr()->getActiveViewport()->get3DViewport()->getCamera() I can get the camera, but no parameters to get the dimensions.
I tried : DzProperty with findProperty("Pixel Size"); I can get back this parameter by DzIntProperty getValue(), but this is not a separated numbers. this give me a (width+height)/2 value.
When I can fix this problem I would like to send the .dll for test on Your system. If is not problem for You.
That's amazing! I am actually working on a redesign of the plugin which will launch an interactive python interpreter with pyluxcore library instead of luxcoreconsole. This will then let us make changes in realtime just like Blender's LuxCore plugin. Currently, I'm having trouble building the pyluxcore library on mac. Once I get this working, I'll post it here.
And last. I need a little help.
How can I get the actual(selected) viewport camera dimensions like width height
Because if I have more different camera, with different setup, this system not realy good.
The problem is. The SDK version of DzCamera, do not have a pixelsHeight an pixelWidth parameters. I don not Know why, because the script version have.
I tried : getViewportMgr()->getActiveViewport()->get3DViewport()->getCamera() I can get the camera, but no parameters to get the dimensions.
I tried : DzProperty with findProperty("Pixel Size"); I can get back this parameter by DzIntProperty getValue(), but this is not a separated numbers. this give me a (width+height)/2 value.
When I can fix this problem I would like to send the .dll for test on Your system. If is not problem for You.
Thank You !
I'm confused with what you are trying to do. As far as I know, there is no pixel Height or pixel Width parameters for the DzCamera because the camera object is just an abstract object in the virtual scene and has no knowledge of any pixel information.
Are you trying to get the pixel dimensions of the viewport on your GUI? I'm not sure why you would want this unless you are trying to render an overlay directly on top of the GUI. If that's the case, then you can try: ...->get3Dviewport()->getViewport()->getView(). This returns a DzView object, which is a subclass of QWidget, which means you can get the XXXX.width and XXXX.height from the DzView object. Note, that the DzView's aspect ratio may not be the same as the DzCamera's aspect ratio, so you will have to do more calculations from that.
If you are trying to get the specified Height/Width that is specified in the Renderer, then those are passed by DazStudio to the yaluxplug::render() funciton via the "DzRenderOptions &opt" argument. "opt" is then passed along to the internal yaluxplug functions to process into CFG/SCN data. DzRenderOptions::getImageSize returns a QSize structure with the exact dimensions that DazStudio wants yaluxplug to render the image.
If you are trying to find some kind of camera pixel dimension like a real-world digital camera's image sensor, then that is not simulated by the base DzCamera class.
Let me know if it's something else you want to find out. You might have to ask the regular Daz forums if the above info doesn't answer it.
"I'm confused with what you are trying to do. As far as I know, there is no pixel Height or pixel Width parameters for the DzCamera because the camera object is just an abstract object in the virtual scene and has no knowledge of any pixel information. "
You can see the script version of DzCamera have pixelsHeight, pixelsWidth parameters. The SDK version do not.
And I talking about My added cameras, and not the basic cameras like Prespective view.
The problem is: If You add a camera to the scene, and You set up the dimensions on the properties tab to 1200x2000 for example.
The options panel dimensions not changeing. And You send a wrong values for the film.width and film.height because You got it from the DzRenderOptions.
The DzRenderHandler have a correct values.
DzViewRenderHandler *handler = new DzViewRenderHandler(old_handler->getSize(), old_handler->getStartingTime(), QString(""), true);
QSize csize = old_handler->getSize(); Have the correct values, when the render button is fired. In the last second. So you can not show the camera dimensions for an Info panel for ex.
The aspectRatio same. But actualy We can send the correct values from the old_handler.
What I want to do? I added a small info panel to the top of the options(Yalux options). And I would like to show the actual Camera name, and dimensions.
The Camera name easy to get from DzCamera. But Our added camera dimensions !!! nearly inpossible.
But Your little snipet helped me thanks again! Realy nice. And working. Five extra line, so not a big something.
At the moment I can write everything to the panel, what I wanted.
And now I would like to add a Render queue. When I have a little time for that.
First of all I want to clean the code. - I have some green patch after the lot of try :)-
A check everything double. And when I fixed everything I would like to send the .dll and the source for test on Your Nvidia system. If not problem for You.
And last I am not a pro coder, this is a hobby for me. I can coding after my work. :) And I have never used c++ and visual studio so I am just learnig now.
I think We do not realy need something else for this little plugin. Only the good material conversion. What is the most important. Because I bought the Reality plugin two years ago.
But I just fighting with the materials for days, and I have never got a good result. So I am realy waiting for Your work with the materials, shaders, lights. :) And I know that is a terribile job.
You can see the script version of DzCamera have pixelsHeight, pixelsWidth parameters. The SDK version do not.
OK, I think I see what you are talking about now: the DzCamera objects have a group of Properties named "Dimensions". You must enable "Use Local Dimensions" in order to see the sub-properties for Dimensions/PixelSize and Dimensions/AspectRatio. Is this what you are talking about? If so, you aren't able to access it with the SDK because the API is too old. What you can do is use the Qt4.8 QMetaObject/QMetaMethod system (aka RTTI) to query the functions that are exposed to the script interpreter. You will need to lookup the function name, function return type and arguments return types. Of course, the script method will work too and sounds like you already have it implemented. So it's probably unnecessary to use qmetaobject system unless you are having performance issues.
A check everything double. And when I fixed everything I would like to send the .dll and the source for test on Your Nvidia system. If not problem for You.
Sorry, I don't have an Nvidia GPU.
And last I am not a pro coder, this is a hobby for me. I can coding after my work. :) And I have never used c++ and visual studio so I am just learnig now.
That's no problem. Every expert must first start out as a beginner. So far, it sounds like you are making a lot of progress and are learning very very fast!
I think We do not realy need something else for this little plugin. Only the good material conversion. What is the most important. Because I bought the Reality plugin two years ago.
But I just fighting with the materials for days, and I have never got a good result. So I am realy waiting for Your work with the materials, shaders, lights. :) And I know that is a terribile job.
One of the biggest reasons why materials may not render correctly in LuxCoreRender is due to use of a non-Nvidia GPU and corresponding OpenCL driver/compiler. If you do not have an Nvidia GPU, you should always render a reference image with LuxCoreRender set to PathCPU in addition to the PathOCL renderer. It doesn't have to be high resolution, just enough resolution to make sure your GPU renderer is producing the same output as the CPU reference. That way, you can make sure that any "fighting with materails for days" is not actually due to bugs with a non-Nvidia OpenCL driver/compiler. Good luck.
OK, so I compiled the YaluxPlugin & the RenderKitReady plugin and the Yax is OK but I had to change the output path for the ReadyKitRenderer because I did not want to edit permissions on any of my system drive.
but the file that is actually there is the readykitrenderer.lib which I suppose is actually the readykitrenderer.dll that didn't get renamed from readykitrenderer.lib for some reason. Is that right? I want to rename it & manually copy into the plugin directory so DAZ Studio. Sorry, I've been almost exclusively a UNIX developer.
I notice the yaluxplug.dll is about 766kb and also has a yaluxplug.lib file that's only 8kb so for that reason I'm pretty sure the linking failed for the readykitrenderer.dll
OK, so I compiled the YaluxPlugin & the RenderKitReady plugin and the Yax is OK but I had to change the output path for the ReadyKitRenderer because I did not want to edit permissions on any of my system drive.
but the file that is actually there is the readykitrenderer.lib which I suppose is actually the readykitrenderer.dll that didn't get renamed from readykitrenderer.lib for some reason. Is that right? I want to rename it & manually copy into the plugin directory so DAZ Studio. Sorry, I've been almost exclusively a UNIX developer.
I notice the yaluxplug.dll is about 766kb and also has a yaluxplug.lib file that's only 8kb so for that reason I'm pretty sure the linking failed for the readykitrenderer.dll
What is you goal? If it's just to render with Lux or LuxCore, then you just need yaluxplug.dll. The readykitrenderer is only needed for building new DzRender plugins. And yes -- it sounds like it failed: lib files are static linked like .a files. Renaming it won't work.
BTW, if you are cloning from Github: my latest work is actually not in the main branch (update-2021) but in the experimental branches (currently experimental-4). I've delayed merging it back into the main branch because I haven't re-implemented LuxRender pathway for legacy rendering support yet.
If you are asking what happened, that's a typical Windows newline vs. carriage return vs. newline+carriage return editor behavior. I try to set my code editors and Github Desktop to intercept and ignore that stuff so it isn't spammed all over the Github commits, but it's almost a lost cause.
OK, so I compiled the YaluxPlugin & the RenderKitReady plugin and the Yax is OK but I had to change the output path for the ReadyKitRenderer because I did not want to edit permissions on any of my system drive.
but the file that is actually there is the readykitrenderer.lib which I suppose is actually the readykitrenderer.dll that didn't get renamed from readykitrenderer.lib for some reason. Is that right? I want to rename it & manually copy into the plugin directory so DAZ Studio. Sorry, I've been almost exclusively a UNIX developer.
I notice the yaluxplug.dll is about 766kb and also has a yaluxplug.lib file that's only 8kb so for that reason I'm pretty sure the linking failed for the readykitrenderer.dll
What is you goal? If it's just to render with Lux or LuxCore, then you just need yaluxplug.dll. The readykitrenderer is only needed for building new DzRender plugins. And yes -- it sounds like it failed: lib files are static linked like .a files. Renaming it won't work.
BTW, if you are cloning from Github: my latest work is actually not in the main branch (update-2021) but in the experimental branches (currently experimental-4). I've delayed merging it back into the main branch because I haven't re-implemented LuxRender pathway for legacy rendering support yet.
Hello! I need your help with YaLux plugin. If the author of the plugin keeps on working, I have a couple of issues with lightning and materials, when exporting scene from Daz Studio. Maybe this little feedback will help to solve similar issues.
My settings are - DS 4-20 Beta, Yalux v. 0.7, LuxCore 2.5 (I used both experimental pack and base LuxCore 2.5 with necessary files from sdk). Rendered with CPU only (AMD A-8 3510MX with AMD Radeon HD GPU). OpenCL (Hybrid) doesn't work because of the outdated OpenCL 1.1 version, so CPU was my best choice for that moment.
1) First of all - if the plugin can convert Iray lightning with Environment and Tonemapping settings, which lights should I use - HDRI, EXR, or native Iray lighs (spotlights etc)? I made a series of quick tests with most bugless EXR and HDR lights I have (Click N Render IBL Sets for Iray, Iray Fantasy Lights by GolaM) and with similar single IBLs without additional lights. Here are some images from Iray and LuxCore with a simple vase (Diffuse only, Glossy Plastic shader) and with Genesis 8 Female Base with hair and clothing. The files attached to the post. What I saw right away - LuxCore renders fast and keeps all shadows and highlights but eats diffuse color. It understands the settings for human skin (G8), keeps old 3Delight diffuse texture, but destroys the glossy shader for the hair and ceramic\plastic objects. I did not tested it with metals and glassware yet. How to fix it? Increasing Diffuse Saturation in render options doesn't help at all.
What about old LuxRender meshlights, sunlight etc (they come with old Reality 4 plugin for DS and I find them very handy). Can I convert old Lux-Reality lxs. scenes for LuxCore 2.5 or render from DS using this meshlights?
2) At second - is there any native materials for LuxCore, and can it use old LuxRender materials? Before I had deal with LuxRender 1.3 - 1.5, which had the great library of materials, they worked a bit better than Iray ones. As I understand, Yalux is purposed for Iray materials only, so any other (3Delight, custom textures) must be converted to Iray?
3) How to save the rendered picture from DS? When I cancel the render process, Yalux offers me to save the image in the chosen folder, but it gives me only blank black or unreadable files. The actual images fall into the Temp folder for renders (I named it DAZ_Temp), along with all PLYs and scenefiles and they are much smaller than render dimensions. How to set up the right way for exporting images - or how to export them from the main LuxCore window?
The second problem is that the images come too noisy from the start and do not clear much during the rendering (I had not this issue in any old Lux). What settings in LuxCore are responsible for denoising and improving the quality of renders?
Thanks in advance for help - LuxRender was such a great tool and hope LuxCore will be much better, the more I feel it works much faster for my system and understands at least a half of settings in IRAY IBL lights. The old Luxrender 1.5, for example, couldn't use Click N Render IBL Sets because they are too dark by themselves without Tonemapping and Environment settings. I hope Yalux will be developed, similar to Luxus and Reality.
if i had to guess, i'm not sure if the setting for the IBL is the same in LuxCoreRender
but in the code for LuxRender, when Paolo changed the defult code fro IBL use to
LightGroup "IBL"
LightSource "infinitesample"
it fixed the issue of HDR's just fireflying
I'm not sure if that is being utlized
as for the gloss shader
in Luxrender
I think everything works off a exponential scale as far as gloss
So a gloss value of 50% isn't Half gloss to mirror coat
its more of a real world respentation of gloss numbers where to even get close to mirror finish you are looking at 95% and above
I do not know if its just the case that the plug in is taking raw numbers from iray settings
glossness and roughness are inverted settings
I'm also unsure if LuxCoreRender's shaders are even use Roughness because Reality only ever used Gloss/Spec rather then Rough/Metalness
But i am WAY behind the curve
Basically you have to thinking LuxCore terms and setting and not in Irays
Hello! I need your help with YaLux plugin. If the author of the plugin keeps on working, I have a couple of issues with lightning and materials, when exporting scene from Daz Studio. Maybe this little feedback will help to solve similar issues.
My settings are - DS 4-20 Beta, Yalux v. 0.7, LuxCore 2.5 (I used both experimental pack and base LuxCore 2.5 with necessary files from sdk). Rendered with CPU only (AMD A-8 3510MX with AMD Radeon HD GPU). OpenCL (Hybrid) doesn't work because of the outdated OpenCL 1.1 version, so CPU was my best choice for that moment.
I don't think I made a v0.7, maybe you are missing some numbers: can you send me a link to the file you downloaded or the exact filename of the zip file? If you are using the latest release, it was probably v0.4.1.
1) First of all - if the plugin can convert Iray lightning with Environment and Tonemapping settings, which lights should I use - HDRI, EXR, or native Iray lighs (spotlights etc)? I made a series of quick tests with most bugless EXR and HDR lights I have (Click N Render IBL Sets for Iray, Iray Fantasy Lights by GolaM) and with similar single IBLs without additional lights. Here are some images from Iray and LuxCore with a simple vase (Diffuse only, Glossy Plastic shader) and with Genesis 8 Female Base with hair and clothing. The files attached to the post. What I saw right away - LuxCore renders fast and keeps all shadows and highlights but eats diffuse color. It understands the settings for human skin (G8), keeps old 3Delight diffuse texture, but destroys the glossy shader for the hair and ceramic\plastic objects. I did not tested it with metals and glassware yet. How to fix it? Increasing Diffuse Saturation in render options doesn't help at all.
I will try to look into this when I have time, but you should be loading Iray materials instead of 3Delight materials for use with yaluxplug. Double-check your surfaces and switch to the Iray material on your figures if one is available --> that may fix many of your problems, since my 3Delight material to LuxCore material conversion functions are not as extensive as the Iray material to LuxCore material conversion functions. In other words, you will ALWAYS get better results if you make sure you have Iray materials applied in Daz Studio prior to rendering with yaluxplug.
What about old LuxRender meshlights, sunlight etc (they come with old Reality 4 plugin for DS and I find them very handy). Can I convert old Lux-Reality lxs. scenes for LuxCore 2.5 or render from DS using this meshlights?
I have some preliminary function stubs to support Luxus/Reality-specific lighting, but it is very primitive and may not work yet. This is only for Daz Studio assets. There is very basic support to read the old LuxRender lxs scene files in the new LuxCore render engines, but in my experience it does not work well and has sometimes causd full machine crash / hard-locks. You are better off learning the new Scene file format and manually translating all of your old LXS scene descriptions to the new LuxCore description format (CFG/SCN): https://wiki.luxcorerender.org/LuxCore_SDL_Reference_Manual_v2.5. I'm sorry that there isn't an easier way to use old lxs files.
2) At second - is there any native materials for LuxCore, and can it use old LuxRender materials? Before I had deal with LuxRender 1.3 - 1.5, which had the great library of materials, they worked a bit better than Iray ones. As I understand, Yalux is purposed for Iray materials only, so any other (3Delight, custom textures) must be converted to Iray?
No, there is no native material format in Daz Studio that directly maps to LuxCore material definitions. For now, "Iray Uber" has the closest translation to LuxCore material definitions.
3) How to save the rendered picture from DS? When I cancel the render process, Yalux offers me to save the image in the chosen folder, but it gives me only blank black or unreadable files. The actual images fall into the Temp folder for renders (I named it DAZ_Temp), along with all PLYs and scenefiles and they are much smaller than render dimensions. How to set up the right way for exporting images - or how to export them from the main LuxCore window?
Hmmm, yaluxplug should use the same UI dialog boxes that Iray Render uses when you finish / cancel your render and select save image. I will try to verify when I have a chance, and fix any bugs I find. If you are getting black or blank / unreadable files, then there may be some issue with the renderer. Currently, there is no funciton to export the PLY and scene files from the Temp directory yet. That is the next thing on my to-do list.
The second problem is that the images come too noisy from the start and do not clear much during the rendering (I had not this issue in any old Lux). What settings in LuxCore are responsible for denoising and improving the quality of renders?
The noise in your images looks like the insufficient power to in the scene light source combined with over-compensation from the LuxCore tonemapper, but I do not see you mention tone mapper settings, which is just as important as knowing the power/intensity of the environment, which is also not mentioned. When I have time, I will look into these IBL assets to see if they need custom power/intensity corrections when translated to LuxCore. For now, try increasing your Environment Intensity by 100x or 1000x in the Environment Options object, and decreasing the Film ISO. Make sure the LuxCore tonemapper is set to use TONEMAP_LINEAR, otherwise every adjustment you make in lighting will be inversely corrected by the LuxCore tonemapper and result in practically no change to your overall image brightness.
I may be busy for another several weeks, but will try to look into these issues and make bugfixes/tweaks within the next few months. Goodluck and thanks for the feedback!
if i had to guess, i'm not sure if the setting for the IBL is the same in LuxCoreRender
but in the code for LuxRender, when Paolo changed the defult code fro IBL use to
LightGroup "IBL"
LightSource "infinitesample"
it fixed the issue of HDR's just fireflying
I'm not sure if that is being utlized
as for the gloss shader
in Luxrender
I think everything works off a exponential scale as far as gloss
So a gloss value of 50% isn't Half gloss to mirror coat
its more of a real world respentation of gloss numbers where to even get close to mirror finish you are looking at 95% and above
I do not know if its just the case that the plug in is taking raw numbers from iray settings
glossness and roughness are inverted settings
I'm also unsure if LuxCoreRender's shaders are even use Roughness because Reality only ever used Gloss/Spec rather then Rough/Metalness
But i am WAY behind the curve
Basically you have to thinking LuxCore terms and setting and not in Irays
LuxCoreRender uses many similar concepts as LuxRender, but they are almost 100% re-implemented by someone else, with very little source-code or math in common (except for general rendering and light physics concepts). You are correct that some numerical values work off "exponential scale", more specifically -- some numerical values expect linear gamma values (gamma=1.0) instead of sRGB or gamma 2.2. A tip for working with light intensity in LuxCore: if doubling your light number value does not produce changes or only small changes, try doubling the exponent instead: example: instead of doubling by using "Value * 2", try using "Value * 10^2".
Hello! I need your help with YaLux plugin. If the author of the plugin keeps on working, I have a couple of issues with lightning and materials, when exporting scene from Daz Studio. Maybe this little feedback will help to solve similar issues.
My settings are - DS 4-20 Beta, Yalux v. 0.7, LuxCore 2.5 (I used both experimental pack and base LuxCore 2.5 with necessary files from sdk). Rendered with CPU only (AMD A-8 3510MX with AMD Radeon HD GPU). OpenCL (Hybrid) doesn't work because of the outdated OpenCL 1.1 version, so CPU was my best choice for that moment.
I don't think I made a v0.7, maybe you are missing some numbers: can you send me a link to the file you downloaded or the exact filename of the zip file? If you are using the latest release, it was probably v0.4.1.
Yes, it seems it was really 0.41 from your github page. Maybe I renamed it occassionally (mixed with 7z extension). I tested it mainly with the experimental version of LuxCore, the main LuxCore 2.5 is larger but seemingly has no difference while rendering.
As for lightning, I didn't guess to change anything in tonemapper\intensity settings, from my tests I got that many existing commercial Iray light sets (both HDRI and other lightning) work wrong in LuxCore, and even in the old LuxRender, although old Lux was almost omnivorous in regard to IBL and HDR lighning. But these single EXR lights did not worked well in the old Lux too, so maybe they are built for Iray only. Thanks for your advice, I'll try it with other lightning, it may help. I hope someday we'll get the full Reality-like plugin, that lets to change settings for materials and textures (but better working with Iray materials, than Reality was able to process them).
Comments
Ok thanks, you are correct that my openCL is now 3.0. I am guessing it was the lates nvidia driver update since thats the only thing updated in the time this happened.
/edit: okay that wasn't it, the earlier drivers also install 3.0 so Im not sure thats my particular problem here.
Like I said, uninstalling AMD APP SDK didn't fix it for me either: the only fix was to pull the original OpenCL v2 DLL that is installed with Windows off of a hard-drive backup. I still think that OpenCL v3.x will cause Reality_DS.exe to crash without any error messages, but that's just my opinion. Best of luck to you.
I understand but uninstalling my drivers did remove the opencl.dll, installing an earlier driver where everything was working also installed 3.0, so reality apparently was working with 3.0 since it did not come from the latest release as I had hoped. But it is academic as I have bought a new machine and learning iray finally. It was worth a shot, and Im still interested to see what happens with your work, a luxrender plugin that actually understands the iray surface would be amazing, something reality couldnt do. Cheers!
I can't argue with your logical conclusions there, but if you just want to double-check just for giggles, the following A/B test to see if it is related to opencl.dll will only take you 1 minute or less:
Test A:
1) Run Reality.exe and confirm that it crashes instantly without opening any windows.
Test B:
1) Create an empty text file in the Reality_DS folder, next to the Reality.exe.
2) Rename the empty text file to "opencl.dll".
3) Run Reality.exe.
Anyway, thanks for the kind words! Feel free to try yaluxplug+LuxCoreRender in its current state: there is already decent Iray Uber and PBR Skin shader support, it's just missing a few more features like Top Coat and Iray's default post-effects for burning highlights and crushing shadows.
Well it turns out you were right about opencl, I found 2.0 online (I did this before I saw your reply above), grabbed it and tried it and lo and behold reality launched. Why reality was working until the very latest nvidia driver update is... weird. So thanks for your help, I do plan on checking out your plugin once I get my new system. Cheers!
Hi,
Thank You for the new version of Yaluxplug !
And special thanks for the source code !!!
This working well on My AMD rig ( CPU, GPU).
For testing:
I added a new options for setting the CPU cores number for render.
A selectable imagepipeline plugin "CAMERA_RESPONSE_FUNC".
I modified Your Override saturate options to changeable (scale 0-2 default 1).
I will add a new Override option for change the skin reflection (some character have a too shiny skin when the normal maps on).
I will a new Render mode " Full hybrid" - openCL-CPU + openCL-GPU + CPU, Tested working well with selected CPU-cores.
And now I need Your help.
How can I send a command to the Luxcore in realtime to change the imagepipeline like: Film::SetImagePipelines(const u_int index, ImagePipeline *newImagePiepeline).
I would like to change the "CAMERA_RESPONSE_FUNC" in realtime by enum on logwindow like Luxrender (what using for Reality).
At the moment I can get a relative quiet and fast render with my amd rig, faster than the Iray-CPU.
Thank You !
Thanks for the feedback! I am very happy to hear that you are able to use the plugin and even extend the source code!! There are a few things that I would like to add in ASAP, but just have not had the time: Subdivision support to enhance/smooth the rendered geometry, TopCoat support and Burn/Crush support to better match Iray's render output. I should just block out time to do this, since it would only take me about 2-3 hours of work to hardcode some preliminary settings. Then I can go back and add in customizability and UI for those features, that usually takes me the longest amount of development time.
I actually want to do some realtime changes too: add DeNoise as a final exit stage before quitting instead of at the end of each render pass. Right now, real-time changes require modification of luxcoreconsole.exe. You can see some of my modifications here: https://github.com/danielbui78/LuxCore/commits/experimental
luxcoreconsole.exe is actually just a small wrapper that passes CFG and SCN files directly into the main render engine loop for parsing and processing, like a black box. So it is not very helpful in learning how to manipulate the rendering and image pipeline API. When I have time, I will study the luxcoreui and pylux source files... maybe they will have some source code that does something similar to what we want ... or maybe I will just ask Dade or someone on the LuxCoreRender forums. hehe, that will probably be fastest.
Hi,
Thank You for answer !
I fixed the denoiser problem. We can using the https://github.com/DeclanRussell/IntelOIDenoiser/releases Denoiser_v1.6 by command line.
So We can set up the denoiser start on the options panel slider, by the percent of the render proccess. ex: 10 percent - after the render started, 95 percent - nearly end of the rendering...
This working with haltspp, halttime, and the haltthreshold too. And We can start or stop, on Your LogWindow.
We can select 3 Quality level "BASIC" , "MEDIUM" , "HIGH"
I added options for Samplers "SOBOL" , "METROPOLIS"
I added options for Filters "NONE" , "BOX" , "GAUSSIAN" , "MITCHELL" , "MITCHELL_SS" , "BLACKMANHARRIS" and a film.filter.width slider.
I added options for Light Strategy "UNIFORM" , "POWER" , "LOG_POWER" , "DLS_CACHE"
I added Contrast, Brightness, Saturation, Hue, Sharpen/Blur sliders to Your LogWindow. This working real time. We can save and load the settings.
So at the moment We have a very handy plugin.
You can focus to the material conversion. :)
And last. I need a little help.
How can I get the actual(selected) viewport camera dimensions like width height
Because if I have more different camera, with different setup, this system not realy good.
The problem is. The SDK version of DzCamera, do not have a pixelsHeight an pixelWidth parameters. I don not Know why, because the script version have.
I tried : getViewportMgr()->getActiveViewport()->get3DViewport()->getCamera() I can get the camera, but no parameters to get the dimensions.
I tried : DzProperty with findProperty("Pixel Size"); I can get back this parameter by DzIntProperty getValue(), but this is not a separated numbers. this give me a (width+height)/2 value.
When I can fix this problem I would like to send the .dll for test on Your system. If is not problem for You.
Thank You !
That's amazing! I am actually working on a redesign of the plugin which will launch an interactive python interpreter with pyluxcore library instead of luxcoreconsole. This will then let us make changes in realtime just like Blender's LuxCore plugin. Currently, I'm having trouble building the pyluxcore library on mac. Once I get this working, I'll post it here.
I'm confused with what you are trying to do. As far as I know, there is no pixel Height or pixel Width parameters for the DzCamera because the camera object is just an abstract object in the virtual scene and has no knowledge of any pixel information.
Are you trying to get the pixel dimensions of the viewport on your GUI? I'm not sure why you would want this unless you are trying to render an overlay directly on top of the GUI. If that's the case, then you can try: ...->get3Dviewport()->getViewport()->getView(). This returns a DzView object, which is a subclass of QWidget, which means you can get the XXXX.width and XXXX.height from the DzView object. Note, that the DzView's aspect ratio may not be the same as the DzCamera's aspect ratio, so you will have to do more calculations from that.
If you are trying to get the specified Height/Width that is specified in the Renderer, then those are passed by DazStudio to the yaluxplug::render() funciton via the "DzRenderOptions &opt" argument. "opt" is then passed along to the internal yaluxplug functions to process into CFG/SCN data. DzRenderOptions::getImageSize returns a QSize structure with the exact dimensions that DazStudio wants yaluxplug to render the image.
If you are trying to find some kind of camera pixel dimension like a real-world digital camera's image sensor, then that is not simulated by the base DzCamera class.
Let me know if it's something else you want to find out. You might have to ask the regular Daz forums if the above info doesn't answer it.
Hi,
Thanks for Your ansver !
My English is not perfect. Sorry about this.
But I try to ansver for You.
"I'm confused with what you are trying to do. As far as I know, there is no pixel Height or pixel Width parameters for the DzCamera because the camera object is just an abstract object in the virtual scene and has no knowledge of any pixel information. "
You are right. And no.
If You have a look at this link: http://docs.daz3d.com/doku.php/public/software/dazstudio/4/referenceguide/scripting/api_reference/object_index/camera_dz
You can see the script version of DzCamera have pixelsHeight, pixelsWidth parameters. The SDK version do not.
And I talking about My added cameras, and not the basic cameras like Prespective view.
The problem is: If You add a camera to the scene, and You set up the dimensions on the properties tab to 1200x2000 for example.
The options panel dimensions not changeing. And You send a wrong values for the film.width and film.height because You got it from the DzRenderOptions.
The DzRenderHandler have a correct values.
DzViewRenderHandler *handler = new DzViewRenderHandler(old_handler->getSize(), old_handler->getStartingTime(), QString(""), true);
QSize csize = old_handler->getSize(); Have the correct values, when the render button is fired. In the last second. So you can not show the camera dimensions for an Info panel for ex.
The aspectRatio same. But actualy We can send the correct values from the old_handler.
What I want to do? I added a small info panel to the top of the options(Yalux options). And I would like to show the actual Camera name, and dimensions.
The Camera name easy to get from DzCamera. But Our added camera dimensions !!! nearly inpossible.
But Your little snipet helped me thanks again! Realy nice. And working. Five extra line, so not a big something.
At the moment I can write everything to the panel, what I wanted.
And now I would like to add a Render queue. When I have a little time for that.
First of all I want to clean the code. - I have some green patch after the lot of try :)-
A check everything double. And when I fixed everything I would like to send the .dll and the source for test on Your Nvidia system. If not problem for You.
And last I am not a pro coder, this is a hobby for me. I can coding after my work. :) And I have never used c++ and visual studio so I am just learnig now.
I think We do not realy need something else for this little plugin. Only the good material conversion. What is the most important. Because I bought the Reality plugin two years ago.
But I just fighting with the materials for days, and I have never got a good result. So I am realy waiting for Your work with the materials, shaders, lights. :) And I know that is a terribile job.
And thank You for Your help.
OK, I think I see what you are talking about now: the DzCamera objects have a group of Properties named "Dimensions". You must enable "Use Local Dimensions" in order to see the sub-properties for Dimensions/PixelSize and Dimensions/AspectRatio. Is this what you are talking about? If so, you aren't able to access it with the SDK because the API is too old. What you can do is use the Qt4.8 QMetaObject/QMetaMethod system (aka RTTI) to query the functions that are exposed to the script interpreter. You will need to lookup the function name, function return type and arguments return types. Of course, the script method will work too and sounds like you already have it implemented. So it's probably unnecessary to use qmetaobject system unless you are having performance issues.
However, for your reference:
Sorry, I don't have an Nvidia GPU.
That's no problem. Every expert must first start out as a beginner. So far, it sounds like you are making a lot of progress and are learning very very fast!
One of the biggest reasons why materials may not render correctly in LuxCoreRender is due to use of a non-Nvidia GPU and corresponding OpenCL driver/compiler. If you do not have an Nvidia GPU, you should always render a reference image with LuxCoreRender set to PathCPU in addition to the PathOCL renderer. It doesn't have to be high resolution, just enough resolution to make sure your GPU renderer is producing the same output as the CPU reference. That way, you can make sure that any "fighting with materails for days" is not actually due to bugs with a non-Nvidia OpenCL driver/compiler. Good luck.
Hi,
I think You missunderstand Me.
I DO NOT have any problem with Your conversions. I like Your plugin. This little plugin give Me hundred times better mutch to Iray, than Reality.
I am just waiting for Your other implements like TopCoat support and Burn/Crush support and what You want to add more.
And one test render comparison. 60 sec.
Hi,
OK, so I compiled the YaluxPlugin & the RenderKitReady plugin and the Yax is OK but I had to change the output path for the ReadyKitRenderer because I did not want to edit permissions on any of my system drive.
I get this message at completion of the compile:
Linking CXX shared library D:\Users\goat\Documents\Develop!repository\GitHub\ReadyKitRenderer\out\build\x64-Debug\readykitrenderer.dll
but the file that is actually there is the readykitrenderer.lib which I suppose is actually the readykitrenderer.dll that didn't get renamed from readykitrenderer.lib for some reason. Is that right? I want to rename it & manually copy into the plugin directory so DAZ Studio. Sorry, I've been almost exclusively a UNIX developer.
I notice the yaluxplug.dll is about 766kb and also has a yaluxplug.lib file that's only 8kb so for that reason I'm pretty sure the linking failed for the readykitrenderer.dll
yaluxplug: utility_classes.cpp
-315 ret_str += QString("\t\%1\n").arg(mixString);
+315 ret_str += QString("\t\"%1\n").arg(mixString);
What is you goal? If it's just to render with Lux or LuxCore, then you just need yaluxplug.dll. The readykitrenderer is only needed for building new DzRender plugins. And yes -- it sounds like it failed: lib files are static linked like .a files. Renaming it won't work.
BTW, if you are cloning from Github: my latest work is actually not in the main branch (update-2021) but in the experimental branches (currently experimental-4). I've delayed merging it back into the main branch because I haven't re-implemented LuxRender pathway for legacy rendering support yet.
If you are asking what happened, that's a typical Windows newline vs. carriage return vs. newline+carriage return editor behavior. I try to set my code editors and Github Desktop to intercept and ignore that stuff so it isn't spammed all over the Github commits, but it's almost a lost cause.
By the way, you may know, but Visual Studio 2022 & .NET 6 have been released to the general public now.
I fixed the problem, thanks.
Hello! I need your help with YaLux plugin. If the author of the plugin keeps on working, I have a couple of issues with lightning and materials, when exporting scene from Daz Studio. Maybe this little feedback will help to solve similar issues.
My settings are - DS 4-20 Beta, Yalux v. 0.7, LuxCore 2.5 (I used both experimental pack and base LuxCore 2.5 with necessary files from sdk). Rendered with CPU only (AMD A-8 3510MX with AMD Radeon HD GPU). OpenCL (Hybrid) doesn't work because of the outdated OpenCL 1.1 version, so CPU was my best choice for that moment.
1) First of all - if the plugin can convert Iray lightning with Environment and Tonemapping settings, which lights should I use - HDRI, EXR, or native Iray lighs (spotlights etc)? I made a series of quick tests with most bugless EXR and HDR lights I have (Click N Render IBL Sets for Iray, Iray Fantasy Lights by GolaM) and with similar single IBLs without additional lights. Here are some images from Iray and LuxCore with a simple vase (Diffuse only, Glossy Plastic shader) and with Genesis 8 Female Base with hair and clothing. The files attached to the post. What I saw right away - LuxCore renders fast and keeps all shadows and highlights but eats diffuse color. It understands the settings for human skin (G8), keeps old 3Delight diffuse texture, but destroys the glossy shader for the hair and ceramic\plastic objects. I did not tested it with metals and glassware yet. How to fix it? Increasing Diffuse Saturation in render options doesn't help at all.
What about old LuxRender meshlights, sunlight etc (they come with old Reality 4 plugin for DS and I find them very handy). Can I convert old Lux-Reality lxs. scenes for LuxCore 2.5 or render from DS using this meshlights?
2) At second - is there any native materials for LuxCore, and can it use old LuxRender materials? Before I had deal with LuxRender 1.3 - 1.5, which had the great library of materials, they worked a bit better than Iray ones. As I understand, Yalux is purposed for Iray materials only, so any other (3Delight, custom textures) must be converted to Iray?
3) How to save the rendered picture from DS? When I cancel the render process, Yalux offers me to save the image in the chosen folder, but it gives me only blank black or unreadable files. The actual images fall into the Temp folder for renders (I named it DAZ_Temp), along with all PLYs and scenefiles and they are much smaller than render dimensions. How to set up the right way for exporting images - or how to export them from the main LuxCore window?
The second problem is that the images come too noisy from the start and do not clear much during the rendering (I had not this issue in any old Lux). What settings in LuxCore are responsible for denoising and improving the quality of renders?
Thanks in advance for help - LuxRender was such a great tool and hope LuxCore will be much better, the more I feel it works much faster for my system and understands at least a half of settings in IRAY IBL lights. The old Luxrender 1.5, for example, couldn't use Click N Render IBL Sets because they are too dark by themselves without Tonemapping and Environment settings. I hope Yalux will be developed, similar to Luxus and Reality.
if i had to guess, i'm not sure if the setting for the IBL is the same in LuxCoreRender
but in the code for LuxRender, when Paolo changed the defult code fro IBL use to
LightGroup "IBL"
LightSource "infinitesample"
it fixed the issue of HDR's just fireflying
I'm not sure if that is being utlized
as for the gloss shader
in Luxrender
I think everything works off a exponential scale as far as gloss
So a gloss value of 50% isn't Half gloss to mirror coat
its more of a real world respentation of gloss numbers where to even get close to mirror finish you are looking at 95% and above
I do not know if its just the case that the plug in is taking raw numbers from iray settings
glossness and roughness are inverted settings
I'm also unsure if LuxCoreRender's shaders are even use Roughness because Reality only ever used Gloss/Spec rather then Rough/Metalness
But i am WAY behind the curve
Basically you have to thinking LuxCore terms and setting and not in Irays
Hi, sorry for the late reply:
I don't think I made a v0.7, maybe you are missing some numbers: can you send me a link to the file you downloaded or the exact filename of the zip file? If you are using the latest release, it was probably v0.4.1.
I will try to look into this when I have time, but you should be loading Iray materials instead of 3Delight materials for use with yaluxplug. Double-check your surfaces and switch to the Iray material on your figures if one is available --> that may fix many of your problems, since my 3Delight material to LuxCore material conversion functions are not as extensive as the Iray material to LuxCore material conversion functions. In other words, you will ALWAYS get better results if you make sure you have Iray materials applied in Daz Studio prior to rendering with yaluxplug.
I have some preliminary function stubs to support Luxus/Reality-specific lighting, but it is very primitive and may not work yet. This is only for Daz Studio assets. There is very basic support to read the old LuxRender lxs scene files in the new LuxCore render engines, but in my experience it does not work well and has sometimes causd full machine crash / hard-locks. You are better off learning the new Scene file format and manually translating all of your old LXS scene descriptions to the new LuxCore description format (CFG/SCN): https://wiki.luxcorerender.org/LuxCore_SDL_Reference_Manual_v2.5. I'm sorry that there isn't an easier way to use old lxs files.
No, there is no native material format in Daz Studio that directly maps to LuxCore material definitions. For now, "Iray Uber" has the closest translation to LuxCore material definitions.
Hmmm, yaluxplug should use the same UI dialog boxes that Iray Render uses when you finish / cancel your render and select save image. I will try to verify when I have a chance, and fix any bugs I find. If you are getting black or blank / unreadable files, then there may be some issue with the renderer. Currently, there is no funciton to export the PLY and scene files from the Temp directory yet. That is the next thing on my to-do list.
The noise in your images looks like the insufficient power to in the scene light source combined with over-compensation from the LuxCore tonemapper, but I do not see you mention tone mapper settings, which is just as important as knowing the power/intensity of the environment, which is also not mentioned. When I have time, I will look into these IBL assets to see if they need custom power/intensity corrections when translated to LuxCore. For now, try increasing your Environment Intensity by 100x or 1000x in the Environment Options object, and decreasing the Film ISO. Make sure the LuxCore tonemapper is set to use TONEMAP_LINEAR, otherwise every adjustment you make in lighting will be inversely corrected by the LuxCore tonemapper and result in practically no change to your overall image brightness.
I may be busy for another several weeks, but will try to look into these issues and make bugfixes/tweaks within the next few months. Goodluck and thanks for the feedback!
LuxCoreRender uses many similar concepts as LuxRender, but they are almost 100% re-implemented by someone else, with very little source-code or math in common (except for general rendering and light physics concepts). You are correct that some numerical values work off "exponential scale", more specifically -- some numerical values expect linear gamma values (gamma=1.0) instead of sRGB or gamma 2.2. A tip for working with light intensity in LuxCore: if doubling your light number value does not produce changes or only small changes, try doubling the exponent instead: example: instead of doubling by using "Value * 2", try using "Value * 10^2".
Take home: do not try to apply "common sense" from experience with LuxRender to LuxCore. It will not produce expected results. Here is the reference for LuxCore scene description: https://wiki.luxcorerender.org/LuxCore_SDL_Reference_Manual_v2.5
Thanks and good luck!
Yes, it seems it was really 0.41 from your github page. Maybe I renamed it occassionally (mixed with 7z extension). I tested it mainly with the experimental version of LuxCore, the main LuxCore 2.5 is larger but seemingly has no difference while rendering.
As for lightning, I didn't guess to change anything in tonemapper\intensity settings, from my tests I got that many existing commercial Iray light sets (both HDRI and other lightning) work wrong in LuxCore, and even in the old LuxRender, although old Lux was almost omnivorous in regard to IBL and HDR lighning. But these single EXR lights did not worked well in the old Lux too, so maybe they are built for Iray only. Thanks for your advice, I'll try it with other lightning, it may help. I hope someday we'll get the full Reality-like plugin, that lets to change settings for materials and textures (but better working with Iray materials, than Reality was able to process them).