Skip to content

Commit

Permalink
Merge branch 'adsk_contrib/dev' into adsk_contrib/shaderx
Browse files Browse the repository at this point in the history
  • Loading branch information
bernardkwok committed Mar 18, 2019
2 parents fe8ff70 + 2647d26 commit ad731b2
Show file tree
Hide file tree
Showing 1,476 changed files with 14,577 additions and 11,308 deletions.
13 changes: 6 additions & 7 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,24 +33,23 @@ build_script:
- cd build
- cmake -DMATERIALX_BUILD_PYTHON=ON -DMATERIALX_WARNINGS_AS_ERRORS=ON -G "%CMAKE_PLATFORM%" -DCMAKE_BUILD_TYPE="%CONFIGURATION%" ..
- cmake --build . --target install --config %CONFIGURATION%
- ctest --output-on-failure --build-config %CONFIGURATION%
- ctest -VV --output-on-failure --build-config %CONFIGURATION%
- cmake -E chdir ../python/MaterialXTest python main.py
- cmake -E chdir ../python/MaterialXTest python genshader.py

before_deploy:
# Go to install directory and zip it up. Currently marked as pre-release
- cd C:\Projects\MaterialX\build\installed
- 7z a -r C:\Projects\MaterialX\materialx-v1.36.2_shaderx-%VS_PLATFORM%-%CONFIGURATION%.zip .
- 7z a -r C:\Projects\MaterialX\materialx-v1.36.3_shaderx-%VS_PLATFORM%-%CONFIGURATION%.zip .

artifacts:
# Set artifact to be created zip. Currently marked as pre-release
- path: materialx-v1.36.2_shaderx-%VS_PLATFORM%-%CONFIGURATION%.zip
name: ShaderXPackage
- path: materialx-v1.36.3_shaderx-%VS_PLATFORM%-%CONFIGURATION%.zip
name: MaterialX_ADSK

deploy:
# Deploy on main working branch
- release: v1.36.2_shaderx
provider: GitHub
artifact: ShaderXPackage
- provider: GitHub
prerelease: true
on:
VS_PLATFORM: Windows
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@
# Ignore directories
build
deploy

# Ignore local editor settings
.vscode/settings.json
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,10 @@ script:
- cd build
- cmake -DMATERIALX_BUILD_PYTHON=ON -DMATERIALX_PYTHON_VERSION=2 -DMATERIALX_INSTALL_PYTHON=OFF -DMATERIALX_WARNINGS_AS_ERRORS=ON -DCMAKE_BUILD_TYPE="${CONFIG}" ${CMAKE_EXTRA_ARGS} ..
- cmake --build . --target install --config "${CONFIG}" -- -j4
- ctest --output-on-failure --build-config "${CONFIG}"
- ctest -VV --output-on-failure --build-config "${CONFIG}"
- export PYTHONPATH=$PYTHONPATH:$PWD/installed/python
- cmake -E chdir ../python/MaterialXTest python main.py
- cmake -E chdir ../python/MaterialXTest python genshader.py

before_deploy:
# Go to install directory and zip up to create artifact
Expand Down
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
# Change Log

## [1.36.2] - Development
## [1.36.3] - Development

Merged shader code generation and PBR node support from Autodesk's ShaderX extensions.

### Added
- Added the MaterialXGenShader library, supporting shader code generation in GLSL and OSL.
- Added the PBR node library (libraries/pbrlib).
- Added a root-level 'resources' folder.
- Added support for the 'place2d' node.

### Changed
- Moved the MaterialX data libraries from 'documents/Libraries' to 'libraries'.

## [1.36.2] - 2019-03-05

### Added
- Added support for 'nodedef' attributes on MaterialX\:\:Node, integrating this usage into GraphElement\:\:addNodeInstance.
- Added the MaterialX\:\:GeomPropDef class for geometric input declarations.
- Added the Document\:\:getGeomAttrValue method.
- Added the ValueElement\:\:getResolvedValue method.
- Added support for the MATERIALX_SEARCH_PATH environment variable.
- Added support for GCC 8 and Clang 7.

