Replies: 10 comments 34 replies
-
Thanks for the roadmap @kjeffery. Running MoonRay on Windows would be a dream come true. I'm not a professional developer by any means, but this sounds like a very large and complex task. I imagine it would take a team working for a long period of time to get it working. Am I off base about that? I'd be interested to hear from experienced devs about their views on this project. |
Beta Was this translation helpful? Give feedback.
-
I stumbled upon another Linux-specific area of code: https://github.com/dreamworksanimation/moonray/blob/release/lib/common/mcrt_util/ProcessStats.cc We use the |
Beta Was this translation helpful? Give feedback.
-
I am an intermediate developer, thought I still learn a lot from programming I would like to port in Windows and better I will like to have to integrate in my 3D software called Blackdot that is inspired from Softimage XSI and it is an open source too :) . But I would like to have more info from Hydra and RDL ? Where are their documentation about that ? Because I love to MoonRay for production Renderer, so it looks like to Renderman or Lightwave Renderer all thing in VFX rendering from photorealistic to styled shading... If ever I integrate this MoonRay into in my Blackdot it will be the first to have using it ! It will be awesome really !! Thanks all to the team from Dreamworks. |
Beta Was this translation helpful? Give feedback.
-
I'm going to start chipping away at this in my spare time. What I lack in dev experience I make up in persistence! I figured I would tackle things in this order. I don't care about Arras or denoise. scene_rdl2 Starting with scene_rdl2, it looks like all the dependencies are easily downloadable in the required versions. My first round of questions:
|
Beta Was this translation helpful? Give feedback.
-
Here's another section of code that may cause trouble: https://github.com/dreamworksanimation/moonray/blob/release/lib/common/mcrt_util/Atomic.h We use a lot of GCC intrinsic functions for atomic operations. The portable solution is to move to |
Beta Was this translation helpful? Give feedback.
-
Hmm, I think this Pull Reuqest with Windows port of DNEG's xSTUDIO review tool may be helpful as reference (also Apache 2.0). I mention this as they had similar Linux specific and GCC specific intristics in the code. MoonRay itself is much easier to port so far, because of Qt being optional component, where Qt on Windows is not any nice to work with, and sometimes causes issues, especially when you're porting Linux specific code. |
Beta Was this translation helpful? Give feedback.
-
A little progress update from me: I was able to succesfully build MoonRay using MinGW (GCC for Windows) + MSYS2 but XPU mode doesn't work too well with 4gb of VRAM in my Nvidia GTX 1650ti... Once I finish some small scene for testing endering, I will head over to MSVC + vcpkg with native intristics instead. Next step in testing the port is hdMoonRay in Nuke. |
Beta Was this translation helpful? Give feedback.
-
So we are close to the first year after making MOONRAY open to public and beside a handful enthusiasts trying to make it run under LINUX or docker environments there wasn't much happening in terms of gaining track on a wider audience. At least that's the impression that I have. Wondering what the current resume of going open-source is. Is everything running as expected and planned? As far as I remember part of the plan was to get hands on more artists that are confident using Moonray, but haven't run into ANY rendered image using MOONRAY outside the demo-scenes, no matter what platform |
Beta Was this translation helpful? Give feedback.
-
Hi all I'm almost done with a scene_rdl2 port here for windows MSVC build. I've made implementations with C++17 where possible, before needing to use Windows/NT-specific implementations. Having the macOS changes in-place makes this a bit easier due to things like the alternative ISPC CMake building approach. The port required some of the following:
It's quite extensive so I think perhaps to upstream it, it's best to split it like the following - prioritising changes that affect the existing platforms:
A preview with the commits in this rough order: Some questions I have that I am not too sure what to do:
After Cheers! |
Beta Was this translation helpful? Give feedback.
-
Very exciting ... good work! |
Beta Was this translation helpful? Give feedback.
-
Roadmap for MoonRay under Windows
MoonRay was developed under GNU/Linux without considering other operating systems. There is code written with only POSIX/GNU/Linux in mind, and we have yet to explore what it will take to make MoonRay work under other operating systems. Many required changes will not be found until porting is underway. However, I will list some things needing to be addressed and provide a project workflow. The existence of this document does not mean that the MoonRay team is porting to Windows; it only serves as a guide to the community on getting started.
Project Order
If you want to use a Linux process for rendering while displaying the results on a Windows machine (e.g., through Hydra), you can focus on porting the arras client. In that case, the MoonRay subprojects should be ported to Windows in this order (based on dependencies):
In order to build a native MoonRay renderer on Windows without support for distributed rendering (arras), the MoonRay subprojects should be addressed in this order (based on dependencies):
To build the full stack, the dependency order is as follows:
Packages
I have not tried it, but Microsoft’s vcpkg cross-platform package manager seems like a good starting point. Please be aware of the required version number on packages. Using a newer version than specified in the MoonRay build requirements will require further code changes. We welcome updated versions but are often bound by the studio’s use of the VFX Reference Platform.
Known POSIX/GNU/Linux-Specific Features
General
Any ASCII file reads and writes will probably have to be opened using the binary flag. This will force Windows to use the ‘\n’ line ending (compatible with Linux) instead of Window’s “\r\n” line ending.
Aligned Allocation
The aligned allocation calls must be changed. Below is an example of how to change the functions.
ELF Files
We use the GNU command
objcopy
in several places to translate binary data into the ELF file format used on Unix/Linux operating systems. The most notable example is the precomputed sampling data. To use this on Windows, we need to do one of the following:containerFromFile
), which must be generated again through the point-generation scripts.Temporary Files
At times, MoonRay creates temporary files. We use Linux-specific commands to do so. If you are not bound to the VFX Reference Platform, using C++17's filesystem library may be a good option, although it only provides a temporary directory and not a temporary file.
Beta Was this translation helpful? Give feedback.
All reactions