Remove unused
|
@ -1,30 +0,0 @@
|
||||||
build_and_store_wheels: &BUILD_AND_STORE_WHEELS
|
|
||||||
install_cibuildwheel_script:
|
|
||||||
- python -m pip install cibuildwheel==2.12.3
|
|
||||||
run_cibuildwheel_script:
|
|
||||||
- cibuildwheel
|
|
||||||
wheels_artifacts:
|
|
||||||
path: "wheelhouse/*"
|
|
||||||
|
|
||||||
# Upload only for tagged commit
|
|
||||||
only_if: $CIRRUS_TAG != ''
|
|
||||||
publish_script:
|
|
||||||
- python -m pip install twine
|
|
||||||
- python -m twine upload --repository-url https://upload.pypi.org/legacy/ --username __token__ wheelhouse/*.whl
|
|
||||||
|
|
||||||
|
|
||||||
linux_aarch64_task:
|
|
||||||
name: Build Linux aarch64 wheels.
|
|
||||||
compute_engine_instance:
|
|
||||||
image_project: cirrus-images
|
|
||||||
image: family/docker-builder-arm64
|
|
||||||
architecture: arm64
|
|
||||||
platform: linux
|
|
||||||
cpu: 4
|
|
||||||
memory: 4G
|
|
||||||
environment:
|
|
||||||
TWINE_PASSWORD: ENCRYPTED[7a87c65110c7601f14459f31565caa3871c7d182e2da2a5c238c5b3e2d4dccf5c8ecb4517c407ff16d5089e1a2cffc12]
|
|
||||||
|
|
||||||
install_pre_requirements_script:
|
|
||||||
- apt install -y python3-venv python-is-python3
|
|
||||||
<<: *BUILD_AND_STORE_WHEELS
|
|
|
@ -1,7 +0,0 @@
|
||||||
---
|
|
||||||
BasedOnStyle: Google
|
|
||||||
IndentWidth: 2
|
|
||||||
TabWidth: 2
|
|
||||||
UseTab: Never
|
|
||||||
BreakBeforeBraces: Attach
|
|
||||||
Standard: Cpp11
|
|
|
@ -1,5 +0,0 @@
|
||||||
FROM gcr.io/oss-fuzz-base/base-builder:v1
|
|
||||||
RUN apt-get update && apt-get install -y make autoconf automake libtool meson ninja-build
|
|
||||||
COPY . $SRC/tinyusdz
|
|
||||||
WORKDIR $SRC/tinyusdz
|
|
||||||
COPY .clusterfuzzlite/build.sh $SRC/
|
|
|
@ -1,21 +0,0 @@
|
||||||
#!/bin/bash -eu
|
|
||||||
|
|
||||||
# build project
|
|
||||||
# e.g.
|
|
||||||
# ./autogen.sh
|
|
||||||
# ./configure
|
|
||||||
# make -j$(nproc) all
|
|
||||||
|
|
||||||
# build fuzzers
|
|
||||||
# e.g.
|
|
||||||
# $CXX $CXXFLAGS -std=c++11 -Iinclude \
|
|
||||||
# /path/to/name_of_fuzzer.cc -o $OUT/name_of_fuzzer \
|
|
||||||
# $LIB_FUZZING_ENGINE /path/to/library.a
|
|
||||||
|
|
||||||
|
|
||||||
cd tests/fuzzer
|
|
||||||
|
|
||||||
rm -rf build
|
|
||||||
CXX=clang++ CC=clang meson -Dprefix=$OUT build
|
|
||||||
cd build
|
|
||||||
ninja && cp fuzz_intcoding fuzz_tinyusdz fuzz_usdaparser $OUT/
|
|
|
@ -1 +0,0 @@
|
||||||
language: c++
|
|
|
@ -1,13 +0,0 @@
|
||||||
# These are supported funding model platforms
|
|
||||||
|
|
||||||
github: syoyo # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
|
||||||
patreon: # Replace with a single Patreon username
|
|
||||||
open_collective: # Replace with a single Open Collective username
|
|
||||||
ko_fi: # Replace with a single Ko-fi username
|
|
||||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
|
||||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
|
||||||
liberapay: # Replace with a single Liberapay username
|
|
||||||
issuehunt: # Replace with a single IssueHunt username
|
|
||||||
otechie: # Replace with a single Otechie username
|
|
||||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
|
||||||
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
|
|
@ -1,10 +0,0 @@
|
||||||
name: "TinyUSDZ CodeQL config"
|
|
||||||
|
|
||||||
paths:
|
|
||||||
- src
|
|
||||||
paths-ignore:
|
|
||||||
- src/external
|
|
||||||
- src/osd
|
|
||||||
- src/lz4
|
|
||||||
- src/blender
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
name: ClusterFuzzLite continuous builds
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- dev # Use your actual default branch here.
|
|
||||||
permissions: read-all
|
|
||||||
jobs:
|
|
||||||
Build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ matrix.sanitizer }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
sanitizer:
|
|
||||||
- address
|
|
||||||
# Override this with the sanitizers you want.
|
|
||||||
# - undefined
|
|
||||||
# - memory
|
|
||||||
steps:
|
|
||||||
- name: Build Fuzzers (${{ matrix.sanitizer }})
|
|
||||||
id: build
|
|
||||||
uses: google/clusterfuzzlite/actions/build_fuzzers@v1
|
|
||||||
with:
|
|
||||||
sanitizer: ${{ matrix.sanitizer }}
|
|
||||||
upload-build: true
|
|
||||||
|
|
|
@ -1,48 +0,0 @@
|
||||||
name: ClusterFuzzLite PR fuzzing
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- '**'
|
|
||||||
permissions: read-all
|
|
||||||
jobs:
|
|
||||||
PR:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ matrix.sanitizer }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
sanitizer:
|
|
||||||
- address
|
|
||||||
# Override this with the sanitizers you want.
|
|
||||||
# - undefined
|
|
||||||
# - memory
|
|
||||||
steps:
|
|
||||||
- name: Build Fuzzers (${{ matrix.sanitizer }})
|
|
||||||
id: build
|
|
||||||
uses: google/clusterfuzzlite/actions/build_fuzzers@v1
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
sanitizer: ${{ matrix.sanitizer }}
|
|
||||||
# Optional but recommended: used to only run fuzzers that are affected
|
|
||||||
# by the PR.
|
|
||||||
# See later section on "Git repo for storage".
|
|
||||||
# storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/OWNER/STORAGE-REPO-NAME.git
|
|
||||||
# storage-repo-branch: main # Optional. Defaults to "main"
|
|
||||||
# storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages".
|
|
||||||
- name: Run Fuzzers (${{ matrix.sanitizer }})
|
|
||||||
id: run
|
|
||||||
uses: google/clusterfuzzlite/actions/run_fuzzers@v1
|
|
||||||
with:
|
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
fuzz-seconds: 600
|
|
||||||
mode: 'code-change'
|
|
||||||
sanitizer: ${{ matrix.sanitizer }}
|
|
||||||
# Optional but recommended: used to download the corpus produced by
|
|
||||||
# batch fuzzing.
|
|
||||||
# See later section on "Git repo for storage".
|
|
||||||
# storage-repo: https://${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/OWNER/STORAGE-REPO-NAME.git
|
|
||||||
# storage-repo-branch: main # Optional. Defaults to "main"
|
|
||||||
# storage-repo-branch-coverage: gh-pages # Optional. Defaults to "gh-pages".
|
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
name: Android
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ dev ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ dev ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
|
|
||||||
# Android(aarch64) build
|
|
||||||
build-android:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
name: Build for Android(arm64v8a)
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: Show android sdk root
|
|
||||||
run: |
|
|
||||||
env | grep ANDROID
|
|
||||||
echo $ANDROID_SDK_ROOT
|
|
||||||
- name: Setup
|
|
||||||
run: |
|
|
||||||
sudo apt-get install -y ninja-build tree
|
|
||||||
- name: Show android sdk details
|
|
||||||
run: |
|
|
||||||
tree $ANDROID_SDK_ROOT
|
|
||||||
- name: CmakeAndBuild
|
|
||||||
run: |
|
|
||||||
./scripts/bootstrap-android-cmake-linux.sh
|
|
||||||
cd build-android
|
|
||||||
ninja -v
|
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
# For most projects, this workflow file will not need changing; you simply need
|
|
||||||
# to commit it to your repository.
|
|
||||||
#
|
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
|
||||||
# or to provide custom queries or build logic.
|
|
||||||
#
|
|
||||||
# ******** NOTE ********
|
|
||||||
# We have attempted to detect the languages in your repository. Please check
|
|
||||||
# the `language` matrix defined below to confirm you have the correct set of
|
|
||||||
# supported CodeQL languages.
|
|
||||||
#
|
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ "dev" ]
|
|
||||||
pull_request:
|
|
||||||
# The branches below must be a subset of the branches above
|
|
||||||
branches: [ "dev" ]
|
|
||||||
schedule:
|
|
||||||
- cron: '35 18 * * 6'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
language: [ 'cpp', 'python' ]
|
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
|
||||||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v2
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
||||||
# By default, queries listed here will override any specified in a config file.
|
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
||||||
|
|
||||||
# Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
|
||||||
# queries: security-extended,security-and-quality
|
|
||||||
config-file: ./.github/codeql/codeql-config.yml
|
|
||||||
|
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
|
||||||
- name: Autobuild
|
|
||||||
uses: github/codeql-action/autobuild@v2
|
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
|
||||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
|
||||||
|
|
||||||
# If the Autobuild fails above, remove it and uncomment the following three lines.
|
|
||||||
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
|
|
||||||
|
|
||||||
# - run: |
|
|
||||||
# echo "Run, Build Application using script"
|
|
||||||
# ./location_of_script_within_repo/buildscript.sh
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v2
|
|
|
@ -1,29 +0,0 @@
|
||||||
name: iOS
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ dev ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ dev ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
# iOS build
|
|
||||||
build-ios:
|
|
||||||
|
|
||||||
runs-on: macos-latest
|
|
||||||
name: Build for iOS
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: List up iPhone platform
|
|
||||||
run: |
|
|
||||||
ls -la /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
|
|
||||||
- name: CmakeAndBuild
|
|
||||||
run: |
|
|
||||||
./scripts/bootstrap-aarch64-ios.sh
|
|
||||||
cd build-aarch64-cross
|
|
||||||
make VERBOSE=1
|
|
||||||
|
|
||||||
|
|
|
@ -1,115 +0,0 @@
|
||||||
name: Linux
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ dev ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ dev ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
# Disable gcc4.9 and gcc5 since its too obsolete and failed to do apt-get
|
|
||||||
## compile with oldest gcc4.9 which supports (most of)C++14
|
|
||||||
#build-gcc49:
|
|
||||||
|
|
||||||
# runs-on: ubuntu-latest
|
|
||||||
# name: Build with gcc 4.9
|
|
||||||
# steps:
|
|
||||||
# - name: Checkout
|
|
||||||
# uses: actions/checkout@v1
|
|
||||||
# - name: CmakeAndBuild
|
|
||||||
# run: |
|
|
||||||
# sudo apt-add-repository -y 'deb http://dk.archive.ubuntu.com/ubuntu/ xenial main'
|
|
||||||
# sudo apt-add-repository -y 'deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe'
|
|
||||||
# sudo apt-get update
|
|
||||||
# sudo apt-get install -y build-essential
|
|
||||||
# sudo apt-get install -y gcc-4.9 g++-4.9 gcc-4.9-multilib
|
|
||||||
# ./scripts/bootstrap-gcc-49.sh
|
|
||||||
# cd build-gcc49
|
|
||||||
# make VERBOSE=1
|
|
||||||
|
|
||||||
## compile with older gcc5
|
|
||||||
#build-gcc5:
|
|
||||||
|
|
||||||
# runs-on: ubuntu-latest
|
|
||||||
# name: Build with gcc 5
|
|
||||||
|
|
||||||
# steps:
|
|
||||||
# - name: Checkout
|
|
||||||
# uses: actions/checkout@v1
|
|
||||||
# - name: CmakeAndBuild
|
|
||||||
# run: |
|
|
||||||
# sudo apt-add-repository -y 'deb http://dk.archive.ubuntu.com/ubuntu/ xenial main'
|
|
||||||
# sudo apt-add-repository -y 'deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe'
|
|
||||||
# sudo apt-get update
|
|
||||||
# sudo apt-get install -y build-essential
|
|
||||||
# sudo apt-get install -y gcc-5 g++-5
|
|
||||||
# ./scripts/bootstrap-gcc-5.sh
|
|
||||||
# cd build-gcc5
|
|
||||||
# make VERBOSE=1
|
|
||||||
|
|
||||||
# Cross-compile for aarch64 linux target
|
|
||||||
build-cross-aarch64:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
name: Build on cross aarch64
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: CmakeAndBuild
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install -y build-essential
|
|
||||||
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
|
|
||||||
./scripts/bootstrap-gcc-aarch64-cross-ci.sh
|
|
||||||
cd build-cross
|
|
||||||
make VERBOSE=1
|
|
||||||
|
|
||||||
# Build with OpenSubdiv
|
|
||||||
build-osd:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: configure
|
|
||||||
run: ./scripts/bootstrap-cmake-linux-with-osd.sh
|
|
||||||
- name: make
|
|
||||||
run: cd build && make
|
|
||||||
- name: test
|
|
||||||
run: cd build && ctest --output-on-failure
|
|
||||||
|
|
||||||
# 32bit build(Linux only)
|
|
||||||
build-32bit:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
- name: setup
|
|
||||||
run: |
|
|
||||||
sudo apt update
|
|
||||||
sudo apt-get install -y gcc-multilib g++-multilib
|
|
||||||
- name: configure
|
|
||||||
run: ./scripts/bootstrap-cmake-linux-32bit.sh
|
|
||||||
- name: make
|
|
||||||
run: cd build_m32 && make
|
|
||||||
- name: test
|
|
||||||
run: cd build_m32 && ctest --output-on-failure
|
|
||||||
|
|
||||||
build:
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
# ubuntu-latest(Ubuntu 22.04 as of 2024/01/03) has clang installed,
|
|
||||||
# so use clang
|
|
||||||
# TODO: Use libc++ for STL?
|
|
||||||
- name: configure
|
|
||||||
run: CXX=clang++ CC=clang ./scripts/bootstrap-cmake-linux.sh
|
|
||||||
- name: make
|
|
||||||
run: cd build && make
|
|
||||||
- name: tests
|
|
||||||
run: cd build && ctest --output-on-failure
|
|
|
@ -1,29 +0,0 @@
|
||||||
name: macOS
|
|
||||||
|
|
||||||
# TODO: Build with Python.
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ dev ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ dev ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
build-macos:
|
|
||||||
|
|
||||||
runs-on: macos-latest
|
|
||||||
name: Build for macOS
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: CmakeAndBuild
|
|
||||||
run: |
|
|
||||||
./scripts/bootstrap-cmake-macos.sh
|
|
||||||
cd build
|
|
||||||
make VERBOSE=1
|
|
||||||
- name: Ctest
|
|
||||||
run: |
|
|
||||||
cd build
|
|
||||||
ctest --output-on-failure
|
|
|
@ -1,101 +0,0 @@
|
||||||
name: Build and upload to PyPI
|
|
||||||
|
|
||||||
# Build on every branch push, tag push, and pull request change:
|
|
||||||
on: [push, pull_request]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
build_wheels:
|
|
||||||
name: Build wheels on ${{ matrix.os }}
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build wheels
|
|
||||||
uses: pypa/cibuildwheel@v2.16.5
|
|
||||||
# to supply options, put them in 'env', like:
|
|
||||||
# env:
|
|
||||||
# CIBW_SOME_OPTION: value
|
|
||||||
# Disable building PyPy wheels on all platforms
|
|
||||||
env:
|
|
||||||
CIBW_ARCHS_MACOS: "x86_64 universal2 arm64"
|
|
||||||
CIBW_ARCHS_WINDOWS: "AMD64 x86"
|
|
||||||
# aarch64 build takes too much time, so aarch64 build is delegated to Cirrus CI.
|
|
||||||
CIBW_ARCHS_LINUX: "x86_64 i686"
|
|
||||||
CIBW_SKIP: pp*
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
|
|
||||||
path: ./wheelhouse/*.whl
|
|
||||||
|
|
||||||
# It looks cibuildwheels did not clean build folder(CMake), and it results to Windows arm64 build failure(trying to reuse x86 build of .obj)
|
|
||||||
# So supply separated build job for Windows ARM64 build
|
|
||||||
# TODO: clean build folder using CIBW_BEFORE_ALL?
|
|
||||||
build_win_arm64_wheels:
|
|
||||||
name: Build ARM64 wheels on Windows.
|
|
||||||
runs-on: windows-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build wheels
|
|
||||||
uses: pypa/cibuildwheel@v2.16.5
|
|
||||||
# to supply options, put them in 'env', like:
|
|
||||||
# env:
|
|
||||||
# CIBW_SOME_OPTION: value
|
|
||||||
# Disable building PyPy wheels on all platforms
|
|
||||||
env:
|
|
||||||
CIBW_ARCHS_WINDOWS: "ARM64"
|
|
||||||
CIBW_SKIP: pp*
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
|
|
||||||
path: ./wheelhouse/*.whl
|
|
||||||
|
|
||||||
make_sdist:
|
|
||||||
name: Make SDist
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0 # Optional, use if you use setuptools_scm
|
|
||||||
submodules: true # Optional, use if you have submodules
|
|
||||||
|
|
||||||
- name: Build SDist
|
|
||||||
run: pipx run build --sdist
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: cibw-sdist
|
|
||||||
path: dist/*.tar.gz
|
|
||||||
|
|
||||||
upload_all:
|
|
||||||
needs: [build_wheels, build_wheels, make_sdist]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
environment: release
|
|
||||||
permissions:
|
|
||||||
# IMPORTANT: this permission is mandatory for trusted publishing
|
|
||||||
id-token: write
|
|
||||||
# # upload to PyPI on every tag starting with 'v'
|
|
||||||
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
||||||
# alternatively, to publish when a GitHub Release is created, use the following rule:
|
|
||||||
# if: github.event_name == 'push' && github.event.action == 'published'
|
|
||||||
steps:
|
|
||||||
- uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
pattern: cibw-*
|
|
||||||
path: dist
|
|
||||||
merge-multiple: true
|
|
||||||
|
|
||||||
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
||||||
with:
|
|
||||||
# Use Trusted Publishing so no use of PYPI_API_TOKEN
|
|
||||||
# user: __token__
|
|
||||||
# password: ${{ secrets.PYPI_API_TOKEN }}
|
|
||||||
skip-existing: true
|
|
||||||
verbose: true
|
|
|
@ -1,48 +0,0 @@
|
||||||
name: Windows ARM
|
|
||||||
|
|
||||||
# TODO: Run unittest on Native ARM64 Windows11
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ dev ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ dev ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
# Windows(ARM64) + Visual Studio 2022 build
|
|
||||||
build-windows-arm64-msvc:
|
|
||||||
|
|
||||||
runs-on: windows-latest
|
|
||||||
name: Build for Windows(ARM64, MSVC)
|
|
||||||
|
|
||||||
# Use system installed cmake
|
|
||||||
# https://help.github.com/en/actions/reference/software-installed-on-github-hosted-runners
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: Configure
|
|
||||||
run: |
|
|
||||||
mkdir build_arm64
|
|
||||||
cmake -G "Visual Studio 17 2022" -A ARM64 -Bbuild_arm64 -DTINYUSDZ_WITH_EXR=1 -DTINYUSDZ_WITH_TIFF=1 -S.
|
|
||||||
- name: Build
|
|
||||||
run: cmake --build build_arm64 --config Release
|
|
||||||
|
|
||||||
# Windows(ARM32) + Visual Studio 2022 build
|
|
||||||
build-windows-arm32-msvc:
|
|
||||||
|
|
||||||
runs-on: windows-latest
|
|
||||||
name: Build for Windows(ARM32, MSVC)
|
|
||||||
|
|
||||||
# Use system installed cmake
|
|
||||||
# https://help.github.com/en/actions/reference/software-installed-on-github-hosted-runners
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: Configure
|
|
||||||
run: |
|
|
||||||
mkdir build_arm32
|
|
||||||
cmake -G "Visual Studio 17 2022" -A ARM -Bbuild_arm32 -DTINYUSDZ_WITH_EXR=1 -DTINYUSDZ_WITH_TIFF=1 -S.
|
|
||||||
- name: Build
|
|
||||||
run: cmake --build build_arm32 --config Release
|
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
name: Windows
|
|
||||||
|
|
||||||
# TODO: MinGW(gcc) build
|
|
||||||
# TODO: llvm-mingw(clang) build
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ dev ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ dev ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
# Windows(x64) + Visual Studio 2019 build
|
|
||||||
build-windows-msvc:
|
|
||||||
|
|
||||||
runs-on: windows-latest
|
|
||||||
name: Build for Windows(x64, MSVC)
|
|
||||||
|
|
||||||
# Use system installed cmake
|
|
||||||
# https://help.github.com/en/actions/reference/software-installed-on-github-hosted-runners
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: Configure
|
|
||||||
run: .\vcsetup.bat
|
|
||||||
- name: Build
|
|
||||||
run: cmake --build build --config Release
|
|
||||||
- name: Test
|
|
||||||
run: ctest --test-dir build -C Release --output-on-failure
|
|
||||||
|
|
||||||
# Windows(32bit) + Visual Studio 2019 build
|
|
||||||
build-windows-msvc-win32:
|
|
||||||
|
|
||||||
runs-on: windows-latest
|
|
||||||
name: Build for Windows(Win32, MSVC)
|
|
||||||
|
|
||||||
# Use system installed cmake
|
|
||||||
# https://help.github.com/en/actions/reference/software-installed-on-github-hosted-runners
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v1
|
|
||||||
- name: Configure
|
|
||||||
run: .\vcsetup-32bit.bat
|
|
||||||
- name: Build
|
|
||||||
run: cmake --build build_win32 --config Release
|
|
||||||
- name: Test
|
|
||||||
run: ctest --test-dir build_win32 -C Release --output-on-failure
|
|
||||||
|
|
|
@ -1,357 +0,0 @@
|
||||||
## Ignore Visual Studio temporary files, build results, and
|
|
||||||
## files generated by popular Visual Studio add-ons.
|
|
||||||
##
|
|
||||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
|
||||||
|
|
||||||
# App-specific
|
|
||||||
build/
|
|
||||||
|
|
||||||
# User-specific files
|
|
||||||
*.rsuser
|
|
||||||
*.suo
|
|
||||||
*.user
|
|
||||||
*.userosscache
|
|
||||||
*.sln.docstates
|
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
|
||||||
*.userprefs
|
|
||||||
|
|
||||||
# Mono auto generated files
|
|
||||||
mono_crash.*
|
|
||||||
|
|
||||||
# Build results
|
|
||||||
[Dd]ebug/
|
|
||||||
[Dd]ebugPublic/
|
|
||||||
[Rr]elease/
|
|
||||||
[Rr]eleases/
|
|
||||||
x64/
|
|
||||||
x86/
|
|
||||||
[Aa][Rr][Mm]/
|
|
||||||
[Aa][Rr][Mm]64/
|
|
||||||
bld/
|
|
||||||
[Bb]in/
|
|
||||||
[Oo]bj/
|
|
||||||
[Ll]og/
|
|
||||||
|
|
||||||
# Visual Studio 2015/2017 cache/options directory
|
|
||||||
.vs/
|
|
||||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
|
||||||
#wwwroot/
|
|
||||||
|
|
||||||
# Visual Studio 2017 auto generated files
|
|
||||||
Generated\ Files/
|
|
||||||
|
|
||||||
# MSTest test Results
|
|
||||||
[Tt]est[Rr]esult*/
|
|
||||||
[Bb]uild[Ll]og.*
|
|
||||||
|
|
||||||
# NUnit
|
|
||||||
*.VisualState.xml
|
|
||||||
TestResult.xml
|
|
||||||
nunit-*.xml
|
|
||||||
|
|
||||||
# Build Results of an ATL Project
|
|
||||||
[Dd]ebugPS/
|
|
||||||
[Rr]eleasePS/
|
|
||||||
dlldata.c
|
|
||||||
|
|
||||||
# Benchmark Results
|
|
||||||
BenchmarkDotNet.Artifacts/
|
|
||||||
|
|
||||||
# .NET Core
|
|
||||||
project.lock.json
|
|
||||||
project.fragment.lock.json
|
|
||||||
artifacts/
|
|
||||||
|
|
||||||
# StyleCop
|
|
||||||
StyleCopReport.xml
|
|
||||||
|
|
||||||
# Files built by Visual Studio
|
|
||||||
*_i.c
|
|
||||||
*_p.c
|
|
||||||
*_h.h
|
|
||||||
*.ilk
|
|
||||||
*.meta
|
|
||||||
*.obj
|
|
||||||
*.iobj
|
|
||||||
*.pch
|
|
||||||
*.pdb
|
|
||||||
*.ipdb
|
|
||||||
*.pgc
|
|
||||||
*.pgd
|
|
||||||
*.rsp
|
|
||||||
*.sbr
|
|
||||||
*.tlb
|
|
||||||
*.tli
|
|
||||||
*.tlh
|
|
||||||
*.tmp
|
|
||||||
*.tmp_proj
|
|
||||||
*_wpftmp.csproj
|
|
||||||
*.log
|
|
||||||
*.vspscc
|
|
||||||
*.vssscc
|
|
||||||
.builds
|
|
||||||
*.pidb
|
|
||||||
*.svclog
|
|
||||||
*.scc
|
|
||||||
|
|
||||||
# Chutzpah Test files
|
|
||||||
_Chutzpah*
|
|
||||||
|
|
||||||
# Visual C++ cache files
|
|
||||||
ipch/
|
|
||||||
*.aps
|
|
||||||
*.ncb
|
|
||||||
*.opendb
|
|
||||||
*.opensdf
|
|
||||||
*.sdf
|
|
||||||
*.cachefile
|
|
||||||
*.VC.db
|
|
||||||
*.VC.VC.opendb
|
|
||||||
|
|
||||||
# Visual Studio profiler
|
|
||||||
*.psess
|
|
||||||
*.vsp
|
|
||||||
*.vspx
|
|
||||||
*.sap
|
|
||||||
|
|
||||||
# Visual Studio Trace Files
|
|
||||||
*.e2e
|
|
||||||
|
|
||||||
# TFS 2012 Local Workspace
|
|
||||||
$tf/
|
|
||||||
|
|
||||||
# Guidance Automation Toolkit
|
|
||||||
*.gpState
|
|
||||||
|
|
||||||
# ReSharper is a .NET coding add-in
|
|
||||||
_ReSharper*/
|
|
||||||
*.[Rr]e[Ss]harper
|
|
||||||
*.DotSettings.user
|
|
||||||
|
|
||||||
# JustCode is a .NET coding add-in
|
|
||||||
.JustCode
|
|
||||||
|
|
||||||
# TeamCity is a build add-in
|
|
||||||
_TeamCity*
|
|
||||||
|
|
||||||
# DotCover is a Code Coverage Tool
|
|
||||||
*.dotCover
|
|
||||||
|
|
||||||
# AxoCover is a Code Coverage Tool
|
|
||||||
.axoCover/*
|
|
||||||
!.axoCover/settings.json
|
|
||||||
|
|
||||||
# Visual Studio code coverage results
|
|
||||||
*.coverage
|
|
||||||
*.coveragexml
|
|
||||||
|
|
||||||
# NCrunch
|
|
||||||
_NCrunch_*
|
|
||||||
.*crunch*.local.xml
|
|
||||||
nCrunchTemp_*
|
|
||||||
|
|
||||||
# MightyMoose
|
|
||||||
*.mm.*
|
|
||||||
AutoTest.Net/
|
|
||||||
|
|
||||||
# Web workbench (sass)
|
|
||||||
.sass-cache/
|
|
||||||
|
|
||||||
# Installshield output folder
|
|
||||||
[Ee]xpress/
|
|
||||||
|
|
||||||
# DocProject is a documentation generator add-in
|
|
||||||
DocProject/buildhelp/
|
|
||||||
DocProject/Help/*.HxT
|
|
||||||
DocProject/Help/*.HxC
|
|
||||||
DocProject/Help/*.hhc
|
|
||||||
DocProject/Help/*.hhk
|
|
||||||
DocProject/Help/*.hhp
|
|
||||||
DocProject/Help/Html2
|
|
||||||
DocProject/Help/html
|
|
||||||
|
|
||||||
# Click-Once directory
|
|
||||||
publish/
|
|
||||||
|
|
||||||
# Publish Web Output
|
|
||||||
*.[Pp]ublish.xml
|
|
||||||
*.azurePubxml
|
|
||||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
|
||||||
# but database connection strings (with potential passwords) will be unencrypted
|
|
||||||
*.pubxml
|
|
||||||
*.publishproj
|
|
||||||
|
|
||||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
|
||||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
|
||||||
# in these scripts will be unencrypted
|
|
||||||
PublishScripts/
|
|
||||||
|
|
||||||
# NuGet Packages
|
|
||||||
*.nupkg
|
|
||||||
# NuGet Symbol Packages
|
|
||||||
*.snupkg
|
|
||||||
# The packages folder can be ignored because of Package Restore
|
|
||||||
**/[Pp]ackages/*
|
|
||||||
# except build/, which is used as an MSBuild target.
|
|
||||||
!**/[Pp]ackages/build/
|
|
||||||
# Uncomment if necessary however generally it will be regenerated when needed
|
|
||||||
#!**/[Pp]ackages/repositories.config
|
|
||||||
# NuGet v3's project.json files produces more ignorable files
|
|
||||||
*.nuget.props
|
|
||||||
*.nuget.targets
|
|
||||||
|
|
||||||
# Microsoft Azure Build Output
|
|
||||||
csx/
|
|
||||||
*.build.csdef
|
|
||||||
|
|
||||||
# Microsoft Azure Emulator
|
|
||||||
ecf/
|
|
||||||
rcf/
|
|
||||||
|
|
||||||
# Windows Store app package directories and files
|
|
||||||
AppPackages/
|
|
||||||
BundleArtifacts/
|
|
||||||
Package.StoreAssociation.xml
|
|
||||||
_pkginfo.txt
|
|
||||||
*.appx
|
|
||||||
*.appxbundle
|
|
||||||
*.appxupload
|
|
||||||
|
|
||||||
# Visual Studio cache files
|
|
||||||
# files ending in .cache can be ignored
|
|
||||||
*.[Cc]ache
|
|
||||||
# but keep track of directories ending in .cache
|
|
||||||
!?*.[Cc]ache/
|
|
||||||
|
|
||||||
# Others
|
|
||||||
ClientBin/
|
|
||||||
~$*
|
|
||||||
*~
|
|
||||||
*.dbmdl
|
|
||||||
*.dbproj.schemaview
|
|
||||||
*.jfm
|
|
||||||
*.pfx
|
|
||||||
*.publishsettings
|
|
||||||
orleans.codegen.cs
|
|
||||||
|
|
||||||
# Including strong name files can present a security risk
|
|
||||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
|
||||||
#*.snk
|
|
||||||
|
|
||||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
|
||||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
|
||||||
#bower_components/
|
|
||||||
|
|
||||||
# RIA/Silverlight projects
|
|
||||||
Generated_Code/
|
|
||||||
|
|
||||||
# Backup & report files from converting an old project file
|
|
||||||
# to a newer Visual Studio version. Backup files are not needed,
|
|
||||||
# because we have git ;-)
|
|
||||||
_UpgradeReport_Files/
|
|
||||||
Backup*/
|
|
||||||
UpgradeLog*.XML
|
|
||||||
UpgradeLog*.htm
|
|
||||||
ServiceFabricBackup/
|
|
||||||
*.rptproj.bak
|
|
||||||
|
|
||||||
# SQL Server files
|
|
||||||
*.mdf
|
|
||||||
*.ldf
|
|
||||||
*.ndf
|
|
||||||
|
|
||||||
# Business Intelligence projects
|
|
||||||
*.rdl.data
|
|
||||||
*.bim.layout
|
|
||||||
*.bim_*.settings
|
|
||||||
*.rptproj.rsuser
|
|
||||||
*- [Bb]ackup.rdl
|
|
||||||
*- [Bb]ackup ([0-9]).rdl
|
|
||||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
|
||||||
|
|
||||||
# Microsoft Fakes
|
|
||||||
FakesAssemblies/
|
|
||||||
|
|
||||||
# GhostDoc plugin setting file
|
|
||||||
*.GhostDoc.xml
|
|
||||||
|
|
||||||
# Node.js Tools for Visual Studio
|
|
||||||
.ntvs_analysis.dat
|
|
||||||
node_modules/
|
|
||||||
|
|
||||||
# Visual Studio 6 build log
|
|
||||||
*.plg
|
|
||||||
|
|
||||||
# Visual Studio 6 workspace options file
|
|
||||||
*.opt
|
|
||||||
|
|
||||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
|
||||||
*.vbw
|
|
||||||
|
|
||||||
# Visual Studio LightSwitch build output
|
|
||||||
**/*.HTMLClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/GeneratedArtifacts
|
|
||||||
**/*.DesktopClient/ModelManifest.xml
|
|
||||||
**/*.Server/GeneratedArtifacts
|
|
||||||
**/*.Server/ModelManifest.xml
|
|
||||||
_Pvt_Extensions
|
|
||||||
|
|
||||||
# Paket dependency manager
|
|
||||||
.paket/paket.exe
|
|
||||||
paket-files/
|
|
||||||
|
|
||||||
# FAKE - F# Make
|
|
||||||
.fake/
|
|
||||||
|
|
||||||
# CodeRush personal settings
|
|
||||||
.cr/personal
|
|
||||||
|
|
||||||
# Python Tools for Visual Studio (PTVS)
|
|
||||||
__pycache__/
|
|
||||||
*.pyc
|
|
||||||
|
|
||||||
# Cake - Uncomment if you are using it
|
|
||||||
# tools/**
|
|
||||||
# !tools/packages.config
|
|
||||||
|
|
||||||
# Tabs Studio
|
|
||||||
*.tss
|
|
||||||
|
|
||||||
# Telerik's JustMock configuration file
|
|
||||||
*.jmconfig
|
|
||||||
|
|
||||||
# BizTalk build output
|
|
||||||
*.btp.cs
|
|
||||||
*.btm.cs
|
|
||||||
*.odx.cs
|
|
||||||
*.xsd.cs
|
|
||||||
|
|
||||||
# OpenCover UI analysis results
|
|
||||||
OpenCover/
|
|
||||||
|
|
||||||
# Azure Stream Analytics local run output
|
|
||||||
ASALocalRun/
|
|
||||||
|
|
||||||
# MSBuild Binary and Structured Log
|
|
||||||
*.binlog
|
|
||||||
|
|
||||||
# NVidia Nsight GPU debugger configuration file
|
|
||||||
*.nvuser
|
|
||||||
|
|
||||||
# MFractors (Xamarin productivity tool) working folder
|
|
||||||
.mfractor/
|
|
||||||
|
|
||||||
# Local History for Visual Studio
|
|
||||||
.localhistory/
|
|
||||||
|
|
||||||
# BeatPulse healthcheck temp database
|
|
||||||
healthchecksdb
|
|
||||||
|
|
||||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
|
||||||
MigrationBackup/
|
|
||||||
|
|
||||||
compile_commands.json
|
|
||||||
|
|
||||||
# Cmake
|
|
||||||
CMakeUserPresets.json
|
|
|
@ -1,203 +0,0 @@
|
||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"cmakeMinimumRequired": {
|
|
||||||
"major": 3,
|
|
||||||
"minor": 20,
|
|
||||||
"patch": 0
|
|
||||||
},
|
|
||||||
"configurePresets": [
|
|
||||||
{
|
|
||||||
"name": "default_debug",
|
|
||||||
"displayName": "Default Debug Config",
|
|
||||||
"description": "Default Debug build using Ninja generator",
|
|
||||||
"generator": "Ninja",
|
|
||||||
"binaryDir": "${sourceDir}/build/default_debug",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "Debug"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2022_debug",
|
|
||||||
"displayName": "Default MSVC x64 Debug Config(VS2022)",
|
|
||||||
"description": "Default MSVC x64 Debug build",
|
|
||||||
"generator": "Visual Studio 17 2022",
|
|
||||||
"architecture": { "value": "x64" },
|
|
||||||
"binaryDir": "${sourceDir}/build/Debug",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
|
||||||
"CMAKE_C_COMPILER": "cl",
|
|
||||||
"CMAKE_CXX_COMPILER": "cl"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2022_release",
|
|
||||||
"displayName": "Default MSVC x64 Release Config(VS2022)",
|
|
||||||
"description": "Default MSVC x64 Release build",
|
|
||||||
"generator": "Visual Studio 17 2022",
|
|
||||||
"architecture": { "value": "x64" },
|
|
||||||
"binaryDir": "${sourceDir}/build/Release",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "Release",
|
|
||||||
"CMAKE_C_COMPILER": "cl",
|
|
||||||
"CMAKE_CXX_COMPILER": "cl"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2022_relwithdebinfo",
|
|
||||||
"displayName": "Default MSVC x64 RelWithDebInfo Config(VS2022)",
|
|
||||||
"description": "Default MSVC x64 RelWithDebInfo build",
|
|
||||||
"generator": "Visual Studio 17 2022",
|
|
||||||
"architecture": { "value": "x64" },
|
|
||||||
"binaryDir": "${sourceDir}/build/RelWithDebInfo",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
|
|
||||||
"CMAKE_C_COMPILER": "cl",
|
|
||||||
"CMAKE_CXX_COMPILER": "cl"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2022_minsizerel",
|
|
||||||
"displayName": "Default MSVC x64 MinSizeRel Config(VS2022)",
|
|
||||||
"description": "Default MSVC x64 MinSizeRel build",
|
|
||||||
"generator": "Visual Studio 17 2022",
|
|
||||||
"architecture": { "value": "x64" },
|
|
||||||
"binaryDir": "${sourceDir}/build/MinSizeRel",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "MinSizeRel",
|
|
||||||
"CMAKE_C_COMPILER": "cl",
|
|
||||||
"CMAKE_CXX_COMPILER": "cl"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2019_debug",
|
|
||||||
"displayName": "Default MSVC x64 Debug Config(VS2019)",
|
|
||||||
"description": "Default MSVC x64 Debug build",
|
|
||||||
"generator": "Visual Studio 16 2019",
|
|
||||||
"architecture": { "value": "x64" },
|
|
||||||
"binaryDir": "${sourceDir}/build/Debug",
|
|
||||||
"configurationType": "Debug",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "Debug",
|
|
||||||
"CMAKE_C_COMPILER": "cl",
|
|
||||||
"CMAKE_CXX_COMPILER": "cl"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2019_release",
|
|
||||||
"displayName": "Default MSVC x64 Release Config(VS2019)",
|
|
||||||
"description": "Default MSVC x64 Release build",
|
|
||||||
"generator": "Visual Studio 16 2019",
|
|
||||||
"architecture": { "value": "x64" },
|
|
||||||
"binaryDir": "${sourceDir}/build/Release",
|
|
||||||
"configurationType": "Release",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "Release",
|
|
||||||
"CMAKE_C_COMPILER": "cl",
|
|
||||||
"CMAKE_CXX_COMPILER": "cl"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2019_relwithdebinfo",
|
|
||||||
"displayName": "Default MSVC x64 RelWithDebInfo Config(VS2019)",
|
|
||||||
"description": "Default MSVC x64 RelWithDebInfo build",
|
|
||||||
"generator": "Visual Studio 17 2019",
|
|
||||||
"architecture": { "value": "x64" },
|
|
||||||
"binaryDir": "${sourceDir}/build/RelWithDebInfo",
|
|
||||||
"configurationType": "RelWithDebInfo",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
|
|
||||||
"CMAKE_C_COMPILER": "cl",
|
|
||||||
"CMAKE_CXX_COMPILER": "cl"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2019_minsizerel",
|
|
||||||
"displayName": "Default MSVC x64 MinSizeRel Config(VS2019)",
|
|
||||||
"description": "Default MSVC x64 MinSizeRel build",
|
|
||||||
"generator": "Visual Studio 16 2019",
|
|
||||||
"architecture": { "value": "x64" },
|
|
||||||
"binaryDir": "${sourceDir}/build/MinSizeRel",
|
|
||||||
"configurationType": "MinSizeRel",
|
|
||||||
"cacheVariables": {
|
|
||||||
"CMAKE_BUILD_TYPE": "MinSizeRel",
|
|
||||||
"CMAKE_C_COMPILER": "cl",
|
|
||||||
"CMAKE_CXX_COMPILER": "cl"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ninja-multi",
|
|
||||||
"inherits": "default_debug",
|
|
||||||
"displayName": "Ninja Multi-Config",
|
|
||||||
"description": "Default build using Ninja Multi-Config generator",
|
|
||||||
"generator": "Ninja Multi-Config"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"buildPresets": [
|
|
||||||
{
|
|
||||||
"name": "default_debug",
|
|
||||||
"configurePreset": "default_debug",
|
|
||||||
"jobs": 8
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2022_debug",
|
|
||||||
"displayName": "Debug",
|
|
||||||
"configurePreset": "msvc_2022_debug",
|
|
||||||
"jobs": 8
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2022_release",
|
|
||||||
"displayName": "Release",
|
|
||||||
"configurePreset": "msvc_2022_release",
|
|
||||||
"jobs": 8
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2022_relwithdebinfo",
|
|
||||||
"displayName": "RelWithDebInfo",
|
|
||||||
"configurePreset": "msvc_2022_relwithdebinfo",
|
|
||||||
"jobs": 8
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2022_minsizerel",
|
|
||||||
"displayName": "MinSizeRel",
|
|
||||||
"configurePreset": "msvc_2022_minsizerel",
|
|
||||||
"jobs": 8
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2019_debug",
|
|
||||||
"displayName": "Debug",
|
|
||||||
"configurePreset": "msvc_2019_debug",
|
|
||||||
"jobs": 8
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2019_release",
|
|
||||||
"displayName": "Release",
|
|
||||||
"configurePreset": "msvc_2019_release",
|
|
||||||
"jobs": 8
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2019_relwithdebinfo",
|
|
||||||
"displayName": "RelWithDebInfo",
|
|
||||||
"configurePreset": "msvc_2019_relwithdebinfo",
|
|
||||||
"jobs": 8
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "msvc_2019_minsizerel",
|
|
||||||
"displayName": "MinSizeRel",
|
|
||||||
"configurePreset": "msvc_2019_minsizerel",
|
|
||||||
"jobs": 8
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"testPresets": [
|
|
||||||
{
|
|
||||||
"name": "default_debug",
|
|
||||||
"configurePreset": "default_debug",
|
|
||||||
"output": {
|
|
||||||
"outputOnFailure": true
|
|
||||||
},
|
|
||||||
"execution": {
|
|
||||||
"noTestsAction": "error",
|
|
||||||
"stopOnFailure": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,547 +0,0 @@
|
||||||
include CMakeLists.txt
|
|
||||||
include CMakeSettings.json
|
|
||||||
include LICENSE
|
|
||||||
include README.md
|
|
||||||
include cmake/ClangClCMakeCompileRules.cmake
|
|
||||||
include cmake/aarch64-linux-gnu.toolchain
|
|
||||||
include cmake/clang-cl-msvc-windows.cmake
|
|
||||||
include cmake/clang-cl-msvc-wsl.cmake
|
|
||||||
include cmake/ios.toolchain.cmake
|
|
||||||
include cmake/llvm-mingw-cross.cmake
|
|
||||||
include cmake/llvm-mingw-win64.cmake
|
|
||||||
include cmake/mingw64-cross.cmake
|
|
||||||
include cmake/sanitizers/FindASan.cmake
|
|
||||||
include cmake/sanitizers/FindMSan.cmake
|
|
||||||
include cmake/sanitizers/FindSanitizers.cmake
|
|
||||||
include cmake/sanitizers/FindTSan.cmake
|
|
||||||
include cmake/sanitizers/FindUBSan.cmake
|
|
||||||
include cmake/sanitizers/asan-wrapper
|
|
||||||
include cmake/sanitizers/sanitize-helpers.cmake
|
|
||||||
include doc/README.md
|
|
||||||
include doc/TODO.md
|
|
||||||
include doc/composition.md
|
|
||||||
include doc/docs/index.md
|
|
||||||
include doc/macros.tex
|
|
||||||
include doc/mkdocs.yml
|
|
||||||
include doc/preview_surface.md
|
|
||||||
include doc/prim_format.md
|
|
||||||
include doc/usdObj.md
|
|
||||||
include doc/usd_sourcecode_tour.md
|
|
||||||
include doc/usdc_format.md
|
|
||||||
include doc/usdz_note.md
|
|
||||||
include pyproject.toml
|
|
||||||
graft python
|
|
||||||
include setup.py
|
|
||||||
include src/asset-resolution.cc
|
|
||||||
include src/asset-resolution.hh
|
|
||||||
include src/ascii-parser.cc
|
|
||||||
include src/ascii-parser.hh
|
|
||||||
include src/ascii-parser-basetype.cc
|
|
||||||
include src/ascii-parser-timesamples.cc
|
|
||||||
include src/ascii-parser-timesamples-array.cc
|
|
||||||
include src/c-tinyusd.cc
|
|
||||||
include src/c-tinyusd.h
|
|
||||||
include src/common-macros.inc
|
|
||||||
include src/composition.hh
|
|
||||||
include src/crate-format.cc
|
|
||||||
include src/crate-format.hh
|
|
||||||
include src/crate-pprint.cc
|
|
||||||
include src/crate-pprint.hh
|
|
||||||
include src/crate-reader.cc
|
|
||||||
include src/crate-reader.hh
|
|
||||||
include src/crate-writer.cc
|
|
||||||
include src/crate-writer.hh
|
|
||||||
include src/define-type-trait.inc
|
|
||||||
include src/external/filesystem/LICENSE
|
|
||||||
include src/external/filesystem/README.md
|
|
||||||
include src/external/filesystem/include/ghc/filesystem.hpp
|
|
||||||
include src/external/filesystem/include/ghc/fs_fwd.hpp
|
|
||||||
include src/external/filesystem/include/ghc/fs_impl.hpp
|
|
||||||
include src/external/filesystem/include/ghc/fs_std_fwd.hpp
|
|
||||||
include src/external/filesystem/include/ghc/fs_std.hpp
|
|
||||||
include src/external/glob/include/glob/glob.h
|
|
||||||
include src/external/glob/LICENSE
|
|
||||||
include src/external/glob/README.md
|
|
||||||
include src/external/glob/single_include/glob/glob.hpp
|
|
||||||
include src/external/glob/source/glob.cpp
|
|
||||||
include src/external/filesystem/include/ghc/fs_std_impl.hpp
|
|
||||||
include src/external/LICENSE.miniz
|
|
||||||
include src/external/LICENSE.ogt_vox.md
|
|
||||||
include src/external/README.fpng.md
|
|
||||||
include src/external/dtoa_milo.h
|
|
||||||
include src/external/dtoa_milo.LICENSE
|
|
||||||
include src/external/dr_mp3.h
|
|
||||||
include src/external/dr_wav.h
|
|
||||||
include src/external/fast_float/LICENSE-APACHE
|
|
||||||
include src/external/fast_float/LICENSE-MIT
|
|
||||||
include src/external/fast_float/README.md
|
|
||||||
include src/external/fast_float/include/fast_float/*.h
|
|
||||||
include src/external/fpng.cpp
|
|
||||||
include src/external/fpng.h
|
|
||||||
include src/external/jsonhpp/LICENSE.MIT
|
|
||||||
include src/external/jsonhpp/nlohmann/json.hpp
|
|
||||||
include src/external/jsonhpp/nlohmann/json_fwd.hpp
|
|
||||||
include src/external/jsteemann/LICENSE
|
|
||||||
include src/external/jsteemann/README.md
|
|
||||||
include src/external/jsteemann/atoi.h
|
|
||||||
include src/external/jsteemann/modification.md
|
|
||||||
include src/external/linalg.README
|
|
||||||
include src/external/linalg.UNLICENSE
|
|
||||||
include src/external/linalg.h
|
|
||||||
include src/external/miniz.c
|
|
||||||
include src/external/miniz.h
|
|
||||||
include src/external/mapbox/eternal/LICENSE.md
|
|
||||||
include src/external/mapbox/eternal/README.md
|
|
||||||
include src/external/mapbox/eternal/include/mapbox/eternal.hpp
|
|
||||||
include src/external/mapbox/earcut/CHANGELOG.md
|
|
||||||
include src/external/mapbox/earcut/earcut.hpp
|
|
||||||
include src/external/mapbox/earcut/LICENSE
|
|
||||||
include src/external/mapbox/earcut/README.md
|
|
||||||
#include src/external/nanobind/CMakeLists.txt
|
|
||||||
#include src/external/nanobind/LICENSE
|
|
||||||
#include src/external/nanobind/README.md
|
|
||||||
#include src/external/nanobind/cmake/nanobind-config.cmake
|
|
||||||
#include src/external/nanobind/ext/robin_map/CMakeLists.txt
|
|
||||||
#include src/external/nanobind/ext/robin_map/LICENSE
|
|
||||||
#include src/external/nanobind/ext/robin_map/README.md
|
|
||||||
#include src/external/nanobind/ext/robin_map/cmake/tsl-robin-mapConfig.cmake.in
|
|
||||||
#include src/external/nanobind/ext/robin_map/include/tsl/robin_growth_policy.h
|
|
||||||
#include src/external/nanobind/ext/robin_map/include/tsl/robin_hash.h
|
|
||||||
#include src/external/nanobind/ext/robin_map/include/tsl/robin_map.h
|
|
||||||
#include src/external/nanobind/ext/robin_map/include/tsl/robin_set.h
|
|
||||||
#include src/external/nanobind/ext/robin_map/tests/CMakeLists.txt
|
|
||||||
#include src/external/nanobind/ext/robin_map/tests/custom_allocator_tests.cpp
|
|
||||||
#include src/external/nanobind/ext/robin_map/tests/main.cpp
|
|
||||||
#include src/external/nanobind/ext/robin_map/tests/policy_tests.cpp
|
|
||||||
#include src/external/nanobind/ext/robin_map/tests/robin_map_tests.cpp
|
|
||||||
#include src/external/nanobind/ext/robin_map/tests/robin_set_tests.cpp
|
|
||||||
#include src/external/nanobind/ext/robin_map/tests/utils.h
|
|
||||||
#include src/external/nanobind/ext/robin_map/tsl-robin-map.natvis
|
|
||||||
#include src/external/nanobind/include/nanobind/nanobind.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_accessor.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_attr.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_call.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_cast.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_class.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_defs.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_descr.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_enums.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_error.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_func.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_lib.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_misc.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_python.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_traits.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_tuple.h
|
|
||||||
#include src/external/nanobind/include/nanobind/nb_types.h
|
|
||||||
#include src/external/nanobind/include/nanobind/operators.h
|
|
||||||
#include src/external/nanobind/include/nanobind/stl/detail/nb_list.h
|
|
||||||
#include src/external/nanobind/include/nanobind/stl/function.h
|
|
||||||
#include src/external/nanobind/include/nanobind/stl/list.h
|
|
||||||
#include src/external/nanobind/include/nanobind/stl/pair.h
|
|
||||||
#include src/external/nanobind/include/nanobind/stl/shared_ptr.h
|
|
||||||
#include src/external/nanobind/include/nanobind/stl/string.h
|
|
||||||
#include src/external/nanobind/include/nanobind/stl/tuple.h
|
|
||||||
#include src/external/nanobind/include/nanobind/stl/unique_ptr.h
|
|
||||||
#include src/external/nanobind/include/nanobind/stl/vector.h
|
|
||||||
#include src/external/nanobind/include/nanobind/tensor.h
|
|
||||||
#include src/external/nanobind/include/nanobind/trampoline.h
|
|
||||||
#include src/external/nanobind/src/buffer.h
|
|
||||||
#include src/external/nanobind/src/common.cpp
|
|
||||||
#include src/external/nanobind/src/error.cpp
|
|
||||||
#include src/external/nanobind/src/implicit.cpp
|
|
||||||
#include src/external/nanobind/src/nanobind/__init__.py
|
|
||||||
#include src/external/nanobind/src/nb_enum.cpp
|
|
||||||
#include src/external/nanobind/src/nb_func.cpp
|
|
||||||
#include src/external/nanobind/src/nb_internals.cpp
|
|
||||||
#include src/external/nanobind/src/nb_internals.h
|
|
||||||
#include src/external/nanobind/src/nb_type.cpp
|
|
||||||
#include src/external/nanobind/src/tensor.cpp
|
|
||||||
#include src/external/nanobind/src/trampoline.cpp
|
|
||||||
include src/external/ogt_vox.h
|
|
||||||
include src/external/pugiconfig.hpp
|
|
||||||
include src/external/pugixml.LICENSE
|
|
||||||
include src/external/pugixml.cpp
|
|
||||||
include src/external/pugixml.hpp
|
|
||||||
include src/external/pystring.cpp
|
|
||||||
include src/external/pystring.h
|
|
||||||
include src/external/pystring.LICENSE
|
|
||||||
include src/external/simple_match/LICENSE_1_0.txt
|
|
||||||
include src/external/simple_match/README.md
|
|
||||||
include src/external/simple_match/include/simple_match/implementation/some_none.hpp
|
|
||||||
include src/external/simple_match/include/simple_match/simple_match.hpp
|
|
||||||
include src/external/simple_match/include/simple_match/utility.hpp
|
|
||||||
include src/external/stb_image.h
|
|
||||||
include src/external/stb_image_resize.h
|
|
||||||
include src/external/stb_image_write.h
|
|
||||||
include src/external/stb_truetype.h
|
|
||||||
include src/external/string_id/LICENSE
|
|
||||||
include src/external/string_id/README.md
|
|
||||||
include src/external/string_id/README.mod.txt
|
|
||||||
include src/external/string_id/basic_database.hpp
|
|
||||||
include src/external/string_id/config.hpp
|
|
||||||
include src/external/string_id/config.hpp.in
|
|
||||||
include src/external/string_id/config_impl.hpp
|
|
||||||
include src/external/string_id/database.cpp
|
|
||||||
include src/external/string_id/database.hpp
|
|
||||||
include src/external/string_id/error.cpp
|
|
||||||
include src/external/string_id/error.hpp
|
|
||||||
include src/external/string_id/generator.cpp
|
|
||||||
include src/external/string_id/generator.hpp
|
|
||||||
include src/external/string_id/hash.hpp
|
|
||||||
include src/external/string_id/string_id.cpp
|
|
||||||
include src/external/string_id/string_id.hpp
|
|
||||||
include src/external/tiny-color-io.h
|
|
||||||
include src/external/tinycolorio.LICENSE
|
|
||||||
include src/external/tiny_dng_loader.h
|
|
||||||
include src/external/tiny_dng_writer.h
|
|
||||||
include src/external/tiny_gltf.cc
|
|
||||||
include src/external/tiny_gltf.h
|
|
||||||
include src/external/tiny_obj_loader.cc
|
|
||||||
include src/external/tiny_obj_loader.h
|
|
||||||
include src/external/tinyexr.cc
|
|
||||||
include src/external/tinyexr.h
|
|
||||||
include src/external/floaxie/README.md
|
|
||||||
include src/external/floaxie/LICENSE
|
|
||||||
include src/external/floaxie/floaxie/atof.h
|
|
||||||
include src/external/floaxie/floaxie/bit_ops.h
|
|
||||||
include src/external/floaxie/floaxie/cached_power.h
|
|
||||||
include src/external/floaxie/floaxie/conversion_status.h
|
|
||||||
include src/external/floaxie/floaxie/default_fallback.h
|
|
||||||
include src/external/floaxie/floaxie/diy_fp.h
|
|
||||||
include src/external/floaxie/floaxie/fraction.h
|
|
||||||
include src/external/floaxie/floaxie/ftoa.h
|
|
||||||
include src/external/floaxie/floaxie/grisu.h
|
|
||||||
include src/external/floaxie/floaxie/huge_val.h
|
|
||||||
include src/external/floaxie/floaxie/integer_of_size.h
|
|
||||||
include src/external/floaxie/floaxie/k_comp.h
|
|
||||||
include src/external/floaxie/floaxie/krosh.h
|
|
||||||
include src/external/floaxie/floaxie/memwrap.h
|
|
||||||
include src/external/floaxie/floaxie/powers_ten.h
|
|
||||||
include src/external/floaxie/floaxie/powers_ten_double.h
|
|
||||||
include src/external/floaxie/floaxie/powers_ten_single.h
|
|
||||||
include src/external/floaxie/floaxie/prettify.h
|
|
||||||
include src/external/floaxie/floaxie/print.h
|
|
||||||
include src/external/floaxie/floaxie/static_pow.h
|
|
||||||
include src/external/floaxie/floaxie/type_punning_cast.h
|
|
||||||
include src/handle-allocator.hh
|
|
||||||
include src/image-loader.cc
|
|
||||||
include src/image-loader.hh
|
|
||||||
include src/image-types.hh
|
|
||||||
include src/image-util.cc
|
|
||||||
include src/image-util.hh
|
|
||||||
include src/image-writer.cc
|
|
||||||
include src/image-writer.hh
|
|
||||||
include src/integerCoding.cpp
|
|
||||||
include src/integerCoding.h
|
|
||||||
include src/io-util.cc
|
|
||||||
include src/io-util.hh
|
|
||||||
include src/linear-algebra.cc
|
|
||||||
include src/linear-algebra.hh
|
|
||||||
include src/lz4-compression.cc
|
|
||||||
include src/lz4-compression.hh
|
|
||||||
include src/math-util.inc
|
|
||||||
include src/nonstd/expected.hpp
|
|
||||||
include src/nonstd/optional.hpp
|
|
||||||
include src/osd/CMakeLists.txt
|
|
||||||
include src/osd/LICENSE.txt
|
|
||||||
include src/osd/README.md
|
|
||||||
include src/osd/opensubdiv/CMakeLists.txt
|
|
||||||
include src/osd/opensubdiv/far/CMakeLists.txt
|
|
||||||
include src/osd/opensubdiv/far/bilinearPatchBuilder.cpp
|
|
||||||
include src/osd/opensubdiv/far/bilinearPatchBuilder.h
|
|
||||||
include src/osd/opensubdiv/far/catmarkPatchBuilder.cpp
|
|
||||||
include src/osd/opensubdiv/far/catmarkPatchBuilder.h
|
|
||||||
include src/osd/opensubdiv/far/error.cpp
|
|
||||||
include src/osd/opensubdiv/far/error.h
|
|
||||||
include src/osd/opensubdiv/far/loopPatchBuilder.cpp
|
|
||||||
include src/osd/opensubdiv/far/loopPatchBuilder.h
|
|
||||||
include src/osd/opensubdiv/far/patchBasis.cpp
|
|
||||||
include src/osd/opensubdiv/far/patchBasis.h
|
|
||||||
include src/osd/opensubdiv/far/patchBuilder.cpp
|
|
||||||
include src/osd/opensubdiv/far/patchBuilder.h
|
|
||||||
include src/osd/opensubdiv/far/patchDescriptor.cpp
|
|
||||||
include src/osd/opensubdiv/far/patchDescriptor.h
|
|
||||||
include src/osd/opensubdiv/far/patchMap.cpp
|
|
||||||
include src/osd/opensubdiv/far/patchMap.h
|
|
||||||
include src/osd/opensubdiv/far/patchParam.h
|
|
||||||
include src/osd/opensubdiv/far/patchTable.cpp
|
|
||||||
include src/osd/opensubdiv/far/patchTable.h
|
|
||||||
include src/osd/opensubdiv/far/patchTableFactory.cpp
|
|
||||||
include src/osd/opensubdiv/far/patchTableFactory.h
|
|
||||||
include src/osd/opensubdiv/far/primvarRefiner.h
|
|
||||||
include src/osd/opensubdiv/far/ptexIndices.cpp
|
|
||||||
include src/osd/opensubdiv/far/ptexIndices.h
|
|
||||||
include src/osd/opensubdiv/far/sparseMatrix.h
|
|
||||||
include src/osd/opensubdiv/far/stencilBuilder.cpp
|
|
||||||
include src/osd/opensubdiv/far/stencilBuilder.h
|
|
||||||
include src/osd/opensubdiv/far/stencilTable.cpp
|
|
||||||
include src/osd/opensubdiv/far/stencilTable.h
|
|
||||||
include src/osd/opensubdiv/far/stencilTableFactory.cpp
|
|
||||||
include src/osd/opensubdiv/far/stencilTableFactory.h
|
|
||||||
include src/osd/opensubdiv/far/topologyDescriptor.cpp
|
|
||||||
include src/osd/opensubdiv/far/topologyDescriptor.h
|
|
||||||
include src/osd/opensubdiv/far/topologyLevel.h
|
|
||||||
include src/osd/opensubdiv/far/topologyRefiner.cpp
|
|
||||||
include src/osd/opensubdiv/far/topologyRefiner.h
|
|
||||||
include src/osd/opensubdiv/far/topologyRefinerFactory.cpp
|
|
||||||
include src/osd/opensubdiv/far/topologyRefinerFactory.h
|
|
||||||
include src/osd/opensubdiv/far/types.h
|
|
||||||
include src/osd/opensubdiv/hbr/CMakeLists.txt
|
|
||||||
include src/osd/opensubdiv/hbr/allocator.h
|
|
||||||
include src/osd/opensubdiv/hbr/bilinear.h
|
|
||||||
include src/osd/opensubdiv/hbr/catmark.h
|
|
||||||
include src/osd/opensubdiv/hbr/cornerEdit.h
|
|
||||||
include src/osd/opensubdiv/hbr/creaseEdit.h
|
|
||||||
include src/osd/opensubdiv/hbr/face.h
|
|
||||||
include src/osd/opensubdiv/hbr/faceEdit.h
|
|
||||||
include src/osd/opensubdiv/hbr/fvarData.h
|
|
||||||
include src/osd/opensubdiv/hbr/fvarEdit.h
|
|
||||||
include src/osd/opensubdiv/hbr/halfedge.h
|
|
||||||
include src/osd/opensubdiv/hbr/hierarchicalEdit.h
|
|
||||||
include src/osd/opensubdiv/hbr/holeEdit.h
|
|
||||||
include src/osd/opensubdiv/hbr/loop.h
|
|
||||||
include src/osd/opensubdiv/hbr/mesh.h
|
|
||||||
include src/osd/opensubdiv/hbr/subdivision.h
|
|
||||||
include src/osd/opensubdiv/hbr/vertex.h
|
|
||||||
include src/osd/opensubdiv/hbr/vertexEdit.h
|
|
||||||
include src/osd/opensubdiv/osd/Android.mk
|
|
||||||
include src/osd/opensubdiv/osd/CMakeLists.txt
|
|
||||||
include src/osd/opensubdiv/osd/bufferDescriptor.h
|
|
||||||
include src/osd/opensubdiv/osd/clD3D11VertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/clD3D11VertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/clEvaluator.cpp
|
|
||||||
include src/osd/opensubdiv/osd/clEvaluator.h
|
|
||||||
include src/osd/opensubdiv/osd/clGLVertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/clGLVertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/clKernel.cl
|
|
||||||
include src/osd/opensubdiv/osd/clPatchTable.cpp
|
|
||||||
include src/osd/opensubdiv/osd/clPatchTable.h
|
|
||||||
include src/osd/opensubdiv/osd/clVertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/clVertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/cpuD3D11VertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cpuD3D11VertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/cpuEvaluator.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cpuEvaluator.h
|
|
||||||
include src/osd/opensubdiv/osd/cpuGLVertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cpuGLVertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/cpuKernel.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cpuKernel.h
|
|
||||||
include src/osd/opensubdiv/osd/cpuPatchTable.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cpuPatchTable.h
|
|
||||||
include src/osd/opensubdiv/osd/cpuVertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cpuVertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/cudaD3D11VertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cudaD3D11VertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/cudaEvaluator.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cudaEvaluator.h
|
|
||||||
include src/osd/opensubdiv/osd/cudaGLVertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cudaGLVertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/cudaKernel.cu
|
|
||||||
include src/osd/opensubdiv/osd/cudaPatchTable.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cudaPatchTable.h
|
|
||||||
include src/osd/opensubdiv/osd/cudaVertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/cudaVertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/d3d11ComputeEvaluator.cpp
|
|
||||||
include src/osd/opensubdiv/osd/d3d11ComputeEvaluator.h
|
|
||||||
include src/osd/opensubdiv/osd/d3d11LegacyGregoryPatchTable.cpp
|
|
||||||
include src/osd/opensubdiv/osd/d3d11LegacyGregoryPatchTable.h
|
|
||||||
include src/osd/opensubdiv/osd/d3d11Mesh.h
|
|
||||||
include src/osd/opensubdiv/osd/d3d11PatchTable.cpp
|
|
||||||
include src/osd/opensubdiv/osd/d3d11PatchTable.h
|
|
||||||
include src/osd/opensubdiv/osd/d3d11VertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/d3d11VertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/glComputeEvaluator.cpp
|
|
||||||
include src/osd/opensubdiv/osd/glComputeEvaluator.h
|
|
||||||
include src/osd/opensubdiv/osd/glLegacyGregoryPatchTable.cpp
|
|
||||||
include src/osd/opensubdiv/osd/glLegacyGregoryPatchTable.h
|
|
||||||
include src/osd/opensubdiv/osd/glMesh.h
|
|
||||||
include src/osd/opensubdiv/osd/glPatchTable.cpp
|
|
||||||
include src/osd/opensubdiv/osd/glPatchTable.h
|
|
||||||
include src/osd/opensubdiv/osd/glVertexBuffer.cpp
|
|
||||||
include src/osd/opensubdiv/osd/glVertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/glXFBEvaluator.cpp
|
|
||||||
include src/osd/opensubdiv/osd/glXFBEvaluator.h
|
|
||||||
include src/osd/opensubdiv/osd/glslComputeKernel.glsl
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchBSpline.glsl
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchBoxSplineTriangle.glsl
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchCommon.glsl
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchCommonTess.glsl
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchGregory.glsl
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchGregoryBasis.glsl
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchGregoryTriangle.glsl
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchLegacy.glsl
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchShaderSource.cpp
|
|
||||||
include src/osd/opensubdiv/osd/glslPatchShaderSource.h
|
|
||||||
include src/osd/opensubdiv/osd/glslXFBKernel.glsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslComputeKernel.hlsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchBSpline.hlsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchBoxSplineTriangle.hlsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchCommon.hlsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchCommonTess.hlsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchGregory.hlsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchGregoryBasis.hlsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchGregoryTriangle.hlsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchLegacy.hlsl
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchShaderSource.cpp
|
|
||||||
include src/osd/opensubdiv/osd/hlslPatchShaderSource.h
|
|
||||||
include src/osd/opensubdiv/osd/mesh.h
|
|
||||||
include src/osd/opensubdiv/osd/mtlCommon.h
|
|
||||||
include src/osd/opensubdiv/osd/mtlComputeEvaluator.h
|
|
||||||
include src/osd/opensubdiv/osd/mtlComputeEvaluator.mm
|
|
||||||
include src/osd/opensubdiv/osd/mtlComputeKernel.metal
|
|
||||||
include src/osd/opensubdiv/osd/mtlLegacyGregoryPatchTable.h
|
|
||||||
include src/osd/opensubdiv/osd/mtlLegacyGregoryPatchTable.mm
|
|
||||||
include src/osd/opensubdiv/osd/mtlMesh.h
|
|
||||||
include src/osd/opensubdiv/osd/mtlMesh.mm
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchBSpline.metal
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchBoxSplineTriangle.metal
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchCommon.metal
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchCommonTess.metal
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchGregory.metal
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchGregoryBasis.metal
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchGregoryTriangle.metal
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchLegacy.metal
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchShaderSource.h
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchShaderSource.mm
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchTable.h
|
|
||||||
include src/osd/opensubdiv/osd/mtlPatchTable.mm
|
|
||||||
include src/osd/opensubdiv/osd/mtlVertexBuffer.h
|
|
||||||
include src/osd/opensubdiv/osd/mtlVertexBuffer.mm
|
|
||||||
include src/osd/opensubdiv/osd/nonCopyable.h
|
|
||||||
include src/osd/opensubdiv/osd/ompEvaluator.cpp
|
|
||||||
include src/osd/opensubdiv/osd/ompEvaluator.h
|
|
||||||
include src/osd/opensubdiv/osd/ompKernel.cpp
|
|
||||||
include src/osd/opensubdiv/osd/ompKernel.h
|
|
||||||
include src/osd/opensubdiv/osd/opencl.h
|
|
||||||
include src/osd/opensubdiv/osd/opengl.h
|
|
||||||
include src/osd/opensubdiv/osd/patchBasisCommon.h
|
|
||||||
include src/osd/opensubdiv/osd/patchBasisCommonEval.h
|
|
||||||
include src/osd/opensubdiv/osd/patchBasisCommonTypes.h
|
|
||||||
include src/osd/opensubdiv/osd/tbbEvaluator.cpp
|
|
||||||
include src/osd/opensubdiv/osd/tbbEvaluator.h
|
|
||||||
include src/osd/opensubdiv/osd/tbbKernel.cpp
|
|
||||||
include src/osd/opensubdiv/osd/tbbKernel.h
|
|
||||||
include src/osd/opensubdiv/osd/types.h
|
|
||||||
include src/osd/opensubdiv/sdc/CMakeLists.txt
|
|
||||||
include src/osd/opensubdiv/sdc/bilinearScheme.h
|
|
||||||
include src/osd/opensubdiv/sdc/catmarkScheme.h
|
|
||||||
include src/osd/opensubdiv/sdc/crease.cpp
|
|
||||||
include src/osd/opensubdiv/sdc/crease.h
|
|
||||||
include src/osd/opensubdiv/sdc/loopScheme.h
|
|
||||||
include src/osd/opensubdiv/sdc/options.h
|
|
||||||
include src/osd/opensubdiv/sdc/scheme.h
|
|
||||||
include src/osd/opensubdiv/sdc/typeTraits.cpp
|
|
||||||
include src/osd/opensubdiv/sdc/types.h
|
|
||||||
include src/osd/opensubdiv/tools/stringify/CMakeLists.txt
|
|
||||||
include src/osd/opensubdiv/tools/stringify/main.cpp
|
|
||||||
include src/osd/opensubdiv/version.cpp
|
|
||||||
include src/osd/opensubdiv/version.h
|
|
||||||
include src/osd/opensubdiv/vtr/CMakeLists.txt
|
|
||||||
include src/osd/opensubdiv/vtr/array.h
|
|
||||||
include src/osd/opensubdiv/vtr/componentInterfaces.h
|
|
||||||
include src/osd/opensubdiv/vtr/fvarLevel.cpp
|
|
||||||
include src/osd/opensubdiv/vtr/fvarLevel.h
|
|
||||||
include src/osd/opensubdiv/vtr/fvarRefinement.cpp
|
|
||||||
include src/osd/opensubdiv/vtr/fvarRefinement.h
|
|
||||||
include src/osd/opensubdiv/vtr/level.cpp
|
|
||||||
include src/osd/opensubdiv/vtr/level.h
|
|
||||||
include src/osd/opensubdiv/vtr/quadRefinement.cpp
|
|
||||||
include src/osd/opensubdiv/vtr/quadRefinement.h
|
|
||||||
include src/osd/opensubdiv/vtr/refinement.cpp
|
|
||||||
include src/osd/opensubdiv/vtr/refinement.h
|
|
||||||
include src/osd/opensubdiv/vtr/sparseSelector.cpp
|
|
||||||
include src/osd/opensubdiv/vtr/sparseSelector.h
|
|
||||||
include src/osd/opensubdiv/vtr/stackBuffer.h
|
|
||||||
include src/osd/opensubdiv/vtr/triRefinement.cpp
|
|
||||||
include src/osd/opensubdiv/vtr/triRefinement.h
|
|
||||||
include src/osd/opensubdiv/vtr/types.h
|
|
||||||
include src/path-util.cc
|
|
||||||
include src/path-util.hh
|
|
||||||
include src/performance.cc
|
|
||||||
include src/performance.hh
|
|
||||||
include src/pprinter.cc
|
|
||||||
include src/pprinter.hh
|
|
||||||
include src/composition.cc
|
|
||||||
include src/composition.hh
|
|
||||||
include src/prim-pprint.hh
|
|
||||||
include src/prim-reconstruct.cc
|
|
||||||
include src/prim-reconstruct.hh
|
|
||||||
include src/prim-types.cc
|
|
||||||
include src/prim-types.hh
|
|
||||||
include src/primvar.cc
|
|
||||||
include src/primvar.hh
|
|
||||||
include src/pxr-compat.cc
|
|
||||||
include src/pxr-compat.hh
|
|
||||||
include src/lz4/LICENSE
|
|
||||||
include src/lz4/lz4.c
|
|
||||||
include src/lz4/lz4.h
|
|
||||||
include src/python-bindings.cc
|
|
||||||
include src/str-util.hh
|
|
||||||
include src/str-util.cc
|
|
||||||
include src/stream-reader.hh
|
|
||||||
include src/stream-writer.hh
|
|
||||||
include src/subdiv.cc
|
|
||||||
include src/subdiv.hh
|
|
||||||
include src/stage.cc
|
|
||||||
include src/stage.hh
|
|
||||||
include src/texture-types.hh
|
|
||||||
include src/tiny-any.inc
|
|
||||||
include src/tiny-format.cc
|
|
||||||
include src/tiny-format.hh
|
|
||||||
include src/tinyusdz.cc
|
|
||||||
include src/tinyusdz.hh
|
|
||||||
include src/tiny-variant.hh
|
|
||||||
include src/token-type.hh
|
|
||||||
include src/tydra/README.md
|
|
||||||
include src/tydra/prim-apply.cc
|
|
||||||
include src/tydra/prim-apply.hh
|
|
||||||
include src/tydra/render-data.cc
|
|
||||||
include src/tydra/render-data.hh
|
|
||||||
include src/tydra/scene-access.cc
|
|
||||||
include src/tydra/scene-access.hh
|
|
||||||
include src/tydra/shader-network.cc
|
|
||||||
include src/tydra/shader-network.hh
|
|
||||||
include src/tydra/facial.cc
|
|
||||||
include src/tydra/facial.hh
|
|
||||||
include src/usd-to-json.cc
|
|
||||||
include src/usd-to-json.hh
|
|
||||||
include src/usdGeom.cc
|
|
||||||
include src/usdGeom.hh
|
|
||||||
include src/usdLux.cc
|
|
||||||
include src/usdLux.hh
|
|
||||||
include src/usdMtlx.cc
|
|
||||||
include src/usdMtlx.hh
|
|
||||||
include src/usdObj.cc
|
|
||||||
include src/usdObj.hh
|
|
||||||
include src/usdShade.cc
|
|
||||||
include src/usdShade.hh
|
|
||||||
include src/usdSkel.cc
|
|
||||||
include src/usdSkel.hh
|
|
||||||
include src/usdVox.cc
|
|
||||||
include src/usdVox.hh
|
|
||||||
include src/usda-reader.cc
|
|
||||||
include src/usda-reader.hh
|
|
||||||
include src/usda-writer.cc
|
|
||||||
include src/usda-writer.hh
|
|
||||||
include src/usdc-reader.cc
|
|
||||||
include src/usdc-reader.hh
|
|
||||||
include src/usdc-writer.cc
|
|
||||||
include src/usdc-writer.hh
|
|
||||||
include src/value-eval-util.hh
|
|
||||||
include src/value-pprint.cc
|
|
||||||
include src/value-pprint.hh
|
|
||||||
include src/value-types.cc
|
|
||||||
include src/value-types.hh
|
|
||||||
include src/value-type-macros.inc
|
|
||||||
include src/xform.hh
|
|
||||||
include src/xform.cc
|
|
||||||
include src/audio-loader.cc
|
|
||||||
include src/audio-loader.hh
|
|
||||||
include src/external/OpenFBX/LICENSE
|
|
||||||
include src/external/OpenFBX/README.md
|
|
||||||
include src/external/OpenFBX/src/ofbx.cpp
|
|
||||||
include src/external/OpenFBX/src/ofbx.h
|
|
||||||
include src/usdFbx.cc
|
|
||||||
include src/usdFbx.hh
|
|
||||||
recursive-include src/external/pybind11 *
|
|
|
@ -1,22 +0,0 @@
|
||||||
# Example project for Anroid Studio
|
|
||||||
|
|
||||||
arm64-v8a arch only.
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
* Android 8.1(API 27) or later
|
|
||||||
* Android 12.0 or later recommended.
|
|
||||||
* Android Studio 2022 Framingo or later
|
|
||||||
* CMake(You can install cmake through Android Studio)
|
|
||||||
* NDK r25 or later
|
|
||||||
|
|
||||||
|
|
||||||
## How to build
|
|
||||||
|
|
||||||
Open this folder in Android Studio and build it.
|
|
||||||
|
|
||||||
When you open the folder in the first time, it will take time(~20 mins) and many file downloads(e.g. gradle) will happen.
|
|
||||||
|
|
||||||
### Command line build
|
|
||||||
|
|
||||||
T.B.W.
|
|
|
@ -1,39 +0,0 @@
|
||||||
apply plugin: 'com.android.application'
|
|
||||||
|
|
||||||
apply plugin: 'kotlin-android'
|
|
||||||
|
|
||||||
apply plugin: 'kotlin-android-extensions'
|
|
||||||
|
|
||||||
android {
|
|
||||||
compileSdkVersion 29
|
|
||||||
defaultConfig {
|
|
||||||
applicationId "com.example.hellotinyusdz"
|
|
||||||
minSdkVersion 16
|
|
||||||
targetSdkVersion 29
|
|
||||||
versionCode 1
|
|
||||||
versionName "1.0"
|
|
||||||
ndk {
|
|
||||||
abiFilters "arm64-v8a"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
buildTypes {
|
|
||||||
release {
|
|
||||||
minifyEnabled false
|
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
externalNativeBuild {
|
|
||||||
cmake {
|
|
||||||
path "src/main/cpp/CMakeLists.txt"
|
|
||||||
//version "3.18.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
namespace 'com.example.hellotinyusdz'
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
||||||
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
|
||||||
implementation 'androidx.appcompat:appcompat:1.0.2'
|
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
# Add project specific ProGuard rules here.
|
|
||||||
# By default, the flags in this file are appended to flags specified
|
|
||||||
# in /Users/gfan/dev/sdk_current/tools/proguard/proguard-android.txt
|
|
||||||
# You can edit the include path and order by changing the proguardFiles
|
|
||||||
# directive in build.gradle.
|
|
||||||
#
|
|
||||||
# For more details, see
|
|
||||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
||||||
|
|
||||||
# Add any project specific keep options here:
|
|
||||||
|
|
||||||
# If your project uses WebView with JS, uncomment the following
|
|
||||||
# and specify the fully qualified class name to the JavaScript interface
|
|
||||||
# class:
|
|
||||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
||||||
# public *;
|
|
||||||
#}
|
|
|
@ -1,22 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
|
|
||||||
<application
|
|
||||||
android:allowBackup="true"
|
|
||||||
android:icon="@mipmap/ic_launcher"
|
|
||||||
android:label="@string/app_name"
|
|
||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
|
||||||
android:supportsRtl="true"
|
|
||||||
android:theme="@style/AppTheme">
|
|
||||||
<activity android:name="android.colormode.WideColorModeActivity"
|
|
||||||
android:colorMode="wideColorGamut" />
|
|
||||||
<activity android:name=".MainActivity">
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN" />
|
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
|
||||||
</intent-filter>
|
|
||||||
</activity>
|
|
||||||
</application>
|
|
||||||
|
|
||||||
</manifest>
|
|
|
@ -1,102 +0,0 @@
|
||||||
project(tinyusz_android)
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.4.1)
|
|
||||||
|
|
||||||
option(TINYUSDZ_USE_USDOBJ "Build with built-in .obj support" On)
|
|
||||||
|
|
||||||
set(TINYUSDZ_SOURCES
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/tinyusdz.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/asset-resolution.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/composition.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/prim-types.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/ascii-parser.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/ascii-parser-basetype.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/ascii-parser-timesamples.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/ascii-parser-timesamples-array.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usda-reader.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usdc-reader.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usdc-writer.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/crate-reader.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/crate-format.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/crate-pprint.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/io-util.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/pprinter.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/tiny-format.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/value-types.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/value-pprint.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/primvar.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/prim-reconstruct.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/prim-composition.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/image-loader.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usda-writer.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usdGeom.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usdSkel.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usdShade.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usdMtlx.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usdLux.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/xform.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/stage.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/str-util.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/path-util.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/image-util.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/image-writer.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/linear-algebra.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/tydra/facial.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/tydra/scene-access.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/tydra/render-data.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/tydra/prim-apply.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/tydra/shader-network.cc
|
|
||||||
)
|
|
||||||
if (TINYUSDZ_USE_USDOBJ)
|
|
||||||
list(APPEND TINYUSDZ_SOURCES
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/usdObj.cc)
|
|
||||||
list(APPEND TINYUSDZ_SOURCES
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/external/tiny_obj_loader.cc)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
set(TINYUSDZ_DEP_SOURCES
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/integerCoding.cpp
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/lz4-compression.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/lz4/lz4.c
|
|
||||||
#${PROJECT_SOURCE_DIR}/../../../../../src/external/string_id/database.cpp
|
|
||||||
#${PROJECT_SOURCE_DIR}/../../../../../src/external/string_id/string_id.cpp
|
|
||||||
#${PROJECT_SOURCE_DIR}/../../../../../src/external/string_id/error.cpp
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../src/external/fpng.cpp
|
|
||||||
#${PROJECT_SOURCE_DIR}/../../../../../src/external/staticstruct.cc
|
|
||||||
#${PROJECT_SOURCE_DIR}/../../../../../src/external/tinyxml2/tinyxml2.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
# Reuse files from sdlviewer
|
|
||||||
set(USDVIEW_SOURCES
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../examples/sdlviewer/simple-render.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../examples/common/matrix.cc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../examples/common/trackball.cc)
|
|
||||||
|
|
||||||
# Build the libhello-oboe library
|
|
||||||
add_library(
|
|
||||||
hello-tinyusdz SHARED jni-tinyusdz.cc render-ctx.cc ${TINYUSDZ_SOURCES}
|
|
||||||
${TINYUSDZ_DEP_SOURCES} ${USDVIEW_SOURCES})
|
|
||||||
|
|
||||||
target_link_libraries(hello-tinyusdz jnigraphics android log)
|
|
||||||
|
|
||||||
target_include_directories(
|
|
||||||
hello-tinyusdz
|
|
||||||
PRIVATE ${PROJECT_SOURCE_DIR}/../../../../../src/
|
|
||||||
# nanort, nanosg, etc
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../examples/common/
|
|
||||||
# sdlviewer example
|
|
||||||
${PROJECT_SOURCE_DIR}/../../../../../examples/sdlviewer/)
|
|
||||||
|
|
||||||
if (TINYUSDZ_USE_USDOBJ)
|
|
||||||
target_compile_definitions(hello-tinyusdz PRIVATE "TINYUSDZ_USE_USDOBJ")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# Required to load .usd files from Android asset for demo purpose
|
|
||||||
# When you embed TinyUSDZ to your own app, you are better to load .usd files from a memory and turn this define off.
|
|
||||||
target_compile_definitions(hello-tinyusdz
|
|
||||||
PRIVATE "TINYUSDZ_ANDROID_LOAD_FROM_ASSETS")
|
|
||||||
|
|
||||||
# Enable optimization flags: if having problems with source level debugging,
|
|
||||||
# disable -Ofast ( and debug ), re-enable after done debugging.
|
|
||||||
target_compile_options(hello-tinyusdz PRIVATE -Wall -Werror
|
|
||||||
"$<$<CONFIG:RELEASE>:-Ofast>")
|
|
|
@ -1,157 +0,0 @@
|
||||||
#include <jni.h>
|
|
||||||
#include <android/log.h>
|
|
||||||
#include <android/bitmap.h>
|
|
||||||
#include <android/asset_manager.h>
|
|
||||||
#include <android/asset_manager_jni.h>
|
|
||||||
|
|
||||||
#include "tinyusdz.hh"
|
|
||||||
#include "io-util.hh"
|
|
||||||
|
|
||||||
#include "render-ctx.hh"
|
|
||||||
|
|
||||||
#ifndef TINYUSDZ_ANDROID_LOAD_FROM_ASSETS
|
|
||||||
#error "This demo requires to load .usd file from Android Assets"
|
|
||||||
#else
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
// https://stackoverflow.com/questions/41820039/jstringjni-to-stdstringc-with-utf8-characters
|
|
||||||
std::string jstring2string(JNIEnv *env, jstring jStr) {
|
|
||||||
if (!jStr)
|
|
||||||
return "";
|
|
||||||
|
|
||||||
const jclass stringClass = env->GetObjectClass(jStr);
|
|
||||||
const jmethodID getBytes = env->GetMethodID(stringClass, "getBytes", "(Ljava/lang/String;)[B");
|
|
||||||
const jbyteArray stringJbytes = (jbyteArray) env->CallObjectMethod(jStr, getBytes, env->NewStringUTF("UTF-8"));
|
|
||||||
|
|
||||||
size_t length = (size_t) env->GetArrayLength(stringJbytes);
|
|
||||||
jbyte* pBytes = env->GetByteArrayElements(stringJbytes, NULL);
|
|
||||||
|
|
||||||
std::string ret = std::string((char *)pBytes, length);
|
|
||||||
env->ReleaseByteArrayElements(stringJbytes, pBytes, JNI_ABORT);
|
|
||||||
|
|
||||||
env->DeleteLocalRef(stringJbytes);
|
|
||||||
env->DeleteLocalRef(stringClass);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" {
|
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL
|
|
||||||
Java_com_example_hellotinyusdz_MainActivity_touchMove(JNIEnv *env, jobject obj, jfloat dx, jfloat dy) {
|
|
||||||
const float scale = 0.2f;
|
|
||||||
|
|
||||||
example::g_gui_ctx.yaw += scale * dy;
|
|
||||||
example::g_gui_ctx.roll -= scale * dx;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL
|
|
||||||
Java_com_example_hellotinyusdz_MainActivity_grabImage(JNIEnv *env, jobject obj, jintArray _intarray, jint width, jint height) {
|
|
||||||
|
|
||||||
__android_log_print(ANDROID_LOG_INFO, "tinyusdz", "grabImage");
|
|
||||||
|
|
||||||
jint *ptr = env->GetIntArrayElements(_intarray, NULL);
|
|
||||||
int length = env->GetArrayLength(_intarray);
|
|
||||||
if (length != (width * height)) {
|
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "tinyusdz", "Buffer size mismatch");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (length != (example::g_gui_ctx.aov.width * example::g_gui_ctx.aov.height)) {
|
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "tinyusdz", "AOV size mismatch");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t *dest_ptr = reinterpret_cast<uint32_t *>(ptr);
|
|
||||||
|
|
||||||
std::vector<uint32_t> src;
|
|
||||||
example::GetRenderedImage(example::g_gui_ctx, &src);
|
|
||||||
|
|
||||||
if (src.size() != length) {
|
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "tinyusdz", "GetRenderedImage failed.");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(dest_ptr, src.data(), sizeof(uint32_t) * length);
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL
|
|
||||||
Java_com_example_hellotinyusdz_MainActivity_renderImage(
|
|
||||||
JNIEnv *env,
|
|
||||||
jobject obj,
|
|
||||||
jint width, jint height)
|
|
||||||
{
|
|
||||||
example::g_gui_ctx.render_width = width;
|
|
||||||
example::g_gui_ctx.render_height = height;
|
|
||||||
|
|
||||||
__android_log_print(ANDROID_LOG_INFO, "tinyusdz", "renderImage");
|
|
||||||
__android_log_print(ANDROID_LOG_INFO, "tinyusdz", "draw_meshes %d", (int)example::g_gui_ctx.render_scene.draw_meshes.size());
|
|
||||||
bool ret = example::RenderScene(example::g_gui_ctx);
|
|
||||||
|
|
||||||
if (!ret) {
|
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "tinyusdz", "RenderScene failed.");
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Returns: 0 - success
|
|
||||||
* -1 - failed
|
|
||||||
*/
|
|
||||||
JNIEXPORT jint JNICALL
|
|
||||||
Java_com_example_hellotinyusdz_MainActivity_initScene(
|
|
||||||
JNIEnv *env,
|
|
||||||
jobject obj,
|
|
||||||
jobject assetManager,
|
|
||||||
jstring _filename) {
|
|
||||||
|
|
||||||
std::string filename = jstring2string(env, _filename);
|
|
||||||
tinyusdz::io::asset_manager = AAssetManager_fromJava(env, assetManager);
|
|
||||||
|
|
||||||
tinyusdz::USDLoadOptions options;
|
|
||||||
|
|
||||||
// load from Android asset folder
|
|
||||||
example::g_gui_ctx.stage = tinyusdz::Stage(); // reset
|
|
||||||
|
|
||||||
std::string warn, err;
|
|
||||||
bool ret = LoadUSDCFromFile(filename, &example::g_gui_ctx.stage, &warn, &err, options);
|
|
||||||
|
|
||||||
if (warn.size()) {
|
|
||||||
__android_log_print(ANDROID_LOG_WARN, "tinyusdz", "USD load warning: %s", warn.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ret) {
|
|
||||||
if (err.size()) {
|
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "tinyusdz", "USD load error: %s", err.c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret) {
|
|
||||||
// TODO
|
|
||||||
//__android_log_print(ANDROID_LOG_INFO, "tinyusdz", "USD loaded. #of geom_meshes: %d", int(example::g_gui_ctx.stage.geom_meshes.size()));
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = example::SetupScene(example::g_gui_ctx);
|
|
||||||
if (!ret) {
|
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "tinyusdz", "SetupScene failed");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
//return int(example::g_gui_ctx.stage.geom_meshes.size()); // OK
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,140 +0,0 @@
|
||||||
// SPDX-License-Identifier: MIT
|
|
||||||
#include <android/log.h>
|
|
||||||
|
|
||||||
#include "render-ctx.hh"
|
|
||||||
|
|
||||||
namespace example {
|
|
||||||
|
|
||||||
GUIContext g_gui_ctx;
|
|
||||||
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
// TODO: Use pow table for faster conversion.
|
|
||||||
inline float linearToSrgb(float x) {
|
|
||||||
if (x <= 0.0f)
|
|
||||||
return 0.0f;
|
|
||||||
else if (x >= 1.0f)
|
|
||||||
return 1.0f;
|
|
||||||
else if (x < 0.0031308f)
|
|
||||||
return x * 12.92f;
|
|
||||||
else
|
|
||||||
return std::pow(x, 1.0f / 2.4f) * 1.055f - 0.055f;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline uint8_t ftouc(float f) {
|
|
||||||
int val = int(f * 255.0f);
|
|
||||||
val = std::max(0, std::min(255, val));
|
|
||||||
|
|
||||||
return static_cast<uint8_t>(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline double radians(double degree) { return 3.141592653589 * degree / 180.0; }
|
|
||||||
|
|
||||||
// https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
|
|
||||||
std::array<double, 4> ToQuaternion(double yaw, double pitch,
|
|
||||||
double roll) // yaw (Z), pitch (Y), roll (X)
|
|
||||||
{
|
|
||||||
// Abbreviations for the various angular functions
|
|
||||||
double cy = std::cos(yaw * 0.5);
|
|
||||||
double sy = std::sin(yaw * 0.5);
|
|
||||||
double cp = std::cos(pitch * 0.5);
|
|
||||||
double sp = std::sin(pitch * 0.5);
|
|
||||||
double cr = std::cos(roll * 0.5);
|
|
||||||
double sr = std::sin(roll * 0.5);
|
|
||||||
|
|
||||||
std::array<double, 4> q;
|
|
||||||
q[0] = cr * cp * cy + sr * sp * sy;
|
|
||||||
q[1] = sr * cp * cy - cr * sp * sy;
|
|
||||||
q[2] = cr * sp * cy + sr * cp * sy;
|
|
||||||
q[3] = cr * cp * sy - sr * sp * cy;
|
|
||||||
|
|
||||||
return q;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
bool SetupScene(GUIContext &ctx) {
|
|
||||||
|
|
||||||
__android_log_print(ANDROID_LOG_INFO, "tinyusdz", "SetupScene");
|
|
||||||
#if 0 // TODO
|
|
||||||
if (ctx.stage.root_nodes.empty()) {
|
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "tinyusdz", "No GeomMesh");
|
|
||||||
// No GeomMesh in the scene
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert USD geom_mesh to renderable mesh.
|
|
||||||
ctx.render_scene.draw_meshes.clear();
|
|
||||||
#if 0 // TODO
|
|
||||||
__android_log_print(ANDROID_LOG_INFO, "tinyusdz", "# of geom_meshes %d", (int)ctx.scene.geom_meshes.size());
|
|
||||||
for (size_t i = 0; i < ctx.scene.geom_meshes.size(); i++) {
|
|
||||||
example::DrawGeomMesh draw_mesh(&ctx.scene.geom_meshes[i]);
|
|
||||||
ctx.render_scene.draw_meshes.push_back(draw_mesh);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Setup render mesh
|
|
||||||
if (!ctx.render_scene.Setup()) {
|
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "tinyusdz", "Scene::Setup failed");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// init camera matrix
|
|
||||||
{
|
|
||||||
auto q = ToQuaternion(radians(ctx.yaw), radians(ctx.pitch),
|
|
||||||
radians(ctx.roll));
|
|
||||||
ctx.camera.quat[0] = q[0];
|
|
||||||
ctx.camera.quat[1] = q[1];
|
|
||||||
ctx.camera.quat[2] = q[2];
|
|
||||||
ctx.camera.quat[3] = q[3];
|
|
||||||
}
|
|
||||||
|
|
||||||
// HACK. camera position adjusted for `suzanne.usdc`
|
|
||||||
ctx.camera.eye[2] = 3.5f;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool RenderScene(GUIContext &ctx)
|
|
||||||
{
|
|
||||||
|
|
||||||
// init camera matrix
|
|
||||||
{
|
|
||||||
auto q = ToQuaternion(radians(ctx.yaw), radians(ctx.pitch),
|
|
||||||
radians(ctx.roll));
|
|
||||||
ctx.camera.quat[0] = q[0];
|
|
||||||
ctx.camera.quat[1] = q[1];
|
|
||||||
ctx.camera.quat[2] = q[2];
|
|
||||||
ctx.camera.quat[3] = q[3];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Init AOV image
|
|
||||||
ctx.aov.Resize(ctx.render_width, ctx.render_height);
|
|
||||||
|
|
||||||
example::Render(ctx.render_scene, ctx.camera, &ctx.aov);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GetRenderedImage(const GUIContext &ctx, std::vector<uint32_t> *argb) {
|
|
||||||
if (!argb) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<uint32_t> buf;
|
|
||||||
buf.resize(ctx.aov.width * ctx.aov.height);
|
|
||||||
|
|
||||||
for (size_t i = 0; i < ctx.aov.width * ctx.aov.height; i++) {
|
|
||||||
uint8_t r = ftouc(linearToSrgb(ctx.aov.rgb[3 * i + 0]));
|
|
||||||
uint8_t g = ftouc(linearToSrgb(ctx.aov.rgb[3 * i + 1]));
|
|
||||||
uint8_t b = ftouc(linearToSrgb(ctx.aov.rgb[3 * i + 2]));
|
|
||||||
uint8_t a = 255;
|
|
||||||
|
|
||||||
buf[i] = (a << 24) | (r << 16) | (g << 8) | b;
|
|
||||||
}
|
|
||||||
|
|
||||||
(*argb) = buf;
|
|
||||||
}
|
|
||||||
} // example
|
|
|
@ -1,82 +0,0 @@
|
||||||
// SPDX-License-Identifier: MIT
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "simple-render.hh"
|
|
||||||
|
|
||||||
namespace example {
|
|
||||||
|
|
||||||
struct GUIContext {
|
|
||||||
enum AOVMode {
|
|
||||||
AOV_COLOR = 0,
|
|
||||||
AOV_SHADING_NORMAL,
|
|
||||||
AOV_GEOMETRIC_NORMAL,
|
|
||||||
AOV_POSITION,
|
|
||||||
AOV_DEPTH,
|
|
||||||
AOV_TEXCOORD,
|
|
||||||
AOV_VARYCOORD,
|
|
||||||
AOV_VERTEXCOLOR
|
|
||||||
};
|
|
||||||
int aov_mode{AOV_COLOR};
|
|
||||||
|
|
||||||
|
|
||||||
example::AOV aov; // framebuffer
|
|
||||||
|
|
||||||
int width = 1024;
|
|
||||||
int height = 768;
|
|
||||||
|
|
||||||
int mouse_x = -1;
|
|
||||||
int mouse_y = -1;
|
|
||||||
|
|
||||||
bool mouse_left_down = false;
|
|
||||||
bool shift_pressed = false;
|
|
||||||
bool ctrl_pressed = false;
|
|
||||||
bool tab_pressed = false;
|
|
||||||
|
|
||||||
float yaw = 90.0f; // for Z up scene
|
|
||||||
float pitch = 0.0f;
|
|
||||||
float roll = 0.0f;
|
|
||||||
|
|
||||||
// float curr_quat[4] = {0.0f, 0.0f, 0.0f, 1.0f};
|
|
||||||
// std::array<float, 4> prev_quat[4] = {0.0f, 0.0f, 0.0f, 1.0f};
|
|
||||||
|
|
||||||
// std::array<float, 3> eye = {0.0f, 0.0f, 5.0f};
|
|
||||||
// std::array<float, 3> lookat = {0.0f, 0.0f, 0.0f};
|
|
||||||
// std::array<float, 3> up = {0.0f, 1.0f, 0.0f};
|
|
||||||
|
|
||||||
example::RenderScene render_scene;
|
|
||||||
|
|
||||||
example::Camera camera;
|
|
||||||
|
|
||||||
std::atomic<bool> update_texture{false};
|
|
||||||
std::atomic<bool> redraw{true}; // require redraw
|
|
||||||
std::atomic<bool> quit{false};
|
|
||||||
|
|
||||||
int render_width = 512;
|
|
||||||
int render_height = 512;
|
|
||||||
|
|
||||||
// scene reload
|
|
||||||
tinyusdz::Stage stage;
|
|
||||||
std::atomic<bool> request_reload{false};
|
|
||||||
std::string filename;
|
|
||||||
|
|
||||||
#if __EMSCRIPTEN__ || defined(EMULATE_EMSCRIPTEN)
|
|
||||||
bool render_finished{false};
|
|
||||||
int current_render_line = 0;
|
|
||||||
int render_line_size = 32; // render images with this lines per animation loop.
|
|
||||||
// for emscripten environment
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
extern GUIContext g_gui_ctx;
|
|
||||||
|
|
||||||
|
|
||||||
// Setup scene. Only need to call once USD scene(ctx.scene) is loaded.
|
|
||||||
bool SetupScene(GUIContext &ctx);
|
|
||||||
|
|
||||||
// Render the scene(and store rendered image to ctx.aov)
|
|
||||||
bool RenderScene(GUIContext &ctx);
|
|
||||||
|
|
||||||
// Get rendered image from ctx.aov as Android ARGB_8888 IntArray.
|
|
||||||
void GetRenderedImage(const GUIContext &ctx, std::vector<uint32_t> *argb);
|
|
||||||
|
|
||||||
} // example
|
|
|
@ -1,215 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2019 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.example.hellotinyusdz
|
|
||||||
|
|
||||||
import android.content.res.AssetManager
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.view.MotionEvent
|
|
||||||
import android.view.View
|
|
||||||
import android.view.GestureDetector
|
|
||||||
import android.widget.ImageView
|
|
||||||
import android.widget.Toast
|
|
||||||
import android.graphics.Bitmap
|
|
||||||
import android.util.Log
|
|
||||||
|
|
||||||
import androidx.core.view.MotionEventCompat
|
|
||||||
|
|
||||||
import android.graphics.Color
|
|
||||||
import android.graphics.BitmapFactory
|
|
||||||
import kotlinx.android.synthetic.main.activity_main.sample_text
|
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity(), GestureDetector.OnGestureListener {
|
|
||||||
|
|
||||||
val render_width = 512
|
|
||||||
val render_height = 512
|
|
||||||
var lastTouchTime: Long = -1
|
|
||||||
var motionX = -1.0f
|
|
||||||
var motionY = -1.0f
|
|
||||||
|
|
||||||
fun updateRender() {
|
|
||||||
renderImage(render_width, render_height);
|
|
||||||
|
|
||||||
var conf = Bitmap.Config.ARGB_8888
|
|
||||||
var b = Bitmap.createBitmap(render_width, render_height, conf)
|
|
||||||
|
|
||||||
var pixels = IntArray(render_width * render_height)
|
|
||||||
|
|
||||||
grabImage(pixels, render_width, render_height)
|
|
||||||
|
|
||||||
b.setPixels(pixels, 0, render_width, 0, 0, render_width, render_height)
|
|
||||||
|
|
||||||
var img = findViewById<ImageView>(R.id.imageView)
|
|
||||||
|
|
||||||
img.setImageBitmap(b)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
override fun onLongPress(event: MotionEvent) {
|
|
||||||
Log.d("tinyusdz", "onLongPress: $event")
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onScroll(
|
|
||||||
event1: MotionEvent,
|
|
||||||
event2: MotionEvent,
|
|
||||||
distanceX: Float,
|
|
||||||
distanceY: Float
|
|
||||||
): Boolean {
|
|
||||||
Log.d("tinyusdz", "onScroll: $event1 $event2")
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onShowPress(event: MotionEvent) {
|
|
||||||
|
|
||||||
Log.d("tinyusdz", "onShowPress: $event")
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSingleTapUp(event: MotionEvent): Boolean {
|
|
||||||
Log.d("tinyusdz", "onSingleTapUp: $event")
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDown(event: MotionEvent): Boolean {
|
|
||||||
Log.d("tinyusdz", "onDown: $event")
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onFling(
|
|
||||||
event1: MotionEvent,
|
|
||||||
event2: MotionEvent,
|
|
||||||
velocityX: Float,
|
|
||||||
velocityY: Float
|
|
||||||
): Boolean {
|
|
||||||
Log.d("tinyusdz", "onFling: $event1 $event2")
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onTouchEvent(event: MotionEvent) : Boolean {
|
|
||||||
val action: Int = MotionEventCompat.getActionMasked(event)
|
|
||||||
|
|
||||||
return when (action) {
|
|
||||||
MotionEvent.ACTION_DOWN -> {
|
|
||||||
Log.d("tinyusdz", "Action was DOWN")
|
|
||||||
motionX = event.getX()
|
|
||||||
motionY = event.getY()
|
|
||||||
|
|
||||||
true
|
|
||||||
}
|
|
||||||
MotionEvent.ACTION_MOVE -> {
|
|
||||||
var x = event.getX()
|
|
||||||
var y = event.getY()
|
|
||||||
|
|
||||||
if ((lastTouchTime < 0) || (event.eventTime < lastTouchTime)) {
|
|
||||||
motionX = x
|
|
||||||
motionY = y
|
|
||||||
}
|
|
||||||
|
|
||||||
var eventDuration = event.eventTime - event.downTime;
|
|
||||||
lastTouchTime = eventDuration
|
|
||||||
|
|
||||||
|
|
||||||
var dx = x - motionX
|
|
||||||
var dy = y - motionY
|
|
||||||
|
|
||||||
Log.d("tinyusdz", "Action was MOVE. duration " + eventDuration + ", dx " + dx + ", dy = " + dy)
|
|
||||||
|
|
||||||
touchMove(dx, dy)
|
|
||||||
|
|
||||||
updateRender()
|
|
||||||
|
|
||||||
motionX = x
|
|
||||||
motionY = y
|
|
||||||
|
|
||||||
true
|
|
||||||
}
|
|
||||||
MotionEvent.ACTION_UP -> {
|
|
||||||
Log.d("tinyusdz", "Action was UP")
|
|
||||||
|
|
||||||
motionX = event.getX()
|
|
||||||
motionY = event.getY()
|
|
||||||
|
|
||||||
true
|
|
||||||
}
|
|
||||||
MotionEvent.ACTION_CANCEL -> {
|
|
||||||
Log.d("tinyusdz", "Action was CANCEL")
|
|
||||||
true
|
|
||||||
}
|
|
||||||
MotionEvent.ACTION_OUTSIDE -> {
|
|
||||||
Log.d("tinyusdz", "Movement occurred outside bounds of current screen element")
|
|
||||||
true
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
Log.d("tinyusdz", "Another action")
|
|
||||||
super.onTouchEvent(event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setContentView(R.layout.activity_main)
|
|
||||||
val view = findViewById<View>(R.id.container)
|
|
||||||
|
|
||||||
|
|
||||||
// Set up a touch listener which calls the native sound engine
|
|
||||||
view.setOnTouchListener {_, event ->
|
|
||||||
if (event.action == MotionEvent.ACTION_DOWN) {
|
|
||||||
//playSound(true)
|
|
||||||
} else if (event.action == MotionEvent.ACTION_UP) {
|
|
||||||
//playSound(false)
|
|
||||||
} else {
|
|
||||||
return@setOnTouchListener false
|
|
||||||
}
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onResume() {
|
|
||||||
super.onResume()
|
|
||||||
|
|
||||||
var n = initScene(getAssets(), "suzanne.usdc");
|
|
||||||
|
|
||||||
if (n <= 0) {
|
|
||||||
val errorString : String = "Failed to load USD file"
|
|
||||||
Toast.makeText(applicationContext, errorString,Toast.LENGTH_LONG).show()
|
|
||||||
sample_text.text = errorString
|
|
||||||
} else {
|
|
||||||
val s : String = "Loaded USD. # of geom_meshes " + n
|
|
||||||
Toast.makeText(applicationContext, s,Toast.LENGTH_LONG).show()
|
|
||||||
sample_text.text = s
|
|
||||||
|
|
||||||
updateRender()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPause() {
|
|
||||||
super.onPause()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private external fun initScene(mgr: AssetManager, filename: String) : Int
|
|
||||||
private external fun renderImage(width: Int, height: Int) : Int
|
|
||||||
private external fun grabImage(img: IntArray, width: Int, height: Int) : Int
|
|
||||||
private external fun touchMove(dx: Float, dy: Float) : Int
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
// Used to load native code calling oboe on app startup.
|
|
||||||
init {
|
|
||||||
System.loadLibrary("hello-tinyusdz")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,34 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:aapt="http://schemas.android.com/aapt"
|
|
||||||
android:width="108dp"
|
|
||||||
android:height="108dp"
|
|
||||||
android:viewportWidth="108"
|
|
||||||
android:viewportHeight="108">
|
|
||||||
<path
|
|
||||||
android:fillType="evenOdd"
|
|
||||||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
|
|
||||||
android:strokeWidth="1"
|
|
||||||
android:strokeColor="#00000000">
|
|
||||||
<aapt:attr name="android:fillColor">
|
|
||||||
<gradient
|
|
||||||
android:endX="78.5885"
|
|
||||||
android:endY="90.9159"
|
|
||||||
android:startX="48.7653"
|
|
||||||
android:startY="61.0927"
|
|
||||||
android:type="linear">
|
|
||||||
<item
|
|
||||||
android:color="#44000000"
|
|
||||||
android:offset="0.0" />
|
|
||||||
<item
|
|
||||||
android:color="#00000000"
|
|
||||||
android:offset="1.0" />
|
|
||||||
</gradient>
|
|
||||||
</aapt:attr>
|
|
||||||
</path>
|
|
||||||
<path
|
|
||||||
android:fillColor="#FFFFFF"
|
|
||||||
android:fillType="nonZero"
|
|
||||||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
|
|
||||||
android:strokeWidth="1"
|
|
||||||
android:strokeColor="#00000000" />
|
|
||||||
</vector>
|
|
|
@ -1,170 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="108dp"
|
|
||||||
android:height="108dp"
|
|
||||||
android:viewportWidth="108"
|
|
||||||
android:viewportHeight="108">
|
|
||||||
<path
|
|
||||||
android:fillColor="#008577"
|
|
||||||
android:pathData="M0,0h108v108h-108z" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M9,0L9,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M19,0L19,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M29,0L29,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M39,0L39,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M49,0L49,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M59,0L59,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M69,0L69,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M79,0L79,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M89,0L89,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M99,0L99,108"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,9L108,9"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,19L108,19"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,29L108,29"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,39L108,39"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,49L108,49"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,59L108,59"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,69L108,69"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,79L108,79"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,89L108,89"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M0,99L108,99"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M19,29L89,29"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M19,39L89,39"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M19,49L89,49"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M19,59L89,59"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M19,69L89,69"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M19,79L89,79"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M29,19L29,89"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M39,19L39,89"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M49,19L49,89"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M59,19L59,89"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M69,19L69,89"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
<path
|
|
||||||
android:fillColor="#00000000"
|
|
||||||
android:pathData="M79,19L79,89"
|
|
||||||
android:strokeWidth="0.8"
|
|
||||||
android:strokeColor="#33FFFFFF" />
|
|
||||||
</vector>
|
|
|
@ -1,30 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:id="@+id/container"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
tools:context=".MainActivity">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/sample_text"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="@string/prompt_msg"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintLeft_toLeftOf="parent"
|
|
||||||
app:layout_constraintRight_toRightOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/imageView"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:srcCompat="@drawable/ic_launcher_background" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<background android:drawable="@drawable/ic_launcher_background" />
|
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
|
||||||
</adaptive-icon>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<background android:drawable="@drawable/ic_launcher_background" />
|
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
|
||||||
</adaptive-icon>
|
|
Before Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 15 KiB |
|
@ -1,6 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<color name="colorPrimary">#008577</color>
|
|
||||||
<color name="colorPrimaryDark">#00574B</color>
|
|
||||||
<color name="colorAccent">#D81B60</color>
|
|
||||||
</resources>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<resources>
|
|
||||||
<string name="app_name">Hello TinyUSDZ</string>
|
|
||||||
<string name="prompt_msg">Tap to play!</string>
|
|
||||||
</resources>
|
|
|
@ -1,11 +0,0 @@
|
||||||
<resources>
|
|
||||||
|
|
||||||
<!-- Base application theme. -->
|
|
||||||
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
|
||||||
<!-- Customize your theme here. -->
|
|
||||||
<item name="colorPrimary">@color/colorPrimary</item>
|
|
||||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
|
||||||
<item name="colorAccent">@color/colorAccent</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</resources>
|
|
|
@ -1,28 +0,0 @@
|
||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
||||||
|
|
||||||
buildscript {
|
|
||||||
ext.kotlin_version = '1.6.21'
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
jcenter()
|
|
||||||
|
|
||||||
}
|
|
||||||
dependencies {
|
|
||||||
classpath 'com.android.tools.build:gradle:8.1.2'
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
|
||||||
// in the individual module build.gradle files
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
allprojects {
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
jcenter()
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
task clean(type: Delete) {
|
|
||||||
delete rootProject.buildDir
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
# Project-wide Gradle settings.
|
|
||||||
|
|
||||||
# IDE (e.g. Android Studio) users:
|
|
||||||
# Gradle settings configured through the IDE *will override*
|
|
||||||
# any settings specified in this file.
|
|
||||||
|
|
||||||
# For more details on how to configure your build environment visit
|
|
||||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
|
||||||
|
|
||||||
# Specifies the JVM arguments used for the daemon process.
|
|
||||||
# The setting is particularly useful for tweaking memory settings.
|
|
||||||
org.gradle.jvmargs=-Xmx1536m
|
|
||||||
|
|
||||||
# When configured, Gradle will run in incubating parallel mode.
|
|
||||||
# This option should only be used with decoupled projects. More details, visit
|
|
||||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
|
||||||
# org.gradle.parallel=true
|
|
||||||
|
|
||||||
android.useAndroidX=true
|
|
||||||
android.defaults.buildfeatures.buildconfig=true
|
|
||||||
android.nonTransitiveRClass=false
|
|
||||||
android.nonFinalResIds=false
|
|
|
@ -1,5 +0,0 @@
|
||||||
distributionBase=GRADLE_USER_HOME
|
|
||||||
distributionPath=wrapper/dists
|
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
|
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
|
||||||
zipStorePath=wrapper/dists
|
|
|
@ -1,234 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
#
|
|
||||||
# Copyright © 2015-2021 the original authors.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
##############################################################################
|
|
||||||
#
|
|
||||||
# Gradle start up script for POSIX generated by Gradle.
|
|
||||||
#
|
|
||||||
# Important for running:
|
|
||||||
#
|
|
||||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
|
||||||
# noncompliant, but you have some other compliant shell such as ksh or
|
|
||||||
# bash, then to run this script, type that shell name before the whole
|
|
||||||
# command line, like:
|
|
||||||
#
|
|
||||||
# ksh Gradle
|
|
||||||
#
|
|
||||||
# Busybox and similar reduced shells will NOT work, because this script
|
|
||||||
# requires all of these POSIX shell features:
|
|
||||||
# * functions;
|
|
||||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
|
||||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
|
||||||
# * compound commands having a testable exit status, especially «case»;
|
|
||||||
# * various built-in commands including «command», «set», and «ulimit».
|
|
||||||
#
|
|
||||||
# Important for patching:
|
|
||||||
#
|
|
||||||
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
|
||||||
# by Bash, Ksh, etc; in particular arrays are avoided.
|
|
||||||
#
|
|
||||||
# The "traditional" practice of packing multiple parameters into a
|
|
||||||
# space-separated string is a well documented source of bugs and security
|
|
||||||
# problems, so this is (mostly) avoided, by progressively accumulating
|
|
||||||
# options in "$@", and eventually passing that to Java.
|
|
||||||
#
|
|
||||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
|
||||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
|
||||||
# see the in-line comments for details.
|
|
||||||
#
|
|
||||||
# There are tweaks for specific operating systems such as AIX, CygWin,
|
|
||||||
# Darwin, MinGW, and NonStop.
|
|
||||||
#
|
|
||||||
# (3) This script is generated from the Groovy template
|
|
||||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
|
||||||
# within the Gradle project.
|
|
||||||
#
|
|
||||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
|
||||||
#
|
|
||||||
##############################################################################
|
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
|
||||||
|
|
||||||
# Resolve links: $0 may be a link
|
|
||||||
app_path=$0
|
|
||||||
|
|
||||||
# Need this for daisy-chained symlinks.
|
|
||||||
while
|
|
||||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
|
||||||
[ -h "$app_path" ]
|
|
||||||
do
|
|
||||||
ls=$( ls -ld "$app_path" )
|
|
||||||
link=${ls#*' -> '}
|
|
||||||
case $link in #(
|
|
||||||
/*) app_path=$link ;; #(
|
|
||||||
*) app_path=$APP_HOME$link ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
|
||||||
APP_BASE_NAME=${0##*/}
|
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
|
||||||
MAX_FD=maximum
|
|
||||||
|
|
||||||
warn () {
|
|
||||||
echo "$*"
|
|
||||||
} >&2
|
|
||||||
|
|
||||||
die () {
|
|
||||||
echo
|
|
||||||
echo "$*"
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
} >&2
|
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
|
||||||
cygwin=false
|
|
||||||
msys=false
|
|
||||||
darwin=false
|
|
||||||
nonstop=false
|
|
||||||
case "$( uname )" in #(
|
|
||||||
CYGWIN* ) cygwin=true ;; #(
|
|
||||||
Darwin* ) darwin=true ;; #(
|
|
||||||
MSYS* | MINGW* ) msys=true ;; #(
|
|
||||||
NONSTOP* ) nonstop=true ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
|
||||||
# IBM's JDK on AIX uses strange locations for the executables
|
|
||||||
JAVACMD=$JAVA_HOME/jre/sh/java
|
|
||||||
else
|
|
||||||
JAVACMD=$JAVA_HOME/bin/java
|
|
||||||
fi
|
|
||||||
if [ ! -x "$JAVACMD" ] ; then
|
|
||||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
location of your Java installation."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
JAVACMD=java
|
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
location of your Java installation."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
|
||||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
|
||||||
case $MAX_FD in #(
|
|
||||||
max*)
|
|
||||||
MAX_FD=$( ulimit -H -n ) ||
|
|
||||||
warn "Could not query maximum file descriptor limit"
|
|
||||||
esac
|
|
||||||
case $MAX_FD in #(
|
|
||||||
'' | soft) :;; #(
|
|
||||||
*)
|
|
||||||
ulimit -n "$MAX_FD" ||
|
|
||||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Collect all arguments for the java command, stacking in reverse order:
|
|
||||||
# * args from the command line
|
|
||||||
# * the main class name
|
|
||||||
# * -classpath
|
|
||||||
# * -D...appname settings
|
|
||||||
# * --module-path (only if needed)
|
|
||||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
|
||||||
|
|
||||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
|
||||||
if "$cygwin" || "$msys" ; then
|
|
||||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
|
||||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
|
||||||
|
|
||||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
|
||||||
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
|
||||||
for arg do
|
|
||||||
if
|
|
||||||
case $arg in #(
|
|
||||||
-*) false ;; # don't mess with options #(
|
|
||||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
|
||||||
[ -e "$t" ] ;; #(
|
|
||||||
*) false ;;
|
|
||||||
esac
|
|
||||||
then
|
|
||||||
arg=$( cygpath --path --ignore --mixed "$arg" )
|
|
||||||
fi
|
|
||||||
# Roll the args list around exactly as many times as the number of
|
|
||||||
# args, so each arg winds up back in the position where it started, but
|
|
||||||
# possibly modified.
|
|
||||||
#
|
|
||||||
# NB: a `for` loop captures its iteration list before it begins, so
|
|
||||||
# changing the positional parameters here affects neither the number of
|
|
||||||
# iterations, nor the values presented in `arg`.
|
|
||||||
shift # remove old arg
|
|
||||||
set -- "$@" "$arg" # push replacement arg
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Collect all arguments for the java command;
|
|
||||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
|
||||||
# shell script including quotes and variable substitutions, so put them in
|
|
||||||
# double quotes to make sure that they get re-expanded; and
|
|
||||||
# * put everything else in single quotes, so that it's not re-expanded.
|
|
||||||
|
|
||||||
set -- \
|
|
||||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
|
||||||
-classpath "$CLASSPATH" \
|
|
||||||
org.gradle.wrapper.GradleWrapperMain \
|
|
||||||
"$@"
|
|
||||||
|
|
||||||
# Use "xargs" to parse quoted args.
|
|
||||||
#
|
|
||||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
|
||||||
#
|
|
||||||
# In Bash we could simply go:
|
|
||||||
#
|
|
||||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
|
||||||
# set -- "${ARGS[@]}" "$@"
|
|
||||||
#
|
|
||||||
# but POSIX shell has neither arrays nor command substitution, so instead we
|
|
||||||
# post-process each arg (as a line of input to sed) to backslash-escape any
|
|
||||||
# character that might be a shell metacharacter, then use eval to reverse
|
|
||||||
# that process (while maintaining the separation between arguments), and wrap
|
|
||||||
# the whole thing up as a single "set" statement.
|
|
||||||
#
|
|
||||||
# This will of course break if any of these variables contains a newline or
|
|
||||||
# an unmatched quote.
|
|
||||||
#
|
|
||||||
|
|
||||||
eval "set -- $(
|
|
||||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
|
||||||
xargs -n1 |
|
|
||||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
|
||||||
tr '\n' ' '
|
|
||||||
)" '"$@"'
|
|
||||||
|
|
||||||
exec "$JAVACMD" "$@"
|
|
|
@ -1,89 +0,0 @@
|
||||||
@rem
|
|
||||||
@rem Copyright 2015 the original author or authors.
|
|
||||||
@rem
|
|
||||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
@rem you may not use this file except in compliance with the License.
|
|
||||||
@rem You may obtain a copy of the License at
|
|
||||||
@rem
|
|
||||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
@rem
|
|
||||||
@rem Unless required by applicable law or agreed to in writing, software
|
|
||||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
@rem See the License for the specific language governing permissions and
|
|
||||||
@rem limitations under the License.
|
|
||||||
@rem
|
|
||||||
|
|
||||||
@if "%DEBUG%" == "" @echo off
|
|
||||||
@rem ##########################################################################
|
|
||||||
@rem
|
|
||||||
@rem Gradle startup script for Windows
|
|
||||||
@rem
|
|
||||||
@rem ##########################################################################
|
|
||||||
|
|
||||||
@rem Set local scope for the variables with windows NT shell
|
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
|
||||||
set APP_BASE_NAME=%~n0
|
|
||||||
set APP_HOME=%DIRNAME%
|
|
||||||
|
|
||||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
|
||||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
|
||||||
|
|
||||||
@rem Find java.exe
|
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
|
||||||
if "%ERRORLEVEL%" == "0" goto execute
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
|
||||||
echo.
|
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
echo location of your Java installation.
|
|
||||||
|
|
||||||
goto fail
|
|
||||||
|
|
||||||
:findJavaFromJavaHome
|
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto execute
|
|
||||||
|
|
||||||
echo.
|
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
|
||||||
echo.
|
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
|
||||||
echo location of your Java installation.
|
|
||||||
|
|
||||||
goto fail
|
|
||||||
|
|
||||||
:execute
|
|
||||||
@rem Setup the command line
|
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
|
||||||
|
|
||||||
:end
|
|
||||||
@rem End local scope for the variables with windows NT shell
|
|
||||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
|
||||||
|
|
||||||
:fail
|
|
||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
|
||||||
rem the _cmd.exe /c_ return code!
|
|
||||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
|
||||||
exit /b 1
|
|
||||||
|
|
||||||
:mainEnd
|
|
||||||
if "%OS%"=="Windows_NT" endlocal
|
|
||||||
|
|
||||||
:omega
|
|
|
@ -1 +0,0 @@
|
||||||
include ':app'
|
|
|
@ -1,114 +0,0 @@
|
||||||
#include <unistd.h>
|
|
||||||
#include "ubench.h"
|
|
||||||
|
|
||||||
#include "value-types.hh"
|
|
||||||
#include "prim-types.hh"
|
|
||||||
#include "usdGeom.hh"
|
|
||||||
|
|
||||||
using namespace tinyusdz;
|
|
||||||
|
|
||||||
UBENCH(perf, vector_double_push_back_10M)
|
|
||||||
{
|
|
||||||
std::vector<double> v;
|
|
||||||
constexpr size_t niter = 10 * 10000;
|
|
||||||
for (size_t i = 0; i < niter; i++) {
|
|
||||||
v.push_back(double(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
UBENCH(perf, any_value_double_10M)
|
|
||||||
{
|
|
||||||
constexpr size_t niter = 10 * 10000;
|
|
||||||
for (size_t i = 0; i < niter; i++) {
|
|
||||||
linb::any a;
|
|
||||||
a = double(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
UBENCH(perf, thelink2012_any_float_10M)
|
|
||||||
{
|
|
||||||
constexpr size_t niter = 10 * 10000;
|
|
||||||
for (size_t i = 0; i < niter; i++) {
|
|
||||||
linb::any a;
|
|
||||||
a = float(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
UBENCH(perf, thelink2012_any_double_10M)
|
|
||||||
{
|
|
||||||
constexpr size_t niter = 10 * 10000;
|
|
||||||
|
|
||||||
std::vector<linb::any> v;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < niter; i++) {
|
|
||||||
v.push_back(double(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
UBENCH(perf, any_value_100M)
|
|
||||||
{
|
|
||||||
constexpr size_t niter = 100 * 10000;
|
|
||||||
for (size_t i = 0; i < niter; i++) {
|
|
||||||
tinyusdz::value::Value a;
|
|
||||||
a = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
UBENCH(perf, timesamples_double_10M)
|
|
||||||
{
|
|
||||||
constexpr size_t ns = 10 * 10000;
|
|
||||||
|
|
||||||
tinyusdz::value::TimeSamples ts;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < ns; i++) {
|
|
||||||
ts.times.push_back(double(i));
|
|
||||||
ts.values.push_back(double(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
UBENCH(perf, gprim_10M)
|
|
||||||
{
|
|
||||||
constexpr size_t niter = 10 * 10000;
|
|
||||||
std::vector<value::Value> prims;
|
|
||||||
|
|
||||||
tinyusdz::Xform xform;
|
|
||||||
for (size_t i = 0; i < niter; i++) {
|
|
||||||
prims.emplace_back(xform);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Its rougly 3.5x slower compared to `string_vector_10M` in single-threaded run on Threadripper 1950X
|
|
||||||
// (even not using thread_safe_databse(no mutex))
|
|
||||||
UBENCH(perf, token_vector_10M)
|
|
||||||
{
|
|
||||||
constexpr size_t niter = 10 * 10000;
|
|
||||||
std::vector<value::token> v;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < niter; i++) {
|
|
||||||
value::token tok(std::to_string(i));
|
|
||||||
v.emplace_back(tok);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
UBENCH(perf, string_vector_10M)
|
|
||||||
{
|
|
||||||
constexpr size_t niter = 10 * 10000;
|
|
||||||
std::vector<std::string> v;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < niter; i++) {
|
|
||||||
std::string s(std::to_string(i));
|
|
||||||
v.emplace_back(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//int main(int argc, char **argv)
|
|
||||||
//{
|
|
||||||
// benchmark_any_type();
|
|
||||||
//
|
|
||||||
// return 0;
|
|
||||||
//}
|
|
||||||
|
|
||||||
UBENCH_MAIN();
|
|
|
@ -1,823 +0,0 @@
|
||||||
/*
|
|
||||||
The latest version of this library is available on GitHub;
|
|
||||||
https://github.com/sheredom/ubench.h
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
This is free and unencumbered software released into the public domain.
|
|
||||||
|
|
||||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
|
||||||
distribute this software, either in source code form or as a compiled
|
|
||||||
binary, for any purpose, commercial or non-commercial, and by any
|
|
||||||
means.
|
|
||||||
|
|
||||||
In jurisdictions that recognize copyright laws, the author or authors
|
|
||||||
of this software dedicate any and all copyright interest in the
|
|
||||||
software to the public domain. We make this dedication for the benefit
|
|
||||||
of the public at large and to the detriment of our heirs and
|
|
||||||
successors. We intend this dedication to be an overt act of
|
|
||||||
relinquishment in perpetuity of all present and future rights to this
|
|
||||||
software under copyright law.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
For more information, please refer to <http://unlicense.org/>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef SHEREDOM_UBENCH_H_INCLUDED
|
|
||||||
#define SHEREDOM_UBENCH_H_INCLUDED
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
/*
|
|
||||||
Disable warning about not inlining 'inline' functions.
|
|
||||||
TODO: We'll fix this later by not using fprintf within our macros, and
|
|
||||||
instead use snprintf to a realloc'ed buffer.
|
|
||||||
*/
|
|
||||||
#pragma warning(disable : 4710)
|
|
||||||
|
|
||||||
/*
|
|
||||||
Disable warning about inlining functions that are not marked 'inline'.
|
|
||||||
TODO: add a UBENCH_NOINLINE onto the macro generated functions to fix this.
|
|
||||||
*/
|
|
||||||
#pragma warning(disable : 4711)
|
|
||||||
|
|
||||||
/*
|
|
||||||
Disable warning about replacing undefined preprocessor macro '__cplusplus' with
|
|
||||||
0 emitted from microsofts own headers.
|
|
||||||
See: https://developercommunity.visualstudio.com/t/issue-in-corecrth-header-results-in-an-undefined-m/433021
|
|
||||||
*/
|
|
||||||
#pragma warning(disable : 4668)
|
|
||||||
|
|
||||||
/*
|
|
||||||
Disabled warning about dangerous use of section.
|
|
||||||
section '.CRT$XCU' is reserved for C++ dynamic initialization. Manually
|
|
||||||
creating the section will interfere with C++ dynamic initialization and may lead to undefined behavior
|
|
||||||
*/
|
|
||||||
#if defined(_MSC_FULL_VER)
|
|
||||||
#if _MSC_FULL_VER >= 192930100 // this warning was introduced in Visual Studio 2019 version 16.11
|
|
||||||
#pragma warning(disable : 5247)
|
|
||||||
#pragma warning(disable : 5248)
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#pragma warning(push, 1)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
#define UBENCH_C_FUNC extern "C"
|
|
||||||
#else
|
|
||||||
#define UBENCH_C_FUNC
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
#define UBENCH_NULL NULL
|
|
||||||
#else
|
|
||||||
#define UBENCH_NULL 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER < 1920)
|
|
||||||
typedef __int64 ubench_int64_t;
|
|
||||||
typedef unsigned __int64 ubench_uint64_t;
|
|
||||||
#else
|
|
||||||
#include <stdint.h>
|
|
||||||
typedef int64_t ubench_int64_t;
|
|
||||||
typedef uint64_t ubench_uint64_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <math.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
#pragma warning(pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
typedef union {
|
|
||||||
struct {
|
|
||||||
unsigned long LowPart;
|
|
||||||
long HighPart;
|
|
||||||
} DUMMYSTRUCTNAME;
|
|
||||||
struct {
|
|
||||||
unsigned long LowPart;
|
|
||||||
long HighPart;
|
|
||||||
} u;
|
|
||||||
ubench_int64_t QuadPart;
|
|
||||||
} ubench_large_integer;
|
|
||||||
|
|
||||||
UBENCH_C_FUNC __declspec(dllimport) int __stdcall QueryPerformanceCounter(ubench_large_integer *);
|
|
||||||
UBENCH_C_FUNC __declspec(dllimport) int __stdcall QueryPerformanceFrequency(ubench_large_integer *);
|
|
||||||
#elif defined(__linux__)
|
|
||||||
|
|
||||||
/*
|
|
||||||
slightly obscure include here - we need to include glibc's features.h, but
|
|
||||||
we don't want to just include a header that might not be defined for other
|
|
||||||
c libraries like musl. Instead we include limits.h, which we know on all
|
|
||||||
glibc distributions includes features.h
|
|
||||||
*/
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#if ((2 < __GLIBC__) || ((2 == __GLIBC__) && (17 <= __GLIBC_MINOR__)))
|
|
||||||
/* glibc is version 2.17 or above, so we can just use clock_gettime */
|
|
||||||
#define UBENCH_USE_CLOCKGETTIME
|
|
||||||
#else
|
|
||||||
#include <sys/syscall.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#elif defined(__APPLE__)
|
|
||||||
#include <mach/mach_time.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
#define UBENCH_C_FUNC extern "C"
|
|
||||||
#else
|
|
||||||
#define UBENCH_C_FUNC
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
||||||
#define UBENCH_NOEXCEPT noexcept
|
|
||||||
#else
|
|
||||||
#define UBENCH_NOEXCEPT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__cplusplus) && defined(_MSC_VER)
|
|
||||||
#define UBENCH_NOTHROW __declspec(nothrow)
|
|
||||||
#else
|
|
||||||
#define UBENCH_NOTHROW
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER < 1920)
|
|
||||||
#define UBENCH_PRId64 "I64d"
|
|
||||||
#define UBENCH_PRIu64 "I64u"
|
|
||||||
#else
|
|
||||||
#include <inttypes.h>
|
|
||||||
|
|
||||||
#define UBENCH_PRId64 PRId64
|
|
||||||
#define UBENCH_PRIu64 PRIu64
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
#define UBENCH_INLINE __forceinline
|
|
||||||
#define UBENCH_NOINLINE __declspec(noinline)
|
|
||||||
|
|
||||||
#if defined(_WIN64)
|
|
||||||
#define UBENCH_SYMBOL_PREFIX
|
|
||||||
#else
|
|
||||||
#define UBENCH_SYMBOL_PREFIX "_"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__clang__)
|
|
||||||
#define UBENCH_INITIALIZER_BEGIN_DISABLE_WARNINGS \
|
|
||||||
_Pragma("clang diagnostic push") \
|
|
||||||
_Pragma("clang diagnostic ignored \"-Wmissing-variable-declarations\"")
|
|
||||||
|
|
||||||
#define UBENCH_INITIALIZER_END_DISABLE_WARNINGS _Pragma("clang diagnostic pop")
|
|
||||||
#else
|
|
||||||
#define UBENCH_INITIALIZER_BEGIN_DISABLE_WARNINGS
|
|
||||||
#define UBENCH_INITIALIZER_END_DISABLE_WARNINGS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#pragma section(".CRT$XCU", read)
|
|
||||||
#define UBENCH_INITIALIZER(f) \
|
|
||||||
static void __cdecl f(void); \
|
|
||||||
UBENCH_INITIALIZER_BEGIN_DISABLE_WARNINGS __pragma( \
|
|
||||||
comment(linker, "/include:" UBENCH_SYMBOL_PREFIX #f "_")) \
|
|
||||||
UBENCH_C_FUNC __declspec(allocate(".CRT$XCU")) void(__cdecl * \
|
|
||||||
f##_)(void) = f; \
|
|
||||||
UBENCH_INITIALIZER_END_DISABLE_WARNINGS static void __cdecl f(void)
|
|
||||||
#else
|
|
||||||
#if defined(__linux__)
|
|
||||||
#if defined(__clang__)
|
|
||||||
#if __has_warning("-Wreserved-id-macro")
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wreserved-id-macro"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define __STDC_FORMAT_MACROS 1
|
|
||||||
|
|
||||||
#if defined(__clang__)
|
|
||||||
#if __has_warning("-Wreserved-id-macro")
|
|
||||||
#pragma clang diagnostic pop
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define UBENCH_INLINE inline
|
|
||||||
#define UBENCH_NOINLINE __attribute__((noinline))
|
|
||||||
|
|
||||||
#define UBENCH_INITIALIZER(f) \
|
|
||||||
static void f(void) __attribute__((constructor)); \
|
|
||||||
static void f(void)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
|
||||||
#define UBENCH_CAST(type, x) static_cast<type>(x)
|
|
||||||
#define UBENCH_PTR_CAST(type, x) reinterpret_cast<type>(x)
|
|
||||||
#define UBENCH_EXTERN extern "C"
|
|
||||||
#else
|
|
||||||
#define UBENCH_CAST(type, x) ((type)(x))
|
|
||||||
#define UBENCH_PTR_CAST(type, x) ((type)(x))
|
|
||||||
#define UBENCH_EXTERN extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
/*
|
|
||||||
io.h contains definitions for some structures with natural padding. This is
|
|
||||||
uninteresting, but for some reason MSVC's behaviour is to warn about
|
|
||||||
including this system header. That *is* interesting
|
|
||||||
*/
|
|
||||||
#pragma warning(disable : 4820)
|
|
||||||
#pragma warning(push, 1)
|
|
||||||
#include <io.h>
|
|
||||||
#pragma warning(pop)
|
|
||||||
#define UBENCH_COLOUR_OUTPUT() (_isatty(_fileno(stdout)))
|
|
||||||
#else
|
|
||||||
#include <unistd.h>
|
|
||||||
#define UBENCH_COLOUR_OUTPUT() (isatty(STDOUT_FILENO))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static UBENCH_INLINE ubench_int64_t ubench_ns(void) {
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
ubench_large_integer counter;
|
|
||||||
ubench_large_integer frequency;
|
|
||||||
QueryPerformanceCounter(&counter);
|
|
||||||
QueryPerformanceFrequency(&frequency);
|
|
||||||
return UBENCH_CAST(ubench_int64_t,
|
|
||||||
(counter.QuadPart * 1000000000) / frequency.QuadPart);
|
|
||||||
#elif defined(__linux)
|
|
||||||
struct timespec ts;
|
|
||||||
const clockid_t cid = CLOCK_REALTIME;
|
|
||||||
#if defined(UBENCH_USE_CLOCKGETTIME)
|
|
||||||
clock_gettime(cid, &ts);
|
|
||||||
#else
|
|
||||||
syscall(SYS_clock_gettime, cid, &ts);
|
|
||||||
#endif
|
|
||||||
return UBENCH_CAST(ubench_int64_t, ts.tv_sec) * 1000 * 1000 * 1000 +
|
|
||||||
ts.tv_nsec;
|
|
||||||
#elif __APPLE__
|
|
||||||
return UBENCH_CAST(ubench_int64_t, mach_absolute_time());
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
struct ubench_run_state_s {
|
|
||||||
ubench_int64_t* ns;
|
|
||||||
ubench_int64_t size;
|
|
||||||
ubench_int64_t sample;
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef void (*ubench_benchmark_t)(struct ubench_run_state_s* ubs);
|
|
||||||
|
|
||||||
struct ubench_benchmark_state_s {
|
|
||||||
ubench_benchmark_t func;
|
|
||||||
char *name;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ubench_state_s {
|
|
||||||
struct ubench_benchmark_state_s *benchmarks;
|
|
||||||
size_t benchmarks_length;
|
|
||||||
FILE *output;
|
|
||||||
double confidence;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* extern to the global state ubench needs to execute */
|
|
||||||
UBENCH_EXTERN struct ubench_state_s ubench_state;
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
#define UBENCH_UNUSED
|
|
||||||
#else
|
|
||||||
#define UBENCH_UNUSED __attribute__((unused))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __clang__
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wvariadic-macros"
|
|
||||||
#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
|
|
||||||
#endif
|
|
||||||
#define UBENCH_PRINTF(...) \
|
|
||||||
if (ubench_state.output) { \
|
|
||||||
fprintf(ubench_state.output, __VA_ARGS__); \
|
|
||||||
} \
|
|
||||||
printf(__VA_ARGS__)
|
|
||||||
#ifdef __clang__
|
|
||||||
#pragma clang diagnostic pop
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __clang__
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wvariadic-macros"
|
|
||||||
#pragma clang diagnostic ignored "-Wc++98-compat-pedantic"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#define UBENCH_SNPRINTF(BUFFER, N, ...) _snprintf_s(BUFFER, N, N, __VA_ARGS__)
|
|
||||||
#else
|
|
||||||
#define UBENCH_SNPRINTF(...) snprintf(__VA_ARGS__)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __clang__
|
|
||||||
#pragma clang diagnostic pop
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static UBENCH_INLINE int ubench_do_benchmark(struct ubench_run_state_s* ubs)
|
|
||||||
{
|
|
||||||
ubench_int64_t curr_sample = ubs->sample++;
|
|
||||||
ubs->ns[curr_sample] = ubench_ns();
|
|
||||||
return curr_sample < ubs->size ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define UBENCH_DO_BENCHMARK() \
|
|
||||||
while(ubench_do_benchmark(ubench_run_state) > 0)
|
|
||||||
|
|
||||||
#define UBENCH_EX(SET, NAME) \
|
|
||||||
UBENCH_EXTERN struct ubench_state_s ubench_state; \
|
|
||||||
static void ubench_##SET##_##NAME(struct ubench_run_state_s* ubs); \
|
|
||||||
UBENCH_INITIALIZER(ubench_register_##SET##_##NAME) { \
|
|
||||||
const size_t index = ubench_state.benchmarks_length++; \
|
|
||||||
const char *name_part = #SET "." #NAME; \
|
|
||||||
const size_t name_size = strlen(name_part) + 1; \
|
|
||||||
char *name = UBENCH_PTR_CAST(char *, malloc(name_size)); \
|
|
||||||
ubench_state.benchmarks = UBENCH_PTR_CAST( \
|
|
||||||
struct ubench_benchmark_state_s *, \
|
|
||||||
realloc(UBENCH_PTR_CAST(void *, ubench_state.benchmarks), \
|
|
||||||
sizeof(struct ubench_benchmark_state_s) * \
|
|
||||||
ubench_state.benchmarks_length)); \
|
|
||||||
ubench_state.benchmarks[index].func = &ubench_##SET##_##NAME; \
|
|
||||||
ubench_state.benchmarks[index].name = name; \
|
|
||||||
UBENCH_SNPRINTF(name, name_size, "%s", name_part); \
|
|
||||||
} \
|
|
||||||
void ubench_##SET##_##NAME(struct ubench_run_state_s* ubench_run_state)
|
|
||||||
|
|
||||||
#define UBENCH(SET, NAME) \
|
|
||||||
static void ubench_run_##SET##_##NAME(void); \
|
|
||||||
UBENCH_EX(SET, NAME) { \
|
|
||||||
UBENCH_DO_BENCHMARK() { \
|
|
||||||
ubench_run_##SET##_##NAME(); \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
void ubench_run_##SET##_##NAME(void)
|
|
||||||
|
|
||||||
#define UBENCH_F_SETUP(FIXTURE) \
|
|
||||||
static void ubench_f_setup_##FIXTURE(struct FIXTURE *ubench_fixture)
|
|
||||||
|
|
||||||
#define UBENCH_F_TEARDOWN(FIXTURE) \
|
|
||||||
static void ubench_f_teardown_##FIXTURE(struct FIXTURE *ubench_fixture)
|
|
||||||
|
|
||||||
#define UBENCH_EX_F(FIXTURE, NAME) \
|
|
||||||
UBENCH_EXTERN struct ubench_state_s ubench_state; \
|
|
||||||
static void ubench_f_setup_##FIXTURE(struct FIXTURE *); \
|
|
||||||
static void ubench_f_teardown_##FIXTURE(struct FIXTURE *); \
|
|
||||||
static void ubench_run_ex_##FIXTURE##_##NAME(struct FIXTURE *, \
|
|
||||||
struct ubench_run_state_s*); \
|
|
||||||
static void ubench_f_##FIXTURE##_##NAME(struct ubench_run_state_s* ubench_run_state) { \
|
|
||||||
struct FIXTURE fixture; \
|
|
||||||
memset(&fixture, 0, sizeof(fixture)); \
|
|
||||||
ubench_f_setup_##FIXTURE(&fixture); \
|
|
||||||
ubench_run_ex_##FIXTURE##_##NAME(&fixture, ubench_run_state); \
|
|
||||||
ubench_f_teardown_##FIXTURE(&fixture); \
|
|
||||||
} \
|
|
||||||
UBENCH_INITIALIZER(ubench_register_##FIXTURE##_##NAME) { \
|
|
||||||
const size_t index = ubench_state.benchmarks_length++; \
|
|
||||||
const char *name_part = #FIXTURE "." #NAME; \
|
|
||||||
const size_t name_size = strlen(name_part) + 1; \
|
|
||||||
char *name = UBENCH_PTR_CAST(char *, malloc(name_size)); \
|
|
||||||
ubench_state.benchmarks = UBENCH_PTR_CAST( \
|
|
||||||
struct ubench_benchmark_state_s *, \
|
|
||||||
realloc(UBENCH_PTR_CAST(void *, ubench_state.benchmarks), \
|
|
||||||
sizeof(struct ubench_benchmark_state_s) * \
|
|
||||||
ubench_state.benchmarks_length)); \
|
|
||||||
ubench_state.benchmarks[index].func = &ubench_f_##FIXTURE##_##NAME; \
|
|
||||||
ubench_state.benchmarks[index].name = name; \
|
|
||||||
UBENCH_SNPRINTF(name, name_size, "%s", name_part); \
|
|
||||||
} \
|
|
||||||
void ubench_run_ex_##FIXTURE##_##NAME(struct FIXTURE *ubench_fixture, \
|
|
||||||
struct ubench_run_state_s* ubench_run_state)
|
|
||||||
|
|
||||||
#define UBENCH_F(FIXTURE, NAME) \
|
|
||||||
static void ubench_run_##FIXTURE##_##NAME(struct FIXTURE *); \
|
|
||||||
UBENCH_EX_F(FIXTURE, NAME) { \
|
|
||||||
UBENCH_DO_BENCHMARK() { \
|
|
||||||
ubench_run_##FIXTURE##_##NAME(ubench_fixture); \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
void ubench_run_##FIXTURE##_##NAME(struct FIXTURE *ubench_fixture)
|
|
||||||
|
|
||||||
static UBENCH_INLINE int ubench_should_filter(const char *filter,
|
|
||||||
const char *benchmark);
|
|
||||||
int ubench_should_filter(const char *filter, const char *benchmark) {
|
|
||||||
if (filter) {
|
|
||||||
const char *filter_cur = filter;
|
|
||||||
const char *benchmark_cur = benchmark;
|
|
||||||
const char *filter_wildcard = UBENCH_NULL;
|
|
||||||
|
|
||||||
while (('\0' != *filter_cur) && ('\0' != *benchmark_cur)) {
|
|
||||||
if ('*' == *filter_cur) {
|
|
||||||
/* store the position of the wildcard */
|
|
||||||
filter_wildcard = filter_cur;
|
|
||||||
|
|
||||||
/* skip the wildcard character */
|
|
||||||
filter_cur++;
|
|
||||||
|
|
||||||
while (('\0' != *filter_cur) && ('\0' != *benchmark_cur)) {
|
|
||||||
if ('*' == *filter_cur) {
|
|
||||||
/*
|
|
||||||
we found another wildcard (filter is something like *foo*) so we
|
|
||||||
exit the current loop, and return to the parent loop to handle
|
|
||||||
the wildcard case
|
|
||||||
*/
|
|
||||||
break;
|
|
||||||
} else if (*filter_cur != *benchmark_cur) {
|
|
||||||
/* otherwise our filter didn't match, so reset it */
|
|
||||||
filter_cur = filter_wildcard;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* move benchmark along */
|
|
||||||
benchmark_cur++;
|
|
||||||
|
|
||||||
/* move filter along */
|
|
||||||
filter_cur++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (('\0' == *filter_cur) && ('\0' == *benchmark_cur)) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* if the benchmarks have been exhausted, we don't have a match! */
|
|
||||||
if ('\0' == *benchmark_cur) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (*benchmark_cur != *filter_cur) {
|
|
||||||
/* benchmark doesn't match filter */
|
|
||||||
return 1;
|
|
||||||
} else {
|
|
||||||
/* move our filter and benchmark forward */
|
|
||||||
benchmark_cur++;
|
|
||||||
filter_cur++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (('\0' != *filter_cur) ||
|
|
||||||
(('\0' != *benchmark_cur) &&
|
|
||||||
((filter == filter_cur) || ('*' != filter_cur[-1])))) {
|
|
||||||
/* we have a mismatch! */
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static UBENCH_INLINE int ubench_strncmp(const char *a, const char *b,
|
|
||||||
size_t n) {
|
|
||||||
/* strncmp breaks on Wall / Werror on gcc/clang, so we avoid using it */
|
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
|
||||||
if (a[i] < b[i]) {
|
|
||||||
return -1;
|
|
||||||
} else if (a[i] > b[i]) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static UBENCH_INLINE FILE *ubench_fopen(const char *filename,
|
|
||||||
const char *mode) {
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
FILE *file;
|
|
||||||
if (0 == fopen_s(&file, filename, mode)) {
|
|
||||||
return file;
|
|
||||||
} else {
|
|
||||||
return UBENCH_NULL;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
return fopen(filename, mode);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static UBENCH_INLINE int ubench_main(int argc, const char *const argv[]);
|
|
||||||
int ubench_main(int argc, const char *const argv[]) {
|
|
||||||
ubench_uint64_t failed = 0;
|
|
||||||
size_t index = 0;
|
|
||||||
size_t *failed_benchmarks = UBENCH_NULL;
|
|
||||||
size_t failed_benchmarks_length = 0;
|
|
||||||
const char *filter = UBENCH_NULL;
|
|
||||||
ubench_uint64_t ran_benchmarks = 0;
|
|
||||||
|
|
||||||
enum colours { RESET, GREEN, RED };
|
|
||||||
|
|
||||||
const int use_colours = UBENCH_COLOUR_OUTPUT();
|
|
||||||
const char *colours[] = {"\033[0m", "\033[32m", "\033[31m"};
|
|
||||||
if (!use_colours) {
|
|
||||||
for (index = 0; index < sizeof colours / sizeof colours[0]; index++) {
|
|
||||||
colours[index] = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* loop through all arguments looking for our options */
|
|
||||||
for (index = 1; index < UBENCH_CAST(size_t, argc); index++) {
|
|
||||||
/* Informational switches */
|
|
||||||
const char help_str[] = "--help";
|
|
||||||
const char list_str[] = "--list-benchmarks";
|
|
||||||
/* Benchmark config switches */
|
|
||||||
const char filter_str[] = "--filter=";
|
|
||||||
const char output_str[] = "--output=";
|
|
||||||
const char confidence_str[] = "--confidence=";
|
|
||||||
|
|
||||||
if (0 == ubench_strncmp(argv[index], help_str, strlen(help_str))) {
|
|
||||||
printf("ubench.h - the single file benchmarking solution for C/C++!\n"
|
|
||||||
"Command line Options:\n");
|
|
||||||
printf(" --help Show this message and exit.\n"
|
|
||||||
" --filter=<filter> Filter the benchmarks to run (EG. "
|
|
||||||
"MyBench*.a would run MyBenchmark.a but not MyBenchmark.b).\n"
|
|
||||||
" --list-benchmarks List benchmarks, one per line. "
|
|
||||||
"Output names can be passed to --filter.\n"
|
|
||||||
" --output=<output> Output a CSV file of the results.\n"
|
|
||||||
" --confidence=<confidence> Change the confidence cut-off for a "
|
|
||||||
"failed test. Defaults to 2.5%%\n");
|
|
||||||
goto cleanup;
|
|
||||||
} else if (0 ==
|
|
||||||
ubench_strncmp(argv[index], filter_str, strlen(filter_str))) {
|
|
||||||
/* user wants to filter what benchmarks run! */
|
|
||||||
filter = argv[index] + strlen(filter_str);
|
|
||||||
} else if (0 ==
|
|
||||||
ubench_strncmp(argv[index], output_str, strlen(output_str))) {
|
|
||||||
ubench_state.output =
|
|
||||||
ubench_fopen(argv[index] + strlen(output_str), "w+");
|
|
||||||
} else if (0 == ubench_strncmp(argv[index], list_str, strlen(list_str))) {
|
|
||||||
for (index = 0; index < ubench_state.benchmarks_length; index++) {
|
|
||||||
UBENCH_PRINTF("%s\n", ubench_state.benchmarks[index].name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* when printing the benchmark list, don't actually run the benchmarks */
|
|
||||||
goto cleanup;
|
|
||||||
} else if (0 == ubench_strncmp(argv[index], confidence_str,
|
|
||||||
strlen(confidence_str))) {
|
|
||||||
/* user wants to specify a different confidence */
|
|
||||||
ubench_state.confidence = atof(argv[index] + strlen(confidence_str));
|
|
||||||
|
|
||||||
/* must be between 0 and 100 */
|
|
||||||
if ((ubench_state.confidence < 0) || (ubench_state.confidence > 100)) {
|
|
||||||
fprintf(stderr,
|
|
||||||
"Confidence must be in the range [0..100] (you specified %f)\n",
|
|
||||||
ubench_state.confidence);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (index = 0; index < ubench_state.benchmarks_length; index++) {
|
|
||||||
if (ubench_should_filter(filter, ubench_state.benchmarks[index].name)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ran_benchmarks++;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("%s[==========]%s Running %" UBENCH_PRIu64 " benchmarks.\n",
|
|
||||||
colours[GREEN], colours[RESET],
|
|
||||||
UBENCH_CAST(ubench_uint64_t, ran_benchmarks));
|
|
||||||
|
|
||||||
if (ubench_state.output) {
|
|
||||||
fprintf(ubench_state.output,
|
|
||||||
"name, mean (ns), stddev (%%), confidence (%%)\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (index = 0; index < ubench_state.benchmarks_length; index++) {
|
|
||||||
int result = 1;
|
|
||||||
size_t mndex = 0;
|
|
||||||
ubench_int64_t best_avg_ns = 0;
|
|
||||||
double best_deviation = 0;
|
|
||||||
double best_confidence = 101.0;
|
|
||||||
struct ubench_run_state_s ubs;
|
|
||||||
|
|
||||||
#define UBENCH_MIN_ITERATIONS 10
|
|
||||||
#define UBENCH_MAX_ITERATIONS 500
|
|
||||||
ubench_int64_t iterations = 10;
|
|
||||||
const ubench_int64_t max_iterations = UBENCH_MAX_ITERATIONS;
|
|
||||||
const ubench_int64_t min_iterations = UBENCH_MIN_ITERATIONS;
|
|
||||||
/* Add one extra timestamp slot, as we save times between runs and time after exiting the last one */
|
|
||||||
ubench_int64_t ns[UBENCH_MAX_ITERATIONS+1];
|
|
||||||
#undef UBENCH_MAX_ITERATIONS
|
|
||||||
#undef UBENCH_MIN_ITERATIONS
|
|
||||||
|
|
||||||
if (ubench_should_filter(filter, ubench_state.benchmarks[index].name)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("%s[ RUN ]%s %s\n", colours[GREEN], colours[RESET],
|
|
||||||
ubench_state.benchmarks[index].name);
|
|
||||||
|
|
||||||
ubs.ns = ns;
|
|
||||||
ubs.size = 1;
|
|
||||||
ubs.sample = 0;
|
|
||||||
|
|
||||||
/* Time once to work out the base number of iterations to use. */
|
|
||||||
ubench_state.benchmarks[index].func(&ubs);
|
|
||||||
|
|
||||||
iterations = (100 * 1000 * 1000) / ((ns[1] <= ns[0]) ? 1 : ns[1] - ns[0]);
|
|
||||||
iterations = iterations < min_iterations ? min_iterations : iterations;
|
|
||||||
iterations = iterations > max_iterations ? max_iterations : iterations;
|
|
||||||
|
|
||||||
for (mndex = 0; (mndex < 100) && (result != 0); mndex++) {
|
|
||||||
ubench_int64_t kndex = 0;
|
|
||||||
ubench_int64_t avg_ns = 0;
|
|
||||||
double deviation = 0;
|
|
||||||
double confidence = 0;
|
|
||||||
|
|
||||||
iterations = iterations * (UBENCH_CAST(ubench_int64_t, mndex) + 1);
|
|
||||||
iterations = iterations > max_iterations ? max_iterations : iterations;
|
|
||||||
|
|
||||||
ubs.sample = 0;
|
|
||||||
ubs.size = iterations;
|
|
||||||
ubench_state.benchmarks[index].func(&ubs);
|
|
||||||
|
|
||||||
/* Calculate benchmark run-times */
|
|
||||||
for (kndex = 0; kndex < iterations; kndex++) {
|
|
||||||
ns[kndex] = ns[kndex + 1] - ns[kndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (kndex = 0; kndex < iterations; kndex++) {
|
|
||||||
avg_ns += ns[kndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
avg_ns /= iterations;
|
|
||||||
|
|
||||||
for (kndex = 0; kndex < iterations; kndex++) {
|
|
||||||
const double v = UBENCH_CAST(double, ns[kndex] - avg_ns);
|
|
||||||
deviation += v * v;
|
|
||||||
}
|
|
||||||
|
|
||||||
deviation = sqrt(deviation / UBENCH_CAST(double, iterations));
|
|
||||||
|
|
||||||
/* Confidence is the 99% confidence index - whose magic value is 2.576. */
|
|
||||||
confidence = 2.576 * deviation / sqrt(UBENCH_CAST(double, iterations));
|
|
||||||
confidence = (confidence / UBENCH_CAST(double, avg_ns)) * 100.0;
|
|
||||||
|
|
||||||
deviation = (deviation / UBENCH_CAST(double, avg_ns)) * 100.0;
|
|
||||||
|
|
||||||
/* If we've found a more confident solution, use that. */
|
|
||||||
result = confidence > ubench_state.confidence;
|
|
||||||
|
|
||||||
/* If the deviation beats our previous best, record it. */
|
|
||||||
if (confidence < best_confidence) {
|
|
||||||
best_avg_ns = avg_ns;
|
|
||||||
best_deviation = deviation;
|
|
||||||
best_confidence = confidence;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result) {
|
|
||||||
printf("confidence interval %f%% exceeds maximum permitted %f%%\n",
|
|
||||||
best_confidence, ubench_state.confidence);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ubench_state.output) {
|
|
||||||
fprintf(ubench_state.output, "%s, %" UBENCH_PRId64 ", %f, %f,\n",
|
|
||||||
ubench_state.benchmarks[index].name, best_avg_ns, best_deviation,
|
|
||||||
best_confidence);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
const char *const colour = (0 != result) ? colours[RED] : colours[GREEN];
|
|
||||||
const char *const status =
|
|
||||||
(0 != result) ? "[ FAILED ]" : "[ OK ]";
|
|
||||||
const char *unit = "us";
|
|
||||||
|
|
||||||
if (0 != result) {
|
|
||||||
const size_t failed_benchmark_index = failed_benchmarks_length++;
|
|
||||||
failed_benchmarks = UBENCH_PTR_CAST(
|
|
||||||
size_t *, realloc(UBENCH_PTR_CAST(void *, failed_benchmarks),
|
|
||||||
sizeof(size_t) * failed_benchmarks_length));
|
|
||||||
failed_benchmarks[failed_benchmark_index] = index;
|
|
||||||
failed++;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("%s%s%s %s (mean ", colour, status, colours[RESET],
|
|
||||||
ubench_state.benchmarks[index].name);
|
|
||||||
|
|
||||||
for (mndex = 0; mndex < 2; mndex++) {
|
|
||||||
if (best_avg_ns <= 1000000) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If the average is greater than a million, we reduce it and change the
|
|
||||||
unit we report. */
|
|
||||||
best_avg_ns /= 1000;
|
|
||||||
|
|
||||||
switch (mndex) {
|
|
||||||
case 0:
|
|
||||||
unit = "ms";
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
unit = "s";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("%" UBENCH_PRId64 ".%03" UBENCH_PRId64
|
|
||||||
"%s, confidence interval +- %f%%)\n",
|
|
||||||
best_avg_ns / 1000, best_avg_ns % 1000, unit, best_confidence);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("%s[==========]%s %" UBENCH_PRIu64 " benchmarks ran.\n",
|
|
||||||
colours[GREEN], colours[RESET], ran_benchmarks);
|
|
||||||
printf("%s[ PASSED ]%s %" UBENCH_PRIu64 " benchmarks.\n", colours[GREEN],
|
|
||||||
colours[RESET], ran_benchmarks - failed);
|
|
||||||
|
|
||||||
if (0 != failed) {
|
|
||||||
printf("%s[ FAILED ]%s %" UBENCH_PRIu64 " benchmarks, listed below:\n",
|
|
||||||
colours[RED], colours[RESET], failed);
|
|
||||||
for (index = 0; index < failed_benchmarks_length; index++) {
|
|
||||||
printf("%s[ FAILED ]%s %s\n", colours[RED], colours[RESET],
|
|
||||||
ubench_state.benchmarks[failed_benchmarks[index]].name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
for (index = 0; index < ubench_state.benchmarks_length; index++) {
|
|
||||||
free(UBENCH_PTR_CAST(void *, ubench_state.benchmarks[index].name));
|
|
||||||
}
|
|
||||||
|
|
||||||
free(UBENCH_PTR_CAST(void *, failed_benchmarks));
|
|
||||||
free(UBENCH_PTR_CAST(void *, ubench_state.benchmarks));
|
|
||||||
|
|
||||||
if (ubench_state.output) {
|
|
||||||
fclose(ubench_state.output);
|
|
||||||
}
|
|
||||||
|
|
||||||
return UBENCH_CAST(int, failed);
|
|
||||||
}
|
|
||||||
|
|
||||||
UBENCH_C_FUNC UBENCH_NOINLINE void ubench_do_nothing(void *const);
|
|
||||||
|
|
||||||
#define UBENCH_DO_NOTHING(x) ubench_do_nothing(x)
|
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
|
||||||
UBENCH_C_FUNC void _ReadWriteBarrier(void);
|
|
||||||
|
|
||||||
#define UBENCH_DECLARE_DO_NOTHING() \
|
|
||||||
void ubench_do_nothing(void *ptr) { \
|
|
||||||
(void)ptr; \
|
|
||||||
_ReadWriteBarrier(); \
|
|
||||||
}
|
|
||||||
#elif defined(__clang__)
|
|
||||||
#define UBENCH_DECLARE_DO_NOTHING() \
|
|
||||||
void ubench_do_nothing(void *ptr) { \
|
|
||||||
_Pragma("clang diagnostic push") \
|
|
||||||
_Pragma("clang diagnostic ignored \"-Wlanguage-extension-token\""); \
|
|
||||||
asm volatile("" : : "r,m"(ptr) : "memory"); \
|
|
||||||
_Pragma("clang diagnostic pop"); \
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
#define UBENCH_DECLARE_DO_NOTHING() \
|
|
||||||
void ubench_do_nothing(void *ptr) { \
|
|
||||||
asm volatile("" : : "r,m"(ptr) : "memory"); \
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
We need, in exactly one source file, define the global struct that will hold
|
|
||||||
the data we need to run ubench. This macro allows the user to declare the
|
|
||||||
data without having to use the UBENCH_MAIN macro, thus allowing them to write
|
|
||||||
their own main() function.
|
|
||||||
|
|
||||||
We also use this to define the 'do nothing' method that lets us keep data
|
|
||||||
that the compiler would normally deem is dead for the purposes of timing.
|
|
||||||
*/
|
|
||||||
#define UBENCH_STATE() \
|
|
||||||
UBENCH_DECLARE_DO_NOTHING() \
|
|
||||||
struct ubench_state_s ubench_state = {0, 0, 0, 2.5}
|
|
||||||
|
|
||||||
/*
|
|
||||||
define a main() function to call into ubench.h and start executing
|
|
||||||
benchmarks! A user can optionally not use this macro, and instead define
|
|
||||||
their own main() function and manually call ubench_main. The user must, in
|
|
||||||
exactly one source file, use the UBENCH_STATE macro to declare a global
|
|
||||||
struct variable that ubench requires.
|
|
||||||
*/
|
|
||||||
#define UBENCH_MAIN() \
|
|
||||||
UBENCH_STATE(); \
|
|
||||||
int main(int argc, const char *const argv[]) { \
|
|
||||||
return ubench_main(argc, argv); \
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* SHEREDOM_UBENCH_H_INCLUDED */
|
|
|
@ -1,12 +0,0 @@
|
||||||
rmdir /s /q build
|
|
||||||
mkdir build
|
|
||||||
|
|
||||||
cd build
|
|
||||||
cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE="cmake/clang-cl-msvc-windows.cmake" ^
|
|
||||||
-DHOST_ARCH=x64 ^
|
|
||||||
-DLLVM_NATIVE_TOOLCHAIN="C:/Program Files/LLVM/" ^
|
|
||||||
-DMSVC_BASE:FILEPATH="C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Tools\\MSVC\\14.26.28801\\" ^
|
|
||||||
-DWINSDK_BASE="C:\\Program Files (x86)\\Windows Kits\\10\\" ^
|
|
||||||
-DWINSDK_VER="10.0.18362.0" ^
|
|
||||||
..
|
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
rem Build local Python lib
|
|
||||||
rem Assume running this batch file at the toplevel directory of TinyUSDZ.
|
|
||||||
|
|
||||||
git clone https://github.com/lighttransport/python-cmake-buildsystem ci/python-cmake-buildsystem
|
|
||||||
cd ci/python-cmake-buildsystem
|
|
||||||
git pull origin master
|
|
||||||
cd %~dp0
|
|
||||||
|
|
||||||
rmdir /s /q %~dp0/ci/buil_python
|
|
||||||
|
|
||||||
rem change to "Visual Studio 17 2022" if you use VS2022
|
|
||||||
cmake.exe -G "Visual Studio 16 2019" -A x64 ^
|
|
||||||
-DCMAKE_INSTALL_PREFIX:PATH=%~dp0/ci/dist/python ^
|
|
||||||
-DPYTHON_VERSION="3.10.6" ^
|
|
||||||
-DUSE_SYSTEM_TCL=OFF ^
|
|
||||||
-DUSE_SYSTEM_ZLIB=OFF ^
|
|
||||||
-DUSE_SYSTEM_DB=OFF ^
|
|
||||||
-DUSE_SYSTEM_GDBM=OFF ^
|
|
||||||
-DUSE_SYSTEM_LZMA=OFF ^
|
|
||||||
-DUSE_SYSTEM_READLINE=OFF ^
|
|
||||||
-DUSE_SYSTEM_SQLITE3=OFF ^
|
|
||||||
-DENABLE_SSL=OFF ^
|
|
||||||
-DENABLE_HASHLIB=OFF ^
|
|
||||||
-DENABLE_MD5=OFF ^
|
|
||||||
-DENABLE_SHA=OFF ^
|
|
||||||
-DENABLE_SHA256=OFF ^
|
|
||||||
-DENABLE_SHA512=OFF ^
|
|
||||||
-B %~dp0/ci/build_python ^
|
|
||||||
-S %~dp0/ci/python-cmake-buildsystem && ^
|
|
||||||
cmake.exe --build %~dp0/ci/build_python --config Release --clean-first -- /m && ^
|
|
||||||
cmake.exe --build %~dp0/ci/build_python --config Release --target INSTALL
|
|
|
@ -1,12 +0,0 @@
|
||||||
rem Assume Python is built with `ci-build-python-lib.bat`
|
|
||||||
rem
|
|
||||||
|
|
||||||
rmdir /s /q build
|
|
||||||
mkdir build
|
|
||||||
|
|
||||||
cmake -G "Visual Studio 17 2022" -A x64 ^
|
|
||||||
-DTINYUSDZ_WITH_OPENSUBDIV=On ^
|
|
||||||
-DTINYUSDZ_WITH_PYTHON=1 ^
|
|
||||||
-DTINYUSDZ_PREFER_LOCAL_PYTHON_INSTALLATION=1 ^
|
|
||||||
-DPython3_EXECUTABLE=%~dp0/ci/dist/python/Scripts/python.exe ^
|
|
||||||
-Bbuild -S.
|
|
|
@ -1,9 +0,0 @@
|
||||||
# macOS paths usually start with /Users/*. Unfortunately, clang-cl interprets
|
|
||||||
# paths starting with /U as macro undefines, so we need to put a -- before the
|
|
||||||
# input file path to force it to be treated as a path. CMake's compilation rules
|
|
||||||
# should be tweaked accordingly, but until that's done, and to support older
|
|
||||||
# CMake versions, overriding compilation rules works well enough. This file will
|
|
||||||
# be included by cmake after the default compilation rules have already been set
|
|
||||||
# up, so we can just modify them instead of duplicating them entirely.
|
|
||||||
string(REPLACE "-c <SOURCE>" "-c -- <SOURCE>" CMAKE_C_COMPILE_OBJECT "${CMAKE_C_COMPILE_OBJECT}")
|
|
||||||
string(REPLACE "-c <SOURCE>" "-c -- <SOURCE>" CMAKE_CXX_COMPILE_OBJECT "${CMAKE_CXX_COMPILE_OBJECT}")
|
|
|
@ -1,14 +0,0 @@
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
|
||||||
set(CMAKE_C_COMPILER_TARGET aarch64-linux-gnu)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu/)
|
|
||||||
|
|
||||||
# Sync with GitHub Actions config
|
|
||||||
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
|
|
||||||
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
|
@ -1,327 +0,0 @@
|
||||||
# From llvm/cmake/platforms/WinMsvc.cmake
|
|
||||||
# Modified to use clang-cl on native Windows.
|
|
||||||
|
|
||||||
# Cross toolchain configuration for using clang-cl on non-Windows hosts to
|
|
||||||
# target MSVC.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# cmake -G Ninja
|
|
||||||
# -DCMAKE_TOOLCHAIN_FILE=/path/to/this/file
|
|
||||||
# -DHOST_ARCH=[aarch64|arm64|armv7|arm|i686|x86|x86_64|x64]
|
|
||||||
# -DLLVM_NATIVE_TOOLCHAIN=/path/to/llvm/installation
|
|
||||||
# -DMSVC_BASE=/path/to/MSVC/system/libraries/and/includes
|
|
||||||
# -DWINSDK_BASE=/path/to/windows-sdk
|
|
||||||
# -DWINSDK_VER=windows sdk version folder name
|
|
||||||
#
|
|
||||||
# HOST_ARCH:
|
|
||||||
# The architecture to build for.
|
|
||||||
#
|
|
||||||
# LLVM_NATIVE_TOOLCHAIN:
|
|
||||||
# *Absolute path* to a folder containing the toolchain which will be used to
|
|
||||||
# build. At a minimum, this folder should have a bin directory with a
|
|
||||||
# copy of clang-cl, clang, clang++, and lld-link, as well as a lib directory
|
|
||||||
# containing clang's system resource directory.
|
|
||||||
#
|
|
||||||
# MSVC_BASE:
|
|
||||||
# *Absolute path* to the folder containing MSVC headers and system libraries.
|
|
||||||
# The layout of the folder matches that which is intalled by MSVC 2017 on
|
|
||||||
# Windows, and should look like this:
|
|
||||||
#
|
|
||||||
# ${MSVC_BASE}
|
|
||||||
# include
|
|
||||||
# vector
|
|
||||||
# stdint.h
|
|
||||||
# etc...
|
|
||||||
# lib
|
|
||||||
# x64
|
|
||||||
# libcmt.lib
|
|
||||||
# msvcrt.lib
|
|
||||||
# etc...
|
|
||||||
# x86
|
|
||||||
# libcmt.lib
|
|
||||||
# msvcrt.lib
|
|
||||||
# etc...
|
|
||||||
#
|
|
||||||
# For versions of MSVC < 2017, or where you have a hermetic toolchain in a
|
|
||||||
# custom format, you must use symlinks or restructure it to look like the above.
|
|
||||||
#
|
|
||||||
# WINSDK_BASE:
|
|
||||||
# Together with WINSDK_VER, determines the location of Windows SDK headers
|
|
||||||
# and libraries.
|
|
||||||
#
|
|
||||||
# WINSDK_VER:
|
|
||||||
# Together with WINSDK_BASE, determines the locations of Windows SDK headers
|
|
||||||
# and libraries.
|
|
||||||
#
|
|
||||||
# WINSDK_BASE and WINSDK_VER work together to define a folder layout that matches
|
|
||||||
# that of the Windows SDK installation on a standard Windows machine. It should
|
|
||||||
# match the layout described below.
|
|
||||||
#
|
|
||||||
# Note that if you install Windows SDK to a windows machine and simply copy the
|
|
||||||
# files, it will already be in the correct layout.
|
|
||||||
#
|
|
||||||
# ${WINSDK_BASE}
|
|
||||||
# Include
|
|
||||||
# ${WINSDK_VER}
|
|
||||||
# shared
|
|
||||||
# ucrt
|
|
||||||
# um
|
|
||||||
# windows.h
|
|
||||||
# etc...
|
|
||||||
# Lib
|
|
||||||
# ${WINSDK_VER}
|
|
||||||
# ucrt
|
|
||||||
# x64
|
|
||||||
# x86
|
|
||||||
# ucrt.lib
|
|
||||||
# etc...
|
|
||||||
# um
|
|
||||||
# x64
|
|
||||||
# x86
|
|
||||||
# kernel32.lib
|
|
||||||
# etc
|
|
||||||
#
|
|
||||||
# IMPORTANT: In order for this to work, you will need a valid copy of the Windows
|
|
||||||
# SDK and C++ STL headers and libraries on your host. Additionally, since the
|
|
||||||
# Windows libraries and headers are not case-correct, this toolchain file sets
|
|
||||||
# up a VFS overlay for the SDK headers and case-correcting symlinks for the
|
|
||||||
# libraries when running on a case-sensitive filesystem.
|
|
||||||
|
|
||||||
|
|
||||||
# When configuring CMake with a toolchain file against a top-level CMakeLists.txt,
|
|
||||||
# it will actually run CMake many times, once for each small test program used to
|
|
||||||
# determine what features a compiler supports. Unfortunately, none of these
|
|
||||||
# invocations share a CMakeCache.txt with the top-level invocation, meaning they
|
|
||||||
# won't see the value of any arguments the user passed via -D. Since these are
|
|
||||||
# necessary to properly configure MSVC in both the top-level configuration as well as
|
|
||||||
# all feature-test invocations, we set environment variables with the values so that
|
|
||||||
# these environments get inherited by child invocations. We can switch to
|
|
||||||
# CMAKE_TRY_COMPILE_PLATFORM_VARIABLES once our minimum supported CMake version
|
|
||||||
# is 3.6 or greater.
|
|
||||||
function(init_user_prop prop)
|
|
||||||
if(${prop})
|
|
||||||
set(ENV{_${prop}} "${${prop}}")
|
|
||||||
else()
|
|
||||||
set(${prop} "$ENV{_${prop}}" PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(generate_winsdk_vfs_overlay winsdk_include_dir output_path)
|
|
||||||
set(include_dirs)
|
|
||||||
file(GLOB_RECURSE entries LIST_DIRECTORIES true "${winsdk_include_dir}/*")
|
|
||||||
foreach(entry ${entries})
|
|
||||||
if(IS_DIRECTORY "${entry}")
|
|
||||||
list(APPEND include_dirs "${entry}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
file(WRITE "${output_path}" "version: 0\n")
|
|
||||||
file(APPEND "${output_path}" "case-sensitive: false\n")
|
|
||||||
file(APPEND "${output_path}" "roots:\n")
|
|
||||||
|
|
||||||
foreach(dir ${include_dirs})
|
|
||||||
file(GLOB headers RELATIVE "${dir}" "${dir}/*.h")
|
|
||||||
if(NOT headers)
|
|
||||||
continue()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
file(APPEND "${output_path}" " - name: \"${dir}\"\n")
|
|
||||||
file(APPEND "${output_path}" " type: directory\n")
|
|
||||||
file(APPEND "${output_path}" " contents:\n")
|
|
||||||
|
|
||||||
foreach(header ${headers})
|
|
||||||
file(APPEND "${output_path}" " - name: \"${header}\"\n")
|
|
||||||
file(APPEND "${output_path}" " type: file\n")
|
|
||||||
file(APPEND "${output_path}" " external-contents: \"${dir}/${header}\"\n")
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(generate_winsdk_lib_symlinks winsdk_um_lib_dir output_dir)
|
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E make_directory "${output_dir}")
|
|
||||||
file(GLOB libraries RELATIVE "${winsdk_um_lib_dir}" "${winsdk_um_lib_dir}/*")
|
|
||||||
foreach(library ${libraries})
|
|
||||||
string(TOLOWER "${library}" all_lowercase_symlink_name)
|
|
||||||
if(NOT library STREQUAL all_lowercase_symlink_name)
|
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}"
|
|
||||||
-E create_symlink
|
|
||||||
"${winsdk_um_lib_dir}/${library}"
|
|
||||||
"${output_dir}/${all_lowercase_symlink_name}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
get_filename_component(name_we "${library}" NAME_WE)
|
|
||||||
get_filename_component(ext "${library}" EXT)
|
|
||||||
string(TOLOWER "${ext}" lowercase_ext)
|
|
||||||
set(lowercase_ext_symlink_name "${name_we}${lowercase_ext}")
|
|
||||||
if(NOT library STREQUAL lowercase_ext_symlink_name AND
|
|
||||||
NOT all_lowercase_symlink_name STREQUAL lowercase_ext_symlink_name)
|
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}"
|
|
||||||
-E create_symlink
|
|
||||||
"${winsdk_um_lib_dir}/${library}"
|
|
||||||
"${output_dir}/${lowercase_ext_symlink_name}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
set(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
set(CMAKE_SYSTEM_VERSION 10.0)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR AMD64)
|
|
||||||
|
|
||||||
init_user_prop(HOST_ARCH)
|
|
||||||
init_user_prop(LLVM_NATIVE_TOOLCHAIN)
|
|
||||||
init_user_prop(MSVC_BASE)
|
|
||||||
init_user_prop(WINSDK_BASE)
|
|
||||||
init_user_prop(WINSDK_VER)
|
|
||||||
|
|
||||||
if(NOT HOST_ARCH)
|
|
||||||
set(HOST_ARCH x86_64)
|
|
||||||
endif()
|
|
||||||
if(HOST_ARCH STREQUAL "aarch64" OR HOST_ARCH STREQUAL "arm64")
|
|
||||||
set(TRIPLE_ARCH "aarch64")
|
|
||||||
set(WINSDK_ARCH "arm64")
|
|
||||||
elseif(HOST_ARCH STREQUAL "armv7" OR HOST_ARCH STREQUAL "arm")
|
|
||||||
set(TRIPLE_ARCH "armv7")
|
|
||||||
set(WINSDK_ARCH "arm")
|
|
||||||
elseif(HOST_ARCH STREQUAL "i686" OR HOST_ARCH STREQUAL "x86")
|
|
||||||
set(TRIPLE_ARCH "i686")
|
|
||||||
set(WINSDK_ARCH "x86")
|
|
||||||
elseif(HOST_ARCH STREQUAL "x86_64" OR HOST_ARCH STREQUAL "x64")
|
|
||||||
set(TRIPLE_ARCH "x86_64")
|
|
||||||
set(WINSDK_ARCH "x64")
|
|
||||||
else()
|
|
||||||
message(SEND_ERROR "Unknown host architecture ${HOST_ARCH}. Must be aarch64 (or arm64), armv7 (or arm), i686 (or x86), or x86_64 (or x64).")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(MSVC_INCLUDE "${MSVC_BASE}/include")
|
|
||||||
set(ATLMFC_INCLUDE "${MSVC_BASE}/atlmfc/include")
|
|
||||||
set(MSVC_LIB "${MSVC_BASE}/lib")
|
|
||||||
set(ATLMFC_LIB "${MSVC_BASE}/atlmfc/lib")
|
|
||||||
set(WINSDK_INCLUDE "${WINSDK_BASE}/Include/${WINSDK_VER}")
|
|
||||||
set(WINSDK_LIB "${WINSDK_BASE}/Lib/${WINSDK_VER}")
|
|
||||||
|
|
||||||
# Do some sanity checking to make sure we can find a native toolchain and
|
|
||||||
# that the Windows SDK / MSVC STL directories look kosher.
|
|
||||||
if(NOT EXISTS "${LLVM_NATIVE_TOOLCHAIN}/bin/clang-cl.exe" OR
|
|
||||||
NOT EXISTS "${LLVM_NATIVE_TOOLCHAIN}/bin/lld-link.exe")
|
|
||||||
message(SEND_ERROR
|
|
||||||
"LLVM_NATIVE_TOOLCHAIN folder '${LLVM_NATIVE_TOOLCHAIN}' does not "
|
|
||||||
"point to a valid directory containing bin/clang-cl.exe and bin/lld-link.exe "
|
|
||||||
"binaries")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT EXISTS "${MSVC_BASE}" OR
|
|
||||||
NOT EXISTS "${MSVC_INCLUDE}" OR
|
|
||||||
NOT EXISTS "${MSVC_LIB}")
|
|
||||||
message(SEND_ERROR
|
|
||||||
"CMake variable MSVC_BASE must point to a folder containing MSVC "
|
|
||||||
"system headers and libraries")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT EXISTS "${WINSDK_BASE}" OR
|
|
||||||
NOT EXISTS "${WINSDK_INCLUDE}" OR
|
|
||||||
NOT EXISTS "${WINSDK_LIB}")
|
|
||||||
message(SEND_ERROR
|
|
||||||
"CMake variable WINSDK_BASE and WINSDK_VER must resolve to a valid "
|
|
||||||
"Windows SDK installation")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT EXISTS "${WINSDK_INCLUDE}/um/Windows.h")
|
|
||||||
message(SEND_ERROR "Cannot find Windows.h")
|
|
||||||
endif()
|
|
||||||
if(NOT EXISTS "${WINSDK_INCLUDE}/um/WINDOWS.H")
|
|
||||||
set(case_sensitive_filesystem TRUE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CMAKE_C_COMPILER "${LLVM_NATIVE_TOOLCHAIN}/bin/clang-cl.exe" CACHE FILEPATH "")
|
|
||||||
set(CMAKE_CXX_COMPILER "${LLVM_NATIVE_TOOLCHAIN}/bin/clang-cl.exe" CACHE FILEPATH "")
|
|
||||||
set(CMAKE_LINKER "${LLVM_NATIVE_TOOLCHAIN}/bin/lld-link.exe" CACHE FILEPATH "")
|
|
||||||
|
|
||||||
# Even though we're cross-compiling, we need some native tools (e.g. llvm-tblgen), and those
|
|
||||||
# native tools have to be built before we can start doing the cross-build. LLVM supports
|
|
||||||
# a CROSS_TOOLCHAIN_FLAGS_NATIVE argument which consists of a list of flags to pass to CMake
|
|
||||||
# when configuring the NATIVE portion of the cross-build. By default we construct this so
|
|
||||||
# that it points to the tools in the same location as the native clang-cl that we're using.
|
|
||||||
list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_ASM_COMPILER=${LLVM_NATIVE_TOOLCHAIN}/bin/clang")
|
|
||||||
list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_C_COMPILER=${LLVM_NATIVE_TOOLCHAIN}/bin/clang")
|
|
||||||
list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_CXX_COMPILER=${LLVM_NATIVE_TOOLCHAIN}/bin/clang++")
|
|
||||||
|
|
||||||
set(CROSS_TOOLCHAIN_FLAGS_NATIVE "${_CTF_NATIVE_DEFAULT}" CACHE STRING "")
|
|
||||||
|
|
||||||
set(COMPILE_FLAGS
|
|
||||||
-D_CRT_SECURE_NO_WARNINGS
|
|
||||||
--target=${TRIPLE_ARCH}-windows-msvc
|
|
||||||
-fms-compatibility-version=19.11
|
|
||||||
-imsvc "\"${ATLMFC_INCLUDE}\""
|
|
||||||
-imsvc "\"${MSVC_INCLUDE}\""
|
|
||||||
-imsvc "\"${WINSDK_INCLUDE}/ucrt\""
|
|
||||||
-imsvc "\"${WINSDK_INCLUDE}/shared\""
|
|
||||||
-imsvc "\"${WINSDK_INCLUDE}/um\""
|
|
||||||
-imsvc "\"${WINSDK_INCLUDE}/winrt\"")
|
|
||||||
|
|
||||||
if(case_sensitive_filesystem)
|
|
||||||
# Ensure all sub-configures use the top-level VFS overlay instead of generating their own.
|
|
||||||
init_user_prop(winsdk_vfs_overlay_path)
|
|
||||||
if(NOT winsdk_vfs_overlay_path)
|
|
||||||
set(winsdk_vfs_overlay_path "${CMAKE_BINARY_DIR}/winsdk_vfs_overlay.yaml")
|
|
||||||
generate_winsdk_vfs_overlay("${WINSDK_BASE}/Include/${WINSDK_VER}" "${winsdk_vfs_overlay_path}")
|
|
||||||
init_user_prop(winsdk_vfs_overlay_path)
|
|
||||||
endif()
|
|
||||||
list(APPEND COMPILE_FLAGS
|
|
||||||
-Xclang -ivfsoverlay -Xclang "${winsdk_vfs_overlay_path}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
string(REPLACE ";" " " COMPILE_FLAGS "${COMPILE_FLAGS}")
|
|
||||||
|
|
||||||
# We need to preserve any flags that were passed in by the user. However, we
|
|
||||||
# can't append to CMAKE_C_FLAGS and friends directly, because toolchain files
|
|
||||||
# will be re-invoked on each reconfigure and therefore need to be idempotent.
|
|
||||||
# The assignments to the _INITIAL cache variables don't use FORCE, so they'll
|
|
||||||
# only be populated on the initial configure, and their values won't change
|
|
||||||
# afterward.
|
|
||||||
set(_CMAKE_C_FLAGS_INITIAL "${CMAKE_C_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_C_FLAGS "${_CMAKE_C_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(_CMAKE_CXX_FLAGS_INITIAL "${CMAKE_CXX_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_CXX_FLAGS "${_CMAKE_CXX_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(LINK_FLAGS
|
|
||||||
# Prevent CMake from attempting to invoke mt.exe. It only recognizes the slashed form and not the dashed form.
|
|
||||||
/manifest:no
|
|
||||||
|
|
||||||
-libpath:"${ATLMFC_LIB}/${WINSDK_ARCH}"
|
|
||||||
-libpath:"${MSVC_LIB}/${WINSDK_ARCH}"
|
|
||||||
-libpath:"${WINSDK_LIB}/ucrt/${WINSDK_ARCH}"
|
|
||||||
-libpath:"${WINSDK_LIB}/um/${WINSDK_ARCH}")
|
|
||||||
|
|
||||||
if(case_sensitive_filesystem)
|
|
||||||
# Ensure all sub-configures use the top-level symlinks dir instead of generating their own.
|
|
||||||
init_user_prop(winsdk_lib_symlinks_dir)
|
|
||||||
if(NOT winsdk_lib_symlinks_dir)
|
|
||||||
set(winsdk_lib_symlinks_dir "${CMAKE_BINARY_DIR}/winsdk_lib_symlinks")
|
|
||||||
generate_winsdk_lib_symlinks("${WINSDK_BASE}/Lib/${WINSDK_VER}/um/${WINSDK_ARCH}" "${winsdk_lib_symlinks_dir}")
|
|
||||||
init_user_prop(winsdk_lib_symlinks_dir)
|
|
||||||
endif()
|
|
||||||
list(APPEND LINK_FLAGS
|
|
||||||
-libpath:"${winsdk_lib_symlinks_dir}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
string(REPLACE ";" " " LINK_FLAGS "${LINK_FLAGS}")
|
|
||||||
|
|
||||||
# See explanation for compiler flags above for the _INITIAL variables.
|
|
||||||
set(_CMAKE_EXE_LINKER_FLAGS_INITIAL "${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${_CMAKE_EXE_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(_CMAKE_MODULE_LINKER_FLAGS_INITIAL "${CMAKE_MODULE_LINKER_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS "${_CMAKE_MODULE_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(_CMAKE_SHARED_LINKER_FLAGS_INITIAL "${CMAKE_SHARED_LINKER_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS "${_CMAKE_SHARED_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# CMake populates these with a bunch of unnecessary libraries, which requires
|
|
||||||
# extra case-correcting symlinks and what not. Instead, let projects explicitly
|
|
||||||
# control which libraries they require.
|
|
||||||
set(CMAKE_C_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_CXX_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# Allow clang-cl to work with macOS paths.
|
|
||||||
set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_CURRENT_LIST_DIR}/ClangClCMakeCompileRules.cmake")
|
|
|
@ -1,327 +0,0 @@
|
||||||
# From llvm/cmake/platforms/WinMsvc.cmake
|
|
||||||
# Modified to use clang-cl on native Windows.
|
|
||||||
|
|
||||||
# Cross toolchain configuration for using clang-cl on non-Windows hosts to
|
|
||||||
# target MSVC.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# cmake -G Ninja
|
|
||||||
# -DCMAKE_TOOLCHAIN_FILE=/path/to/this/file
|
|
||||||
# -DHOST_ARCH=[aarch64|arm64|armv7|arm|i686|x86|x86_64|x64]
|
|
||||||
# -DLLVM_NATIVE_TOOLCHAIN=/path/to/llvm/installation
|
|
||||||
# -DMSVC_BASE=/path/to/MSVC/system/libraries/and/includes
|
|
||||||
# -DWINSDK_BASE=/path/to/windows-sdk
|
|
||||||
# -DWINSDK_VER=windows sdk version folder name
|
|
||||||
#
|
|
||||||
# HOST_ARCH:
|
|
||||||
# The architecture to build for.
|
|
||||||
#
|
|
||||||
# LLVM_NATIVE_TOOLCHAIN:
|
|
||||||
# *Absolute path* to a folder containing the toolchain which will be used to
|
|
||||||
# build. At a minimum, this folder should have a bin directory with a
|
|
||||||
# copy of clang-cl, clang, clang++, and lld-link, as well as a lib directory
|
|
||||||
# containing clang's system resource directory.
|
|
||||||
#
|
|
||||||
# MSVC_BASE:
|
|
||||||
# *Absolute path* to the folder containing MSVC headers and system libraries.
|
|
||||||
# The layout of the folder matches that which is intalled by MSVC 2017 on
|
|
||||||
# Windows, and should look like this:
|
|
||||||
#
|
|
||||||
# ${MSVC_BASE}
|
|
||||||
# include
|
|
||||||
# vector
|
|
||||||
# stdint.h
|
|
||||||
# etc...
|
|
||||||
# lib
|
|
||||||
# x64
|
|
||||||
# libcmt.lib
|
|
||||||
# msvcrt.lib
|
|
||||||
# etc...
|
|
||||||
# x86
|
|
||||||
# libcmt.lib
|
|
||||||
# msvcrt.lib
|
|
||||||
# etc...
|
|
||||||
#
|
|
||||||
# For versions of MSVC < 2017, or where you have a hermetic toolchain in a
|
|
||||||
# custom format, you must use symlinks or restructure it to look like the above.
|
|
||||||
#
|
|
||||||
# WINSDK_BASE:
|
|
||||||
# Together with WINSDK_VER, determines the location of Windows SDK headers
|
|
||||||
# and libraries.
|
|
||||||
#
|
|
||||||
# WINSDK_VER:
|
|
||||||
# Together with WINSDK_BASE, determines the locations of Windows SDK headers
|
|
||||||
# and libraries.
|
|
||||||
#
|
|
||||||
# WINSDK_BASE and WINSDK_VER work together to define a folder layout that matches
|
|
||||||
# that of the Windows SDK installation on a standard Windows machine. It should
|
|
||||||
# match the layout described below.
|
|
||||||
#
|
|
||||||
# Note that if you install Windows SDK to a windows machine and simply copy the
|
|
||||||
# files, it will already be in the correct layout.
|
|
||||||
#
|
|
||||||
# ${WINSDK_BASE}
|
|
||||||
# Include
|
|
||||||
# ${WINSDK_VER}
|
|
||||||
# shared
|
|
||||||
# ucrt
|
|
||||||
# um
|
|
||||||
# windows.h
|
|
||||||
# etc...
|
|
||||||
# Lib
|
|
||||||
# ${WINSDK_VER}
|
|
||||||
# ucrt
|
|
||||||
# x64
|
|
||||||
# x86
|
|
||||||
# ucrt.lib
|
|
||||||
# etc...
|
|
||||||
# um
|
|
||||||
# x64
|
|
||||||
# x86
|
|
||||||
# kernel32.lib
|
|
||||||
# etc
|
|
||||||
#
|
|
||||||
# IMPORTANT: In order for this to work, you will need a valid copy of the Windows
|
|
||||||
# SDK and C++ STL headers and libraries on your host. Additionally, since the
|
|
||||||
# Windows libraries and headers are not case-correct, this toolchain file sets
|
|
||||||
# up a VFS overlay for the SDK headers and case-correcting symlinks for the
|
|
||||||
# libraries when running on a case-sensitive filesystem.
|
|
||||||
|
|
||||||
|
|
||||||
# When configuring CMake with a toolchain file against a top-level CMakeLists.txt,
|
|
||||||
# it will actually run CMake many times, once for each small test program used to
|
|
||||||
# determine what features a compiler supports. Unfortunately, none of these
|
|
||||||
# invocations share a CMakeCache.txt with the top-level invocation, meaning they
|
|
||||||
# won't see the value of any arguments the user passed via -D. Since these are
|
|
||||||
# necessary to properly configure MSVC in both the top-level configuration as well as
|
|
||||||
# all feature-test invocations, we set environment variables with the values so that
|
|
||||||
# these environments get inherited by child invocations. We can switch to
|
|
||||||
# CMAKE_TRY_COMPILE_PLATFORM_VARIABLES once our minimum supported CMake version
|
|
||||||
# is 3.6 or greater.
|
|
||||||
function(init_user_prop prop)
|
|
||||||
if(${prop})
|
|
||||||
set(ENV{_${prop}} "${${prop}}")
|
|
||||||
else()
|
|
||||||
set(${prop} "$ENV{_${prop}}" PARENT_SCOPE)
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(generate_winsdk_vfs_overlay winsdk_include_dir output_path)
|
|
||||||
set(include_dirs)
|
|
||||||
file(GLOB_RECURSE entries LIST_DIRECTORIES true "${winsdk_include_dir}/*")
|
|
||||||
foreach(entry ${entries})
|
|
||||||
if(IS_DIRECTORY "${entry}")
|
|
||||||
list(APPEND include_dirs "${entry}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
file(WRITE "${output_path}" "version: 0\n")
|
|
||||||
file(APPEND "${output_path}" "case-sensitive: false\n")
|
|
||||||
file(APPEND "${output_path}" "roots:\n")
|
|
||||||
|
|
||||||
foreach(dir ${include_dirs})
|
|
||||||
file(GLOB headers RELATIVE "${dir}" "${dir}/*.h")
|
|
||||||
if(NOT headers)
|
|
||||||
continue()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
file(APPEND "${output_path}" " - name: \"${dir}\"\n")
|
|
||||||
file(APPEND "${output_path}" " type: directory\n")
|
|
||||||
file(APPEND "${output_path}" " contents:\n")
|
|
||||||
|
|
||||||
foreach(header ${headers})
|
|
||||||
file(APPEND "${output_path}" " - name: \"${header}\"\n")
|
|
||||||
file(APPEND "${output_path}" " type: file\n")
|
|
||||||
file(APPEND "${output_path}" " external-contents: \"${dir}/${header}\"\n")
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(generate_winsdk_lib_symlinks winsdk_um_lib_dir output_dir)
|
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}" -E make_directory "${output_dir}")
|
|
||||||
file(GLOB libraries RELATIVE "${winsdk_um_lib_dir}" "${winsdk_um_lib_dir}/*")
|
|
||||||
foreach(library ${libraries})
|
|
||||||
string(TOLOWER "${library}" all_lowercase_symlink_name)
|
|
||||||
if(NOT library STREQUAL all_lowercase_symlink_name)
|
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}"
|
|
||||||
-E create_symlink
|
|
||||||
"${winsdk_um_lib_dir}/${library}"
|
|
||||||
"${output_dir}/${all_lowercase_symlink_name}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
get_filename_component(name_we "${library}" NAME_WE)
|
|
||||||
get_filename_component(ext "${library}" EXT)
|
|
||||||
string(TOLOWER "${ext}" lowercase_ext)
|
|
||||||
set(lowercase_ext_symlink_name "${name_we}${lowercase_ext}")
|
|
||||||
if(NOT library STREQUAL lowercase_ext_symlink_name AND
|
|
||||||
NOT all_lowercase_symlink_name STREQUAL lowercase_ext_symlink_name)
|
|
||||||
execute_process(COMMAND "${CMAKE_COMMAND}"
|
|
||||||
-E create_symlink
|
|
||||||
"${winsdk_um_lib_dir}/${library}"
|
|
||||||
"${output_dir}/${lowercase_ext_symlink_name}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
set(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
set(CMAKE_SYSTEM_VERSION 10.0)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR AMD64)
|
|
||||||
|
|
||||||
init_user_prop(HOST_ARCH)
|
|
||||||
init_user_prop(LLVM_NATIVE_TOOLCHAIN)
|
|
||||||
init_user_prop(MSVC_BASE)
|
|
||||||
init_user_prop(WINSDK_BASE)
|
|
||||||
init_user_prop(WINSDK_VER)
|
|
||||||
|
|
||||||
if(NOT HOST_ARCH)
|
|
||||||
set(HOST_ARCH x86_64)
|
|
||||||
endif()
|
|
||||||
if(HOST_ARCH STREQUAL "aarch64" OR HOST_ARCH STREQUAL "arm64")
|
|
||||||
set(TRIPLE_ARCH "aarch64")
|
|
||||||
set(WINSDK_ARCH "arm64")
|
|
||||||
elseif(HOST_ARCH STREQUAL "armv7" OR HOST_ARCH STREQUAL "arm")
|
|
||||||
set(TRIPLE_ARCH "armv7")
|
|
||||||
set(WINSDK_ARCH "arm")
|
|
||||||
elseif(HOST_ARCH STREQUAL "i686" OR HOST_ARCH STREQUAL "x86")
|
|
||||||
set(TRIPLE_ARCH "i686")
|
|
||||||
set(WINSDK_ARCH "x86")
|
|
||||||
elseif(HOST_ARCH STREQUAL "x86_64" OR HOST_ARCH STREQUAL "x64")
|
|
||||||
set(TRIPLE_ARCH "x86_64")
|
|
||||||
set(WINSDK_ARCH "x64")
|
|
||||||
else()
|
|
||||||
message(SEND_ERROR "Unknown host architecture ${HOST_ARCH}. Must be aarch64 (or arm64), armv7 (or arm), i686 (or x86), or x86_64 (or x64).")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(MSVC_INCLUDE "${MSVC_BASE}/include")
|
|
||||||
set(ATLMFC_INCLUDE "${MSVC_BASE}/atlmfc/include")
|
|
||||||
set(MSVC_LIB "${MSVC_BASE}/lib")
|
|
||||||
set(ATLMFC_LIB "${MSVC_BASE}/atlmfc/lib")
|
|
||||||
set(WINSDK_INCLUDE "${WINSDK_BASE}/Include/${WINSDK_VER}")
|
|
||||||
set(WINSDK_LIB "${WINSDK_BASE}/Lib/${WINSDK_VER}")
|
|
||||||
|
|
||||||
# Do some sanity checking to make sure we can find a native toolchain and
|
|
||||||
# that the Windows SDK / MSVC STL directories look kosher.
|
|
||||||
if(NOT EXISTS "${LLVM_NATIVE_TOOLCHAIN}/bin/clang-cl" OR
|
|
||||||
NOT EXISTS "${LLVM_NATIVE_TOOLCHAIN}/bin/lld-link")
|
|
||||||
message(SEND_ERROR
|
|
||||||
"LLVM_NATIVE_TOOLCHAIN folder '${LLVM_NATIVE_TOOLCHAIN}' does not "
|
|
||||||
"point to a valid directory containing bin/clang-cl and bin/lld-link "
|
|
||||||
"binaries")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT EXISTS "${MSVC_BASE}" OR
|
|
||||||
NOT EXISTS "${MSVC_INCLUDE}" OR
|
|
||||||
NOT EXISTS "${MSVC_LIB}")
|
|
||||||
message(SEND_ERROR
|
|
||||||
"CMake variable MSVC_BASE must point to a folder containing MSVC "
|
|
||||||
"system headers and libraries")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT EXISTS "${WINSDK_BASE}" OR
|
|
||||||
NOT EXISTS "${WINSDK_INCLUDE}" OR
|
|
||||||
NOT EXISTS "${WINSDK_LIB}")
|
|
||||||
message(SEND_ERROR
|
|
||||||
"CMake variable WINSDK_BASE and WINSDK_VER must resolve to a valid "
|
|
||||||
"Windows SDK installation")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT EXISTS "${WINSDK_INCLUDE}/um/Windows.h")
|
|
||||||
message(SEND_ERROR "Cannot find Windows.h")
|
|
||||||
endif()
|
|
||||||
if(NOT EXISTS "${WINSDK_INCLUDE}/um/WINDOWS.H")
|
|
||||||
set(case_sensitive_filesystem TRUE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CMAKE_C_COMPILER "${LLVM_NATIVE_TOOLCHAIN}/bin/clang-cl" CACHE FILEPATH "")
|
|
||||||
set(CMAKE_CXX_COMPILER "${LLVM_NATIVE_TOOLCHAIN}/bin/clang-cl" CACHE FILEPATH "")
|
|
||||||
set(CMAKE_LINKER "${LLVM_NATIVE_TOOLCHAIN}/bin/lld-link" CACHE FILEPATH "")
|
|
||||||
|
|
||||||
# Even though we're cross-compiling, we need some native tools (e.g. llvm-tblgen), and those
|
|
||||||
# native tools have to be built before we can start doing the cross-build. LLVM supports
|
|
||||||
# a CROSS_TOOLCHAIN_FLAGS_NATIVE argument which consists of a list of flags to pass to CMake
|
|
||||||
# when configuring the NATIVE portion of the cross-build. By default we construct this so
|
|
||||||
# that it points to the tools in the same location as the native clang-cl that we're using.
|
|
||||||
list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_ASM_COMPILER=${LLVM_NATIVE_TOOLCHAIN}/bin/clang")
|
|
||||||
list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_C_COMPILER=${LLVM_NATIVE_TOOLCHAIN}/bin/clang")
|
|
||||||
list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_CXX_COMPILER=${LLVM_NATIVE_TOOLCHAIN}/bin/clang++")
|
|
||||||
|
|
||||||
set(CROSS_TOOLCHAIN_FLAGS_NATIVE "${_CTF_NATIVE_DEFAULT}" CACHE STRING "")
|
|
||||||
|
|
||||||
set(COMPILE_FLAGS
|
|
||||||
-D_CRT_SECURE_NO_WARNINGS
|
|
||||||
--target=${TRIPLE_ARCH}-windows-msvc
|
|
||||||
-fms-compatibility-version=19.11
|
|
||||||
-imsvc "\"${ATLMFC_INCLUDE}\""
|
|
||||||
-imsvc "\"${MSVC_INCLUDE}\""
|
|
||||||
-imsvc "\"${WINSDK_INCLUDE}/ucrt\""
|
|
||||||
-imsvc "\"${WINSDK_INCLUDE}/shared\""
|
|
||||||
-imsvc "\"${WINSDK_INCLUDE}/um\""
|
|
||||||
-imsvc "\"${WINSDK_INCLUDE}/winrt\"")
|
|
||||||
|
|
||||||
if(case_sensitive_filesystem)
|
|
||||||
# Ensure all sub-configures use the top-level VFS overlay instead of generating their own.
|
|
||||||
init_user_prop(winsdk_vfs_overlay_path)
|
|
||||||
if(NOT winsdk_vfs_overlay_path)
|
|
||||||
set(winsdk_vfs_overlay_path "${CMAKE_BINARY_DIR}/winsdk_vfs_overlay.yaml")
|
|
||||||
generate_winsdk_vfs_overlay("${WINSDK_BASE}/Include/${WINSDK_VER}" "${winsdk_vfs_overlay_path}")
|
|
||||||
init_user_prop(winsdk_vfs_overlay_path)
|
|
||||||
endif()
|
|
||||||
list(APPEND COMPILE_FLAGS
|
|
||||||
-Xclang -ivfsoverlay -Xclang "${winsdk_vfs_overlay_path}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
string(REPLACE ";" " " COMPILE_FLAGS "${COMPILE_FLAGS}")
|
|
||||||
|
|
||||||
# We need to preserve any flags that were passed in by the user. However, we
|
|
||||||
# can't append to CMAKE_C_FLAGS and friends directly, because toolchain files
|
|
||||||
# will be re-invoked on each reconfigure and therefore need to be idempotent.
|
|
||||||
# The assignments to the _INITIAL cache variables don't use FORCE, so they'll
|
|
||||||
# only be populated on the initial configure, and their values won't change
|
|
||||||
# afterward.
|
|
||||||
set(_CMAKE_C_FLAGS_INITIAL "${CMAKE_C_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_C_FLAGS "${_CMAKE_C_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(_CMAKE_CXX_FLAGS_INITIAL "${CMAKE_CXX_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_CXX_FLAGS "${_CMAKE_CXX_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(LINK_FLAGS
|
|
||||||
# Prevent CMake from attempting to invoke mt.exe. It only recognizes the slashed form and not the dashed form.
|
|
||||||
/manifest:no
|
|
||||||
|
|
||||||
-libpath:"${ATLMFC_LIB}/${WINSDK_ARCH}"
|
|
||||||
-libpath:"${MSVC_LIB}/${WINSDK_ARCH}"
|
|
||||||
-libpath:"${WINSDK_LIB}/ucrt/${WINSDK_ARCH}"
|
|
||||||
-libpath:"${WINSDK_LIB}/um/${WINSDK_ARCH}")
|
|
||||||
|
|
||||||
if(case_sensitive_filesystem)
|
|
||||||
# Ensure all sub-configures use the top-level symlinks dir instead of generating their own.
|
|
||||||
init_user_prop(winsdk_lib_symlinks_dir)
|
|
||||||
if(NOT winsdk_lib_symlinks_dir)
|
|
||||||
set(winsdk_lib_symlinks_dir "${CMAKE_BINARY_DIR}/winsdk_lib_symlinks")
|
|
||||||
generate_winsdk_lib_symlinks("${WINSDK_BASE}/Lib/${WINSDK_VER}/um/${WINSDK_ARCH}" "${winsdk_lib_symlinks_dir}")
|
|
||||||
init_user_prop(winsdk_lib_symlinks_dir)
|
|
||||||
endif()
|
|
||||||
list(APPEND LINK_FLAGS
|
|
||||||
-libpath:"${winsdk_lib_symlinks_dir}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
string(REPLACE ";" " " LINK_FLAGS "${LINK_FLAGS}")
|
|
||||||
|
|
||||||
# See explanation for compiler flags above for the _INITIAL variables.
|
|
||||||
set(_CMAKE_EXE_LINKER_FLAGS_INITIAL "${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${_CMAKE_EXE_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(_CMAKE_MODULE_LINKER_FLAGS_INITIAL "${CMAKE_MODULE_LINKER_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS "${_CMAKE_MODULE_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
set(_CMAKE_SHARED_LINKER_FLAGS_INITIAL "${CMAKE_SHARED_LINKER_FLAGS}" CACHE STRING "")
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS "${_CMAKE_SHARED_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# CMake populates these with a bunch of unnecessary libraries, which requires
|
|
||||||
# extra case-correcting symlinks and what not. Instead, let projects explicitly
|
|
||||||
# control which libraries they require.
|
|
||||||
set(CMAKE_C_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
|
|
||||||
set(CMAKE_CXX_STANDARD_LIBRARIES "" CACHE STRING "" FORCE)
|
|
||||||
|
|
||||||
# Allow clang-cl to work with macOS paths.
|
|
||||||
set(CMAKE_USER_MAKE_RULES_OVERRIDE "${CMAKE_CURRENT_LIST_DIR}/ClangClCMakeCompileRules.cmake")
|
|
|
@ -1,105 +0,0 @@
|
||||||
# Toolchain config for iOS.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# mkdir build; cd build
|
|
||||||
# cmake ..; make
|
|
||||||
# mkdir ios; cd ios
|
|
||||||
# cmake -DLLVM_IOS_TOOLCHAIN_DIR=/path/to/ios/ndk \
|
|
||||||
# -DCMAKE_TOOLCHAIN_FILE=../../cmake/platforms/iOS.cmake ../..
|
|
||||||
# make <target>
|
|
||||||
|
|
||||||
# Original source:
|
|
||||||
# https://opensource.apple.com/source/clang/clang-800.0.42.1/src/cmake/platforms/iOS.cmake
|
|
||||||
# Extensions according to:
|
|
||||||
# https://github.com/google/filament/
|
|
||||||
|
|
||||||
SET(CMAKE_SYSTEM_NAME Darwin)
|
|
||||||
SET(CMAKE_SYSTEM_VERSION 13)
|
|
||||||
SET(CMAKE_CXX_COMPILER_WORKS True)
|
|
||||||
SET(CMAKE_C_COMPILER_WORKS True)
|
|
||||||
SET(DARWIN_TARGET_OS_NAME ios)
|
|
||||||
|
|
||||||
SET(PLATFORM_NAME iphoneos CACHE STRING "iOS platform to build for")
|
|
||||||
SET(PLATFORM_FLAG_NAME ios)
|
|
||||||
|
|
||||||
IF("$ENV{RC_APPLETV}" STREQUAL "YES")
|
|
||||||
MESSAGE(STATUS "Building for tvos")
|
|
||||||
STRING(TOLOWER $ENV{RC_APPLETV_PLATFORM_NAME} PLATFORM_NAME)
|
|
||||||
SET(PLATFORM_FLAG_NAME tvos)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF("$ENV{RC_WATCH}" STREQUAL "YES")
|
|
||||||
MESSAGE(STATUS "Building for watchos")
|
|
||||||
STRING(TOLOWER $ENV{RC_WATCH_PLATFORM_NAME} PLATFORM_NAME)
|
|
||||||
STRING(TOLOWER $ENV{RC_WATCH_PLATFORM_NAME} PLATFORM_FLAG_NAME)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(NOT DEFINED ENV{SDKROOT})
|
|
||||||
execute_process(COMMAND xcodebuild -version -sdk ${PLATFORM_NAME} Path
|
|
||||||
OUTPUT_VARIABLE SDKROOT
|
|
||||||
ERROR_QUIET
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
ELSE()
|
|
||||||
execute_process(COMMAND xcodebuild -version -sdk $ENV{SDKROOT} Path
|
|
||||||
OUTPUT_VARIABLE SDKROOT
|
|
||||||
ERROR_QUIET
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(NOT EXISTS ${SDKROOT})
|
|
||||||
MESSAGE(FATAL_ERROR "SDKROOT could not be detected!")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
set(CMAKE_OSX_SYSROOT ${SDKROOT})
|
|
||||||
|
|
||||||
IF(NOT CMAKE_C_COMPILER)
|
|
||||||
execute_process(COMMAND xcrun -sdk ${SDKROOT} -find clang
|
|
||||||
OUTPUT_VARIABLE CMAKE_C_COMPILER
|
|
||||||
ERROR_QUIET
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
message(STATUS "Using c compiler ${CMAKE_C_COMPILER}")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(NOT CMAKE_CXX_COMPILER)
|
|
||||||
execute_process(COMMAND xcrun -sdk ${SDKROOT} -find clang++
|
|
||||||
OUTPUT_VARIABLE CMAKE_CXX_COMPILER
|
|
||||||
ERROR_QUIET
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
message(STATUS "Using c compiler ${CMAKE_CXX_COMPILER}")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(NOT CMAKE_AR)
|
|
||||||
execute_process(COMMAND xcrun -sdk ${SDKROOT} -find ar
|
|
||||||
OUTPUT_VARIABLE CMAKE_AR_val
|
|
||||||
ERROR_QUIET
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
SET(CMAKE_AR ${CMAKE_AR_val} CACHE FILEPATH "Archiver")
|
|
||||||
message(STATUS "Using ar ${CMAKE_AR}")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF(NOT CMAKE_RANLIB)
|
|
||||||
execute_process(COMMAND xcrun -sdk ${SDKROOT} -find ranlib
|
|
||||||
OUTPUT_VARIABLE CMAKE_RANLIB_val
|
|
||||||
ERROR_QUIET
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
SET(CMAKE_RANLIB ${CMAKE_RANLIB_val} CACHE FILEPATH "Ranlib")
|
|
||||||
message(STATUS "Using ranlib ${CMAKE_RANLIB}")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
IF (NOT DEFINED IOS_MIN_TARGET)
|
|
||||||
execute_process(COMMAND xcodebuild -sdk ${SDKROOT} -version SDKVersion
|
|
||||||
OUTPUT_VARIABLE IOS_MIN_TARGET
|
|
||||||
ERROR_QUIET
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(IOS_COMMON_FLAGS "-isysroot $ENV{SDKROOT} -m${PLATFORM_FLAG_NAME}-version-min=${IOS_MIN_TARGET}")
|
|
||||||
SET(CMAKE_C_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_cflags" FORCE)
|
|
||||||
SET(CMAKE_CXX_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_cxxflags" FORCE)
|
|
||||||
SET(CMAKE_LINK_FLAGS "${IOS_COMMON_FLAGS}" CACHE STRING "toolchain_linkflags" FORCE)
|
|
||||||
|
|
||||||
# We make some convenience additions for consistent handling of the architecture.
|
|
||||||
SET(CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE STRING "Build architecture for iOS")
|
|
||||||
SET(DIST_ARCH ${IOS_ARCH})
|
|
||||||
ADD_DEFINITIONS(-DIOS)
|
|
||||||
SET(IOS TRUE)
|
|
|
@ -1,17 +0,0 @@
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR "i386")
|
|
||||||
set(CMAKE_C_COMPILER_TARGET i386-linux-gnu)
|
|
||||||
|
|
||||||
# Assume debian/ubuntu
|
|
||||||
#set(CMAKE_FIND_ROOT_PATH /usr/lib/i386-linux-gnu/)
|
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32")
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
|
||||||
|
|
||||||
# https://stackoverflow.com/questions/41557927/using-usr-lib-i386-linux-gnu-instead-of-usr-lib-x86-64-linux-gnu-to-find-libra
|
|
||||||
set(FIND_LIBRARY_USE_LIB64_PATHS OFF)
|
|
|
@ -1,4 +0,0 @@
|
||||||
# use lld with Clang
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
|
||||||
set(CMAKE_MODULE_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
|
||||||
set(CMAKE_SHARED_LINKER_FLAGS_INIT "-fuse-ld=lld")
|
|
|
@ -1,24 +0,0 @@
|
||||||
SET(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
|
|
||||||
IF (DEFINED ENV{LLVM_MINGW_DIR})
|
|
||||||
SET(LLVM_MINGW_ROOT "$ENV{LLVM_MINGW_DIR}")
|
|
||||||
ELSE ()
|
|
||||||
SET(LLVM_MINGW_ROOT "/mnt/data/local/llvm-mingw-20200325-ubuntu-18.04")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
|
|
||||||
SET(CMAKE_C_COMPILER ${LLVM_MINGW_ROOT}/bin/x86_64-w64-mingw32-clang)
|
|
||||||
SET(CMAKE_CXX_COMPILER ${LLVM_MINGW_ROOT}/bin/x86_64-w64-mingw32-clang++)
|
|
||||||
SET(CMAKE_RC_COMPILER ${LLVM_MINGW_ROOT}/bin/x86_64-w64-mingw32-windres)
|
|
||||||
|
|
||||||
#SET(CMAKE_C_LINK_EXECUTABLE x86_64-w64-mingw32-gcc)
|
|
||||||
#SET(CMAKE_CXX_LINK_EXECUTABLE x86_64-w64-mingw32-g++)
|
|
||||||
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH ${LLVM_MINGW_ROOT}/x86_64-w64-mingw32)
|
|
||||||
|
|
||||||
# We may need some advanced thread APIs to compile, so enable 0x601(Win7) if required.
|
|
||||||
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WIN32_WINNT=0x601")
|
|
||||||
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
|
@ -1,20 +0,0 @@
|
||||||
SET(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
|
|
||||||
IF (DEFINED ENV{LLVM_MINGW_DIR})
|
|
||||||
SET(LLVM_MINGW_ROOT "$ENV{LLVM_MINGW_DIR}")
|
|
||||||
ELSE ()
|
|
||||||
SET(LLVM_MINGW_ROOT "C:/ProgramData/llvm-mingw")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(CMAKE_C_COMPILER ${LLVM_MINGW_ROOT}/bin/x86_64-w64-mingw32-clang.exe)
|
|
||||||
SET(CMAKE_CXX_COMPILER ${LLVM_MINGW_ROOT}/bin/x86_64-w64-mingw32-clang++.exe)
|
|
||||||
SET(CMAKE_RC_COMPILER ${LLVM_MINGW_ROOT}/bin/x86_64-w64-mingw32-windres.exe)
|
|
||||||
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH ${LLVM_MINGW_ROOT}/x86_64-w64-mingw32)
|
|
||||||
|
|
||||||
# We may need some advanced thread APIs to compile tinyusz. use 0x601(Win7) if required
|
|
||||||
# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_WIN32_WINNT=0x601")
|
|
||||||
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
|
@ -1,20 +0,0 @@
|
||||||
SET(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
|
|
||||||
IF (DEFINED ENV{MINGW_GCC_DIR})
|
|
||||||
SET(MINGW_GCC_ROOT "$ENV{MINGW_GCC_DIR}")
|
|
||||||
ELSE ()
|
|
||||||
# Assume mingw cross compiler is installed in your system
|
|
||||||
SET(MINGW_GCC_ROOT "/usr")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
# win32 may fail to compile with C++11 threads.
|
|
||||||
|
|
||||||
SET(CMAKE_C_COMPILER ${MINGW_GCC_ROOT}/bin/x86_64-w64-mingw32-gcc-posix)
|
|
||||||
SET(CMAKE_CXX_COMPILER ${MINGW_GCC_ROOT}/bin/x86_64-w64-mingw32-g++-posix)
|
|
||||||
SET(CMAKE_RC_COMPILER ${MINGW_GCC_ROOT}/bin/x86_64-w64-mingw32-windres)
|
|
||||||
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH ${MINGW_GCC_ROOT}/x86_64-w64-mingw32)
|
|
||||||
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
|
||||||
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|
|
@ -1,59 +0,0 @@
|
||||||
# The MIT License (MIT)
|
|
||||||
#
|
|
||||||
# Copyright (c)
|
|
||||||
# 2013 Matthew Arsenault
|
|
||||||
# 2015-2016 RWTH Aachen University, Federal Republic of Germany
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
option(SANITIZE_ADDRESS "Enable AddressSanitizer for sanitized targets." Off)
|
|
||||||
|
|
||||||
set(FLAG_CANDIDATES
|
|
||||||
# Clang 3.2+ use this version. The no-omit-frame-pointer option is optional.
|
|
||||||
"-g -fsanitize=address -fno-omit-frame-pointer"
|
|
||||||
"-g -fsanitize=address"
|
|
||||||
|
|
||||||
# Older deprecated flag for ASan
|
|
||||||
"-g -faddress-sanitizer"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
if (SANITIZE_ADDRESS AND (SANITIZE_THREAD OR SANITIZE_MEMORY))
|
|
||||||
message(FATAL_ERROR "AddressSanitizer is not compatible with "
|
|
||||||
"ThreadSanitizer or MemorySanitizer.")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
|
|
||||||
include(sanitize-helpers)
|
|
||||||
|
|
||||||
if (SANITIZE_ADDRESS)
|
|
||||||
sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "AddressSanitizer"
|
|
||||||
"ASan")
|
|
||||||
|
|
||||||
find_program(ASan_WRAPPER "asan-wrapper" PATHS ${CMAKE_MODULE_PATH})
|
|
||||||
mark_as_advanced(ASan_WRAPPER)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
function (add_sanitize_address TARGET)
|
|
||||||
if (NOT SANITIZE_ADDRESS)
|
|
||||||
return()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
sanitizer_add_flags(${TARGET} "AddressSanitizer" "ASan")
|
|
||||||
endfunction ()
|
|
|
@ -1,57 +0,0 @@
|
||||||
# The MIT License (MIT)
|
|
||||||
#
|
|
||||||
# Copyright (c)
|
|
||||||
# 2013 Matthew Arsenault
|
|
||||||
# 2015-2016 RWTH Aachen University, Federal Republic of Germany
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
option(SANITIZE_MEMORY "Enable MemorySanitizer for sanitized targets." Off)
|
|
||||||
|
|
||||||
set(FLAG_CANDIDATES
|
|
||||||
"-g -fsanitize=memory"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
include(sanitize-helpers)
|
|
||||||
|
|
||||||
if (SANITIZE_MEMORY)
|
|
||||||
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|
||||||
message(WARNING "MemorySanitizer disabled for target ${TARGET} because "
|
|
||||||
"MemorySanitizer is supported for Linux systems only.")
|
|
||||||
set(SANITIZE_MEMORY Off CACHE BOOL
|
|
||||||
"Enable MemorySanitizer for sanitized targets." FORCE)
|
|
||||||
elseif (NOT ${CMAKE_SIZEOF_VOID_P} EQUAL 8)
|
|
||||||
message(WARNING "MemorySanitizer disabled for target ${TARGET} because "
|
|
||||||
"MemorySanitizer is supported for 64bit systems only.")
|
|
||||||
set(SANITIZE_MEMORY Off CACHE BOOL
|
|
||||||
"Enable MemorySanitizer for sanitized targets." FORCE)
|
|
||||||
else ()
|
|
||||||
sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "MemorySanitizer"
|
|
||||||
"MSan")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
function (add_sanitize_memory TARGET)
|
|
||||||
if (NOT SANITIZE_MEMORY)
|
|
||||||
return()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
sanitizer_add_flags(${TARGET} "MemorySanitizer" "MSan")
|
|
||||||
endfunction ()
|
|
|
@ -1,94 +0,0 @@
|
||||||
# The MIT License (MIT)
|
|
||||||
#
|
|
||||||
# Copyright (c)
|
|
||||||
# 2013 Matthew Arsenault
|
|
||||||
# 2015-2016 RWTH Aachen University, Federal Republic of Germany
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
# If any of the used compiler is a GNU compiler, add a second option to static
|
|
||||||
# link against the sanitizers.
|
|
||||||
option(SANITIZE_LINK_STATIC "Try to link static against sanitizers." Off)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
set(FIND_QUIETLY_FLAG "")
|
|
||||||
if (DEFINED Sanitizers_FIND_QUIETLY)
|
|
||||||
set(FIND_QUIETLY_FLAG "QUIET")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
find_package(ASan ${FIND_QUIETLY_FLAG})
|
|
||||||
find_package(TSan ${FIND_QUIETLY_FLAG})
|
|
||||||
find_package(MSan ${FIND_QUIETLY_FLAG})
|
|
||||||
find_package(UBSan ${FIND_QUIETLY_FLAG})
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function(sanitizer_add_blacklist_file FILE)
|
|
||||||
if(NOT IS_ABSOLUTE ${FILE})
|
|
||||||
set(FILE "${CMAKE_CURRENT_SOURCE_DIR}/${FILE}")
|
|
||||||
endif()
|
|
||||||
get_filename_component(FILE "${FILE}" REALPATH)
|
|
||||||
|
|
||||||
sanitizer_check_compiler_flags("-fsanitize-blacklist=${FILE}"
|
|
||||||
"SanitizerBlacklist" "SanBlist")
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(add_sanitizers ...)
|
|
||||||
# If no sanitizer is enabled, return immediately.
|
|
||||||
if (NOT (SANITIZE_ADDRESS OR SANITIZE_MEMORY OR SANITIZE_THREAD OR
|
|
||||||
SANITIZE_UNDEFINED))
|
|
||||||
return()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
foreach (TARGET ${ARGV})
|
|
||||||
# Check if this target will be compiled by exactly one compiler. Other-
|
|
||||||
# wise sanitizers can't be used and a warning should be printed once.
|
|
||||||
get_target_property(TARGET_TYPE ${TARGET} TYPE)
|
|
||||||
if (TARGET_TYPE STREQUAL "INTERFACE_LIBRARY")
|
|
||||||
message(WARNING "Can't use any sanitizers for target ${TARGET}, "
|
|
||||||
"because it is an interface library and cannot be "
|
|
||||||
"compiled directly.")
|
|
||||||
return()
|
|
||||||
endif ()
|
|
||||||
sanitizer_target_compilers(${TARGET} TARGET_COMPILER)
|
|
||||||
list(LENGTH TARGET_COMPILER NUM_COMPILERS)
|
|
||||||
if (NUM_COMPILERS GREATER 1)
|
|
||||||
message(WARNING "Can't use any sanitizers for target ${TARGET}, "
|
|
||||||
"because it will be compiled by incompatible compilers. "
|
|
||||||
"Target will be compiled without sanitizers.")
|
|
||||||
return()
|
|
||||||
|
|
||||||
# If the target is compiled by no or no known compiler, give a warning.
|
|
||||||
elseif (NUM_COMPILERS EQUAL 0)
|
|
||||||
message(WARNING "Sanitizers for target ${TARGET} may not be"
|
|
||||||
" usable, because it uses no or an unknown compiler. "
|
|
||||||
"This is a false warning for targets using only "
|
|
||||||
"object lib(s) as input.")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# Add sanitizers for target.
|
|
||||||
add_sanitize_address(${TARGET})
|
|
||||||
add_sanitize_thread(${TARGET})
|
|
||||||
add_sanitize_memory(${TARGET})
|
|
||||||
add_sanitize_undefined(${TARGET})
|
|
||||||
endforeach ()
|
|
||||||
endfunction(add_sanitizers)
|
|
|
@ -1,65 +0,0 @@
|
||||||
# The MIT License (MIT)
|
|
||||||
#
|
|
||||||
# Copyright (c)
|
|
||||||
# 2013 Matthew Arsenault
|
|
||||||
# 2015-2016 RWTH Aachen University, Federal Republic of Germany
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
option(SANITIZE_THREAD "Enable ThreadSanitizer for sanitized targets." Off)
|
|
||||||
|
|
||||||
set(FLAG_CANDIDATES
|
|
||||||
"-g -fsanitize=thread"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# ThreadSanitizer is not compatible with MemorySanitizer.
|
|
||||||
if (SANITIZE_THREAD AND SANITIZE_MEMORY)
|
|
||||||
message(FATAL_ERROR "ThreadSanitizer is not compatible with "
|
|
||||||
"MemorySanitizer.")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
|
|
||||||
include(sanitize-helpers)
|
|
||||||
|
|
||||||
if (SANITIZE_THREAD)
|
|
||||||
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND
|
|
||||||
NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
|
|
||||||
message(WARNING "ThreadSanitizer disabled for target ${TARGET} because "
|
|
||||||
"ThreadSanitizer is supported for Linux systems and macOS only.")
|
|
||||||
set(SANITIZE_THREAD Off CACHE BOOL
|
|
||||||
"Enable ThreadSanitizer for sanitized targets." FORCE)
|
|
||||||
elseif (NOT ${CMAKE_SIZEOF_VOID_P} EQUAL 8)
|
|
||||||
message(WARNING "ThreadSanitizer disabled for target ${TARGET} because "
|
|
||||||
"ThreadSanitizer is supported for 64bit systems only.")
|
|
||||||
set(SANITIZE_THREAD Off CACHE BOOL
|
|
||||||
"Enable ThreadSanitizer for sanitized targets." FORCE)
|
|
||||||
else ()
|
|
||||||
sanitizer_check_compiler_flags("${FLAG_CANDIDATES}" "ThreadSanitizer"
|
|
||||||
"TSan")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
function (add_sanitize_thread TARGET)
|
|
||||||
if (NOT SANITIZE_THREAD)
|
|
||||||
return()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
sanitizer_add_flags(${TARGET} "ThreadSanitizer" "TSan")
|
|
||||||
endfunction ()
|
|
|
@ -1,46 +0,0 @@
|
||||||
# The MIT License (MIT)
|
|
||||||
#
|
|
||||||
# Copyright (c)
|
|
||||||
# 2013 Matthew Arsenault
|
|
||||||
# 2015-2016 RWTH Aachen University, Federal Republic of Germany
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
option(SANITIZE_UNDEFINED
|
|
||||||
"Enable UndefinedBehaviorSanitizer for sanitized targets." Off)
|
|
||||||
|
|
||||||
set(FLAG_CANDIDATES
|
|
||||||
"-g -fsanitize=undefined"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
include(sanitize-helpers)
|
|
||||||
|
|
||||||
if (SANITIZE_UNDEFINED)
|
|
||||||
sanitizer_check_compiler_flags("${FLAG_CANDIDATES}"
|
|
||||||
"UndefinedBehaviorSanitizer" "UBSan")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
function (add_sanitize_undefined TARGET)
|
|
||||||
if (NOT SANITIZE_UNDEFINED)
|
|
||||||
return()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
sanitizer_add_flags(${TARGET} "UndefinedBehaviorSanitizer" "UBSan")
|
|
||||||
endfunction ()
|
|
|
@ -1,55 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# The MIT License (MIT)
|
|
||||||
#
|
|
||||||
# Copyright (c)
|
|
||||||
# 2013 Matthew Arsenault
|
|
||||||
# 2015-2016 RWTH Aachen University, Federal Republic of Germany
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
# This script is a wrapper for AddressSanitizer. In some special cases you need
|
|
||||||
# to preload AddressSanitizer to avoid error messages - e.g. if you're
|
|
||||||
# preloading another library to your application. At the moment this script will
|
|
||||||
# only do something, if we're running on a Linux platform. OSX might not be
|
|
||||||
# affected.
|
|
||||||
|
|
||||||
|
|
||||||
# Exit immediately, if platform is not Linux.
|
|
||||||
if [ "$(uname)" != "Linux" ]
|
|
||||||
then
|
|
||||||
exec $@
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# Get the used libasan of the application ($1). If a libasan was found, it will
|
|
||||||
# be prepended to LD_PRELOAD.
|
|
||||||
libasan=$(ldd $1 | grep libasan | sed "s/^[[:space:]]//" | cut -d' ' -f1)
|
|
||||||
if [ -n "$libasan" ]
|
|
||||||
then
|
|
||||||
if [ -n "$LD_PRELOAD" ]
|
|
||||||
then
|
|
||||||
export LD_PRELOAD="$libasan:$LD_PRELOAD"
|
|
||||||
else
|
|
||||||
export LD_PRELOAD="$libasan"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Execute the application.
|
|
||||||
exec $@
|
|
|
@ -1,177 +0,0 @@
|
||||||
# The MIT License (MIT)
|
|
||||||
#
|
|
||||||
# Copyright (c)
|
|
||||||
# 2013 Matthew Arsenault
|
|
||||||
# 2015-2016 RWTH Aachen University, Federal Republic of Germany
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
# Helper function to get the language of a source file.
|
|
||||||
function (sanitizer_lang_of_source FILE RETURN_VAR)
|
|
||||||
get_filename_component(LONGEST_EXT "${FILE}" EXT)
|
|
||||||
# If extension is empty return. This can happen for extensionless headers
|
|
||||||
if("${LONGEST_EXT}" STREQUAL "")
|
|
||||||
set(${RETURN_VAR} "" PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
# Get shortest extension as some files can have dot in their names
|
|
||||||
string(REGEX REPLACE "^.*(\\.[^.]+)$" "\\1" FILE_EXT ${LONGEST_EXT})
|
|
||||||
string(TOLOWER "${FILE_EXT}" FILE_EXT)
|
|
||||||
string(SUBSTRING "${FILE_EXT}" 1 -1 FILE_EXT)
|
|
||||||
|
|
||||||
get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
|
|
||||||
foreach (LANG ${ENABLED_LANGUAGES})
|
|
||||||
list(FIND CMAKE_${LANG}_SOURCE_FILE_EXTENSIONS "${FILE_EXT}" TEMP)
|
|
||||||
if (NOT ${TEMP} EQUAL -1)
|
|
||||||
set(${RETURN_VAR} "${LANG}" PARENT_SCOPE)
|
|
||||||
return()
|
|
||||||
endif ()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
set(${RETURN_VAR} "" PARENT_SCOPE)
|
|
||||||
endfunction ()
|
|
||||||
|
|
||||||
|
|
||||||
# Helper function to get compilers used by a target.
|
|
||||||
function (sanitizer_target_compilers TARGET RETURN_VAR)
|
|
||||||
# Check if all sources for target use the same compiler. If a target uses
|
|
||||||
# e.g. C and Fortran mixed and uses different compilers (e.g. clang and
|
|
||||||
# gfortran) this can trigger huge problems, because different compilers may
|
|
||||||
# use different implementations for sanitizers.
|
|
||||||
set(BUFFER "")
|
|
||||||
get_target_property(TSOURCES ${TARGET} SOURCES)
|
|
||||||
foreach (FILE ${TSOURCES})
|
|
||||||
# If expression was found, FILE is a generator-expression for an object
|
|
||||||
# library. Object libraries will be ignored.
|
|
||||||
string(REGEX MATCH "TARGET_OBJECTS:([^ >]+)" _file ${FILE})
|
|
||||||
if ("${_file}" STREQUAL "")
|
|
||||||
sanitizer_lang_of_source(${FILE} LANG)
|
|
||||||
if (LANG)
|
|
||||||
list(APPEND BUFFER ${CMAKE_${LANG}_COMPILER_ID})
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endforeach ()
|
|
||||||
|
|
||||||
list(REMOVE_DUPLICATES BUFFER)
|
|
||||||
set(${RETURN_VAR} "${BUFFER}" PARENT_SCOPE)
|
|
||||||
endfunction ()
|
|
||||||
|
|
||||||
|
|
||||||
# Helper function to check compiler flags for language compiler.
|
|
||||||
function (sanitizer_check_compiler_flag FLAG LANG VARIABLE)
|
|
||||||
if (${LANG} STREQUAL "C")
|
|
||||||
include(CheckCCompilerFlag)
|
|
||||||
check_c_compiler_flag("${FLAG}" ${VARIABLE})
|
|
||||||
|
|
||||||
elseif (${LANG} STREQUAL "CXX")
|
|
||||||
include(CheckCXXCompilerFlag)
|
|
||||||
check_cxx_compiler_flag("${FLAG}" ${VARIABLE})
|
|
||||||
|
|
||||||
elseif (${LANG} STREQUAL "Fortran")
|
|
||||||
# CheckFortranCompilerFlag was introduced in CMake 3.x. To be compatible
|
|
||||||
# with older Cmake versions, we will check if this module is present
|
|
||||||
# before we use it. Otherwise we will define Fortran coverage support as
|
|
||||||
# not available.
|
|
||||||
include(CheckFortranCompilerFlag OPTIONAL RESULT_VARIABLE INCLUDED)
|
|
||||||
if (INCLUDED)
|
|
||||||
check_fortran_compiler_flag("${FLAG}" ${VARIABLE})
|
|
||||||
elseif (NOT CMAKE_REQUIRED_QUIET)
|
|
||||||
message(STATUS "Performing Test ${VARIABLE}")
|
|
||||||
message(STATUS "Performing Test ${VARIABLE}"
|
|
||||||
" - Failed (Check not supported)")
|
|
||||||
endif ()
|
|
||||||
endif()
|
|
||||||
endfunction ()
|
|
||||||
|
|
||||||
|
|
||||||
# Helper function to test compiler flags.
|
|
||||||
function (sanitizer_check_compiler_flags FLAG_CANDIDATES NAME PREFIX)
|
|
||||||
set(CMAKE_REQUIRED_QUIET ${${PREFIX}_FIND_QUIETLY})
|
|
||||||
|
|
||||||
get_property(ENABLED_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
|
|
||||||
foreach (LANG ${ENABLED_LANGUAGES})
|
|
||||||
# Sanitizer flags are not dependend on language, but the used compiler.
|
|
||||||
# So instead of searching flags foreach language, search flags foreach
|
|
||||||
# compiler used.
|
|
||||||
set(COMPILER ${CMAKE_${LANG}_COMPILER_ID})
|
|
||||||
if (NOT DEFINED ${PREFIX}_${COMPILER}_FLAGS)
|
|
||||||
foreach (FLAG ${FLAG_CANDIDATES})
|
|
||||||
if(NOT CMAKE_REQUIRED_QUIET)
|
|
||||||
message(STATUS "Try ${COMPILER} ${NAME} flag = [${FLAG}]")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CMAKE_REQUIRED_FLAGS "${FLAG}")
|
|
||||||
unset(${PREFIX}_FLAG_DETECTED CACHE)
|
|
||||||
sanitizer_check_compiler_flag("${FLAG}" ${LANG}
|
|
||||||
${PREFIX}_FLAG_DETECTED)
|
|
||||||
|
|
||||||
if (${PREFIX}_FLAG_DETECTED)
|
|
||||||
# If compiler is a GNU compiler, search for static flag, if
|
|
||||||
# SANITIZE_LINK_STATIC is enabled.
|
|
||||||
if (SANITIZE_LINK_STATIC AND (${COMPILER} STREQUAL "GNU"))
|
|
||||||
string(TOLOWER ${PREFIX} PREFIX_lower)
|
|
||||||
sanitizer_check_compiler_flag(
|
|
||||||
"-static-lib${PREFIX_lower}" ${LANG}
|
|
||||||
${PREFIX}_STATIC_FLAG_DETECTED)
|
|
||||||
|
|
||||||
if (${PREFIX}_STATIC_FLAG_DETECTED)
|
|
||||||
set(FLAG "-static-lib${PREFIX_lower} ${FLAG}")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
set(${PREFIX}_${COMPILER}_FLAGS "${FLAG}" CACHE STRING
|
|
||||||
"${NAME} flags for ${COMPILER} compiler.")
|
|
||||||
mark_as_advanced(${PREFIX}_${COMPILER}_FLAGS)
|
|
||||||
break()
|
|
||||||
endif ()
|
|
||||||
endforeach ()
|
|
||||||
|
|
||||||
if (NOT ${PREFIX}_FLAG_DETECTED)
|
|
||||||
set(${PREFIX}_${COMPILER}_FLAGS "" CACHE STRING
|
|
||||||
"${NAME} flags for ${COMPILER} compiler.")
|
|
||||||
mark_as_advanced(${PREFIX}_${COMPILER}_FLAGS)
|
|
||||||
|
|
||||||
message(WARNING "${NAME} is not available for ${COMPILER} "
|
|
||||||
"compiler. Targets using this compiler will be "
|
|
||||||
"compiled without ${NAME}.")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endforeach ()
|
|
||||||
endfunction ()
|
|
||||||
|
|
||||||
|
|
||||||
# Helper to assign sanitizer flags for TARGET.
|
|
||||||
function (sanitizer_add_flags TARGET NAME PREFIX)
|
|
||||||
# Get list of compilers used by target and check, if sanitizer is available
|
|
||||||
# for this target. Other compiler checks like check for conflicting
|
|
||||||
# compilers will be done in add_sanitizers function.
|
|
||||||
sanitizer_target_compilers(${TARGET} TARGET_COMPILER)
|
|
||||||
list(LENGTH TARGET_COMPILER NUM_COMPILERS)
|
|
||||||
if ("${${PREFIX}_${TARGET_COMPILER}_FLAGS}" STREQUAL "")
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Set compile- and link-flags for target.
|
|
||||||
set_property(TARGET ${TARGET} APPEND_STRING
|
|
||||||
PROPERTY COMPILE_FLAGS " ${${PREFIX}_${TARGET_COMPILER}_FLAGS}")
|
|
||||||
set_property(TARGET ${TARGET} APPEND_STRING
|
|
||||||
PROPERTY COMPILE_FLAGS " ${SanBlist_${TARGET_COMPILER}_FLAGS}")
|
|
||||||
set_property(TARGET ${TARGET} APPEND_STRING
|
|
||||||
PROPERTY LINK_FLAGS " ${${PREFIX}_${TARGET_COMPILER}_FLAGS}")
|
|
||||||
endfunction ()
|
|
|
@ -1,10 +0,0 @@
|
||||||
#usda 1.0
|
|
||||||
|
|
||||||
# example USDA for fileformat example: "my" custom fileformat.
|
|
||||||
def "muda" (
|
|
||||||
references = @bora.my@
|
|
||||||
)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,176 +0,0 @@
|
||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
|
@ -1,3 +0,0 @@
|
||||||
Files copied from MaterialX repo: https://github.com/AcademySoftwareFoundation/MaterialX
|
|
||||||
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
texture files are omitted to save git repo size.
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709" fileprefix="../../../Images/">
|
|
||||||
<nodegraph name="NG_brass1">
|
|
||||||
<tiledimage name="image_color" type="color3">
|
|
||||||
<input name="file" type="filename" value="brass_color.jpg" colorspace="srgb_texture" />
|
|
||||||
<input name="uvtiling" type="vector2" value="1.0, 1.0" />
|
|
||||||
</tiledimage>
|
|
||||||
<tiledimage name="image_roughness" type="float">
|
|
||||||
<input name="file" type="filename" value="brass_roughness.jpg" />
|
|
||||||
<input name="uvtiling" type="vector2" value="1.0, 1.0" />
|
|
||||||
</tiledimage>
|
|
||||||
<output name="out_color" type="color3" nodename="image_color" />
|
|
||||||
<output name="out_roughness" type="float" nodename="image_roughness" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="SR_brass1" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1" />
|
|
||||||
<input name="base_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="specular" type="float" value="0" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_brass1" output="out_roughness" />
|
|
||||||
<input name="metalness" type="float" value="1" />
|
|
||||||
<input name="coat" type="float" value="1" />
|
|
||||||
<input name="coat_color" type="color3" nodegraph="NG_brass1" output="out_color" />
|
|
||||||
<input name="coat_roughness" type="float" nodegraph="NG_brass1" output="out_roughness" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Tiled_Brass" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_brass1" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,132 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709" fileprefix="../../../Images/">
|
|
||||||
<nodegraph name="NG_BrickPattern">
|
|
||||||
<input name="brick_color" type="color3" value="0.661876, 0.19088, 0" uiname="Brick Color" uifolder="Color" />
|
|
||||||
<input name="hue_variation" type="float" value="0.083" uimin="0" uimax="1" uiname="Hue Variation" uifolder="Color" />
|
|
||||||
<input name="value_variation" type="float" value="0.787" uimin="0" uimax="1" uiname="Value Variation" uifolder="Color" />
|
|
||||||
<input name="roughness_amount" type="float" value="0.853" uimin="0" uimax="1" uiname="Roughness Amount" uifolder="Roughness" />
|
|
||||||
<input name="dirt_color" type="color3" value="0.56372, 0.56372, 0.56372" uiname="Dirt Color" uifolder="Dirt" />
|
|
||||||
<input name="dirt_amount" type="float" value="0.248" uimin="0" uimax="1" uiname="Dirt Amount" uifolder="Dirt" />
|
|
||||||
<input name="uvtiling" type="float" value="3" uisoftmin="1" uisoftmax="16" uiname="UV Tiling" uifolder="Texturing" />
|
|
||||||
<multiply name="node_multiply_5" type="color3">
|
|
||||||
<input name="in1" type="color3" nodename="node_mix_6" />
|
|
||||||
<input name="in2" type="float" nodename="node_tiledimage_float_7" />
|
|
||||||
</multiply>
|
|
||||||
<mix name="node_mix_8" type="color3">
|
|
||||||
<input name="fg" type="color3" nodename="node_multiply_5" />
|
|
||||||
<input name="bg" type="color3" nodename="node_multiply_9" />
|
|
||||||
<input name="mix" type="float" nodename="node_tiledimage_float_10" />
|
|
||||||
</mix>
|
|
||||||
<constant name="node_color_11" type="color3">
|
|
||||||
<input name="value" type="color3" value="0.263273, 0.263273, 0.263273" />
|
|
||||||
</constant>
|
|
||||||
<multiply name="node_multiply_9" type="color3">
|
|
||||||
<input name="in1" type="color3" nodename="node_color_11" />
|
|
||||||
<input name="in2" type="float" nodename="node_tiledimage_float_7" />
|
|
||||||
</multiply>
|
|
||||||
<rgbtohsv name="node_rgbtohsv_12" type="color3">
|
|
||||||
<input name="in" type="color3" interfacename="brick_color" />
|
|
||||||
</rgbtohsv>
|
|
||||||
<combine3 name="node_combine3_color3_13" type="color3">
|
|
||||||
<input name="in1" type="float" nodename="node_multiply_14" />
|
|
||||||
<input name="in2" type="float" value="0" />
|
|
||||||
<input name="in3" type="float" nodename="node_multiply_15" />
|
|
||||||
</combine3>
|
|
||||||
<add name="node_add_16" type="color3">
|
|
||||||
<input name="in1" type="color3" nodename="node_combine3_color3_13" />
|
|
||||||
<input name="in2" type="color3" nodename="node_rgbtohsv_12" />
|
|
||||||
</add>
|
|
||||||
<hsvtorgb name="node_hsvtorgb_17" type="color3">
|
|
||||||
<input name="in" type="color3" nodename="node_add_16" />
|
|
||||||
</hsvtorgb>
|
|
||||||
<subtract name="node_subtract_18" type="float">
|
|
||||||
<input name="in1" type="float" nodename="node_add_19" />
|
|
||||||
<input name="in2" type="float" value="0.35" />
|
|
||||||
</subtract>
|
|
||||||
<multiply name="node_multiply_14" type="float">
|
|
||||||
<input name="in1" type="float" nodename="node_subtract_18" />
|
|
||||||
<input name="in2" type="float" interfacename="hue_variation" />
|
|
||||||
</multiply>
|
|
||||||
<multiply name="node_multiply_15" type="float">
|
|
||||||
<input name="in1" type="float" nodename="node_add_19" />
|
|
||||||
<input name="in2" type="float" nodename="node_multiply_20" />
|
|
||||||
</multiply>
|
|
||||||
<clamp name="node_clamp_0" type="color3">
|
|
||||||
<input name="in" type="color3" nodename="node_mix_8" />
|
|
||||||
</clamp>
|
|
||||||
<multiply name="node_multiply_1" type="float">
|
|
||||||
<input name="in1" type="float" nodename="node_divide_21" />
|
|
||||||
<input name="in2" type="float" nodename="node_tiledimage_float_22" />
|
|
||||||
</multiply>
|
|
||||||
<max name="node_max_1" type="float">
|
|
||||||
<input name="in1" type="float" nodename="node_tiledimage_float_10" />
|
|
||||||
<input name="in2" type="float" value="0.00001" />
|
|
||||||
</max>
|
|
||||||
<divide name="node_divide_21" type="float">
|
|
||||||
<input name="in1" type="float" interfacename="roughness_amount" />
|
|
||||||
<input name="in2" type="float" nodename="node_max_1" />
|
|
||||||
</divide>
|
|
||||||
<mix name="node_mix_6" type="color3">
|
|
||||||
<input name="fg" type="color3" interfacename="dirt_color" />
|
|
||||||
<input name="bg" type="color3" nodename="node_hsvtorgb_17" />
|
|
||||||
<input name="mix" type="float" nodename="node_multiply_23" />
|
|
||||||
</mix>
|
|
||||||
<multiply name="node_multiply_23" type="float">
|
|
||||||
<input name="in1" type="float" interfacename="dirt_amount" />
|
|
||||||
<input name="in2" type="float" nodename="node_tiledimage_float_24" />
|
|
||||||
</multiply>
|
|
||||||
<multiply name="node_multiply_25" type="float">
|
|
||||||
<input name="in1" type="float" interfacename="hue_variation" />
|
|
||||||
<input name="in2" type="float" nodename="node_tiledimage_float_26" />
|
|
||||||
</multiply>
|
|
||||||
<add name="node_add_19" type="float">
|
|
||||||
<input name="in1" type="float" nodename="node_multiply_25" />
|
|
||||||
<input name="in2" type="float" nodename="node_tiledimage_float_7" />
|
|
||||||
</add>
|
|
||||||
<multiply name="node_multiply_20" type="float">
|
|
||||||
<input name="in1" type="float" interfacename="value_variation" />
|
|
||||||
<input name="in2" type="float" nodename="node_tiledimage_float_26" />
|
|
||||||
</multiply>
|
|
||||||
<normalmap name="node_normalmap_3" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="node_tiledimage_vector3_27" />
|
|
||||||
</normalmap>
|
|
||||||
<convert name="node_convert_1" type="vector2">
|
|
||||||
<input name="in" type="float" interfacename="uvtiling" />
|
|
||||||
</convert>
|
|
||||||
<tiledimage name="node_tiledimage_vector3_27" type="vector3">
|
|
||||||
<input name="file" type="filename" value="brick_normal.jpg" />
|
|
||||||
<input name="uvtiling" type="vector2" nodename="node_convert_1" />
|
|
||||||
</tiledimage>
|
|
||||||
<tiledimage name="node_tiledimage_float_22" type="float">
|
|
||||||
<input name="file" type="filename" value="brick_roughness.jpg" />
|
|
||||||
<input name="uvtiling" type="vector2" nodename="node_convert_1" />
|
|
||||||
</tiledimage>
|
|
||||||
<tiledimage name="node_tiledimage_float_10" type="float">
|
|
||||||
<input name="file" type="filename" value="brick_mask.jpg" />
|
|
||||||
<input name="uvtiling" type="vector2" nodename="node_convert_1" />
|
|
||||||
</tiledimage>
|
|
||||||
<tiledimage name="node_tiledimage_float_7" type="float">
|
|
||||||
<input name="file" type="filename" value="brick_base_gray.jpg" />
|
|
||||||
<input name="uvtiling" type="vector2" nodename="node_convert_1" />
|
|
||||||
</tiledimage>
|
|
||||||
<tiledimage name="node_tiledimage_float_26" type="float">
|
|
||||||
<input name="file" type="filename" value="brick_variation_mask.jpg" />
|
|
||||||
<input name="uvtiling" type="vector2" nodename="node_convert_1" />
|
|
||||||
</tiledimage>
|
|
||||||
<tiledimage name="node_tiledimage_float_24" type="float">
|
|
||||||
<input name="file" type="filename" value="brick_dirt_mask.jpg" />
|
|
||||||
<input name="uvtiling" type="vector2" nodename="node_convert_1" />
|
|
||||||
</tiledimage>
|
|
||||||
<output name="base_color_output" type="color3" nodename="node_clamp_0" />
|
|
||||||
<output name="specular_roughness_output" type="float" nodename="node_multiply_1" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="node_normalmap_3" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="N_StandardSurface" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_BrickPattern" output="base_color_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_BrickPattern" output="specular_roughness_output" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_BrickPattern" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_BrickPattern" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="N_StandardSurface" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,16 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_carpaint" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="0.5" />
|
|
||||||
<input name="base_color" type="color3" value="0.1037792, 0.59212029, 0.85064936" />
|
|
||||||
<input name="specular" type="float" value="1.0" />
|
|
||||||
<input name="specular_color" type="color3" value="1.0, 1.0, 1.0" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.4" />
|
|
||||||
<input name="specular_anisotropy" type="float" value="0.5" />
|
|
||||||
<input name="coat" type="float" value="1" />
|
|
||||||
<input name="coat_roughness" type="float" value="0" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Car_Paint" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_carpaint" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,555 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<!-- Chess Set geometry and material contributed by Side Effects, artwork by Moeen Sayed and Mujtaba Sayed. -->
|
|
||||||
|
|
||||||
<!-- Bishop Black -->
|
|
||||||
<nodegraph name="NG_BishopBlack">
|
|
||||||
<image name="diffuse2" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/bishop_black_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="metallic2" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/bishop_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness2" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/bishop_black_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal2" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/bishop_black_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap4" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal2" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse2" />
|
|
||||||
<output name="metalness_output" type="float" nodename="metallic2" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness2" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap4" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Bishop_B" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_BishopBlack" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_BishopBlack" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_BishopBlack" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_BishopBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_BishopBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_BishopBlack" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Bishop_B" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Bishop_B" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Bishop White -->
|
|
||||||
<nodegraph name="NG_BishopWhite">
|
|
||||||
<image name="diffuse3" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/bishop_white_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="metallic3" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/bishop_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness3" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/bishop_white_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal3" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/bishop_white_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap5" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal3" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse3" />
|
|
||||||
<output name="metalness_output" type="float" nodename="metallic3" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness3" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap5" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Bishop_W" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_BishopWhite" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_BishopWhite" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_BishopWhite" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_BishopWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_BishopWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_BishopWhite" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Bishop_W" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Bishop_W" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Castle Black -->
|
|
||||||
<nodegraph name="NG_CastleBlack">
|
|
||||||
<image name="diffuse6" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/castle_black_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="metallic6" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/castle_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness6" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/castle_shared_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal6" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/castle_shared_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap8" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal6" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse6" />
|
|
||||||
<output name="metalness_output" type="float" nodename="metallic6" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness6" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap8" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Castle_B" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_CastleBlack" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_CastleBlack" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_CastleBlack" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_CastleBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_CastleBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_CastleBlack" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Castle_B" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Castle_B" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Castle White -->
|
|
||||||
<nodegraph name="NG_CastleWhite">
|
|
||||||
<image name="diffuse7" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/castle_white_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="metallic7" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/castle_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness7" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/castle_shared_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal7" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/castle_shared_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap9" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal7" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse7" />
|
|
||||||
<output name="metalness_output" type="float" nodename="metallic7" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness7" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap9" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Castle_W" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_CastleWhite" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_CastleWhite" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_CastleWhite" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_CastleWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_CastleWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_CastleWhite" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Castle_W" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Castle_W" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Chess Board -->
|
|
||||||
<nodegraph name="NG_ChessBoard">
|
|
||||||
<image name="mtlximage13" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/chessboard_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage16" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/chessboard_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage17" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/chessboard_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage15" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/chessboard_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap12" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="mtlximage15" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="mtlximage13" />
|
|
||||||
<output name="metalness_output" type="float" nodename="mtlximage16" />
|
|
||||||
<output name="roughness_output" type="float" nodename="mtlximage17" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap12" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Chessboard" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_ChessBoard" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_ChessBoard" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_ChessBoard" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_ChessBoard" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_ChessBoard" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_ChessBoard" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Chessboard" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Chessboard" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- King Black -->
|
|
||||||
<nodegraph name="NG_KingBlack">
|
|
||||||
<image name="mtlximage1" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_black_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage2" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage4" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_black_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage3" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_shared_scattering.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage6" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_black_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap1" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="mtlximage6" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="mtlximage1" />
|
|
||||||
<output name="metalness_output" type="float" nodename="mtlximage2" />
|
|
||||||
<output name="roughness_output" type="float" nodename="mtlximage4" />
|
|
||||||
<output name="subsurface_output" type="float" nodename="mtlximage3" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap1" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="King_B" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_KingBlack" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_KingBlack" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_KingBlack" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" nodegraph="NG_KingBlack" output="subsurface_output" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_KingBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_KingBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_KingBlack" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_King_B" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="King_B" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- King White -->
|
|
||||||
<nodegraph name="NG_KingWhite">
|
|
||||||
<image name="mtlximage7" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_white_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage10" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage11" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_white_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage8" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_shared_scattering.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage9" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/king_white_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap11" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="mtlximage9" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="mtlximage7" />
|
|
||||||
<output name="metalness_output" type="float" nodename="mtlximage10" />
|
|
||||||
<output name="roughness_output" type="float" nodename="mtlximage11" />
|
|
||||||
<output name="subsurface_output" type="float" nodename="mtlximage8" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap11" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="King_W" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_KingWhite" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_KingWhite" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_KingWhite" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" nodegraph="NG_KingWhite" output="subsurface_output" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_KingWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_KingWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_KingWhite" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_King_W" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="King_W" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Knight Black -->
|
|
||||||
<nodegraph name="NG_KnightBlack">
|
|
||||||
<image name="diffuse4" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/knight_black_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness4" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/knight_black_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal4" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/knight_black_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap6" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal4" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse4" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness4" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap6" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Knight_B" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_KnightBlack" output="base_color_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_KnightBlack" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_KnightBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_KnightBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_KnightBlack" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Knight_B" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Knight_B" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Knight White -->
|
|
||||||
<nodegraph name="NG_KnightWhite">
|
|
||||||
<image name="diffuse5" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/knight_white_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness5" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/knight_white_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal5" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/knight_white_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap7" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal5" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse5" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness5" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap7" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Knight_W" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_KnightWhite" output="base_color_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_KnightWhite" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_KnightWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_KnightWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_KnightWhite" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Knight_W" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Knight_W" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Pawn Body Black -->
|
|
||||||
<nodegraph name="NG_PawnBodyBlack">
|
|
||||||
<image name="diffuse9" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_black_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="metallic9" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness9" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal9" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap13" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal9" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse9" />
|
|
||||||
<output name="metalness_output" type="float" nodename="metallic9" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness9" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap13" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Pawn_Body_B" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_PawnBodyBlack" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_PawnBodyBlack" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_PawnBodyBlack" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_PawnBodyBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_PawnBodyBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_PawnBodyBlack" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Pawn_Body_B" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Pawn_Body_B" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Pawn Body White -->
|
|
||||||
<nodegraph name="NG_PawnBodyWhite">
|
|
||||||
<image name="diffuse8" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_white_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="metallic8" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness8" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal8" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap10" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal8" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse8" />
|
|
||||||
<output name="metalness_output" type="float" nodename="metallic8" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness8" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap10" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Pawn_Body_W" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_PawnBodyWhite" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_PawnBodyWhite" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_PawnBodyWhite" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_PawnBodyWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_PawnBodyWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_PawnBodyWhite" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Pawn_Body_W" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Pawn_Body_W" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Pawn Top Black -->
|
|
||||||
<nodegraph name="NG_PawnTopBlack">
|
|
||||||
<image name="mtlximage19" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage18" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap14" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="mtlximage18" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="roughness_output" type="float" nodename="mtlximage19" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap14" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Pawn_Top_B" type="surfaceshader">
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_PawnTopBlack" output="roughness_output" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_PawnTopBlack" output="normal_output" />
|
|
||||||
<input name="base_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="transmission" type="float" value="1" />
|
|
||||||
<input name="transmission_color" type="color3" value="0.2995, 0.5, 0.450276" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="subsurface_radius" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Pawn_Top_B" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Pawn_Top_B" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Pawn Top White -->
|
|
||||||
<nodegraph name="NG_PawnTopWhite">
|
|
||||||
<image name="mtlximage21" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="mtlximage20" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/pawn_shared_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap15" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="mtlximage20" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="roughness_output" type="float" nodename="mtlximage21" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap15" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Pawn_Top_W" type="surfaceshader">
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_PawnTopWhite" output="roughness_output" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_PawnTopWhite" output="normal_output" />
|
|
||||||
<input name="base_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="transmission" type="float" value="1" />
|
|
||||||
<input name="transmission_color" type="color3" value="1, 1, 0.828" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="subsurface_radius" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Pawn_Top_W" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Pawn_Top_W" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Queen Black -->
|
|
||||||
<nodegraph name="NG_QueenBlack">
|
|
||||||
<image name="diffuse" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_black_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="metallic" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_black_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="sss" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_shared_scattering.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_black_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap2" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse" />
|
|
||||||
<output name="metalness_output" type="float" nodename="metallic" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness" />
|
|
||||||
<output name="subsurface_output" type="float" nodename="sss" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap2" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Queen_B" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_QueenBlack" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_QueenBlack" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_QueenBlack" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" nodegraph="NG_QueenBlack" output="subsurface_output" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_QueenBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_QueenBlack" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.003" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_QueenBlack" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Queen_B" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Queen_B" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Queen White -->
|
|
||||||
<nodegraph name="NG_QueenWhite">
|
|
||||||
<image name="diffuse1" type="color3">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_white_base_color.jpg" colorspace="srgb_texture" />
|
|
||||||
</image>
|
|
||||||
<image name="metallic1" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_shared_metallic.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="roughness1" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_white_roughness.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="sss1" type="float">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_shared_scattering.jpg" />
|
|
||||||
</image>
|
|
||||||
<image name="normal1" type="vector3">
|
|
||||||
<input name="file" type="filename" value="chess_set/queen_white_normal.jpg" />
|
|
||||||
</image>
|
|
||||||
<normalmap name="mtlxnormalmap3" type="vector3">
|
|
||||||
<input name="in" type="vector3" nodename="normal1" />
|
|
||||||
</normalmap>
|
|
||||||
<output name="base_color_output" type="color3" nodename="diffuse1" />
|
|
||||||
<output name="metalness_output" type="float" nodename="metallic1" />
|
|
||||||
<output name="roughness_output" type="float" nodename="roughness1" />
|
|
||||||
<output name="subsurface_output" type="float" nodename="sss1" />
|
|
||||||
<output name="normal_output" type="vector3" nodename="mtlxnormalmap3" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="Queen_W" type="surfaceshader">
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_QueenWhite" output="base_color_output" />
|
|
||||||
<input name="metalness" type="float" nodegraph="NG_QueenWhite" output="metalness_output" />
|
|
||||||
<input name="specular_roughness" type="float" nodegraph="NG_QueenWhite" output="roughness_output" />
|
|
||||||
<input name="subsurface" type="float" nodegraph="NG_QueenWhite" output="subsurface_output" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_QueenWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_radius" type="color3" nodegraph="NG_QueenWhite" output="base_color_output" />
|
|
||||||
<input name="subsurface_scale" type="float" value="0.001" />
|
|
||||||
<input name="normal" type="vector3" nodegraph="NG_QueenWhite" output="normal_output" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="M_Queen_W" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="Queen_W" />
|
|
||||||
</surfacematerial>
|
|
||||||
|
|
||||||
<!-- Chess Set Look -->
|
|
||||||
<look name="L_ChessSet">
|
|
||||||
<materialassign name="Chessboard" geom="Chessboard" material="M_Chessboard" />
|
|
||||||
<materialassign name="Bishop_B" geom="Bishop_B" material="M_Bishop_B" />
|
|
||||||
<materialassign name="Bishop_W" geom="Bishop_W" material="M_Bishop_W" />
|
|
||||||
<materialassign name="Castle_B" geom="Castle_B" material="M_Castle_B" />
|
|
||||||
<materialassign name="Castle_W" geom="Castle_W" material="M_Castle_W" />
|
|
||||||
<materialassign name="Knight_B" geom="Knight_B" material="M_Knight_B" />
|
|
||||||
<materialassign name="Knight_W" geom="Knight_W" material="M_Knight_W" />
|
|
||||||
<materialassign name="King_B" geom="King_B" material="M_King_B" />
|
|
||||||
<materialassign name="King_W" geom="King_W" material="M_King_W" />
|
|
||||||
<materialassign name="Pawn_Body_B" geom="Pawn_Body_B" material="M_Pawn_Body_B" />
|
|
||||||
<materialassign name="Pawn_Top_B" geom="Pawn_Top_B" material="M_Pawn_Top_B" />
|
|
||||||
<materialassign name="Pawn_Body_W" geom="Pawn_Body_W" material="M_Pawn_Body_W" />
|
|
||||||
<materialassign name="Pawn_Top_W" geom="Pawn_Top_W" material="M_Pawn_Top_W" />
|
|
||||||
<materialassign name="Queen_B" geom="Queen_B" material="M_Queen_B" />
|
|
||||||
<materialassign name="Queen_W" geom="Queen_W" material="M_Queen_W" />
|
|
||||||
</look>
|
|
||||||
</materialx>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_chrome" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1" />
|
|
||||||
<input name="base_color" type="color3" value="1.0, 1.0, 1.0" />
|
|
||||||
<input name="specular" type="float" value="1" />
|
|
||||||
<input name="specular_color" type="color3" value="1.0, 1.0, 1.0" />
|
|
||||||
<input name="specular_roughness" type="float" value="0" />
|
|
||||||
<input name="metalness" type="float" value="1" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Chrome" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_chrome" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,16 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_copper" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1" />
|
|
||||||
<input name="base_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="specular" type="float" value="0" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.25" />
|
|
||||||
<input name="metalness" type="float" value="1" />
|
|
||||||
<input name="coat" type="float" value="1" />
|
|
||||||
<input name="coat_color" type="color3" value="0.96467984, 0.37626296, 0.25818297" />
|
|
||||||
<input name="coat_roughness" type="float" value="0.20000000298023224" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Copper" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_copper" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,47 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_default" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1.0" />
|
|
||||||
<input name="base_color" type="color3" value="0.8, 0.8, 0.8" />
|
|
||||||
<input name="diffuse_roughness" type="float" value="0" />
|
|
||||||
<input name="specular" type="float" value="1" />
|
|
||||||
<input name="specular_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.2" />
|
|
||||||
<input name="specular_IOR" type="float" value="1.5" />
|
|
||||||
<input name="specular_anisotropy" type="float" value="0" />
|
|
||||||
<input name="specular_rotation" type="float" value="0" />
|
|
||||||
<input name="metalness" type="float" value="0" />
|
|
||||||
<input name="transmission" type="float" value="0" />
|
|
||||||
<input name="transmission_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="transmission_depth" type="float" value="0" />
|
|
||||||
<input name="transmission_scatter" type="color3" value="0, 0, 0" />
|
|
||||||
<input name="transmission_scatter_anisotropy" type="float" value="0" />
|
|
||||||
<input name="transmission_dispersion" type="float" value="0" />
|
|
||||||
<input name="transmission_extra_roughness" type="float" value="0" />
|
|
||||||
<input name="subsurface" type="float" value="0" />
|
|
||||||
<input name="subsurface_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="subsurface_radius" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="subsurface_scale" type="float" value="1" />
|
|
||||||
<input name="subsurface_anisotropy" type="float" value="0" />
|
|
||||||
<input name="sheen" type="float" value="0" />
|
|
||||||
<input name="sheen_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="sheen_roughness" type="float" value="0.3" />
|
|
||||||
<input name="thin_walled" type="boolean" value="false" />
|
|
||||||
<input name="coat" type="float" value="0" />
|
|
||||||
<input name="coat_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="coat_roughness" type="float" value="0.1" />
|
|
||||||
<input name="coat_anisotropy" type="float" value="0.0" />
|
|
||||||
<input name="coat_rotation" type="float" value="0.0" />
|
|
||||||
<input name="coat_IOR" type="float" value="1.5" />
|
|
||||||
<input name="coat_affect_color" type="float" value="0" />
|
|
||||||
<input name="coat_affect_roughness" type="float" value="0" />
|
|
||||||
<input name="thin_film_thickness" type="float" value="0" />
|
|
||||||
<input name="thin_film_IOR" type="float" value="1.5" />
|
|
||||||
<input name="emission" type="float" value="0" />
|
|
||||||
<input name="emission_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="opacity" type="color3" value="1, 1, 1" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Default" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_default" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,21 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_glass" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="0.0" />
|
|
||||||
<input name="specular" type="float" value="1" />
|
|
||||||
<input name="specular_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.01" />
|
|
||||||
<input name="specular_IOR" type="float" value="1.52" />
|
|
||||||
<input name="transmission" type="float" value="1" />
|
|
||||||
<input name="transmission_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="transmission_depth" type="float" value="0" />
|
|
||||||
<input name="transmission_scatter" type="color3" value="0, 0, 0" />
|
|
||||||
<input name="transmission_scatter_anisotropy" type="float" value="0" />
|
|
||||||
<input name="transmission_dispersion" type="float" value="0" />
|
|
||||||
<input name="transmission_extra_roughness" type="float" value="0" />
|
|
||||||
<input name="opacity" type="color3" value="1, 1, 1" colorspace="lin_rec709" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Glass" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_glass" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,15 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_glass_tinted" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="0" />
|
|
||||||
<input name="specular" type="float" value="1" />
|
|
||||||
<input name="specular_color" type="color3" value="1, 1, 1" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.15" />
|
|
||||||
<input name="specular_IOR" type="float" value="1.54" />
|
|
||||||
<input name="transmission" type="float" value="1" />
|
|
||||||
<input name="transmission_color" type="color3" value="0.2, 0.1, 1" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="GlassTinted" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_glass_tinted" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_gold" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1" />
|
|
||||||
<input name="base_color" type="color3" value="0.944, 0.776, 0.373" />
|
|
||||||
<input name="specular" type="float" value="1" />
|
|
||||||
<input name="specular_color" type="color3" value="0.998, 0.981, 0.751" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.02" />
|
|
||||||
<input name="metalness" type="float" value="1" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Gold" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_gold" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_greysphere" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1.0" />
|
|
||||||
<input name="base_color" type="color3" value="0.18, 0.18, 0.18" />
|
|
||||||
<input name="diffuse_roughness" type="float" value="0" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.7" />
|
|
||||||
<input name="specular_IOR" type="float" value="1.5" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Greysphere" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_greysphere" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,29 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709" fileprefix="../../../Images/">
|
|
||||||
<nodegraph name="NG_Greysphere_Calibration">
|
|
||||||
<texcoord name="texcoord1" type="vector2" />
|
|
||||||
<place2d name="place2d" type="vector2">
|
|
||||||
<input name="texcoord" type="vector2" nodename="texcoord1" />
|
|
||||||
<input name="offset" type="vector2" value="-1.66, -0.49" />
|
|
||||||
<input name="scale" type="vector2" value="0.21, 0.21" />
|
|
||||||
<input name="pivot" type="vector2" value="0.5, 0.5" />
|
|
||||||
</place2d>
|
|
||||||
<image name="image1" type="color3">
|
|
||||||
<input name="texcoord" type="vector2" nodename="place2d" />
|
|
||||||
<input name="file" type="filename" value="greysphere_calibration.png" colorspace="srgb_texture" />
|
|
||||||
<input name="uaddressmode" type="string" value="clamp" />
|
|
||||||
<input name="vaddressmode" type="string" value="clamp" />
|
|
||||||
</image>
|
|
||||||
<output name="out1" type="color3" nodename="image1" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="SR_Greysphere_Calibration" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1.0" />
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_Greysphere_Calibration" output="out1" />
|
|
||||||
<input name="diffuse_roughness" type="float" value="0" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.7" />
|
|
||||||
<input name="specular_IOR" type="float" value="1.5" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Greysphere_Calibration" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_Greysphere_Calibration" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,15 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_jade" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="0.5" />
|
|
||||||
<input name="base_color" type="color3" value="0.0603, 0.4398, 0.1916" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.25" />
|
|
||||||
<input name="specular_IOR" type="float" value="2.418" />
|
|
||||||
<input name="specular_anisotropy" type="float" value="0.5" />
|
|
||||||
<input name="subsurface" type="float" value="0.4" />
|
|
||||||
<input name="subsurface_color" type="color3" value="0.0603, 0.4398, 0.1916" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Jade" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_jade" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
||||||
<xi:include href="standard_surface_brass_tiled.mtlx" />
|
|
||||||
<xi:include href="standard_surface_greysphere_calibration.mtlx" />
|
|
||||||
<look name="Brass_Look">
|
|
||||||
<materialassign name="preview" geom="Preview_Mesh" material="Tiled_Brass" />
|
|
||||||
<materialassign name="calibration" geom="Calibration_Mesh" material="Greysphere_Calibration" />
|
|
||||||
</look>
|
|
||||||
</materialx>
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
||||||
<xi:include href="standard_surface_wood_tiled.mtlx" />
|
|
||||||
<xi:include href="standard_surface_greysphere_calibration.mtlx" />
|
|
||||||
<look name="Wood_Look">
|
|
||||||
<materialassign name="preview" geom="Preview_Mesh" material="Tiled_Wood" />
|
|
||||||
<materialassign name="calibration" geom="Calibration_Mesh" material="Greysphere_Calibration" />
|
|
||||||
</look>
|
|
||||||
</materialx>
|
|
|
@ -1,67 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<nodegraph name="NG_marble1">
|
|
||||||
<input name="base_color_1" type="color3" value="0.8, 0.8, 0.8" uiname="Color 1" uifolder="Marble Color" />
|
|
||||||
<input name="base_color_2" type="color3" value="0.1, 0.1, 0.3" uiname="Color 2" uifolder="Marble Color" />
|
|
||||||
<input name="noise_scale_1" type="float" value="6.0" uisoftmin="1.0" uisoftmax="10.0" uiname="Scale 1" uifolder="Marble Noise" />
|
|
||||||
<input name="noise_scale_2" type="float" value="4.0" uisoftmin="1.0" uisoftmax="10.0" uiname="Scale 2" uifolder="Marble Noise" />
|
|
||||||
<input name="noise_power" type="float" value="3.0" uisoftmin="1.0" uisoftmax="10.0" uiname="Power" uifolder="Marble Noise" />
|
|
||||||
<input name="noise_octaves" type="integer" value="3" uisoftmin="1" uisoftmax="8" uiname="Octaves" uifolder="Marble Noise" />
|
|
||||||
<position name="obj_pos" type="vector3" />
|
|
||||||
<dotproduct name="add_xyz" type="float">
|
|
||||||
<input name="in1" type="vector3" nodename="obj_pos" />
|
|
||||||
<input name="in2" type="vector3" value="1, 1, 1" />
|
|
||||||
</dotproduct>
|
|
||||||
<multiply name="scale_xyz" type="float">
|
|
||||||
<input name="in1" type="float" nodename="add_xyz" />
|
|
||||||
<input name="in2" type="float" interfacename="noise_scale_1" />
|
|
||||||
</multiply>
|
|
||||||
<multiply name="scale_pos" type="vector3">
|
|
||||||
<input name="in1" type="vector3" nodename="obj_pos" />
|
|
||||||
<input name="in2" type="float" interfacename="noise_scale_2" />
|
|
||||||
</multiply>
|
|
||||||
<fractal3d name="noise" type="float">
|
|
||||||
<input name="octaves" type="integer" interfacename="noise_octaves" />
|
|
||||||
<input name="position" type="vector3" nodename="scale_pos" />
|
|
||||||
</fractal3d>
|
|
||||||
<multiply name="scale_noise" type="float">
|
|
||||||
<input name="in1" type="float" nodename="noise" />
|
|
||||||
<input name="in2" type="float" value="3.0" />
|
|
||||||
</multiply>
|
|
||||||
<add name="sum" type="float">
|
|
||||||
<input name="in1" type="float" nodename="scale_xyz" />
|
|
||||||
<input name="in2" type="float" nodename="scale_noise" />
|
|
||||||
</add>
|
|
||||||
<sin name="sin" type="float">
|
|
||||||
<input name="in" type="float" nodename="sum" />
|
|
||||||
</sin>
|
|
||||||
<multiply name="scale" type="float">
|
|
||||||
<input name="in1" type="float" nodename="sin" />
|
|
||||||
<input name="in2" type="float" value="0.5" />
|
|
||||||
</multiply>
|
|
||||||
<add name="bias" type="float">
|
|
||||||
<input name="in1" type="float" nodename="scale" />
|
|
||||||
<input name="in2" type="float" value="0.5" />
|
|
||||||
</add>
|
|
||||||
<power name="power" type="float">
|
|
||||||
<input name="in1" type="float" nodename="bias" />
|
|
||||||
<input name="in2" type="float" interfacename="noise_power" />
|
|
||||||
</power>
|
|
||||||
<mix name="color_mix" type="color3">
|
|
||||||
<input name="bg" type="color3" interfacename="base_color_1" />
|
|
||||||
<input name="fg" type="color3" interfacename="base_color_2" />
|
|
||||||
<input name="mix" type="float" nodename="power" />
|
|
||||||
</mix>
|
|
||||||
<output name="out" type="color3" nodename="color_mix" />
|
|
||||||
</nodegraph>
|
|
||||||
<standard_surface name="SR_marble1" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1" />
|
|
||||||
<input name="base_color" type="color3" nodegraph="NG_marble1" output="out" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.1" />
|
|
||||||
<input name="subsurface" type="float" value="0.4" />
|
|
||||||
<input name="subsurface_color" type="color3" nodegraph="NG_marble1" output="out" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Marble_3D" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_marble1" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,17 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_metal_brushed" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1" />
|
|
||||||
<input name="base_color" type="color3" value="0.5, 0.5, 0.5" />
|
|
||||||
<input name="specular" type="float" value="0" />
|
|
||||||
<input name="specular_color" type="color3" value="0, 0, 0" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.25" />
|
|
||||||
<input name="specular_IOR" type="float" value="1.52" />
|
|
||||||
<input name="specular_anisotropy" type="float" value="0.65" />
|
|
||||||
<input name="specular_rotation" type="float" value="0.0" />
|
|
||||||
<input name="metalness" type="float" value="1" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Metal_Brushed" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_metal_brushed" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|
|
@ -1,11 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<materialx version="1.38" colorspace="lin_rec709">
|
|
||||||
<standard_surface name="SR_plastic" type="surfaceshader">
|
|
||||||
<input name="base" type="float" value="1" />
|
|
||||||
<input name="base_color" type="color3" value="0.10470402, 0.24188282, 0.81800002" />
|
|
||||||
<input name="specular_roughness" type="float" value="0.32467532157897949" />
|
|
||||||
</standard_surface>
|
|
||||||
<surfacematerial name="Plastic" type="material">
|
|
||||||
<input name="surfaceshader" type="surfaceshader" nodename="SR_plastic" />
|
|
||||||
</surfacematerial>
|
|
||||||
</materialx>
|
|