### Changed
Expand Down
119 changes: 77 additions & 42 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,6 @@ option(MATERIALX_BUILD_DOCS "Create HTML documentation using Doxygen. Requires t
option(MATERIALX_PYTHON_LTO "Enable link-time optimizations for MaterialX Python." ON)
option(MATERIALX_INSTALL_PYTHON "Install the MaterialX Python package as a third-party library when the install target is built." ON)
option(MATERIALX_WARNINGS_AS_ERRORS "Interpret all compiler warnings as errors." OFF)
option(MATERIALX_BUILD_RENDER "Build the MaterialX Render module. " ON)
option(MATERIALX_TEST_RENDER "Run tests for MaterialX Render module. Requires a valid GPU setup for hardware dependent validation." OFF)
option(MATERIALX_BUILD_GEN_OSL "Build the OSL shader generator back-end." ON)
option(MATERIALX_BUILD_GEN_GLSL "Build the GLSL shader generator back-end." ON)
cmake_dependent_option(MATERIALX_BUILD_GEN_OGSFX "Build the OGSFX shader generator back-end." ON "MATERIALX_BUILD_GEN_GLSL" OFF)
option(MATERIALX_BUILD_CONTRIB "Build contribution folder." ON)

set(MATERIALX_OSLC_EXECUTABLE "" CACHE FILEPATH
"Full path to the oslc binary.")
set(MATERIALX_TESTSHADE_EXECUTABLE "" CACHE FILEPATH
"Full path to the testshade binary.")
set(MATERIALX_TESTRENDER_EXECUTABLE "" CACHE FILEPATH
"Full path to the testrender binary.")
set(MATERIALX_OSL_INCLUDE_PATH "" CACHE PATH
"Full path to osl include paths. e.g. location of stdosl.h")

set(MATERIALX_PYTHON_VERSION "" CACHE STRING
"Python version to be used in building the MaterialX Python package (e.g. '2.7').")
Expand All @@ -51,21 +36,56 @@ mark_as_advanced(MATERIALX_PYTHON_EXECUTABLE)
mark_as_advanced(MATERIALX_PYTHON_OCIO_DIR)
mark_as_advanced(MATERIALX_PYTHON_PYBIND11_DIR)

# Shader generation options
option(MATERIALX_BUILD_GEN_OGSFX "Build the OGSFX shader generator back-end." ON)
mark_as_advanced(MATERIALX_BUILD_GEN_OGSFX)
option(MATERIALX_BUILD_GEN_ARNOLD "Build the Arnold OSL shader generator back-end." ON)
mark_as_advanced(MATERIALX_BUILD_GEN_ARNOLD)

# Shader render / validation options
option(MATERIALX_BUILD_RENDER "Build the MaterialX Render module." ON)
mark_as_advanced(MATERIALX_BUILD_RENDER)
option(MATERIALX_BUILD_RENDEROSL "Build OSL shader generator validation." ON)
mark_as_advanced(MATERIALX_BUILD_RENDEROSL)
option(MATERIALX_BUILD_RENDERGLSL "Build GLSL shader generator validation." ON)
mark_as_advanced(MATERIALX_BUILD_RENDERGLSL)
option(MATERIALX_TEST_RENDER "Run tests for MaterialX Render module. GPU setup required for graphics validation." OFF)
mark_as_advanced(MATERIALX_TEST_RENDER)
option(MATERIALX_BUILD_OIIO "Build OpenImageIO support for MaterialXRender. " OFF)
mark_as_advanced(MATERIALX_BUILD_OIIO)
set(MATERIALX_OIIO_DIR "" CACHE PATH "Path to the root folder of the OpenImageIO installation.")
mark_as_advanced(MATERIALX_OIIO_DIR)
option(MATERIALX_BUILD_CONTRIB "Build contribution folder." OFF)
mark_as_advanced(MATERIALX_BUILD_CONTRIB)
if (NOT MATERIALX_BUILD_RENDER)
set (MATERIALX_BUILD_RENDEROSL OFF)
set (MATERIALX_BUILD_RENDERGLSL OFF)
set (MATERIALX_BUILD_CONTRIB OFF)
set (MATERIALX_BUILD_OIIO OFF)
endif()

# Helpers for OSL validation
set(MATERIALX_OSLC_EXECUTABLE "" CACHE FILEPATH "Full path to the oslc binary.")
mark_as_advanced(MATERIALX_OSLC_EXECUTABLE)
mark_as_advanced(MATERIALX_TESTSHADE_EXECUTABLE)
set(MATERIALX_TESTRENDER_EXECUTABLE "" CACHE FILEPATH "Full path to the testrender binary.")
mark_as_advanced(MATERIALX_TESTRENDER_EXECUTABLE)
set(MATERIALX_OSL_INCLUDE_PATH "" CACHE PATH "Full path to osl include paths. e.g. location of stdosl.h")
mark_as_advanced(MATERIALX_OSL_INCLUDE_PATH)
mark_as_advanced(MATERIALX_BUILD_GEN_OSL)
mark_as_advanced(MATERIALX_BUILD_GEN_GLSL)
mark_as_advanced(MATERIALX_BUILD_GEN_OGSFX)
mark_as_advanced(MATERIALX_BUILD_CONTRIB)

add_definitions(-DMATERIALX_OSLC_EXECUTABLE=\"${MATERIALX_OSLC_EXECUTABLE}\")
add_definitions(-DMATERIALX_TESTSHADE_EXECUTABLE=\"${MATERIALX_TESTSHADE_EXECUTABLE}\")
add_definitions(-DMATERIALX_TESTRENDER_EXECUTABLE=\"${MATERIALX_TESTRENDER_EXECUTABLE}\")
add_definitions(-DMATERIALX_OSL_INCLUDE_PATH=\"${MATERIALX_OSL_INCLUDE_PATH}\")
if (MATERIALX_OSLC_EXECUTABLE)
add_definitions(-DMATERIALX_OSLC_EXECUTABLE=\"${MATERIALX_OSLC_EXECUTABLE}\")
else()
set (MATERIALX_BUILD_RENDEROSL OFF)
endif()
iF (MATERIALX_TESTRENDER_EXECUTABLE)
add_definitions(-DMATERIALX_TESTRENDER_EXECUTABLE=\"${MATERIALX_TESTRENDER_EXECUTABLE}\")
else()
set (MATERIALX_BUILD_RENDEROSL OFF)
endif()
if (MATERIALX_OSL_INCLUDE_PATH)
add_definitions(-DMATERIALX_OSL_INCLUDE_PATH=\"${MATERIALX_OSL_INCLUDE_PATH}\")
else()
set (MATERIALX_BUILD_RENDEROSL OFF)
endif()

# Adjust the default installation path
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
Expand All @@ -74,6 +94,9 @@ endif()

# Adjust compiler settings
if(MSVC)
# Enable multithreaded builds
add_compile_options(/MP)

if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
else()
Expand Down Expand Up @@ -117,39 +140,51 @@ endif()
add_subdirectory(source/MaterialXCore)
add_subdirectory(source/MaterialXFormat)
add_subdirectory(source/MaterialXGenShader)
add_subdirectory(source/MaterialXGenOsl)
add_subdirectory(source/MaterialXGenGlsl)

if (MATERIALX_BUILD_GEN_OSL)
add_definitions(-DMATERIALX_BUILD_GEN_OSL)
add_subdirectory(source/MaterialXGenOsl)
endif(MATERIALX_BUILD_GEN_OSL)
if (MATERIALX_BUILD_GEN_GLSL)
add_definitions(-DMATERIALX_BUILD_GEN_GLSL)
add_subdirectory(source/MaterialXGenGlsl)
endif(MATERIALX_BUILD_GEN_GLSL)
if (MATERIALX_BUILD_GEN_OGSFX)
add_definitions(-DMATERIALX_BUILD_GEN_OGSFX)
add_subdirectory(source/MaterialXGenOgsFx)
endif(MATERIALX_BUILD_GEN_OGSFX)
endif()
if (MATERIALX_BUILD_GEN_ARNOLD)
add_definitions(-DMATERIALX_BUILD_GEN_ARNOLD)
add_subdirectory(source/MaterialXGenArnold)
endif()

if (MATERIALX_BUILD_RENDER)
if (MATERIALX_TEST_RENDER)
add_definitions(-DMATERIALX_TEST_RENDER)
endif(MATERIALX_TEST_RENDER)
add_definitions(-DMATERIALX_BUILD_RENDER)
if (MATERIALX_BUILD_OIIO)
add_definitions(-DMATERIALX_BUILD_OIIO)
endif()
add_subdirectory(source/MaterialXRender)
if (MATERIALX_BUILD_RENDEROSL)
add_subdirectory(source/MaterialXRenderOsl)
add_definitions(-DMATERIALX_BUILD_RENDEROSL)
endif()
if (MATERIALX_BUILD_RENDERGLSL)
add_subdirectory(source/MaterialXRenderHw)
add_subdirectory(source/MaterialXRenderGlsl)
add_definitions(-DMATERIALX_BUILD_RENDERGLSL)
endif()
if (MATERIALX_TEST_RENDER)
add_definitions(-DMATERIALX_TEST_RENDER)
endif()
endif(MATERIALX_BUILD_RENDER)

if (MATERIALX_BUILD_CONTRIB)
add_definitions(-DMATERIALX_BUILD_CONTRIB)
add_subdirectory(source/MaterialXContrib)
endif(MATERIALX_BUILD_CONTRIB)
endif()

add_subdirectory(source/MaterialXTest)
add_subdirectory(documents)
add_subdirectory(libraries)
add_subdirectory(resources)

if(MATERIALX_BUILD_PYTHON)
add_subdirectory(source/PyMaterialX)
add_subdirectory(python)
endif(MATERIALX_BUILD_PYTHON)


endif()
if(MATERIALX_BUILD_DOCS)
add_subdirectory(documents)
endif()
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@ The Python bindings for MaterialX are based on [PyBind11](https://github.com/pyb

The MaterialX repository consists of the following folders:

- [documents](documents) - The MaterialX specification, developer guide, example and test suite files.
- [source](source) - Cross-platform C++ libraries for MaterialX with Python bindings.
- [python](python) - Support modules for MaterialX Python.
- [documents](documents) - MaterialX documentation, including its specification and developer guides.
- [libraries](libraries) - The standard data libraries for MaterialX, including the definitions of its pattern and shader nodes.
- [resources](resources) - Resources for rendering MaterialX content, including example materials, images, and geometry.

### Usage
## Usage

Use of this code is subject to the terms of the Autodesk license agreement provided at the time of installation or download, or which otherwise accompanies this software in either electronic or hard copy form.

Expand Down
60 changes: 33 additions & 27 deletions documents/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,29 +1,35 @@
install(DIRECTORY ${CMAKE_SOURCE_DIR}/documents/Libraries/
DESTINATION "${CMAKE_INSTALL_PREFIX}/documents/Libraries")
set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(DOXYGEN_HTML_OUTPUT_DIR ${DOXYGEN_OUTPUT_DIR}/MaterialXDocs)
set(DOXYGEN_INPUT_LIST ${CMAKE_SOURCE_DIR}/documents/DeveloperGuide
${CMAKE_SOURCE_DIR}/source/MaterialXCore
${CMAKE_SOURCE_DIR}/source/MaterialXFormat
${CMAKE_SOURCE_DIR}/source/MaterialXGenShader
${CMAKE_SOURCE_DIR}/source/MaterialXGenShader/Nodes
${CMAKE_SOURCE_DIR}/source/MaterialXGenGlsl
${CMAKE_SOURCE_DIR}/source/MaterialXGenGlsl/Nodes
${CMAKE_SOURCE_DIR}/source/MaterialXGenOsl
${CMAKE_SOURCE_DIR}/source/MaterialXGenOgsFx
${CMAKE_SOURCE_DIR}/source/MaterialXGenOsl
${CMAKE_SOURCE_DIR}/source/MaterialXGenArnold
${CMAKE_SOURCE_DIR}/source/MaterialXRender
${CMAKE_SOURCE_DIR}/source/MaterialXRender/Handlers
${CMAKE_SOURCE_DIR}/source/MaterialXRender/ShaderValidators
${CMAKE_SOURCE_DIR}/source/MaterialXRenderHw
${CMAKE_SOURCE_DIR}/source/MaterialXRenderGlsl
${CMAKE_SOURCE_DIR}/source/MaterialXRenderOsl
)
string (REPLACE ";" " " DOXYGEN_INPUT_STR "${DOXYGEN_INPUT_LIST}")

if(MATERIALX_BUILD_DOCS)
set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(DOXYGEN_HTML_OUTPUT_DIR ${DOXYGEN_OUTPUT_DIR}/MaterialXDocs)
set(DOXYGEN_INPUT_LIST ${CMAKE_SOURCE_DIR}/documents/DeveloperGuide
${CMAKE_SOURCE_DIR}/source/MaterialXCore
${CMAKE_SOURCE_DIR}/source/MaterialXFormat
${CMAKE_SOURCE_DIR}/source/MaterialXGenShader
${CMAKE_SOURCE_DIR}/source/MaterialXGenGlsl
${CMAKE_SOURCE_DIR}/source/MaterialXGenOgsFx
${CMAKE_SOURCE_DIR}/source/MaterialXGenOsl)
string (REPLACE ";" " " DOXYGEN_INPUT_STR "${DOXYGEN_INPUT_LIST}")
find_package(Doxygen)

find_package(Doxygen)

if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
add_custom_target(MaterialXDocs ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating HTML documentation: ${DOXYGEN_HTML_OUTPUT_DIR}/index.html")
add_custom_command(TARGET MaterialXDocs PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/documents/Images ${CMAKE_CURRENT_BINARY_DIR})
install(DIRECTORY ${DOXYGEN_HTML_OUTPUT_DIR}
DESTINATION "${CMAKE_INSTALL_PREFIX}/documents" MESSAGE_NEVER)
endif(DOXYGEN_FOUND)
endif(MATERIALX_BUILD_DOCS)
if(DOXYGEN_FOUND)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
add_custom_target(MaterialXDocs ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating HTML documentation: ${DOXYGEN_HTML_OUTPUT_DIR}/index.html")
add_custom_command(TARGET MaterialXDocs PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/resources/Images ${CMAKE_CURRENT_BINARY_DIR})
install(DIRECTORY ${DOXYGEN_HTML_OUTPUT_DIR}
DESTINATION "${CMAKE_INSTALL_PREFIX}/documents" MESSAGE_NEVER)
endif(DOXYGEN_FOUND)
Loading

0 comments on commit ad731b2

Please sign in to comment.