@@ -45,6 +45,7 @@ option(MATERIALX_BUILD_GEN_MSL "Build the MSL shader generator back-end." ON)
4545option (MATERIALX_BUILD_GEN_SLANG "Build the Slang shader generator back-end." ON )
4646option (MATERIALX_BUILD_RENDER "Build the MaterialX Render modules." ON )
4747option (MATERIALX_BUILD_RENDER_PLATFORMS "Build platform-specific render modules for each shader generator." ON )
48+ option (MATERIALX_RENDER_MSL_ONLY "On macOS, render with Metal Shading Language only (disables GLSL rendering)." OFF )
4849option (MATERIALX_BUILD_OIIO "Build OpenImageIO support for MaterialXRender." OFF )
4950option (MATERIALX_BUILD_OCIO "Build OpenColorIO support for shader generators." OFF )
5051option (MATERIALX_BUILD_TESTS "Build unit tests." OFF )
@@ -112,6 +113,17 @@ if (MATERIALX_BUILD_JS)
112113 set (MATERIALX_BUILD_TESTS OFF )
113114endif ()
114115
116+ # Validate MSL-only rendering option
117+ if (MATERIALX_RENDER_MSL_ONLY)
118+ if (NOT APPLE )
119+ message (FATAL_ERROR "MATERIALX_RENDER_MSL_ONLY can only be enabled on Apple platforms" )
120+ endif ()
121+ if (NOT MATERIALX_BUILD_GEN_MSL)
122+ message (FATAL_ERROR "MATERIALX_RENDER_MSL_ONLY requires MATERIALX_BUILD_GEN_MSL to be enabled" )
123+ endif ()
124+ message (STATUS "MSL-only rendering mode enabled - GLSL rendering will be disabled" )
125+ endif ()
126+
115127# All hardware shading languages currently depend on the GLSL shader generator.
116128if (MATERIALX_BUILD_GEN_MSL)
117129 set (MATERIALX_BUILD_GEN_GLSL ON )
@@ -178,6 +190,7 @@ mark_as_advanced(MATERIALX_BUILD_GEN_MSL)
178190mark_as_advanced (MATERIALX_BUILD_OSOS )
179191mark_as_advanced (MATERIALX_BUILD_RENDER )
180192mark_as_advanced (MATERIALX_BUILD_RENDER_PLATFORMS )
193+ mark_as_advanced (MATERIALX_RENDER_MSL_ONLY )
181194mark_as_advanced (MATERIALX_BUILD_OIIO )
182195mark_as_advanced (MATERIALX_BUILD_OCIO )
183196mark_as_advanced (MATERIALX_BUILD_BENCHMARK_TESTS )
@@ -502,8 +515,11 @@ if(MATERIALX_BUILD_RENDER)
502515 if (MATERIALX_BUILD_RENDER_PLATFORMS)
503516 set (MATERIALX_BUILD_RENDER_HW OFF )
504517 if (MATERIALX_BUILD_GEN_GLSL AND NOT MATERIALX_BUILD_APPLE_EMBEDDED)
505- set (MATERIALX_BUILD_RENDER_HW ON )
506- add_subdirectory (source /MaterialXRenderGlsl )
518+ # Skip GLSL rendering on macOS if MSL-only mode is enabled
519+ if (NOT (APPLE AND MATERIALX_RENDER_MSL_ONLY))
520+ set (MATERIALX_BUILD_RENDER_HW ON )
521+ add_subdirectory (source /MaterialXRenderGlsl )
522+ endif ()
507523 endif ()
508524 if (MATERIALX_BUILD_GEN_MSL AND APPLE )
509525 set (MATERIALX_BUILD_RENDER_HW ON )
@@ -523,7 +539,12 @@ if(MATERIALX_BUILD_RENDER)
523539 add_subdirectory (source /MaterialXView )
524540 endif ()
525541 if (MATERIALX_BUILD_GRAPH_EDITOR)
526- add_subdirectory (source /MaterialXGraphEditor )
542+ # Graph Editor currently requires GLSL rendering
543+ if (APPLE AND MATERIALX_RENDER_MSL_ONLY)
544+ message (WARNING "MaterialXGraphEditor requires GLSL rendering and will not be built when MATERIALX_RENDER_MSL_ONLY is enabled on macOS" )
545+ else ()
546+ add_subdirectory (source /MaterialXGraphEditor )
547+ endif ()
527548 endif ()
528549 if (MATERIALX_INSTALL_RESOURCES AND NOT SKBUILD)
529550 add_subdirectory (resources )
0 commit comments