Skip to main content
samantha_bolt
Participant
February 4, 2026
Question

How to get substance engine from Substance materials SDK to generate textures for sbsar plugin?

  • February 4, 2026
  • 1 reply
  • 10 views

Hi all! I have a problem with using the sbsar plugin. I wrote a detailed report here but I’ll summarize it here. I got the sbsar plugin to build, install and load in our renderer but all the substance archive materials appear like this on the object. I’ve used Cardboard.sbsar, DoubleCardboard.sbsar and natural_lambskin_leather.sbsar and they all look like this.

Since the Substance engine will generate the textures on demand, I’m guessing there’s a problem with the way I set it up. I couldn’t find documentation on how to do so, so far what I’ve done is extract the tar substance-ubuntu22-v9.3.1-fb5c0b3b.tar.bz2 then add the -DSUBSTANCE_FRAMEWORK_ENGINE_VARIANT=ss2_blend to the cmake command that builds the sbsar plugin. The rest I just followed instructions for Linux from the repo

I know the sbsar plugin loaded because when I don’t load it by not setting the environment variables, the material is not found, and the default surface is applied to the objects. Here I can see there is some texture applied but it’s the wrong one.

I appreciate any help, thanks!

1 reply

samantha_bolt
Participant
February 4, 2026

I tried the following options for -DSUBSTANCE_FRAMEWORK_ENGINE_VARIANT :

  • ogl3_blend
  • ogl3_native
  • sse2_blend
  • vk_blend
  • vk_native

ogl3_native and vk_native did not build because of this error:

[ 46%] Building CXX object sbsar/src/CMakeFiles/usdSbsar.dir/assetResolver/sbsarAsset.cpp.o
In file included from /mnt/share/USD-Fileformat-plugins/sbsar/src/./assetResolver/sbsarAsset.h:14,
from /mnt/share/USD-Fileformat-plugins/sbsar/src/assetResolver/sbsarAsset.cpp:13:
/mnt/share/substance-ubuntu22-v9.3.1-fb5c0b3b/include/substance/framework/renderresult.h: In member function 'void* SubstanceAir::RenderResultImage::releaseBuffer()':
/mnt/share/substance-ubuntu22-v9.3.1-fb5c0b3b/include/substance/framework/renderresult.h:109:75: error: 'const SubstanceTexture' {aka 'const struct SubstanceTexture_'} has no member named 'buffer'
109 | { return castToConcrete(releaseTexture()).buffer; }
| ^~~~~~
/mnt/share/USD-Fileformat-plugins/sbsar/src/assetResolver/sbsarAsset.cpp: In function 'uint32_t adobe::usd::sbsar::{anonymous}::_computePixelBufferSize(const SubstanceTexture&)':
/mnt/share/USD-Fileformat-plugins/sbsar/src/assetResolver/sbsarAsset.cpp:26:63: error: 'const SubstanceTexture' {aka 'const struct SubstanceTexture_'} has no member named 'pixelFormat'
26 | size_t bytePerPixel = SbsarImage::getBytePerPixel(texture.pixelFormat);
| ^~~~~~~~~~~
/mnt/share/USD-Fileformat-plugins/sbsar/src/assetResolver/sbsarAsset.cpp: In function 'std::shared_ptr<const char> adobe::usd::sbsar::{anonymous}::copyBuffer(const SubstanceAir::RenderResultImage&)':
/mnt/share/USD-Fileformat-plugins/sbsar/src/assetResolver/sbsarAsset.cpp:41:31: error: 'struct SubstanceTexture_' has no member named 'pixelFormat'
41 | header->pixelFormat = tex.pixelFormat;
| ^~~~~~~~~~~
/mnt/share/USD-Fileformat-plugins/sbsar/src/assetResolver/sbsarAsset.cpp:45:22: error: 'struct SubstanceTexture_' has no member named 'buffer'
45 | memcpy(data, tex.buffer, data_size);
| ^~~~~~
gmake[2]: *** [sbsar/src/CMakeFiles/usdSbsar.dir/build.make:90: sbsar/src/CMakeFiles/usdSbsar.dir/assetResolver/sbsarAsset.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:157: sbsar/src/CMakeFiles/usdSbsar.dir/all] Error 2
gmake: *** [Makefile:136: all] Error 2

The rest did build but the renders were the same as the ones I’ve shown.