Autodesk / Aurora

Real-time GPU path tracing with an OpenUSD Hydra render delegate
Apache License 2.0
514 stars 34 forks source link

Help Building for Fedora Linux #36

Open adro79 opened 3 months ago

adro79 commented 3 months ago

First of all, thanks for upgrading Aurora and its USD version.

I've been trying to build Aurora all day, but I keep having A LOT of errors. I even tried to build it on an Ubuntu 20.04 Container using Distrobox, but I encounter the same errors as my host machine.

Would appreciate some help since I'm not that advanced in programming :)

Here's a diff of the patches I made:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f1fb42a..040a2d6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -94,7 +94,7 @@ if(MSVC)
     set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1)
 else()
     # Enables strict standard conformance and warning as errors
-    add_compile_options(-Wall -Wextra -Wpedantic -Werror -Wno-unknown-pragmas -Wno-gnu-zero-variadic-macro-arguments)
+    add_compile_options(-Wextra -Wno-unknown-pragmas -Wno-deprecated)
 endif()

 include(externalsConfig OPTIONAL RESULT_VARIABLE EXTERNALS_CONFIG)
diff --git a/Libraries/Aurora/Source/HGI/HGIMaterial.cpp b/Libraries/Aurora/Source/HGI/HGIMaterial.cpp
index 1e94684..6cca38d 100644
--- a/Libraries/Aurora/Source/HGI/HGIMaterial.cpp
+++ b/Libraries/Aurora/Source/HGI/HGIMaterial.cpp
@@ -40,7 +40,7 @@ void HGIMaterial::update()
 {
     // Build a structure from values map into staging buffer.
     void* pStaging = _ubo->handle()->GetCPUStagingAddress();
-    ::memcpy_s(pStaging, uniformBuffer().size(), uniformBuffer().data(), uniformBuffer().size());
+    std::memcpy(pStaging, uniformBuffer().data(), uniformBuffer().size());

     // Transfer staging buffer to GPU.
     pxr::HgiBlitCmdsUniquePtr blitCmds = _pRenderer->hgi()->CreateBlitCmds();
diff --git a/Libraries/Aurora/Source/MaterialShader.cpp b/Libraries/Aurora/Source/MaterialShader.cpp
index 188a06e..15dddca 100644
--- a/Libraries/Aurora/Source/MaterialShader.cpp
+++ b/Libraries/Aurora/Source/MaterialShader.cpp
@@ -21,7 +21,7 @@ MaterialShader::MaterialShader(MaterialShaderLibrary* pShaderLibrary, int librar
     _def(def)
 {
     // Initialize ref. counts to zero.
-    for (int i = 0; i < entryPoints.size(); i++)
+    for (size_t i = 0; i < entryPoints.size(); i++)
     {
         _entryPointNameLookup[entryPoints[i]] = i;
         _entryPoints.push_back({ entryPoints[i], 0 });
@@ -251,7 +251,7 @@ bool MaterialShaderLibrary::update(CompileShader compileFunction, DestroyShader
 void MaterialShaderLibrary::forceRebuildAll()
 {
     // Add all active shaders to compilation pending list.
-    for (int i = 0; i < _shaderState.size(); i++)
+    for (size_t i = 0; i < _shaderState.size(); i++)
     {
         MaterialShaderPtr pShader = _shaderState[i].first.lock();
         if (pShader)
diff --git a/Libraries/Aurora/Source/MaterialShader.h b/Libraries/Aurora/Source/MaterialShader.h
index 5137bb4..f646e5b 100644
--- a/Libraries/Aurora/Source/MaterialShader.h
+++ b/Libraries/Aurora/Source/MaterialShader.h
@@ -16,6 +16,7 @@
 #include "Aurora/Foundation/Log.h"
 #include "Properties.h"
 #include "UniformBuffer.h"
+#include <list>

 BEGIN_AURORA

diff --git a/Libraries/Foundation/API/Aurora/Foundation/Utilities.h b/Libraries/Foundation/API/Aurora/Foundation/Utilities.h
index d446f6a..8c28827 100644
--- a/Libraries/Foundation/API/Aurora/Foundation/Utilities.h
+++ b/Libraries/Foundation/API/Aurora/Foundation/Utilities.h
@@ -24,6 +24,7 @@
 #include <stdio.h>
 #include <string>
 #include <vector>
+#include <cstdint>

 namespace Aurora
 {

Minifying Shaders

It seems to be an issue in MainEntryPoints.slang, also it doesn't automatically set the Slang Compiler, so I have to specify it using Slang_COMPILER

[  4%] Minifying path tracing shaders to /home/adro/Applications/Aurora/SourceFedora/Build/Libraries/Aurora/CompiledShaders/CommonShaders.h
Compiling main entry point /home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/Shaders/MainEntryPoints.slang with Slang compiler /home/adro/Applications/Aurora/Externals/Slang/bin/linux-x64/release/slangd to DXIL in header /home/adro/Applications/Aurora/SourceFedora/Build/Libraries/Aurora/CompiledShaders/MainEntryPoints.h

A workaround (?) is to manually execute the python command: python Scripts/minifyShadersFolder.py Libraries/Aurora/Source/Shaders Build/Libraries/Aurora/CompiledShaders/CommonShaders.h

Current Errors

[  4%] Building CXX object Libraries/Aurora/CMakeFiles/Aurora.dir/Source/HGI/HGIRenderer.cpp.o
In file included from /home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIMaterial.h:17,
                 from /home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIRenderer.cpp:21:
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/MaterialBase.h: In constructor ‘Aurora::TextureProperties::TextureProperties(const std::vector<Aurora::TextureIdentifier>&)’:
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/MaterialBase.h:34:27: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<Aurora::TextureIdentifier>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   34 |         for (int i = 0; i < names.size(); i++)
      |                         ~~^~~~~~~~~~~~~~
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIRenderer.cpp: In constructor ‘Aurora::HGIRenderer::HGIRenderer(uint32_t)’:
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIRenderer.cpp:47:35: error: ‘g_sInitializeDefaultMaterialType’ is not a member of ‘CommonShaders’
   47 |         "Default", CommonShaders::g_sInitializeDefaultMaterialType);
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIRenderer.cpp: In member function ‘virtual void Aurora::HGIRenderer::render(uint32_t, uint32_t)’:
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIRenderer.cpp:436:71: error: no matching function for call to ‘pxrInternal_v0_24__pxrReserved__::Hgi::CreateComputeCmds()’
  436 |         HgiComputeCmdsUniquePtr computeCmds = hgi()->CreateComputeCmds();
      |                                               ~~~~~~~~~~~~~~~~~~~~~~~~^~
In file included from /home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/pch.h:126,
                 from /home/adro/Applications/Aurora/SourceFedora/Build/Libraries/Aurora/CMakeFiles/Aurora.dir/cmake_pch.hxx:5,
                 from <command-line>:
/home/adro/Applications/Aurora/ExternalsFedora/USD/include/pxr/imaging/hgi/hgi.h:191:37: note: candidate: ‘virtual pxrInternal_v0_24__pxrReserved__::HgiComputeCmdsUniquePtr pxrInternal_v0_24__pxrReserved__::Hgi::CreateComputeCmds(const pxrInternal_v0_24__pxrReserved__::HgiComputeCmdsDesc&)’
  191 |     virtual HgiComputeCmdsUniquePtr CreateComputeCmds(
      |                                     ^~~~~~~~~~~~~~~~~
/home/adro/Applications/Aurora/ExternalsFedora/USD/include/pxr/imaging/hgi/hgi.h:191:37: note:   candidate expects 1 argument, 0 provided
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIRenderer.cpp:449:86: error: no matching function for call to ‘pxrInternal_v0_24__pxrReserved__::Hgi::CreateComputeCmds()’
  449 |             HgiComputeCmdsUniquePtr postProcessComputeCmds = hgi()->CreateComputeCmds();
      |                                                              ~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/adro/Applications/Aurora/ExternalsFedora/USD/include/pxr/imaging/hgi/hgi.h:191:37: note: candidate: ‘virtual pxrInternal_v0_24__pxrReserved__::HgiComputeCmdsUniquePtr pxrInternal_v0_24__pxrReserved__::Hgi::CreateComputeCmds(const pxrInternal_v0_24__pxrReserved__::HgiComputeCmdsDesc&)’
  191 |     virtual HgiComputeCmdsUniquePtr CreateComputeCmds(
      |                                     ^~~~~~~~~~~~~~~~~
/home/adro/Applications/Aurora/ExternalsFedora/USD/include/pxr/imaging/hgi/hgi.h:191:37: note:   candidate expects 1 argument, 0 provided
[ 22%] Building CXX object Tests/AuroraInternals/CMakeFiles/AuroraInternalsTests.dir/__/__/Libraries/Aurora/Source/MaterialShader.cpp.o
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp: In member function ‘void Aurora::HGIScene::rebuildInstanceList()’:
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp:131:19: error: ‘using std::__shared_ptr_access<Aurora::HGIMaterial, __gnu_cxx::_S_atomic, false, false>::element_type = class Aurora::HGIMaterial’ {aka ‘class Aurora::HGIMaterial’} has no member named ‘hasValue’; did you mean ‘clearValue’?
  131 |         if (pMtl->hasValue("base_color_image"))
      |                   ^~~~~~~~
      |                   clearValue
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp:133:68: error: ‘using std::__shared_ptr_access<Aurora::HGIMaterial, __gnu_cxx::_S_atomic, false, false>::element_type = class Aurora::HGIMaterial’ {aka ‘class Aurora::HGIMaterial’} has no member named ‘asImage’
  133 |             pBaseColorImage = dynamic_pointer_cast<HGIImage>(pMtl->asImage("base_color_image"));
      |                                                                    ^~~~~~~
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp:145:19: error: ‘using std::__shared_ptr_access<Aurora::HGIMaterial, __gnu_cxx::_S_atomic, false, false>::element_type = class Aurora::HGIMaterial’ {aka ‘class Aurora::HGIMaterial’} has no member named ‘hasValue’; did you mean ‘clearValue’?
  145 |         if (pMtl->hasValue("specular_roughness_image"))
      |                   ^~~~~~~~
      |                   clearValue
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp:148:54: error: ‘using std::__shared_ptr_access<Aurora::HGIMaterial, __gnu_cxx::_S_atomic, false, false>::element_type = class Aurora::HGIMaterial’ {aka ‘class Aurora::HGIMaterial’} has no member named ‘asImage’
  148 |                 dynamic_pointer_cast<HGIImage>(pMtl->asImage("specular_roughness_image"));
      |                                                      ^~~~~~~
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp:160:19: error: ‘using std::__shared_ptr_access<Aurora::HGIMaterial, __gnu_cxx::_S_atomic, false, false>::element_type = class Aurora::HGIMaterial’ {aka ‘class Aurora::HGIMaterial’} has no member named ‘hasValue’; did you mean ‘clearValue’?
  160 |         if (pMtl->hasValue("opacity_image"))
      |                   ^~~~~~~~
      |                   clearValue
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp:162:66: error: ‘using std::__shared_ptr_access<Aurora::HGIMaterial, __gnu_cxx::_S_atomic, false, false>::element_type = class Aurora::HGIMaterial’ {aka ‘class Aurora::HGIMaterial’} has no member named ‘asImage’
  162 |             pOpacityImage = dynamic_pointer_cast<HGIImage>(pMtl->asImage("opacity_image"));
      |                                                                  ^~~~~~~
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp:174:19: error: ‘using std::__shared_ptr_access<Aurora::HGIMaterial, __gnu_cxx::_S_atomic, false, false>::element_type = class Aurora::HGIMaterial’ {aka ‘class Aurora::HGIMaterial’} has no member named ‘hasValue’; did you mean ‘clearValue’?
  174 |         if (pMtl->hasValue("normal_image"))
      |                   ^~~~~~~~
      |                   clearValue
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp:176:65: error: ‘using std::__shared_ptr_access<Aurora::HGIMaterial, __gnu_cxx::_S_atomic, false, false>::element_type = class Aurora::HGIMaterial’ {aka ‘class Aurora::HGIMaterial’} has no member named ‘asImage’
  176 |             pNormalImage = dynamic_pointer_cast<HGIImage>(pMtl->asImage("normal_image"));
      |                                                                 ^~~~~~~
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp: In member function ‘void Aurora::HGIScene::createResources()’:
/home/adro/Applications/Aurora/SourceFedora/Libraries/Aurora/Source/HGI/HGIScene.cpp:490:52: error: ‘g_sInitializeDefaultMaterialType’ is not a member of ‘CommonShaders’
  490 |         "InitializeMaterial.slang", CommonShaders::g_sInitializeDefaultMaterialType);
      |                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Thanks a lot in advance.

pixnblox commented 3 months ago

We found that we have a merge error that prevents the Vulkan backend from working. Basically it is using old code, and we will update it to use the proper new code. Windows is fine, so please try that for now if you are able. We will issue a patch release to fix Vulkan / Linux. Thanks for your patience!