Closed Timaroberts closed 3 years ago
There are currently build instructions in this repo on how to build it yourself, but if you're looking on a pre-built binary, we are looking to release an up to date solution, with Houdini 18.5 for windows soon.
I'd be glad to compile more detailed compilation instructions but I have problems following the current one. How do I find DUSD_ROOT (for Houdini 18.5) and DCYCLES_ROOT?
Hi @Nek I am going to share more detailed explanation soon.
Hello @bareya. Any news?
Hi @Nek, currently I am assigned to other tasks that are on our priority list. I want to let you know that we had internal conversations to make hdCycles
much easier to build. At this point I can not give you any time frame when it's going to happen, but this task is quite high on our priority list. We want everyone to contribute. For now I would have to ask you to be patient.
@bareya makes total sense. Thanks for the update and for being open.
I have also tried to build but have failed. I cannot understand the cmake instructions: Not sure about the root paths. Perhaps if more detailed instructions were provided, but do let me know if these binaries become available. Thanks for the excellent work!
I promise it's coming soon. I might spend some personal time to update the README, or guide you here how to do it. I am slowly wrapping up with #67, then I can have a look to help you with the build process. Are you intending to use it with Solaris or without it? I am asking because building it against vanilla USD is much simpler.
Hi. I'd be happy with any workflow improvements for rendering with Cycles from Houdini. But I assume that means Solaris.
Hi all,
I have a small update that I would like to share. I know current building system has not been working for many of you. I put some effort at personal time to make it more approachable. I haven’t tested it for Windows yet. Unfortunately, I have only Linux at home. It is still far from being perfect, but here is so far what I have accomplished:
I made a request to SideFx for missing headers that are required to build Cycles. Since Houdini 18.5.519(daily build) we can build Cycles based on libraries and headers that are distributed with Houdini. That means the dependencies can be reduced to very minimum: gflags, glog, cycles and hdcycles.
I made a bunch of changes in Cycles cmakes. Now it exports a few targets. Linking with Cycles::Cycles cmake interface has simplified HdCycles’ cmake significantly. There is a lot to be done, so I treat it as a temporary fix. I hope in the future we can make Cycles cmake more modern.
I removed rez dependencies from HdCycles repo (they are optional and rez picks them up depending on presence of rez environment variables).
I made a cmake script to compile gflags, glog, Cycles and HdCycles against Houdini. For now, I am going to push it to separate repo. Once following PRs are merged, I will be able to share the building script:
https://github.com/tangent-opensource/hdcycles/pull/100 https://github.com/tangent-opensource/cycles/pull/18
Cheers, Piotr
If you wish to test it, here I created the repo https://github.com/bareya/hdcycles_for_houdini. There are some requirements to build it:
git
cmake-3.18+
gcc-6
patch
command installedhoudini-18.5.519+
To build it we have to clone the repo, and pass the compiler with install directory to the building system. I assumed Houdini on Linux is install under /opt/hfs18.5
and it is at least 18.5.519
build. If you wish to modify it, please make a PR!
git clone https://github.com/bareya/hdcycles_for_houdini
cd hdcycles_for_houdini
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/tmp/build -DCMAKE_CXX_COMPILER=g++-6 -DCMAKE_C_COMPILER=gcc-6 && make
After building is done we have to export environment variables, for Hydra to find the plugin:
export PXR_PLUGINPATH_NAME=/tmp/build/plugin/usd/hdCycles/resources/:/tmp/build/plugin/usd/ndrCycles/resources/:${PXR_PLUGINPATH_NAME}
In Stage
context you can find Cycles as a new Hydra delegate.
@bareya Very exciting project. I look hopefully at the houdini blender combo. I am trying to build hdcycles. Must be gcc-6? Thx for your work. Linux Suse Tumbleweed.
[ 78%] Linking CXX executable stl_logging_unittest /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/utilities_unittest.dir/src/utilities_unittest.cc.o: in function
utilities_sync_val_compare_and_swap_Test::TestBody()':
utilities_unittest.cc:(.text+0x18a): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: utilities_unittest.cc:(.text+0x27b): undefined reference to
testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: utilities_unittest.cc:(.text+0x36f): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
collect2: error: ld returned 1 exit status
gmake[5]: [CMakeFiles/utilities_unittest.dir/build.make:108: utilities_unittest] Error 1
gmake[4]: [CMakeFiles/Makefile2:164: CMakeFiles/utilities_unittest.dir/all] Error 2
gmake[4]: Waiting for unfinished jobs....
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/symbolize_unittest.dir/src/symbolize_unittest.cc.o: in function Symbolize_Symbolize_Test::TestBody()': symbolize_unittest.cc:(.text+0x348): undefined reference to
testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: symbolize_unittest.cc:(.text+0x436): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
collect2: error: ld returned 1 exit status
gmake[5]: [CMakeFiles/symbolize_unittest.dir/build.make:108: symbolize_unittest] Error 1
gmake[4]: [CMakeFiles/Makefile2:218: CMakeFiles/symbolize_unittest.dir/all] Error 2
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o: in function Demangle_CornerCases_Test::TestBody()': demangle_unittest.cc:(.text+0x1e9): undefined reference to
testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: demangle_unittest.cc:(.text+0x3ce): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: demangle_unittest.cc:(.text+0x5b6): undefined reference to
testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: demangle_unittest.cc:(.text+0x6cd): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: demangle_unittest.cc:(.text+0x7c9): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o:demangle_unittest.cc:(.text+0x8c0): more undefined references to
testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)' follow
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o: in function `testing::internal::PrintTo(std::string const&, std::ostream)':
demangle_unittest.cc:(.text._ZN7testing8internal7PrintToERKSsPSo[_ZN7testing8internal7PrintToERKSsPSo]+0x1f): undefined reference to testing::internal::PrintStringTo(std::string const&, std::ostream*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o: in function
testing::AssertionResult::AppendMessage(testing::Message const&)':
demangle_unittest.cc:(.text._ZN7testing15AssertionResult13AppendMessageERKNS_7MessageE[_ZN7testing15AssertionResult13AppendMessageERKNS_7MessageE]+0x77): undefined reference to testing::Message::GetString() const' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o: in function
testing::AssertionResult testing::internal::CmpHelperEQFailure<std::string, char const>(char const, char const, std::string const&, char const const&)':
demangle_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureISsPKcEENS_15AssertionResultES3_S3_RKTRKT0[_ZN7testing8internal18CmpHelperEQFailureISsPKcEENS_15AssertionResultES3_S3_RKTRKT0]+0x6c): undefined reference to testing::internal::EqFailure(char const*, char const*, std::string const&, std::string const&, bool)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in function
main':
logging_unittest.cc:(.text+0x2e7b): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in function
TestCustomLoggerDeletionOnShutdown()':
logging_unittest.cc:(.text+0xcdb8): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in function
google::BenchmarkRegisterer::BenchmarkRegisterer(char const, void ()(int))':
logging_unittest.cc:(.text._ZN6google19BenchmarkRegistererC2EPKcPFviE[_ZN6google19BenchmarkRegistererC5EPKcPFviE]+0xa8): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in function
testing::AssertionResult testing::internal::CmpHelperEQFailure<int, int>(char const, char const, int const&, int const&)':
logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureIiiEENS_15AssertionResultEPKcS4_RKTRKT0[_ZN7testing8internal18CmpHelperEQFailureIiiEENS_15AssertionResultEPKcS4_RKTRKT0]+0x6c): undefined reference to testing::internal::EqFailure(char const*, char const*, std::string const&, std::string const&, bool)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o: in function
testing::AssertionResult testing::internal::CmpHelperEQFailure<void, void>(char const, char const, void const&, void const&)':
logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureIPvS2_EENS_15AssertionResultEPKcS5_RKTRKT0[_ZN7testing8internal18CmpHelperEQFailureIPvS2_EENS_15AssertionResultEPKcS5_RKTRKT0]+0x6c): undefined reference to `testing::internal::EqFailure(char const, char const, std::string const&, std::string const&, bool)'
collect2: error: ld returned 1 exit status
gmake[5]: ** [CMakeFiles/demangle_unittest.dir/build.make:108: demangle_unittest] Error 1
gmake[4]: [CMakeFiles/Makefile2:191: CMakeFiles/demangle_unittest.dir/all] Error 2
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in function TestSTLLogging()': stl_logging_unittest.cc:(.text+0x880): undefined reference to
testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: stl_logging_unittest.cc:(.text+0x9c9): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: stl_logging_unittest.cc:(.text+0xb12): undefined reference to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: stl_logging_unittest.cc:(.text+0xf1b): undefined reference to
testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: stl_logging_unittest.cc:(.text+0x1064): undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const, char const, char const)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o:stl_logging_unittest.cc:(.text+0x11ad): more undefined references to testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)' follow /usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in function
testing::internal::PrintTo(std::string const&, std::ostream)':
stl_logging_unittest.cc:(.text._ZN7testing8internal7PrintToERKSsPSo[_ZN7testing8internal7PrintToERKSsPSo]+0x1f): undefined reference to `testing::internal::PrintStringTo(std::string const&, std::ostream)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in function testing::AssertionResult testing::internal::CmpHelperEQFailure<std::string, char [9]>(char const*, char const*, std::string const&, char const (&) [9])': stl_logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureISsA9_cEENS_15AssertionResultEPKcS5_RKT_RKT0_[_ZN7testing8internal18CmpHelperEQFailureISsA9_cEENS_15AssertionResultEPKcS5_RKT_RKT0_]+0x6c): undefined reference to
testing::internal::EqFailure(char const, char const, std::string const&, std::string const&, bool)'
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in function testing::AssertionResult testing::internal::CmpHelperEQFailure<std::string, char [36]>(char const*, char const*, std::string const&, char const (&) [36])': stl_logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureISsA36_cEENS_15AssertionResultEPKcS5_RKT_RKT0_[_ZN7testing8internal18CmpHelperEQFailureISsA36_cEENS_15AssertionResultEPKcS5_RKT_RKT0_]+0x6c): undefined reference to
testing::internal::EqFailure(char const, char const, std::string const&, std::string const&, bool)'
collect2: error: ld returned 1 exit status
/usr/lib64/gcc/x86_64-suse-linux/10/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o: in function testing::AssertionResult testing::internal::CmpHelperEQFailure<unsigned long, int>(char const*, char const*, unsigned long const&, int const&)': stl_logging_unittest.cc:(.text._ZN7testing8internal18CmpHelperEQFailureImiEENS_15AssertionResultEPKcS4_RKT_RKT0_[_ZN7testing8internal18CmpHelperEQFailureImiEENS_15AssertionResultEPKcS4_RKT_RKT0_]+0x6c): undefined reference to
testing::internal::EqFailure(char const, char const, std::string const&, std::string const&, bool)'
gmake[5]: [CMakeFiles/logging_unittest.dir/build.make:108: logging_unittest] Error 1
gmake[4]: [CMakeFiles/Makefile2:245: CMakeFiles/logging_unittest.dir/all] Error 2
collect2: error: ld returned 1 exit status
gmake[5]: [CMakeFiles/stl_logging_unittest.dir/build.make:108: stl_logging_unittest] Error 1
gmake[4]: [CMakeFiles/Makefile2:812: CMakeFiles/stl_logging_unittest.dir/all] Error 2
gmake[3]: [Makefile:182: all] Error 2
make[2]: [CMakeFiles/glog.dir/build.make:93: glog-prefix/src/glog-stamp/glog-install] Error 2
make[1]: [CMakeFiles/Makefile2:155: CMakeFiles/glog.dir/all] Error 2
make: [Makefile:103: all] Error 2
`
Hi @alex3dpl, If you wish to use it with Houdini then yes gcc-6 is necessary. Also, I disabled GTEST for you https://github.com/bareya/hdcycles_for_houdini/commit/577691abc3b0d7b2d31f727070e0e5290319dc7b https://github.com/bareya/hdcycles_for_houdini/commit/20efc3c0140c5d80355859bc01b5cac83273945a
You can give it a try, it might work. I disabled new ABI here
Thank you @bareya. I was able to build hdcycles plugins with gcc 10 in tmp/... directories. Houdini works fine on Suse Thumbleweed, but doesn't see hdcycles plugins.
A few questions :)
How can I diagnose what is the real cause? The command should be entered in the linux console?
export PXR_PLUGINPATH_NAME=/tmp/build/plugin/usd/hdCycles/resources/:/tmp/build/plugin/usd/ndrCycles/resources/:${PXR_PLUGINPATH_NAME}
Thx for the help.
I think it compiles with gcc-10
, but it might not work with Houdini that is compiled with gcc-6
. Use
export TF_DEBUG="*"
To get the details why plug is not being loaded.
@bareya export TF_DEBUG="*" unfortunately shows nothing :) What distro are you using for hdcycles, Red Hat, CentOS? It's a very interesting project. Gcc 6.3 is a bit too old to build on Suse Thumbleweed. I'll try to build it myself, but can you share any linux build, like as was with hdcycles for Windows?
@alex3dpl TF_DEBUG
comes from USD and is an environment variable that controls Tf behaviour.
So far it worked for me on Windows-10, Ubuntu-20.04, and CentOS-7. Those are the setups that I use on daily basis.
It's difficult to upload the build because it statically links with Cycles, so the binaries are about 150MB. Here is one of my dev branches: https://we.tl/t-Geu2pkGEbh. Some parts might be built in debug mode - it might be slow.
@bareya thank you very much (dzięki wielkie Piotrze). I will try. Maybe there is something wrong with my USD. I watched the Nvidia GTC conference - hdcycles will be part of blackbird renderer or a separate plugin? I have high hopes for the blender houdini pipeline.
Hi, I am closing this one and all install instructions will be updated in the Wiki. https://github.com/tangent-opensource/hdcycles/wiki
Hi, I'd like to test your plug-in, however am having trouble finding any instructions on how to get it working inside of houdini. Is there a read me somewhere with this I may have missed? I am currently using H18.5, and Blender 2.90.1
Thanks