Add ray normal computation for primitives (currently private) #3662
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This configuration is used to build and test on GitHub Actions only. | |
| # It is not the same configuration that is used by Google DeepMind to create release binaries. | |
| # The "official" binaries are built with Clang 13 on all platforms, and are linked against libc++ | |
| # on Linux. | |
| # | |
| # We set CMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF here to reduce build time. | |
| # It is highly recommended that this is set to ON for production builds. | |
| # TODO(matijak): Consider switching Windows to Ninja builds only, this configures slightly faster | |
| # and brings Windows in line with other OSes. Also we wouldn't need to specify the --config option | |
| # in the build step because Ninja doesn't support multiple configurations (unlike MSBuild). | |
| name: build | |
| on: | |
| push: | |
| paths-ignore: | |
| - "doc/**" | |
| - "**/README.md" | |
| pull_request: | |
| paths-ignore: | |
| - "doc/**" | |
| - "**/README.md" | |
| jobs: | |
| mujoco: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| label: "ubuntu-24.04-gcc-14" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=gcc-14 | |
| -DCMAKE_CXX_COMPILER:STRING=g++-14 | |
| -DCMAKE_EXE_LINKER_FLAGS:STRING=-Wl,--no-as-needed | |
| tmpdir: "/tmp" | |
| - os: ubuntu-24.04 | |
| label: "ubuntu-24.04-gcc-13" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=gcc-13 | |
| -DCMAKE_CXX_COMPILER:STRING=g++-13 | |
| -DCMAKE_EXE_LINKER_FLAGS:STRING=-Wl,--no-as-needed | |
| tmpdir: "/tmp" | |
| - os: ubuntu-22.04 | |
| label: "ubuntu-22.04-gcc-12" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=gcc-12 | |
| -DCMAKE_CXX_COMPILER:STRING=g++-12 | |
| -DCMAKE_EXE_LINKER_FLAGS:STRING=-Wl,--no-as-needed | |
| tmpdir: "/tmp" | |
| - os: ubuntu-22.04 | |
| label: "ubuntu-22.04-gcc-11" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=gcc-11 | |
| -DCMAKE_CXX_COMPILER:STRING=g++-11 | |
| -DCMAKE_EXE_LINKER_FLAGS:STRING=-Wl,--no-as-needed | |
| tmpdir: "/tmp" | |
| - os: ubuntu-22.04 | |
| label: "ubuntu-22.04-gcc-10" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=gcc-10 | |
| -DCMAKE_CXX_COMPILER:STRING=g++-10 | |
| -DCMAKE_EXE_LINKER_FLAGS:STRING=-Wl,--no-as-needed | |
| tmpdir: "/tmp" | |
| - os: ubuntu-24.04 | |
| label: "ubuntu-24.04-clang-18" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=clang-18 | |
| -DCMAKE_CXX_COMPILER:STRING=clang++-18 | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| tmpdir: "/tmp" | |
| - os: ubuntu-24.04 | |
| label: "ubuntu-24.04-clang-17" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=clang-17 | |
| -DCMAKE_CXX_COMPILER:STRING=clang++-17 | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| tmpdir: "/tmp" | |
| - os: ubuntu-24.04 | |
| label: "ubuntu-24.04-clang-16" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=clang-16 | |
| -DCMAKE_CXX_COMPILER:STRING=clang++-16 | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| tmpdir: "/tmp" | |
| - os: ubuntu-22.04 | |
| label: "ubuntu-22.04-clang-15" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=clang-15 | |
| -DCMAKE_CXX_COMPILER:STRING=clang++-15 | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| tmpdir: "/tmp" | |
| - os: ubuntu-22.04 | |
| label: "ubuntu-22.04-clang-14" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=clang-14 | |
| -DCMAKE_CXX_COMPILER:STRING=clang++-14 | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| tmpdir: "/tmp" | |
| - os: ubuntu-22.04 | |
| label: "ubuntu-22.04-clang-13" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=clang-13 | |
| -DCMAKE_CXX_COMPILER:STRING=clang++-13 | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| tmpdir: "/tmp" | |
| - os: macos-15 | |
| label: "macos-15-arm64" | |
| cmake_args: >- | |
| -G Ninja | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| tmpdir: "/tmp" | |
| - os: macos-15-large | |
| label: "macos-15-x86_64" | |
| cmake_args: >- | |
| -G Ninja | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| tmpdir: "/tmp" | |
| - os: windows-2025 | |
| label: "windows-2025" | |
| cmake_args: >- | |
| -DCMAKE_SYSTEM_VERSION="10.0.26100.0" | |
| cmake_build_args: "-- -m" | |
| tmpdir: "C:/Temp" | |
| name: "${{ matrix.label }}" | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Prepare Linux | |
| if: ${{ runner.os == 'Linux' }} | |
| run: bash ./.github/workflows/build_steps.sh prepare_linux | |
| - name: Prepare macOS | |
| if: ${{ runner.os == 'macOS' }} | |
| run: brew install ninja | |
| - uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.11" | |
| - name: Prepare Python | |
| shell: bash | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| run: bash ./.github/workflows/build_steps.sh prepare_python | |
| - name: Setup Node.js for WASM bindings | |
| if: ${{ runner.os == 'Linux' && matrix.label != 'ubuntu-24.04-clang-18' }} | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| # Exclude platforms covered by the `wasm` job. | |
| - name: Install NPM Dependencies for WASM bindings | |
| if: ${{ runner.os == 'Linux' && matrix.label != 'ubuntu-24.04-clang-18' }} | |
| run: bash ./.github/workflows/build_steps.sh npm_ci | |
| # Exclude platforms covered by the `wasm` job. | |
| - name: Setup Emscripten for WASM bindings | |
| if: ${{ runner.os == 'Linux' && matrix.label != 'ubuntu-24.04-clang-18' }} | |
| run: bash ./.github/workflows/build_steps.sh setup_emsdk | |
| - name: Configure MuJoCo | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| CMAKE_ARGS: ${{ matrix.cmake_args }} | |
| run: bash ./.github/workflows/build_steps.sh configure_mujoco | |
| - name: Build MuJoCo | |
| working-directory: build | |
| env: | |
| CMAKE_BUILD_ARGS: ${{ matrix.cmake_build_args }} | |
| run: bash ../.github/workflows/build_steps.sh build_mujoco | |
| - name: Copy in the correct VC runtime DLLs (workaround for actions/runner-images#10004) | |
| if: ${{ runner.os == 'Windows' }} | |
| working-directory: build | |
| shell: powershell | |
| run: | | |
| Copy-Item (Join-Path ` | |
| ((Get-ChildItem -Directory ` | |
| -Path "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Redist\MSVC\14.*" | | |
| Sort -Descending | Select-Object -First 1).FullName | |
| ) 'x64\Microsoft.VC143.CRT\*.dll') "bin\Release" | |
| - name: Test MuJoCo | |
| working-directory: build | |
| run: bash ../.github/workflows/build_steps.sh test_mujoco | |
| - name: Install MuJoCo | |
| working-directory: build | |
| run: bash ../.github/workflows/build_steps.sh install_mujoco | |
| - name: Copy plugins (POSIX) | |
| if: ${{ runner.os != 'Windows' }} | |
| working-directory: build | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| run: bash ../.github/workflows/build_steps.sh copy_plugins_posix | |
| - name: Copy plugins (Windows) | |
| if: ${{ runner.os == 'Windows' }} | |
| working-directory: build | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| run: bash ../.github/workflows/build_steps.sh copy_plugins_window | |
| - name: Configure samples | |
| working-directory: sample | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| CMAKE_ARGS: ${{ matrix.cmake_args }} | |
| run: bash ../.github/workflows/build_steps.sh configure_samples | |
| - name: Build samples | |
| working-directory: sample/build | |
| run: cmake --build . --config=Release ${{ matrix.cmake_build_args }} | |
| - name: Configure simulate | |
| working-directory: simulate | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| CMAKE_ARGS: ${{ matrix.cmake_args }} | |
| run: bash ../.github/workflows/build_steps.sh configure_simulate | |
| - name: Build simulate | |
| working-directory: simulate/build | |
| env: | |
| CMAKE_BUILD_ARGS: ${{ matrix.cmake_build_args }} | |
| run: bash ../../.github/workflows/build_steps.sh build_simulate | |
| # Exclude platforms covered by the `studio` job. | |
| # Exclude macos-15-x86_64 because we don't have a way maintain/develop the build locally. | |
| - name: Configure Studio | |
| if: ${{ matrix.label != 'windows-2025' && | |
| matrix.label != 'macos-15-arm64' && | |
| matrix.label != 'macos-15-x86_64' }} | |
| env: | |
| CMAKE_ARGS: ${{ matrix.cmake_args }} | |
| run: bash ./.github/workflows/build_steps.sh configure_studio | |
| # Exclude platforms covered by the `studio` job. | |
| # Exclude macos-15-x86_64 because we don't have a way maintain/develop the build locally. | |
| # TODO(haroonq): Fix Filament compilation for GCC<=12? | |
| - name: Build Studio | |
| if: ${{ matrix.label != 'windows-2025' && | |
| matrix.label != 'macos-15-arm64' && | |
| matrix.label != 'macos-15-x86_64' && | |
| matrix.label != 'ubuntu-22.04-gcc-10' && | |
| matrix.label != 'ubuntu-22.04-gcc-11' && | |
| matrix.label != 'ubuntu-22.04-gcc-12' }} | |
| run: bash ./.github/workflows/build_steps.sh build_studio | |
| - name: Make Python sdist | |
| shell: bash | |
| working-directory: python | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| run: bash ../.github/workflows/build_steps.sh make_python_sdist | |
| - name: Build Python bindings | |
| if: ${{ runner.os != 'Windows' }} | |
| shell: bash | |
| working-directory: python/dist | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| CMAKE_ARGS: ${{ matrix.cmake_args }} | |
| run: bash ../../.github/workflows/build_steps.sh build_python_bindings | |
| - name: Install Python bindings | |
| if: ${{ runner.os != 'Windows' }} | |
| shell: bash | |
| working-directory: python/dist | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| run: bash ../../.github/workflows/build_steps.sh install_python_bindings | |
| - name: Test Python bindings | |
| if: ${{ runner.os != 'Windows' }} | |
| shell: bash | |
| env: | |
| MUJOCO_GL: disable | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| run: bash ./.github/workflows/build_steps.sh test_python_bindings | |
| # Exclude platforms covered by the `wasm` job. | |
| - name: Build and Test WASM bindings | |
| if: ${{ runner.os == 'Linux' && matrix.label != 'ubuntu-24.04-clang-18' }} | |
| shell: bash | |
| run: bash ./.github/workflows/build_steps.sh build_test_wasm | |
| - name: Package MJX | |
| if: ${{ runner.os != 'Windows' }} | |
| shell: bash | |
| working-directory: mjx | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| run: bash ../.github/workflows/build_steps.sh package_mjx | |
| - name: Install MJX | |
| if: ${{ runner.os != 'Windows' }} | |
| shell: bash | |
| working-directory: mjx | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| run: bash ../.github/workflows/build_steps.sh install_mjx | |
| - name: Test MJX | |
| if: ${{ runner.os != 'Windows' }} | |
| shell: bash | |
| working-directory: mjx | |
| env: | |
| TMPDIR: ${{ matrix.tmpdir }} | |
| run: bash ../.github/workflows/build_steps.sh test_mjx | |
| - name: Notify team chat | |
| shell: bash | |
| env: | |
| GCHAT_API_URL: ${{ secrets.GCHAT_API }} | |
| JOB_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| CHATMSG_AUTHOR_NAME: ${{ github.event.head_commit.author.name }} | |
| CHATMSG_AUTHOR_EMAIL: ${{ github.event.head_commit.author.email }} | |
| CHATMSG_COMMIT_MESSAGE: ${{ github.event.head_commit.message }} | |
| CHATMSG_JOB_ID: ${{ matrix.label }} | |
| if: ${{ failure() && github.event_name == 'push' && env.GCHAT_API_URL != '' }} | |
| run: bash ./.github/workflows/build_steps.sh notify_team_chat | |
| # This job quickly determines if MuJoCo Studio is broken. | |
| studio: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| label: "ubuntu-24.04-clang-18-studio" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=clang-18 | |
| -DCMAKE_CXX_COMPILER:STRING=clang++-18 | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| - os: windows-2025 | |
| label: "windows-2025-ninja-studio" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_SYSTEM_VERSION=10.0.26100.0 | |
| - os: macos-15 | |
| label: "macos-15-arm64-studio" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_CXX_FLAGS="-Wno-error=deprecated-declarations" | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| name: "${{ matrix.label }}" | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Prepare Windows (setup MSVC) | |
| if: ${{ runner.os == 'Windows' }} | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Prepare Linux | |
| if: ${{ runner.os == 'Linux' }} | |
| run: bash ./.github/workflows/build_steps.sh prepare_linux | |
| - name: Configure Studio with legacy OpenGL rendering | |
| env: | |
| CMAKE_ARGS: ${{ matrix.cmake_args }} | |
| run: bash ./.github/workflows/build_steps.sh configure_studio_legacy_opengl | |
| - name: Build Studio with legacy OpenGL rendering | |
| run: bash ./.github/workflows/build_steps.sh build_studio | |
| - name: Configure Studio with Filament rendering | |
| env: | |
| CMAKE_ARGS: ${{ matrix.cmake_args }} | |
| run: bash ./.github/workflows/build_steps.sh configure_studio | |
| - name: Build Studio with Filament rendering | |
| run: bash ./.github/workflows/build_steps.sh build_studio | |
| - name: Notify team chat | |
| shell: bash | |
| env: | |
| GCHAT_API_URL: ${{ secrets.GCHAT_API }} | |
| JOB_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| CHATMSG_AUTHOR_NAME: ${{ github.event.head_commit.author.name }} | |
| CHATMSG_AUTHOR_EMAIL: ${{ github.event.head_commit.author.email }} | |
| CHATMSG_COMMIT_MESSAGE: ${{ github.event.head_commit.message }} | |
| CHATMSG_JOB_ID: ${{ matrix.label }} | |
| if: ${{ failure() && github.event_name == 'push' && env.GCHAT_API_URL != '' }} | |
| run: bash ./.github/workflows/build_steps.sh notify_team_chat | |
| # This job quickly determines if WASM bindings are broken. | |
| wasm: | |
| name: "ubuntu-24.04-clang-18-wasm" | |
| runs-on: ubuntu-24.04 | |
| env: | |
| label: "ubuntu-24.04-clang-18-wasm" | |
| cmake_args: >- | |
| -G Ninja | |
| -DCMAKE_C_COMPILER:STRING=clang-18 | |
| -DCMAKE_CXX_COMPILER:STRING=clang++-18 | |
| -DMUJOCO_HARDEN:BOOL=ON | |
| steps: | |
| - uses: actions/checkout@v3 | |
| - name: Setup Node.js for WASM bindings | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Prepare Linux | |
| if: ${{ runner.os == 'Linux' }} | |
| run: bash ./.github/workflows/build_steps.sh prepare_linux | |
| # For convenience run multiple build_steps functions in a single step. | |
| - name: Prepare, Build and Test WASM bindings | |
| env: | |
| CMAKE_ARGS: ${{ env.cmake_args }} | |
| run: | | |
| bash ./.github/workflows/build_steps.sh npm_ci | |
| bash ./.github/workflows/build_steps.sh setup_emsdk | |
| bash ./.github/workflows/build_steps.sh build_test_wasm | |
| - name: Notify team chat | |
| shell: bash | |
| env: | |
| GCHAT_API_URL: ${{ secrets.GCHAT_API }} | |
| JOB_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| CHATMSG_AUTHOR_NAME: ${{ github.event.head_commit.author.name }} | |
| CHATMSG_AUTHOR_EMAIL: ${{ github.event.head_commit.author.email }} | |
| CHATMSG_COMMIT_MESSAGE: ${{ github.event.head_commit.message }} | |
| CHATMSG_JOB_ID: ${{ env.label }} | |
| if: ${{ failure() && github.event_name == 'push' && env.GCHAT_API_URL != '' }} | |
| run: bash ./.github/workflows/build_steps.sh notify_team_chat |