Ajout de Jolt Physics + 1ere version des factory entitecomposants - camera, transform, rigidbody, collider, renderer

This commit is contained in:
Tom Ray
2026-03-22 00:28:03 +01:00
parent 6695d46bcd
commit 48348936a8
1147 changed files with 214331 additions and 353 deletions

View File

@@ -0,0 +1 @@
DisableFormat: true

View File

@@ -0,0 +1,15 @@
root = true
[*.{cpp,h,inl,cmake,sh,bat,hlsl}]
indent_style = tab
indent_size = 4
tab_width = 4
trim_trailing_whitespace = true
insert_final_newline = true
[CMakeLists.txt]
indent_style = tab
indent_size = 4
tab_width = 4
trim_trailing_whitespace = true
insert_final_newline = true

18
lib/All/JoltPhysics/.gitattributes vendored Normal file
View File

@@ -0,0 +1,18 @@
# Convert LF to CRLF on windows on checkout and convert back before submitting to the repository
* text=auto
# Explicitly declare text files to always be normalized and converted to native line endings on checkout
*.cpp text
*.inl text
*.h text
*.tof text
*.bat text
# Force shell files to use LF only
*.sh text eol=lf
gradlew text eol=lf
# Declare binary file types
*.tga binary
*.bof binary
*.bin binary

View File

@@ -0,0 +1,9 @@
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

View File

@@ -0,0 +1,435 @@
name: Build
on:
push:
branches: [ master ]
paths-ignore:
- 'Docs/**'
- '**.md'
pull_request:
branches: [ master ]
paths-ignore:
- 'Docs/**'
- '**.md'
env:
EMSCRIPTEN_VERSION: 3.1.64
UBUNTU_CLANG_VERSION: clang++-18
UBUNTU_GCC_VERSION: g++-14
jobs:
linux-clang:
runs-on: ubuntu-latest
name: Linux Clang
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release, Distribution]
double_precision: [No, Yes]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Install Vulkan
run: ${{github.workspace}}/Build/ubuntu24_install_vulkan_sdk.sh
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DDOUBLE_PRECISION=${{matrix.double_precision}}
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}}
run: ctest --output-on-failure --verbose
linux_clang_tsan:
runs-on: ubuntu-24.04
name: Linux Clang Sanitizers
strategy:
fail-fast: false
matrix:
build_type: [ReleaseASAN, ReleaseUBSAN, ReleaseTSAN]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}}
run: ctest --output-on-failure --verbose
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}}
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}}
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll
linux-clang-so:
runs-on: ubuntu-24.04
name: Linux Clang Shared Library
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release, Distribution]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DBUILD_SHARED_LIBS=YES
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}}
run: ctest --output-on-failure --verbose
linux-clang-32-bit:
runs-on: ubuntu-24.04
name: Linux Clang 32-bit
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release, Distribution]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Update APT
run: sudo apt update
- name: Install G++-Multilib
run: sudo apt -y install g++-multilib
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DCMAKE_CXX_FLAGS=-m32 -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}}
run: ctest --output-on-failure --verbose
linux-clang-use-std-vector:
runs-on: ubuntu-24.04
name: Linux Clang using std::vector
strategy:
fail-fast: false
matrix:
build_type: [Debug, ReleaseASAN]
double_precision: [Yes]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_CLANG_VERSION}} -DDOUBLE_PRECISION=${{matrix.double_precision}} -DUSE_STD_VECTOR=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}}
run: ctest --output-on-failure --verbose
linux-gcc:
runs-on: ubuntu-24.04
name: Linux GCC
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release, Distribution]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Install Vulkan
run: ${{github.workspace}}/Build/ubuntu24_install_vulkan_sdk.sh
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_GCC_VERSION}}
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}}
run: ctest --output-on-failure --verbose
linux-gcc-so:
runs-on: ubuntu-24.04
name: Linux GCC Shared Library
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release, Distribution]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh ${{matrix.build_type}} ${{env.UBUNTU_GCC_VERSION}} -DBUILD_SHARED_LIBS=Yes
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_${{matrix.build_type}} -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/Build/Linux_${{matrix.build_type}}
run: ctest --output-on-failure --verbose
msys2_mingw_gcc:
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}
name: MSYS2 MinGW GCC
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release]
shared_lib: [No, Yes]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: mingw64
install: mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake
update: true
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_mingw.sh ${{matrix.build_type}} -DBUILD_SHARED_LIBS=${{matrix.shared_lib}}
- name: Build
run: cmake --build Build/MinGW_${{matrix.build_type}} -j $(nproc)
- name: Test
working-directory: Build/MinGW_${{matrix.build_type}}
run: ctest --output-on-failure --verbose
msvc_cl:
runs-on: windows-latest
name: Visual Studio CL
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release, Distribution]
double_precision: [No, Yes]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Configure CMake
run: cmake -B ${{github.workspace}}/Build/VS2022_CL -G "Visual Studio 17 2022" -A x64 Build -DDOUBLE_PRECISION=${{matrix.double_precision}}
- name: Build
run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m
- name: Test
working-directory: ${{github.workspace}}/Build/VS2022_CL/${{matrix.build_type}}
run: ./UnitTests.exe
msvc_cl_no_object_stream:
runs-on: windows-latest
name: Visual Studio CL - No Object Stream
strategy:
fail-fast: false
matrix:
build_type: [Debug, Distribution]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Configure CMake
run: cmake -B ${{github.workspace}}/Build/VS2022_CL -G "Visual Studio 17 2022" -A x64 Build -DENABLE_OBJECT_STREAM=NO
- name: Build
run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m
- name: Test
working-directory: ${{github.workspace}}/Build/VS2022_CL/${{matrix.build_type}}
run: ./UnitTests.exe
msvc_cl_dll:
runs-on: windows-latest
name: Visual Studio CL Shared Library
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release, Distribution]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Configure CMake
run: cmake -B ${{github.workspace}}/Build/VS2022_CL -G "Visual Studio 17 2022" -A x64 Build -DBUILD_SHARED_LIBS=Yes
- name: Build
run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m
- name: Test
working-directory: ${{github.workspace}}/Build/VS2022_CL/${{matrix.build_type}}
run: ./UnitTests.exe
msvc_cl_32_bit:
runs-on: windows-latest
name: Visual Studio CL 32-bit
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Configure CMake
run: cmake -B ${{github.workspace}}/Build/VS2022_CL_32_BIT -G "Visual Studio 17 2022" -A Win32 -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF Build
- name: Build
run: msbuild Build\VS2022_CL_32_BIT\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m
- name: Test
working-directory: ${{github.workspace}}/Build/VS2022_CL_32_BIT/${{matrix.build_type}}
run: ./UnitTests.exe
msvc_cl_arm:
runs-on: windows-latest
name: Visual Studio CL ARM
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Configure CMake
run: cmake -B ${{github.workspace}}/Build/VS2022_CL_ARM -G "Visual Studio 17 2022" -A ARM64 Build
- name: Build
run: msbuild Build\VS2022_CL_ARM\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m
msvc_cl_arm_32_bit:
runs-on: windows-latest
name: Visual Studio CL ARM 32-bit
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Install Windows 11 SDK (10.0.22621.0)
# Alternative: Start-Process -wait -FilePath "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList "modify", "--installPath", """C:\Program Files\Microsoft Visual Studio\2022\Enterprise""", "--quiet", "--norestart", "--nocache", "--add", "Microsoft.VisualStudio.Component.Windows11SDK.22621" -Verb RunAs
run: choco install windows-sdk-11-version-22H2-all -y
- name: Configure CMake
# Windows 11 SDK 10.0.22621.0 is the last SDK to support 32-bit ARM
run: cmake -B ${{github.workspace}}/Build/VS2022_CL_ARM_32_BIT -G "Visual Studio 17 2022" -A ARM -DCMAKE_SYSTEM_VERSION="10.0.22621.0" -DCMAKE_CXX_COMPILER_WORKS=1 Build
- name: Build
run: msbuild Build\VS2022_CL_ARM_32_BIT\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m
msvc_clang:
runs-on: windows-latest
name: Visual Studio Clang
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release, Distribution]
double_precision: [No, Yes]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Configure CMake
run: cmake -B ${{github.workspace}}/Build/VS2022_Clang -G "Visual Studio 17 2022" -A x64 -T ClangCL Build -DDOUBLE_PRECISION=${{matrix.double_precision}}
- name: Build
run: msbuild Build\VS2022_Clang\JoltPhysics.sln /property:Configuration=${{matrix.build_type}} -m
- name: Test
working-directory: ${{github.workspace}}/Build/VS2022_Clang/${{matrix.build_type}}
run: ./UnitTests.exe
macos:
runs-on: macos-latest
name: macOS
env:
VULKAN_SDK_INSTALL: ${{github.workspace}}/vulkan_sdk
strategy:
fail-fast: false
matrix:
build_type: [Debug, Release, Distribution]
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Install Vulkan
run: ${{github.workspace}}/Build/macos_install_vulkan_sdk.sh ${VULKAN_SDK_INSTALL}
- name: Configure CMake
run: |
source ${VULKAN_SDK_INSTALL}/setup-env.sh
cmake -B ${{github.workspace}}/Build/MacOS_${{matrix.build_type}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_CXX_COMPILER=clang++ Build
- name: Build
run: cmake --build ${{github.workspace}}/Build/MacOS_${{matrix.build_type}} -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/Build/MacOS_${{matrix.build_type}}
run: ctest --output-on-failure --verbose
android:
runs-on: ubuntu-latest
name: Android
strategy:
fail-fast: false
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
- name: Gradle Build
working-directory: ${{github.workspace}}/Build/Android
run: ./gradlew build --no-daemon
ios:
runs-on: macos-latest
name: iOS
strategy:
fail-fast: false
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Configure CMake
run: cmake -B ${{github.workspace}}/Build/XCode_iOS -DTARGET_HELLO_WORLD=OFF -DTARGET_PERFORMANCE_TEST=OFF -DCMAKE_SYSTEM_NAME=iOS -GXcode Build
- name: Build
run: cmake --build ${{github.workspace}}/Build/XCode_iOS -- -sdk iphonesimulator -arch x86_64
emscripten:
runs-on: ubuntu-latest
name: Emscripten
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Setup emsdk
uses: mymindstorm/setup-emsdk@v14
with:
version: ${{env.EMSCRIPTEN_VERSION}}
- name: Verify emsdk
run: emcc -v
- name: Setup Node.js 18.x
uses: actions/setup-node@v6
with:
node-version: 18.x
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_emscripten.sh Distribution -DTARGET_HELLO_WORLD=OFF -DTARGET_PERFORMANCE_TEST=OFF
- name: Build
run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc)
- name: Test
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node UnitTests.js

View File

@@ -0,0 +1,430 @@
name: Determinism Check
env:
CONVEX_VS_MESH_HASH: '0xa7348cad585544bf'
RAGDOLL_HASH: '0xc392d8f867b0be5b'
PYRAMID_HASH: '0xafd93b295e75e3f6'
CHARACTER_VIRTUAL_HASH: '0x19c55223035a8f1a'
EMSCRIPTEN_VERSION: 4.0.2
NODE_VERSION: 23.x
UBUNTU_CLANG_VERSION: clang++-18
UBUNTU_GCC_VERSION: g++-14
UBUNTU_GCC_AARCH64_VERSION: aarch64-linux-gnu-g++-14
UBUNTU_GCC_RISCV_VERSION: riscv64-linux-gnu-g++-14
UBUNTU_GCC_POWERPC_VERSION: powerpc64le-linux-gnu-g++-14
UBUNTU_GCC_LOONGARCH_VERSION: loongarch64-linux-gnu-g++-14
on:
push:
branches: [ master ]
paths-ignore:
- 'Docs/**'
- '**.md'
pull_request:
branches: [ master ]
paths-ignore:
- 'Docs/**'
- '**.md'
jobs:
linux_clang:
runs-on: ubuntu-latest
name: Linux Clang Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ctest --output-on-failure --verbose
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
linux_gcc:
runs-on: ubuntu-latest
name: Linux GCC Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_VERSION}} -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ctest --output-on-failure --verbose
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
msvc_cl:
runs-on: windows-latest
name: Visual Studio CL Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_vs2022_cl.bat -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: msbuild Build\VS2022_CL\JoltPhysics.sln /property:Configuration=Distribution
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
run: ./UnitTests.exe
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH"
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH"
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid "-validate_hash=$env:PYRAMID_HASH"
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/VS2022_CL/Distribution
run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual "-validate_hash=$env:CHARACTER_VIRTUAL_HASH"
msvc_cl_32:
runs-on: windows-latest
name: Visual Studio CL 32-bit Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_vs2022_cl_32bit.bat -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: msbuild Build\VS2022_CL_32BIT\JoltPhysics.sln /property:Configuration=Distribution
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
run: ./UnitTests.exe
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh "-validate_hash=$env:CONVEX_VS_MESH_HASH"
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll "-validate_hash=$env:RAGDOLL_HASH"
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid "-validate_hash=$env:PYRAMID_HASH"
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/VS2022_CL_32BIT/Distribution
run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual "-validate_hash=$env:CHARACTER_VIRTUAL_HASH"
macos:
runs-on: macos-latest
name: macOS Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh Distribution clang++ -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ctest --output-on-failure --verbose
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
arm_clang:
runs-on: ubuntu-latest
name: ARM Clang Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Update index
run: sudo apt-get update
- name: Install Cross Compiler
run: sudo apt-get install gcc-14-aarch64-linux-gnu gcc-14-multilib g++-14-multilib libstdc++-14-dev-arm64-cross qemu-user -y
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./UnitTests
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
arm_clang_32:
runs-on: ubuntu-latest
name: ARM Clang 32-bit Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Update index
run: sudo apt-get update
- name: Install Cross Compiler
run: sudo apt-get install g++-14-arm-linux-gnueabihf qemu-user -y
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_CLANG_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_COMPILE_ARM_TARGET="arm-linux-gnueabihf" -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./UnitTests
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-arm -L /usr/arm-linux-gnueabihf/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
arm_gcc:
runs-on: ubuntu-latest
name: ARM GCC Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Update index
run: sudo apt-get update
- name: Install Cross Compiler
run: sudo apt-get install g++-14-aarch64-linux-gnu gcc-14-multilib g++-14-multilib libstdc++-14-dev-arm64-cross qemu-user -y
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_AARCH64_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./UnitTests
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-aarch64 -L /usr/aarch64-linux-gnu/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
riscv_gcc:
runs-on: ubuntu-latest
name: RISC-V GCC Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Update index
run: sudo apt-get update
- name: Install Cross Compiler
run: sudo apt-get install g++-14-riscv64-linux-gnu gcc-14-multilib g++-14-multilib qemu-user -y
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_RISCV_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM_TARGET="" -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./UnitTests
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-riscv64 -L /usr/riscv64-linux-gnu/ ./PerformanceTest -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
powerpcle_gcc:
runs-on: ubuntu-latest
name: PowerPC Little Endian GCC Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Update index
run: sudo apt-get update
- name: Install Cross Compiler
run: sudo apt-get install g++-14-powerpc64le-linux-gnu gcc-14-multilib g++-14-multilib qemu-user -y
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_POWERPC_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM_TARGET="" -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./UnitTests
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
# This is really slow so disabled for the moment
# - name: Test Ragdoll
# working-directory: ${{github.workspace}}/Build/Linux_Distribution
# run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
# - name: Test Pyramid
# working-directory: ${{github.workspace}}/Build/Linux_Distribution
# run: qemu-ppc64le -L /usr/powerpc64le-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
loongarch_gcc:
runs-on: ubuntu-latest
name: LoongArch GCC Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Update index
run: sudo apt-get update
- name: Install Cross Compiler
run: sudo apt-get install g++-14-loongarch64-linux-gnu gcc-14-multilib g++-14-multilib qemu-user -y
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh Distribution ${{env.UBUNTU_GCC_LOONGARCH_VERSION}} -DCROSS_COMPILE_ARM=ON -DCROSS_PLATFORM_DETERMINISTIC=ON -DCROSS_COMPILE_ARM_TARGET="" -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/Linux_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./UnitTests
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/Linux_Distribution
run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
# This is slow so disabled for the moment
# - name: Test Pyramid
# working-directory: ${{github.workspace}}/Build/Linux_Distribution
# run: qemu-loongarch64 -L /usr/loongarch64-linux-gnu/ ./PerformanceTest -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
emscripten:
runs-on: ubuntu-latest
name: Emscripten WASM32 Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Setup emsdk
uses: mymindstorm/setup-emsdk@v14
with:
version: ${{env.EMSCRIPTEN_VERSION}}
- name: Verify emsdk
run: emcc -v
- name: Setup Node.js ${{env.NODE_VERSION}}
uses: actions/setup-node@v6
with:
node-version: ${{env.NODE_VERSION}}
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_emscripten.sh Distribution -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node UnitTests.js
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node PerformanceTest.js -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node PerformanceTest.js -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node PerformanceTest.js -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node PerformanceTest.js -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}
emscripten64:
runs-on: ubuntu-latest
name: Emscripten WASM64 Determinism Check
steps:
- name: Checkout Code
uses: actions/checkout@v6
- name: Setup emsdk
uses: mymindstorm/setup-emsdk@v14
with:
version: ${{env.EMSCRIPTEN_VERSION}}
- name: Verify emsdk
run: emcc -v
- name: Setup Node.js ${{env.NODE_VERSION}}
uses: actions/setup-node@v6
with:
node-version: ${{env.NODE_VERSION}}
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_emscripten.sh Distribution -DCROSS_PLATFORM_DETERMINISTIC=ON -DTARGET_VIEWER=OFF -DTARGET_SAMPLES=OFF -DTARGET_HELLO_WORLD=OFF -DTARGET_UNIT_TESTS=ON -DTARGET_PERFORMANCE_TEST=ON -DJPH_USE_WASM64=ON
- name: Build
run: cmake --build ${{github.workspace}}/Build/WASM_Distribution -j $(nproc)
- name: Unit Tests
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node --experimental-wasm-memory64 UnitTests.js
- name: Test ConvexVsMesh
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node --experimental-wasm-memory64 PerformanceTest.js -q=LinearCast -t=max -s=ConvexVsMesh -validate_hash=${CONVEX_VS_MESH_HASH}
- name: Test Ragdoll
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node --experimental-wasm-memory64 PerformanceTest.js -q=LinearCast -t=max -s=Ragdoll -validate_hash=${RAGDOLL_HASH}
- name: Test Pyramid
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node --experimental-wasm-memory64 PerformanceTest.js -q=LinearCast -t=max -s=Pyramid -validate_hash=${PYRAMID_HASH}
- name: Test CharacterVirtual
working-directory: ${{github.workspace}}/Build/WASM_Distribution
run: node --experimental-wasm-memory64 PerformanceTest.js -q=Discrete -t=max -s=CharacterVirtual -validate_hash=${CHARACTER_VIRTUAL_HASH}

View File

@@ -0,0 +1,26 @@
name: Doxygen Action
on:
push:
branches: [ master ]
# Builds and deploys doxygen documentation
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Doxygen Action
uses: mattnotmitt/doxygen-action@v1.12.0
with:
doxyfile-path: "./Doxyfile"
working-directory: "."
- name: Deploy
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./Build/Doxygen
force_orphan: true

View File

@@ -0,0 +1,58 @@
name: Sonar Cloud
on:
push:
branches: [ master ]
paths-ignore:
- 'Docs/**'
- '**.md'
pull_request:
branches: [ master ]
paths-ignore:
- 'Docs/**'
- '**.md'
jobs:
check-secret:
runs-on: ubuntu-latest
outputs:
sonar-token: ${{ steps.sonar-token.outputs.defined }}
steps:
- id: sonar-token
if: ${{ env.SONAR_TOKEN != '' }}
run: echo "defined=true" >> $GITHUB_OUTPUT
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
build:
name: Build
needs: [check-secret]
if: needs.check-secret.outputs.sonar-token == 'true'
runs-on: ubuntu-latest
env:
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
CLANG_VERSION: 18
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Install build-wrapper
uses: SonarSource/sonarqube-scan-action/install-build-wrapper@v7
- name: Configure CMake
working-directory: ${{github.workspace}}/Build
run: ./cmake_linux_clang_gcc.sh ReleaseCoverage clang++-${{ env.CLANG_VERSION }}
- name: Run build-wrapper
run: build-wrapper-linux-x86-64 --out-dir ${{ env.BUILD_WRAPPER_OUT_DIR }} cmake --build ${{github.workspace}}/Build/Linux_ReleaseCoverage -j $(nproc)
- name: Run unit tests and create coverage report
working-directory: ${{github.workspace}}/Build/Linux_ReleaseCoverage
run: |
cmake --build . --target test -j $(nproc)
llvm-profdata-${{ env.CLANG_VERSION }} merge -sparse default.profraw -o default.profdata
llvm-cov-${{ env.CLANG_VERSION }} show -format=text UnitTests -instr-profile=default.profdata > coverage.txt
- name: Run sonar-scanner
uses: SonarSource/sonarqube-scan-action@v7
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
--define sonar.cfamily.compile-commands=${{ env.BUILD_WRAPPER_OUT_DIR }}/compile_commands.json --define sonar.cfamily.llvm-cov.reportPath=${{github.workspace}}/Build/Linux_ReleaseCoverage/coverage.txt

14
lib/All/JoltPhysics/.gitignore vendored Normal file
View File

@@ -0,0 +1,14 @@
.cache/
.clangd/
.fleet/
.idea/
.vs
.vscode
.DS_Store
/profile_chart_*.html
/stats*.html
/snapshot.bin
/*.jor
/detlog.txt
/Assets/Shaders/VK/*.spv
/Assets/Shaders/MTL/*.metallib

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,131 @@
TOS 1.00
declare SkeletalAnimation 1
mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint
declare SkeletalAnimation::AnimatedJoint 2
mJointName string
mKeyframes array instance SkeletalAnimation::Keyframe
declare SkeletalAnimation::Keyframe 3
mRotation quat
mTranslation vec3
mTime float
object SkeletalAnimation 00000001
23
"hipsBone"
1
-0.580907 0.662465 0.472926 -0.005293
-0.511629 0.123338 0.102563
0.000000
"R_Leg_sjnt_0"
1
0.994683 0.029515 -0.098649 -0.001901
-0.104854 -0.000224 0.000080
0.000000
"R_Leg_sjnt_1"
1
0.558236 0.082819 0.102170 0.819191
-0.000000 0.461809 0.000000
0.000000
"R_Foot_sjnt_0"
1
-0.415795 -0.025903 -0.285547 0.863080
0.000000 0.388174 0.000000
0.000000
"L_Leg_sjnt_0"
1
-0.096847 0.200302 0.053881 0.973446
0.104854 -0.000225 0.000080
0.000000
"L_Leg_sjnt_1"
1
0.625317 0.040626 -0.068376 0.776307
0.000000 -0.461808 0.000000
0.000000
"L_Foot_sjnt_0"
1
0.448028 0.016552 0.068711 -0.891222
-0.000001 -0.388173 -0.000000
0.000000
"C_Spine_sjnt_0"
1
0.031433 -0.000518 -0.001091 0.999505
-0.000000 0.055442 -0.000000
0.000000
"C_Spine_sjnt_1"
1
0.062272 0.003369 -0.006740 0.998031
-0.000000 0.049000 0.000000
0.000000
"C_Spine_sjnt_2"
1
0.093196 0.002904 -0.011009 0.995583
0.000000 0.049000 -0.000000
0.000000
"C_Spine_sjnt_4"
1
0.092643 0.004648 -0.011669 0.995620
0.000000 0.098001 0.000000
0.000000
"L_Clavicle_sjnt_0"
1
0.856473 -0.498143 0.097625 0.093688
0.007299 0.208857 0.030677
0.000000
"L_Arm_sjnt_0"
1
0.051326 0.583453 0.540585 0.603918
0.070455 -0.150703 0.005819
0.000000
"L_Arm_sjnt_1"
1
0.749181 -0.055037 -0.190752 0.631912
-0.000001 -0.260631 0.000000
0.000000
"L_Wrist_sjnt_0"
1
0.000688 -0.106898 0.049180 -0.993053
0.000007 -0.242273 0.000003
0.000000
"R_Clavicle_sjnt_0"
1
-0.076883 -0.107965 0.509223 0.850367
-0.007299 0.208857 0.030677
0.000000
"R_Arm_sjnt_0"
1
0.622778 -0.313061 0.547977 0.462453
-0.070458 0.150703 -0.005820
0.000000
"R_Arm_sjnt_1"
1
0.570264 -0.066970 -0.307114 0.758944
-0.000001 0.260632 -0.000000
0.000000
"R_Wrist_sjnt_0"
1
-0.107633 -0.182094 -0.068157 -0.974993
0.000000 0.242268 -0.000000
0.000000
"C_Neck_sjnt_0"
1
0.148132 0.042497 -0.052729 0.986646
0.000000 0.206349 -0.038118
0.000000
"C_Neck_sjnt_1"
1
-0.272572 0.021316 -0.048793 0.960661
-0.000000 0.054000 0.000000
0.000000
"C_Neck_sjnt_2"
1
-0.054183 -0.008292 -0.029041 0.998074
0.000000 0.054001 0.000000
0.000000
"C_Head_sjnt_0"
1
0.029305 0.088480 -0.137100 0.986162
0.000000 0.054000 -0.000000
0.000000

View File

@@ -0,0 +1,131 @@
TOS 1.00
declare SkeletalAnimation 1
mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint
declare SkeletalAnimation::AnimatedJoint 2
mJointName string
mKeyframes array instance SkeletalAnimation::Keyframe
declare SkeletalAnimation::Keyframe 3
mRotation quat
mTranslation vec3
mTime float
object SkeletalAnimation 00000001
23
"hipsBone"
1
0.580969 0.662434 0.472893 0.005230
0.778002 0.123338 0.121363
0.000000
"R_Leg_sjnt_0"
1
-0.979544 0.029720 -0.196361 -0.032433
-0.104854 -0.000224 0.000080
0.000000
"R_Leg_sjnt_1"
1
0.607629 0.107933 -0.014707 0.786715
-0.000000 0.461809 0.000000
0.000000
"R_Foot_sjnt_0"
1
-0.601232 0.033798 -0.038697 0.797421
0.000000 0.388174 0.000000
0.000000
"L_Leg_sjnt_0"
1
0.047909 -0.102469 -0.016701 0.993441
0.104854 -0.000225 0.000080
0.000000
"L_Leg_sjnt_1"
1
-0.491497 -0.068754 -0.078845 -0.864573
0.000000 -0.461808 0.000000
0.000000
"L_Foot_sjnt_0"
1
0.390997 -0.045090 0.421830 -0.816791
-0.000001 -0.388173 -0.000000
0.000000
"C_Spine_sjnt_0"
1
0.031433 0.000503 0.001038 0.999505
-0.000000 0.055442 0.000000
0.000000
"C_Spine_sjnt_1"
1
0.062272 -0.003358 0.006714 0.998031
-0.000000 0.049000 0.000000
0.000000
"C_Spine_sjnt_2"
1
0.093197 -0.002900 0.010957 0.995583
0.000000 0.049000 -0.000000
0.000000
"C_Spine_sjnt_4"
1
-0.092643 0.004635 -0.011603 -0.995621
0.000000 0.098001 -0.000000
0.000000
"L_Clavicle_sjnt_0"
1
-0.850361 0.509199 0.108046 -0.077000
0.007299 0.208857 0.030677
0.000000
"L_Arm_sjnt_0"
1
0.622797 -0.313095 0.547896 0.462500
0.070455 -0.150703 0.005820
0.000000
"L_Arm_sjnt_1"
1
-0.570276 0.066909 0.307092 -0.758948
-0.000001 -0.260631 -0.000000
0.000000
"L_Wrist_sjnt_0"
1
0.107622 0.182086 0.068178 0.974994
0.000007 -0.242273 0.000002
0.000000
"R_Clavicle_sjnt_0"
1
-0.093524 0.097713 0.498124 0.856492
-0.007299 0.208857 0.030677
0.000000
"R_Arm_sjnt_0"
1
0.051326 0.583528 0.540453 0.603963
-0.070458 0.150703 -0.005820
0.000000
"R_Arm_sjnt_1"
1
-0.749170 0.055080 0.190723 -0.631930
-0.000001 0.260632 0.000000
0.000000
"R_Wrist_sjnt_0"
1
-0.000687 0.106883 -0.049184 0.993054
0.000000 0.242268 -0.000000
0.000000
"C_Neck_sjnt_0"
1
0.148136 -0.042494 0.052637 0.986651
-0.000000 0.206349 -0.038118
0.000000
"C_Neck_sjnt_1"
1
-0.272569 -0.021317 0.048735 0.960665
0.000000 0.054001 0.000000
0.000000
"C_Neck_sjnt_2"
1
-0.054186 0.008273 0.028994 0.998076
0.000000 0.054001 0.000000
0.000000
"C_Head_sjnt_0"
1
0.029319 -0.088467 0.137075 0.986167
0.000000 0.054000 -0.000000
0.000000

View File

@@ -0,0 +1,131 @@
TOS 1.00
declare SkeletalAnimation 1
mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint
declare SkeletalAnimation::AnimatedJoint 2
mJointName string
mKeyframes array instance SkeletalAnimation::Keyframe
declare SkeletalAnimation::Keyframe 3
mRotation quat
mTranslation vec3
mTime float
object SkeletalAnimation 00000001
23
"hipsBone"
1
-0.253414 0.715602 -0.639670 0.120488
-0.113085 0.196785 -0.745374
0.000000
"R_Leg_sjnt_0"
1
-0.940855 0.027320 -0.183670 -0.283391
-0.104854 -0.000224 0.000080
0.000000
"R_Leg_sjnt_1"
1
0.732582 0.147108 -0.159629 0.645136
0.000000 0.461808 0.000000
0.000000
"R_Foot_sjnt_0"
1
-0.543008 -0.043463 0.072346 0.835476
0.000000 0.388174 0.000000
0.000000
"L_Leg_sjnt_0"
1
0.068071 -0.118484 0.183975 0.973386
0.104854 -0.000225 0.000080
0.000000
"L_Leg_sjnt_1"
1
0.258573 0.111198 0.041401 0.958677
0.000000 -0.461808 0.000000
0.000000
"L_Foot_sjnt_0"
1
-0.388386 -0.112771 -0.101140 0.908961
-0.000001 -0.388173 -0.000000
0.000000
"C_Spine_sjnt_0"
1
0.055573 0.116937 0.111430 0.985302
0.000000 0.055442 0.000000
0.000000
"C_Spine_sjnt_1"
1
0.037873 -0.006875 0.039870 0.998463
0.000000 0.049000 0.000000
0.000000
"C_Spine_sjnt_2"
1
0.057513 -0.003345 0.060246 0.996520
-0.000000 0.049000 -0.000000
0.000000
"C_Spine_sjnt_4"
1
0.058450 0.004523 0.059058 0.996532
0.000000 0.098001 0.000000
0.000000
"L_Clavicle_sjnt_0"
1
-0.788890 0.552170 0.262911 0.060331
0.007299 0.208857 0.030677
0.000000
"L_Arm_sjnt_0"
1
-0.242065 -0.166972 -0.682243 -0.669381
0.070455 -0.150703 0.005819
0.000000
"L_Arm_sjnt_1"
1
0.293529 -0.405618 0.091549 0.860775
-0.000001 -0.260631 0.000000
0.000000
"L_Wrist_sjnt_0"
1
-0.018010 -0.348798 0.050741 0.935650
0.000007 -0.242273 0.000002
0.000000
"R_Clavicle_sjnt_0"
1
0.006775 0.017839 0.047960 0.998667
-0.007299 0.208857 0.030677
0.000000
"R_Arm_sjnt_0"
1
-0.057684 0.616002 0.098229 0.779464
-0.070458 0.150703 -0.005820
0.000000
"R_Arm_sjnt_1"
1
0.360633 -0.148932 -0.172766 0.904387
-0.000001 0.260632 -0.000000
0.000000
"R_Wrist_sjnt_0"
1
-0.073581 -0.376053 0.364024 -0.848915
0.000000 0.242268 -0.000000
0.000000
"C_Neck_sjnt_0"
1
0.208406 0.070974 -0.020180 0.975255
-0.000000 0.206349 -0.038118
0.000000
"C_Neck_sjnt_1"
1
-0.214167 0.070851 -0.015228 0.974105
-0.000000 0.054000 0.000000
0.000000
"C_Neck_sjnt_2"
1
0.013069 0.069734 0.004440 0.997470
0.000000 0.054001 0.000000
0.000000
"C_Head_sjnt_0"
1
-0.011944 -0.296295 0.045126 0.953955
0.000000 0.054000 0.000000
0.000000

View File

@@ -0,0 +1,131 @@
TOS 1.00
declare SkeletalAnimation 1
mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint
declare SkeletalAnimation::AnimatedJoint 2
mJointName string
mKeyframes array instance SkeletalAnimation::Keyframe
declare SkeletalAnimation::Keyframe 3
mRotation quat
mTranslation vec3
mTime float
object SkeletalAnimation 00000001
23
"hipsBone"
1
-0.006100 0.596243 0.801570 0.044078
0.158819 0.119626 0.352148
0.000000
"R_Leg_sjnt_0"
1
0.987181 -0.088292 0.091403 0.096563
-0.104854 -0.000224 0.000080
0.000000
"R_Leg_sjnt_1"
1
0.518738 0.091591 -0.028278 0.849542
-0.000000 0.461809 -0.000000
0.000000
"R_Foot_sjnt_0"
1
-0.446222 -0.027605 0.081585 0.890768
0.000000 0.388174 0.000000
0.000000
"L_Leg_sjnt_0"
1
-0.004252 0.099688 0.099358 0.990036
0.104854 -0.000225 0.000080
0.000000
"L_Leg_sjnt_1"
1
0.332849 0.214890 0.078034 0.914847
0.000000 -0.461808 0.000000
0.000000
"L_Foot_sjnt_0"
1
-0.353947 -0.242590 0.059009 0.901326
-0.000001 -0.388173 -0.000000
0.000000
"C_Spine_sjnt_0"
1
0.040410 -0.000191 -0.035615 0.998548
0.000000 0.055442 -0.000000
0.000000
"C_Spine_sjnt_1"
1
0.078135 -0.005104 -0.037889 0.996210
0.000000 0.049000 0.000000
0.000000
"C_Spine_sjnt_2"
1
0.117588 0.001930 -0.056543 0.991450
-0.000000 0.049000 0.000000
0.000000
"C_Spine_sjnt_4"
1
0.116613 0.022537 -0.060157 0.991098
0.000000 0.098001 -0.000000
0.000000
"L_Clavicle_sjnt_0"
1
0.820798 -0.461866 -0.218872 0.255080
0.007299 0.208857 0.030677
0.000000
"L_Arm_sjnt_0"
1
-0.018640 0.550280 0.313113 0.773825
0.070455 -0.150703 0.005819
0.000000
"L_Arm_sjnt_1"
1
0.502820 -0.083351 -0.423467 0.748933
-0.000001 -0.260631 0.000000
0.000000
"L_Wrist_sjnt_0"
1
-0.127266 -0.436122 0.115708 -0.883296
0.000007 -0.242273 0.000002
0.000000
"R_Clavicle_sjnt_0"
1
-0.254409 -0.049344 0.561585 0.785789
-0.007299 0.208857 0.030677
0.000000
"R_Arm_sjnt_0"
1
-0.297704 0.588370 -0.433881 -0.613954
-0.070457 0.150703 -0.005820
0.000000
"R_Arm_sjnt_1"
1
0.300035 -0.109892 -0.134453 0.937990
-0.000001 0.260632 -0.000000
0.000000
"R_Wrist_sjnt_0"
1
-0.074182 0.083861 -0.170265 0.979017
0.000000 0.242268 -0.000000
0.000000
"C_Neck_sjnt_0"
1
0.095959 0.024101 0.021582 0.994859
0.000000 0.206349 -0.038118
0.000000
"C_Neck_sjnt_1"
1
-0.330366 0.030108 0.013511 0.943276
0.000000 0.054001 0.000000
0.000000
"C_Neck_sjnt_2"
1
-0.116595 0.020825 0.025026 0.992646
0.000000 0.054001 0.000000
0.000000
"C_Head_sjnt_0"
1
-0.225003 0.005643 -0.043020 0.973392
-0.000000 0.054000 0.000000
0.000000

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,131 @@
TOS 1.00
declare SkeletalAnimation 1
mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint
declare SkeletalAnimation::AnimatedJoint 2
mJointName string
mKeyframes array instance SkeletalAnimation::Keyframe
declare SkeletalAnimation::Keyframe 3
mRotation quat
mTranslation vec3
mTime float
object SkeletalAnimation 00000001
23
"hipsBone"
1
0.000000 1.000000 0.000000 0.000000
0.000000 0.931122 -0.023035
0.000000
"R_Leg_sjnt_0"
1
0.999643 -0.023767 -0.000290 0.012213
-0.104854 -0.000224 0.000080
0.000000
"R_Leg_sjnt_1"
1
0.060151 0.000000 -0.000000 0.998189
-0.000000 0.461809 -0.000000
0.000000
"R_Foot_sjnt_0"
1
-0.546992 0.011039 -0.021050 0.836800
0.000000 0.388174 0.000000
0.000000
"L_Leg_sjnt_0"
1
-0.012213 -0.000290 0.023767 0.999643
0.104854 -0.000225 0.000080
0.000000
"L_Leg_sjnt_1"
1
0.060151 0.000000 -0.000000 0.998189
0.000000 -0.461807 0.000000
0.000000
"L_Foot_sjnt_0"
1
-0.546992 0.011039 -0.021050 0.836800
-0.000001 -0.388173 -0.000000
0.000000
"C_Spine_sjnt_0"
1
0.000000 0.000000 0.000000 1.000000
0.000000 0.055442 -0.000000
0.000000
"C_Spine_sjnt_1"
1
0.000000 0.000000 0.000000 1.000000
0.000000 0.049000 0.000000
0.000000
"C_Spine_sjnt_2"
1
0.000000 0.000000 0.000000 1.000000
0.000000 0.049000 -0.000000
0.000000
"C_Spine_sjnt_4"
1
0.000000 0.000000 0.000000 1.000000
0.000000 0.098001 0.000000
0.000000
"L_Clavicle_sjnt_0"
1
0.761695 -0.617813 -0.144681 0.131128
0.007299 0.208857 0.030677
0.000000
"L_Arm_sjnt_0"
1
0.199254 -0.056730 0.463827 0.861362
0.070456 -0.150703 0.005820
0.000000
"L_Arm_sjnt_1"
1
0.184809 -0.000000 -0.000000 0.982774
-0.000001 -0.260631 0.000000
0.000000
"L_Wrist_sjnt_0"
1
-0.000000 0.000000 0.000000 1.000000
0.000007 -0.242273 0.000002
0.000000
"R_Clavicle_sjnt_0"
1
-0.131128 -0.144681 0.617813 0.761696
-0.007299 0.208857 0.030677
0.000000
"R_Arm_sjnt_0"
1
0.199254 -0.056730 0.463827 0.861362
-0.070458 0.150703 -0.005820
0.000000
"R_Arm_sjnt_1"
1
0.184809 0.000000 0.000000 0.982774
-0.000001 0.260632 -0.000000
0.000000
"R_Wrist_sjnt_0"
1
-0.000000 0.000000 -0.000000 1.000000
0.000000 0.242268 -0.000000
0.000000
"C_Neck_sjnt_0"
1
0.216440 0.000000 0.000000 0.976296
0.000000 0.206349 -0.038118
0.000000
"C_Neck_sjnt_1"
1
-0.216440 0.000000 0.000000 0.976296
0.000000 0.054001 0.000000
0.000000
"C_Neck_sjnt_2"
1
0.000000 0.000000 0.000000 1.000000
0.000000 0.054001 0.000000
0.000000
"C_Head_sjnt_0"
1
0.000000 0.000000 0.000000 1.000000
0.000000 0.054000 -0.000000
0.000000

View File

@@ -0,0 +1,373 @@
TOS 1.00
declare SkeletalAnimation 2
mAnimatedJoints array instance SkeletalAnimation::AnimatedJoint
mIsLooping bool
declare SkeletalAnimation::AnimatedJoint 2
mJointName string
mKeyframes array instance SkeletalAnimation::Keyframe
declare SkeletalAnimation::Keyframe 3
mRotation quat
mTranslation vec3
mTime float
object SkeletalAnimation 00000001
71
"rootBone"
1
-0.707106829 0 0 0.707106769
0 0 0
0
"C_Neck_sjnt_2"
1
0 0 0 1
6.31036857e-18 0.0540000014 0
0
"R_Clavicle_sjnt_0"
1
-0.131128147 -0.144681439 0.617813051 0.761695385
-0.00729848538 0.20885624 0.0306759924
0
"R_Leg_sjnt_0"
1
0.999642909 -0.0237673745 -0.000290388998 0.0122136045
-0.104853801 -0.000224408359 7.95794331e-05
0
"C_Spine_sjnt_4"
1
0 0 0 1
4.77984621e-18 0.0489999987 3.10862448e-17
0
"L_Middle_sjnt_3"
1
0 0 0 1
5.85307589e-07 -0.0180757623 3.17060227e-07
0
"C_Neck_sjnt_0"
1
0.21643962 0 0 0.976296008
-6.33361028e-18 0.206347629 -0.0381180719
0
"C_Head_sjnt_0"
1
0 0 0 1
6.31036857e-18 0.0540000014 2.8532731e-16
0
"C_Spine_sjnt_1"
1
0 0 0 1
4.77984621e-18 0.0489999987 0
0
"L_Ring_sjnt_0"
1
0.119370371 -0.698211312 0.204397932 0.675628006
-0.006254646 -0.0797718689 0.0093988115
0
"R_Index_sjnt_2"
1
0.175203487 0 0 0.984532237
3.01980666e-16 0.0204999987 0
0
"R_Ring_sjnt_0"
1
0.119370371 -0.698211312 0.204397932 0.675628006
0.00625085598 0.0797746703 -0.00940056238
0
"R_Index_sjnt_0"
1
-0.19517909 0.755869865 -0.161748767 -0.603658199
-0.00134941039 0.0782186612 0.028039448
0
"R_Pinky_sjnt_1"
1
0.22303848 0 0 0.974809647
-3.55271347e-16 0.0372027382 0
0
"L_Pinky_sjnt_1"
1
0.22303848 0 0 0.974809647
3.70620683e-07 -0.0372028351 1.38079258e-07
0
"R_Middle_sjnt_0"
1
0.156041026 -0.732423544 0.191366434 0.63449657
0.00616463134 0.0818372741 0.0097120041
0
"R_Arm_sjnt_1"
1
0.184809059 0 0 0.982774496
-1.42108544e-16 0.260629684 4.440892e-18
0
"L_Foot_sjnt_2"
1
0 0 0 1
-1.7763568e-17 -0.0488719977 4.88498128e-17
0
"L_Pinky_sjnt_2"
1
0.0992502794 0 0 0.99506253
-1.85520605e-07 -0.0186209753 6.46735657e-07
0
"L_Ring_sjnt_3"
1
0 0 0 1
4.95807114e-07 -0.0159507934 1.36332858e-07
0
"L_Clavicle_sjnt_0"
1
0.761695385 -0.617813051 -0.144681439 0.131128147
0.00729848957 0.208856419 0.0306760129
0
"L_Pinky_sjnt_3"
1
0 0 0 1
3.66131957e-07 -0.0121525498 -7.50564652e-07
0
"R_Thumb_sjnt_3"
1
0 0 0 1
7.1054272e-17 0.0181292463 -2.62012622e-16
0
"R_Foot_sjnt_2"
1
0 0 0 1
3.5527136e-17 0.0488717034 -3.99680272e-17
0
"L_Leg_sjnt_0"
1
-0.0122135505 -0.000290387718 0.0237673745 0.999642909
0.104854003 -0.000224642019 7.96136592e-05
0
"L_Middle_sjnt_1"
1
0.184680417 0 0 0.982798636
-2.44896114e-07 -0.0481087901 -7.74885621e-07
0
"L_Pinky_sjnt_0"
1
0.105012663 -0.656231523 0.23035267 0.710823596
-0.00242854073 -0.0733879432 0.0260373093
0
"L_Wrist_sjnt_0"
1
0 0 0 1
6.57227065e-06 -0.242271721 2.52947029e-06
0
"R_Ring_sjnt_1"
1
0.251216322 0 0 0.967930973
-5.3290704e-17 0.0443951264 -5.68434176e-16
0
"R_Pinky_sjnt_2"
1
0.0992502794 0 0 0.99506253
-1.06581408e-16 0.0186204202 -7.1054272e-17
0
"L_Prop_fjnt_0"
1
0 1 0 -4.37113883e-08
0.0276746862 -0.0656316727 -0.000328583526
0
"L_Middle_sjnt_2"
1
0.157416984 0 0 0.987532258
-6.02384603e-07 -0.0248495787 6.76881555e-08
0
"R_Middle_sjnt_1"
1
0.184680417 0 0 0.982798636
-6.39488435e-16 0.048108764 1.42108544e-16
0
"L_Leg_sjnt_1"
1
0.060151346 0 0 0.99818927
2.61005539e-07 -0.461806506 -3.93129014e-08
0
"L_Thumb_sjnt_2"
1
-0.0012165627 0 0 0.999999285
5.15941792e-07 -0.0251661409 -5.85450152e-07
0
"L_Ring_sjnt_1"
1
0.251216322 0 0 0.967930973
3.12667623e-07 -0.0443952158 -5.95922245e-07
0
"R_Foot_sjnt_1"
1
-0.251680881 0 0 0.967810273
-8.88178367e-17 0.133286357 -0.00287180441
0
"C_Neck_sjnt_1"
1
-0.21643962 0 0 0.976296008
5.18627479e-18 0.0540000014 0
0
"R_Ring_sjnt_3"
1
0 0 0 1
-5.3290704e-17 0.0159499999 -7.1054272e-17
0
"L_Index_sjnt_0"
1
-0.19517909 0.755869865 -0.161748767 -0.603658199
0.00134612026 -0.0782155693 -0.0280411374
0
"L_Index_sjnt_1"
1
0.229845911 0 0 0.973227024
7.62208856e-07 -0.041899953 -1.70619145e-07
0
"R_Thumb_sjnt_1"
1
0.0813905671 0 0 0.996682286
-2.13162816e-16 0.0301780477 1.42108544e-16
0
"L_Thumb_sjnt_3"
1
0 0 0 1
-7.5862016e-07 -0.0181290414 5.47535365e-07
0
"R_Index_sjnt_3"
1
0 0 0 1
3.10862442e-16 0.019439999 5.3290704e-17
0
"R_Middle_sjnt_2"
1
0.157416984 0 0 0.987532258
-1.7763568e-17 0.0248499978 7.1054272e-17
0
"hipsBone"
1
3.09086232e-08 0.707106829 0.707106829 3.09086232e-08
0 0.0230353847 0.931121647
0
"R_Pinky_sjnt_3"
1
0 0 0 1
7.1054272e-17 0.0121525582 3.5527136e-17
0
"L_Foot_sjnt_0"
1
-0.546992362 0.0110395309 -0.0210499652 0.836800098
-9.25209633e-07 -0.388170779 2.78088415e-08
0
"L_Index_sjnt_2"
1
0.175203487 0 0 0.984532237
8.53871498e-08 -0.0204997063 3.77475885e-07
0
"C_Spine_sjnt_3"
1
0 0 0 1
4.77984621e-18 0.0489999987 1.7763568e-17
0
"R_Foot_sjnt_0"
1
-0.546992362 0.0110395309 -0.0210499652 0.836800098
0 0.38817063 0
0
"R_Ring_sjnt_2"
1
0.121089756 0 0 0.992641568
-5.3290704e-17 0.0234420039 1.42108544e-16
0
"R_Wrist_sjnt_0"
1
0 0 0 1
4.26325632e-16 0.24226594 -3.90798503e-16
0
"L_Middle_sjnt_0"
1
0.156041026 -0.732423544 0.191366434 0.63449657
-0.00616830075 -0.0818345174 -0.0097129494
0
"L_Ring_sjnt_2"
1
0.121089756 0 0 0.992641568
1.66412786e-08 -0.0234416053 4.04103446e-07
0
"L_Index_sjnt_3"
1
0 0 0 1
-2.39056641e-09 -0.0194404367 -1.39765135e-07
0
"C_Spine_sjnt_0"
1
0 0 0 1
3.76215184e-18 0.0554419272 8.881784e-18
0
"L_Arm_sjnt_1"
1
0.184809059 0 0 0.982774496
-1.14686986e-06 -0.260628074 -4.16461354e-08
0
"R_Leg_sjnt_1"
1
0.060151346 0 0 0.99818927
3.5527136e-17 0.461806893 8.881784e-18
0
"R_Thumb_sjnt_2"
1
-0.0012165627 0 0 0.999999285
4.26325632e-16 0.0251665488 5.10702581e-16
0
"L_Foot_sjnt_1"
1
-0.251680881 0 0 0.967810273
5.3290704e-17 -0.133285969 0.00287160906
0
"R_Pinky_sjnt_0"
1
0.105012663 -0.656231523 0.23035267 0.710823596
0.00242519076 0.0733913928 -0.0260387883
0
"R_Middle_sjnt_3"
1
0 0 0 1
2.48689959e-16 0.0180759132 -7.1054272e-17
0
"L_Thumb_sjnt_1"
1
0.0813905671 0 0 0.996682286
-5.24074721e-07 -0.0301787555 -2.92531354e-07
0
"C_Spine_sjnt_2"
1
0 0 0 1
4.7798458e-18 0.0489999987 -2.22044592e-17
0
"R_Prop_fjnt_0"
1
0 0 0 1
-0.0276775807 0.0656346902 0.000327039947
0
"L_Thumb_sjnt_0"
1
0.416852266 -0.817598581 -0.284677148 -0.27699402
0.020829184 -0.0239574499 -0.0221176092
0
"R_Thumb_sjnt_0"
1
0.416852266 -0.817598581 -0.284677148 -0.27699402
-0.0208326261 0.0239606146 0.0221159924
0
"L_Arm_sjnt_0"
1
0.199253842 -0.0567296185 0.463827372 0.861361623
0.0704552606 -0.150702849 0.00581921311
0
"R_Arm_sjnt_0"
1
0.199253842 -0.0567296185 0.463827372 0.861361623
-0.0704575405 0.150702029 -0.00581940683
0
"R_Index_sjnt_1"
1
0.229845911 0 0 0.973227024
-5.3290704e-17 0.0419000015 1.42108544e-16
0
true

View File

@@ -0,0 +1,153 @@
TOS 1.00
declare Skeleton 1
mJoints array instance Skeleton::Joint
declare Skeleton::Joint 2
mName string
mParentName string
object Skeleton 00000001
71
"rootBone"
""
"hipsBone"
"rootBone"
"C_Spine_sjnt_0"
"hipsBone"
"C_Spine_sjnt_1"
"C_Spine_sjnt_0"
"C_Spine_sjnt_2"
"C_Spine_sjnt_1"
"C_Spine_sjnt_3"
"C_Spine_sjnt_2"
"C_Spine_sjnt_4"
"C_Spine_sjnt_3"
"R_Clavicle_sjnt_0"
"C_Spine_sjnt_4"
"R_Arm_sjnt_0"
"R_Clavicle_sjnt_0"
"R_Arm_sjnt_1"
"R_Arm_sjnt_0"
"R_Wrist_sjnt_0"
"R_Arm_sjnt_1"
"R_Thumb_sjnt_0"
"R_Wrist_sjnt_0"
"R_Thumb_sjnt_1"
"R_Thumb_sjnt_0"
"R_Thumb_sjnt_2"
"R_Thumb_sjnt_1"
"R_Thumb_sjnt_3"
"R_Thumb_sjnt_2"
"R_Index_sjnt_0"
"R_Wrist_sjnt_0"
"R_Index_sjnt_1"
"R_Index_sjnt_0"
"R_Index_sjnt_2"
"R_Index_sjnt_1"
"R_Index_sjnt_3"
"R_Index_sjnt_2"
"R_Middle_sjnt_0"
"R_Wrist_sjnt_0"
"R_Middle_sjnt_1"
"R_Middle_sjnt_0"
"R_Middle_sjnt_2"
"R_Middle_sjnt_1"
"R_Middle_sjnt_3"
"R_Middle_sjnt_2"
"R_Ring_sjnt_0"
"R_Wrist_sjnt_0"
"R_Ring_sjnt_1"
"R_Ring_sjnt_0"
"R_Ring_sjnt_2"
"R_Ring_sjnt_1"
"R_Ring_sjnt_3"
"R_Ring_sjnt_2"
"R_Pinky_sjnt_0"
"R_Wrist_sjnt_0"
"R_Pinky_sjnt_1"
"R_Pinky_sjnt_0"
"R_Pinky_sjnt_2"
"R_Pinky_sjnt_1"
"R_Pinky_sjnt_3"
"R_Pinky_sjnt_2"
"R_Prop_fjnt_0"
"R_Wrist_sjnt_0"
"C_Neck_sjnt_0"
"C_Spine_sjnt_4"
"C_Neck_sjnt_1"
"C_Neck_sjnt_0"
"C_Neck_sjnt_2"
"C_Neck_sjnt_1"
"C_Head_sjnt_0"
"C_Neck_sjnt_2"
"L_Clavicle_sjnt_0"
"C_Spine_sjnt_4"
"L_Arm_sjnt_0"
"L_Clavicle_sjnt_0"
"L_Arm_sjnt_1"
"L_Arm_sjnt_0"
"L_Wrist_sjnt_0"
"L_Arm_sjnt_1"
"L_Thumb_sjnt_0"
"L_Wrist_sjnt_0"
"L_Thumb_sjnt_1"
"L_Thumb_sjnt_0"
"L_Thumb_sjnt_2"
"L_Thumb_sjnt_1"
"L_Thumb_sjnt_3"
"L_Thumb_sjnt_2"
"L_Index_sjnt_0"
"L_Wrist_sjnt_0"
"L_Index_sjnt_1"
"L_Index_sjnt_0"
"L_Index_sjnt_2"
"L_Index_sjnt_1"
"L_Index_sjnt_3"
"L_Index_sjnt_2"
"L_Middle_sjnt_0"
"L_Wrist_sjnt_0"
"L_Middle_sjnt_1"
"L_Middle_sjnt_0"
"L_Middle_sjnt_2"
"L_Middle_sjnt_1"
"L_Middle_sjnt_3"
"L_Middle_sjnt_2"
"L_Ring_sjnt_0"
"L_Wrist_sjnt_0"
"L_Ring_sjnt_1"
"L_Ring_sjnt_0"
"L_Ring_sjnt_2"
"L_Ring_sjnt_1"
"L_Ring_sjnt_3"
"L_Ring_sjnt_2"
"L_Pinky_sjnt_0"
"L_Wrist_sjnt_0"
"L_Pinky_sjnt_1"
"L_Pinky_sjnt_0"
"L_Pinky_sjnt_2"
"L_Pinky_sjnt_1"
"L_Pinky_sjnt_3"
"L_Pinky_sjnt_2"
"L_Prop_fjnt_0"
"L_Wrist_sjnt_0"
"R_Leg_sjnt_0"
"hipsBone"
"R_Leg_sjnt_1"
"R_Leg_sjnt_0"
"R_Foot_sjnt_0"
"R_Leg_sjnt_1"
"R_Foot_sjnt_1"
"R_Foot_sjnt_0"
"R_Foot_sjnt_2"
"R_Foot_sjnt_1"
"L_Leg_sjnt_0"
"hipsBone"
"L_Leg_sjnt_1"
"L_Leg_sjnt_0"
"L_Foot_sjnt_0"
"L_Leg_sjnt_1"
"L_Foot_sjnt_1"
"L_Foot_sjnt_0"
"L_Foot_sjnt_2"
"L_Foot_sjnt_1"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
The following assets were taken from Horizon Zero Dawn:
terrain1.bof and terrain2.bof contain the 'Mothers Heart' scene
convex_hulls.bin contains point clouds used as the source for convex hulls
heightfield1.bin contains a single 'tile' of terrain data
Human.tof and Human/*.tof contain the Aloy ragdoll setup and a couple of sample animations mapped onto the ragdoll
Permission was granted by Guerrilla Games to release this under the same MIT license as the rest of the project.

View File

@@ -0,0 +1,165 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
6. Revised Versions of the GNU Lesser General Public License.
The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.
If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

View File

@@ -0,0 +1,3 @@
Race tracks taken from: https://github.com/TUMFTM/racetrack-database
See LICENSE.txt for license for these race tracks.

View File

@@ -0,0 +1,865 @@
# x_m,y_m,w_tr_right_m,w_tr_left_m
-1.683339,-1.878198,5.074,5.271
0.151452,2.772507,5.099,5.295
1.986397,7.423128,5.125,5.319
3.821455,12.073677,5.150,5.343
5.656587,16.724166,5.175,5.367
7.491752,21.374607,5.200,5.391
9.326909,26.025014,5.226,5.415
11.162019,30.675397,5.251,5.439
12.997042,35.325770,5.276,5.462
14.831936,39.976144,5.301,5.486
16.666662,44.626532,5.327,5.510
18.501180,49.276946,5.352,5.534
20.335449,53.927398,5.377,5.558
22.169429,58.577901,5.402,5.582
24.003080,63.228467,5.428,5.606
25.836362,67.879107,5.453,5.630
27.669244,72.529833,5.478,5.654
29.501738,77.180644,5.503,5.678
31.333865,81.831537,5.529,5.702
33.165645,86.482511,5.554,5.726
34.997100,91.133563,5.579,5.750
36.828251,95.784691,5.604,5.774
38.659117,100.435894,5.630,5.798
40.489721,105.087167,5.655,5.822
42.320083,109.738510,5.680,5.845
44.150224,114.389921,5.706,5.869
45.980165,119.041396,5.731,5.893
47.809927,123.692934,5.756,5.917
49.639531,128.344532,5.781,5.941
51.468997,132.996189,5.807,5.965
53.298346,137.647901,5.832,5.989
55.127600,142.299668,5.857,6.013
56.956780,146.951486,5.882,6.037
58.785905,151.603353,5.908,6.061
60.614998,156.255268,5.933,6.085
62.444078,160.907227,5.958,6.109
64.273168,165.559229,5.983,6.133
66.102287,170.211271,6.009,6.157
67.931458,174.863352,6.034,6.181
69.760699,179.515468,6.059,6.205
71.590034,184.167619,6.084,6.229
73.419481,188.819800,6.110,6.252
75.249063,193.472011,6.135,6.276
77.078801,198.124249,6.160,6.300
78.908714,202.776512,6.185,6.324
80.738825,207.428798,6.211,6.348
82.569153,212.081104,6.236,6.372
84.399720,216.733428,6.261,6.396
86.230547,221.385768,6.286,6.420
88.061655,226.038121,6.312,6.444
89.893064,230.690486,6.337,6.468
91.724795,235.342861,6.362,6.492
93.556870,239.995242,6.388,6.516
95.389309,244.647628,6.413,6.540
97.222133,249.300016,6.438,6.564
99.055363,253.952405,6.463,6.588
100.889021,258.604792,6.489,6.612
102.723126,263.257175,6.514,6.635
104.557699,267.909552,6.539,6.659
106.392763,272.561920,6.564,6.683
108.228337,277.214277,6.590,6.707
110.064442,281.866621,6.615,6.731
111.901100,286.518949,6.640,6.755
113.738331,291.171261,6.665,6.779
115.576156,295.823552,6.691,6.803
117.414596,300.475821,6.716,6.827
119.253672,305.128067,6.741,6.851
121.093405,309.780286,6.766,6.875
122.933816,314.432476,6.792,6.899
124.774925,319.084635,6.816,6.923
126.651699,323.714334,6.669,7.006
128.738887,328.209430,6.522,7.089
131.246183,332.435357,6.522,6.226
134.379060,336.257639,6.092,6.062
138.182494,339.545392,5.677,6.289
142.495039,342.172347,5.848,6.230
147.141834,344.013044,6.038,6.065
151.981474,345.037089,5.885,6.029
156.945280,345.420747,6.132,5.821
161.974127,345.367418,6.058,5.924
167.008204,345.065211,5.807,6.178
171.977944,344.482774,5.789,6.230
176.806475,343.424482,5.869,6.193
181.417183,341.694720,5.987,6.121
185.749365,339.242190,5.914,6.218
189.762356,336.197440,5.948,6.207
193.416775,332.702620,6.070,6.105
196.666967,328.885936,6.207,5.965
199.423062,324.777280,5.742,6.233
201.576184,320.364273,5.591,6.084
203.023502,315.640256,5.646,5.825
203.748491,310.681493,5.785,5.710
203.798453,305.625580,5.801,5.643
203.222189,300.611552,5.651,5.577
202.092240,295.744077,5.363,5.608
200.571389,290.997188,5.182,5.600
198.843858,286.313886,5.142,5.539
197.076965,281.642398,5.102,5.479
195.319515,276.967602,5.062,5.418
193.569611,272.290054,5.022,5.358
191.825166,267.610371,4.982,5.297
190.084090,262.929171,4.942,5.236
188.344295,258.247069,4.903,5.176
186.603693,253.564683,4.863,5.115
184.860195,248.882630,4.823,5.055
183.111713,244.201525,4.783,4.994
181.356158,239.521985,4.743,4.934
179.591443,234.844628,4.703,4.873
177.815478,230.170070,4.664,4.813
176.026175,225.498928,4.624,4.752
174.221466,220.831812,4.584,4.692
172.402865,216.168291,4.544,4.631
170.579569,211.505702,4.504,4.571
168.761766,206.841091,4.464,4.510
166.959647,202.171505,4.424,4.450
165.183399,197.493991,4.385,4.389
163.443211,192.805596,4.345,4.329
161.749274,188.103367,4.305,4.268
160.111775,183.384351,4.190,4.272
158.540904,178.645594,4.021,4.323
157.046851,173.884144,4.128,4.318
155.639803,169.097048,4.247,4.300
154.329950,164.281352,4.406,4.212
153.127482,159.434104,4.493,4.107
152.040841,154.553794,4.555,3.996
151.071739,149.644481,4.460,4.003
150.220267,144.711567,4.332,4.045
149.486513,139.760453,4.374,4.113
148.870566,134.796540,4.291,4.230
148.372516,129.825230,4.183,4.336
147.992434,124.851911,4.140,4.294
147.726990,119.879465,4.200,4.285
147.565511,114.905358,4.313,4.294
147.496360,109.926350,4.273,4.313
147.507905,104.939200,4.175,4.335
147.588509,99.940667,4.077,4.357
147.726539,94.927512,4.132,4.316
147.909661,89.896706,4.206,4.266
148.099958,84.853004,4.281,4.217
148.227166,79.811000,4.355,4.167
148.218945,74.785923,4.352,4.137
148.002954,69.792997,4.281,4.126
147.506854,64.847451,4.275,4.132
146.658303,59.964509,4.310,4.205
145.388472,55.160670,4.205,4.498
143.678977,50.470695,4.146,4.624
141.549258,45.943039,4.172,4.747
139.019670,41.626490,4.262,4.889
136.110565,37.569834,4.418,4.983
132.842300,33.821858,4.451,4.599
129.235227,30.431348,4.451,4.398
125.312766,27.436881,4.418,4.409
121.120144,24.804331,4.355,4.278
116.712056,22.468034,4.270,4.348
112.143230,20.362198,4.184,4.427
107.468396,18.421033,4.099,4.507
102.742286,16.578745,4.048,4.545
98.019629,14.769545,4.095,4.463
93.342513,12.942394,4.142,4.381
88.704216,11.103219,4.189,4.300
84.086235,9.271696,4.236,4.218
79.470070,7.467499,4.284,4.136
74.837217,5.710302,4.331,4.055
70.169176,4.019780,4.278,4.105
65.447529,2.415476,4.160,4.240
60.669630,0.892412,4.042,4.375
55.866984,-0.607489,4.038,4.423
51.075564,-2.149247,4.236,4.314
46.331341,-3.797882,4.434,4.205
41.670287,-5.618416,4.632,4.096
37.128373,-7.675868,4.635,4.242
32.743211,-10.035645,4.623,4.392
28.612354,-12.777269,4.606,4.509
24.909111,-15.998105,4.888,4.185
21.811325,-19.796169,4.673,4.211
19.439269,-24.181707,4.222,4.435
17.789594,-28.976489,4.444,4.545
16.842948,-33.977887,4.564,4.573
16.579252,-39.007227,4.818,4.705
16.975636,-43.977492,5.060,4.754
18.008569,-48.823586,5.137,4.584
19.654514,-53.480415,4.896,4.452
21.889938,-57.882883,4.802,4.511
24.691308,-61.965894,4.744,4.612
28.034938,-65.664418,4.670,4.685
31.872160,-68.924115,4.762,4.498
36.101648,-71.713185,4.797,4.469
40.615402,-74.002680,4.672,4.788
45.309127,-75.747824,4.864,4.612
50.128975,-76.688113,5.130,4.321
55.040283,-76.579563,4.952,4.341
59.946477,-75.810565,4.752,4.290
64.789826,-74.708054,4.543,4.150
69.577538,-73.344400,4.460,4.132
74.320695,-71.776786,4.424,4.159
79.030380,-70.062396,4.388,4.186
83.717677,-68.258412,4.352,4.213
88.393668,-66.422017,4.316,4.240
93.068996,-64.607786,4.280,4.268
97.748404,-62.835178,4.244,4.295
102.432408,-61.098522,4.208,4.322
107.121432,-59.391600,4.172,4.349
111.815902,-57.708192,4.136,4.377
116.516242,-56.042081,4.100,4.404
121.222878,-54.387047,4.064,4.431
125.936245,-52.737906,4.028,4.458
130.656867,-51.096499,3.992,4.485
135.385298,-49.467589,3.956,4.513
140.122098,-47.855949,4.007,4.456
144.867821,-46.266353,4.087,4.372
149.623025,-44.703573,4.167,4.288
154.388268,-43.172382,4.247,4.203
159.164104,-41.677554,4.298,4.120
163.951092,-40.223862,4.334,4.036
168.749789,-38.816079,4.370,3.953
173.560750,-37.458978,4.405,3.869
178.384534,-36.157332,4.254,4.031
183.221696,-34.915914,4.064,4.244
188.072792,-33.739486,3.874,4.456
192.938144,-32.630868,3.876,4.512
197.817589,-31.588837,3.951,4.510
202.710900,-30.611665,4.026,4.507
207.617853,-29.697620,4.115,4.497
212.538223,-28.844975,4.216,4.481
217.471784,-28.052000,4.345,4.438
222.418294,-27.317078,4.570,4.297
227.376885,-26.642445,4.794,4.157
232.345927,-26.035039,4.806,4.423
237.323747,-25.502088,4.795,4.733
242.308667,-25.050816,4.804,4.968
247.299013,-24.688449,4.870,4.985
252.293109,-24.422213,4.936,5.003
257.289037,-24.259478,4.961,5.020
262.283974,-24.208158,4.971,5.038
267.274885,-24.276290,4.800,5.101
272.258736,-24.471913,4.628,5.164
277.232491,-24.803068,4.505,5.156
282.193116,-25.277793,4.486,5.000
287.137588,-25.904062,4.466,4.845
292.064716,-26.679188,4.474,4.579
296.977157,-27.578124,4.488,4.286
301.878054,-28.573005,4.503,3.993
306.770548,-29.635967,4.404,3.982
311.657780,-30.739145,4.285,4.017
316.542892,-31.854674,4.167,4.051
321.428992,-32.955036,4.096,4.095
326.318026,-34.024611,4.133,4.158
331.210506,-35.062414,4.169,4.222
336.106862,-36.068357,4.205,4.286
341.007518,-37.042351,4.225,4.300
345.912902,-37.984309,4.219,4.240
350.823442,-38.894142,4.214,4.181
355.739563,-39.771763,4.209,4.121
360.661693,-40.617082,4.204,4.062
365.590258,-41.430014,4.198,4.003
370.525686,-42.210468,4.181,3.995
375.468403,-42.958358,4.141,4.092
380.418836,-43.673594,4.100,4.190
385.377412,-44.356090,4.194,4.121
390.344264,-45.001791,4.371,3.948
395.317475,-45.579028,4.443,3.916
400.294259,-46.044395,4.418,4.015
405.271826,-46.354443,4.385,4.118
410.247385,-46.465723,4.282,4.258
415.218148,-46.334784,4.178,4.398
420.181323,-45.918177,4.224,4.298
425.133987,-45.197781,4.323,4.108
430.072713,-44.251288,4.344,4.070
434.993954,-43.179046,4.316,4.125
439.894009,-42.078959,4.281,4.177
444.763823,-40.963691,4.231,4.223
449.587719,-39.740469,4.201,4.249
454.349640,-38.310236,4.266,4.175
459.038639,-36.617037,4.326,4.089
463.654604,-34.696295,4.371,3.972
468.198805,-32.595092,4.383,3.886
472.673103,-30.359601,3.976,4.184
477.087549,-28.023365,3.990,4.182
481.458197,-25.610672,4.119,4.098
485.800998,-23.145258,4.249,4.014
490.123304,-20.638911,4.379,3.930
494.421825,-18.088632,4.371,3.952
498.692612,-15.490497,4.249,4.062
502.931711,-12.840586,4.126,4.173
507.135172,-10.134977,4.004,4.283
511.299044,-7.369750,4.089,4.144
515.423163,-4.546296,4.176,4.003
519.521744,-1.686182,4.263,3.862
523.612415,1.184239,4.166,3.903
527.712803,4.038614,3.966,4.047
531.840536,6.850589,3.819,4.161
536.013241,9.593812,3.869,4.167
540.248511,12.241964,4.004,4.106
544.557752,14.774904,4.127,4.031
548.939186,17.185655,4.102,4.026
553.389343,19.468929,4.048,4.004
557.904756,21.619437,3.997,4.001
562.481955,23.631891,3.949,4.032
567.117471,25.501002,3.951,4.119
571.807805,27.221672,3.978,4.235
576.548384,28.795486,4.095,4.320
581.333297,30.232374,4.258,4.389
586.156546,31.542788,4.369,4.434
591.012137,32.737181,4.398,4.439
595.894073,33.826004,4.428,4.443
600.796359,34.819711,4.342,4.407
605.713335,35.726460,4.185,4.346
610.644123,36.522011,4.027,4.284
615.591378,37.158137,4.053,4.379
620.557840,37.586044,4.089,4.483
625.544317,37.776802,4.175,4.408
630.544207,37.777603,4.261,4.331
635.549133,37.653867,4.305,4.272
640.551532,37.465775,4.266,4.246
645.549590,37.236469,4.228,4.220
650.543968,36.973127,4.189,4.195
655.535339,36.682867,4.151,4.169
660.524373,36.372805,4.113,4.143
665.511744,36.050057,4.205,4.209
670.498122,35.721741,4.298,4.277
675.484179,35.394973,4.392,4.344
680.470588,35.076869,4.485,4.411
685.458019,34.774546,4.578,4.478
690.447146,34.495121,4.672,4.545
695.438639,34.245711,4.765,4.612
700.433170,34.033432,4.859,4.679
705.431408,33.865362,4.912,4.711
710.433423,33.741608,4.827,4.620
715.437997,33.647216,4.743,4.530
720.443740,33.565270,4.658,4.439
725.449265,33.478855,4.574,4.348
730.453184,33.371056,4.489,4.258
735.454108,33.224956,4.405,4.167
740.450587,33.023502,4.286,4.211
745.438840,32.744590,4.134,4.392
750.412147,32.359732,3.981,4.572
755.363599,31.840032,3.878,4.650
760.286286,31.156595,3.899,4.616
765.173300,30.280525,4.058,4.459
770.017731,29.182924,4.231,4.252
774.811717,27.841028,4.260,4.180
779.543702,26.255866,4.236,4.158
784.201230,24.434244,4.119,4.268
788.771846,22.382966,4.080,4.251
793.243097,20.108838,4.203,3.975
797.602526,17.618665,4.216,4.021
801.837680,14.919252,4.222,4.103
805.936103,12.017403,4.226,4.225
809.885342,8.919924,4.235,4.237
813.672940,5.633620,4.249,4.191
817.286445,2.165295,4.283,4.160
820.713399,-1.478244,4.332,4.094
823.941350,-5.290194,4.351,4.032
826.957948,-9.263686,3.868,4.384
829.754717,-13.389548,3.924,4.341
832.328095,-17.655687,4.092,4.272
834.674835,-22.049819,4.085,4.457
836.791692,-26.559662,4.044,4.341
838.675419,-31.172934,3.951,4.294
840.322770,-35.877353,3.873,4.297
841.730499,-40.660635,3.942,4.140
842.895359,-45.510499,4.032,4.063
843.814104,-50.414663,4.113,4.038
844.483488,-55.360842,4.079,4.147
844.900265,-60.336757,4.221,4.148
845.061188,-65.330123,4.272,4.158
844.963011,-70.328658,4.222,4.184
844.603481,-75.319993,4.123,4.224
843.987444,-80.291123,4.229,4.096
843.122839,-85.228773,4.214,4.084
842.017620,-90.119662,4.126,4.175
840.679739,-94.950513,4.017,4.390
839.117149,-99.708047,4.070,4.387
837.337803,-104.378985,4.045,4.431
835.352725,-108.954255,4.002,4.435
833.184895,-113.441146,3.951,4.377
830.860195,-117.850926,3.900,4.319
828.404511,-122.194866,3.849,4.261
825.843726,-126.484231,3.798,4.204
823.203724,-130.730292,3.811,4.173
820.510358,-134.944303,3.852,4.154
817.783350,-139.135229,3.894,4.135
815.029104,-143.307047,3.935,4.115
812.252270,-147.463082,3.976,4.096
809.457503,-151.606658,4.018,4.077
806.649452,-155.741097,4.043,4.067
803.832772,-159.869725,4.035,4.073
801.012113,-163.995864,4.028,4.078
798.192128,-168.122838,4.021,4.084
795.377469,-172.253972,4.014,4.090
792.572788,-176.392589,4.006,4.096
789.782738,-180.542012,4.016,4.084
787.011970,-184.705566,4.062,4.035
784.265137,-188.886574,4.108,3.985
781.548155,-193.088638,4.154,3.936
778.871892,-197.316448,4.187,3.912
776.248431,-201.574960,4.213,3.905
773.689850,-205.869131,4.226,3.963
771.208232,-210.203916,4.218,4.136
768.815657,-214.584272,4.326,4.338
766.524154,-219.015133,4.587,4.577
764.335653,-223.497073,4.847,4.816
762.229923,-228.021102,5.174,5.141
760.183793,-232.576960,5.514,5.484
758.174091,-237.154385,5.854,5.826
756.177647,-241.743118,6.194,6.169
754.171288,-246.332898,6.534,6.512
752.132210,-250.913573,6.875,6.854
750.051474,-255.479086,6.929,6.928
747.937913,-260.028628,6.935,6.955
745.801525,-264.561735,6.941,6.983
743.652310,-269.077941,6.947,7.011
741.500266,-273.576782,6.953,7.038
739.355392,-278.057794,6.959,7.062
737.227192,-282.522008,6.957,6.995
735.117889,-286.992512,6.954,6.927
733.024156,-291.509202,6.952,6.860
730.942527,-296.112395,6.949,6.793
728.838033,-300.796250,6.947,6.725
726.550918,-305.372085,6.816,6.838
723.890534,-309.605955,6.657,7.124
720.690584,-313.287789,6.919,7.008
716.962948,-316.382204,6.936,6.563
712.798664,-318.931422,6.330,7.057
708.289129,-320.978019,6.497,7.072
703.525739,-322.564569,6.586,7.140
698.599890,-323.733646,6.635,7.236
693.602980,-324.527826,7.056,6.882
688.609823,-324.991490,7.328,6.647
683.631014,-325.176014,7.024,6.932
678.661600,-325.134471,6.721,7.218
673.696625,-324.919930,6.832,7.143
668.731136,-324.585464,6.953,7.059
663.760179,-324.184143,7.018,7.031
658.778821,-323.768904,6.947,7.138
653.786008,-323.367672,6.875,7.244
648.789087,-322.954242,6.929,7.170
643.796500,-322.495333,7.011,7.054
638.816689,-321.957669,7.093,6.939
633.858098,-321.307969,7.122,6.893
628.929168,-320.512955,7.079,6.942
624.038261,-319.539882,7.030,6.996
619.190736,-318.375604,6.783,7.274
614.388155,-317.031783,6.537,7.552
609.631833,-315.521672,6.759,7.267
604.923088,-313.858527,7.030,6.923
600.263236,-312.055602,7.123,6.884
595.653594,-310.126153,7.190,6.891
591.095298,-308.081827,7.140,6.938
586.588781,-305.928036,7.021,7.008
582.134305,-303.668679,6.893,7.134
577.732134,-301.307655,6.749,7.356
573.382530,-298.848864,6.804,7.293
569.085755,-296.296203,6.932,7.126
564.842074,-293.653573,7.060,6.958
560.651748,-290.924873,7.039,6.927
556.515040,-288.114002,6.945,6.961
552.432213,-285.224858,6.856,6.995
548.403530,-282.261342,6.963,7.018
544.429254,-279.227351,7.071,7.042
540.509648,-276.126786,7.045,7.143
536.646058,-272.962511,6.921,7.301
532.879958,-269.699105,6.796,7.459
529.303798,-266.252512,6.800,7.424
526.013321,-262.535532,6.982,7.125
523.106293,-258.472868,7.046,6.955
520.695052,-254.074915,6.962,6.947
518.898317,-249.389602,6.882,7.008
517.832775,-244.470660,6.727,7.126
517.585351,-239.453276,6.760,7.127
518.220595,-234.533878,6.960,6.976
519.802514,-229.910386,6.644,7.012
522.334949,-225.730525,6.697,7.030
525.588832,-221.947703,6.723,7.076
529.278745,-218.468315,6.755,7.116
533.145068,-215.207132,7.006,6.938
537.111602,-212.138479,7.135,6.844
541.181603,-209.262478,6.882,7.016
545.358650,-206.579354,6.630,7.189
549.646318,-204.089333,6.583,7.245
554.048185,-201.792641,6.776,7.166
558.567826,-199.689504,6.962,7.066
563.205028,-197.787576,7.142,6.952
567.944951,-196.123167,7.104,6.998
572.769226,-194.739502,6.943,7.135
577.659441,-193.677704,6.782,7.272
582.595565,-192.902588,6.832,7.157
587.555526,-192.282824,6.891,7.032
592.517155,-191.681168,6.950,6.907
597.464671,-191.000804,7.008,6.782
602.396071,-190.232186,7.067,6.656
607.311150,-189.377138,7.078,6.584
612.209702,-188.437485,6.754,6.880
617.091520,-187.415051,6.736,6.909
621.956399,-186.311660,6.885,6.792
626.804133,-185.129135,6.995,6.731
631.634516,-183.869300,7.081,6.705
636.447341,-182.533981,7.031,6.778
641.242404,-181.125000,6.926,6.889
646.019497,-179.644181,6.822,7.001
650.778415,-178.093350,6.911,6.915
655.518952,-176.474329,7.032,6.797
660.238753,-174.785985,7.152,6.679
664.927143,-173.015721,7.144,6.677
669.571431,-171.148166,6.832,6.948
674.158924,-169.167949,6.519,7.220
678.676932,-167.059698,6.652,7.059
683.112764,-164.808044,7.010,6.679
687.453615,-162.397497,7.367,6.300
691.665455,-159.790647,7.318,6.459
695.668265,-156.902579,7.235,6.631
699.376004,-153.642165,7.092,6.768
702.706093,-149.926475,6.881,6.943
705.625359,-145.789734,6.597,7.155
708.137497,-141.353584,6.711,7.081
710.246759,-136.740516,6.913,6.949
711.945681,-132.028298,7.275,6.712
713.212100,-127.238602,7.271,6.600
714.022926,-122.389546,7.233,6.584
714.355066,-117.499248,7.183,6.721
714.185428,-112.585823,7.151,6.829
713.490920,-107.667391,7.131,6.916
712.250145,-102.766987,6.929,6.984
710.465448,-97.976495,6.713,7.023
708.156646,-93.438475,7.013,6.892
705.343960,-89.296659,7.275,6.739
702.055119,-85.657540,7.465,6.546
698.346209,-82.486891,7.379,6.678
694.280014,-79.717258,6.996,7.159
689.919273,-77.291912,7.046,7.064
685.326428,-75.228159,7.189,6.846
680.563791,-73.574557,7.133,6.834
675.693600,-72.379388,7.037,6.865
670.765309,-71.627906,7.088,6.839
665.801465,-71.172685,7.209,6.787
660.821215,-70.849523,7.175,6.820
655.840166,-70.524248,6.962,6.952
650.860639,-70.175383,6.793,6.998
645.881844,-69.807882,6.707,6.881
640.902988,-69.426694,6.621,6.763
635.923278,-69.036773,6.535,6.646
630.941924,-68.643070,6.449,6.528
625.958135,-68.250537,6.363,6.411
620.971472,-67.864144,6.277,6.293
615.982233,-67.488901,6.192,6.175
610.990811,-67.129823,6.093,6.032
605.997598,-66.791923,5.973,5.842
601.002986,-66.480216,5.852,5.652
596.007369,-66.199717,5.791,5.575
591.011138,-65.955440,5.734,5.551
586.014686,-65.752400,5.650,5.580
581.018405,-65.595610,5.565,5.609
576.022688,-65.490086,5.481,5.638
571.027927,-65.440841,5.534,5.590
566.034515,-65.452890,5.705,5.477
561.042844,-65.531248,5.876,5.364
556.053237,-65.679211,5.782,5.483
551.065759,-65.893563,5.623,5.659
546.080411,-66.169548,6.015,6.094
541.097195,-66.502409,6.506,6.577
536.116113,-66.887389,6.677,6.700
531.137167,-67.319731,6.553,6.493
526.160360,-67.794679,6.430,6.286
521.185692,-68.307476,6.306,6.079
516.213166,-68.853365,6.182,5.872
511.242784,-69.427590,6.058,5.664
506.274548,-70.025392,5.935,5.457
501.308460,-70.642017,5.896,5.416
496.344521,-71.272706,6.002,5.654
491.382740,-71.912804,6.107,5.892
486.423329,-72.561174,6.212,6.130
481.466756,-73.221067,6.318,6.368
476.513507,-73.896006,6.381,6.522
471.564064,-74.589515,6.270,6.332
466.618913,-75.305119,6.158,6.142
461.678537,-76.046340,6.047,5.952
456.743421,-76.816702,5.936,5.762
451.814048,-77.619730,5.824,5.571
446.890904,-78.458948,5.713,5.381
441.974472,-79.337878,5.621,5.239
437.065236,-80.260046,5.595,5.267
432.163681,-81.228974,5.570,5.295
427.270291,-82.248187,5.544,5.323
422.385725,-83.321083,5.518,5.351
417.511874,-84.450176,5.515,5.365
412.651163,-85.637598,5.517,5.377
407.806015,-86.885480,5.518,5.389
402.978857,-88.195952,5.519,5.401
398.172113,-89.571147,5.520,5.432
393.388210,-91.013195,5.520,5.463
388.624995,-92.511917,5.520,5.495
383.862725,-94.009802,5.520,5.526
379.077425,-95.437961,5.521,5.557
374.245857,-96.729642,5.517,5.554
369.371439,-97.895329,5.513,5.549
364.491077,-99.042554,5.509,5.545
359.643725,-100.284782,5.510,5.531
354.853551,-101.692947,5.546,5.452
350.112834,-103.246245,5.582,5.374
345.409702,-104.911934,5.649,5.341
340.732282,-106.657272,6.154,5.936
336.068704,-108.449520,6.658,6.530
331.407095,-110.255934,7.163,7.125
326.735781,-112.044283,7.177,7.169
322.050266,-113.800844,6.985,6.979
317.355113,-115.535242,6.792,6.790
312.655461,-117.258596,6.599,6.601
307.956451,-118.982024,6.406,6.412
303.263223,-120.716643,6.214,6.223
298.580917,-122.473571,6.021,6.034
293.913754,-124.262073,5.828,5.844
289.262383,-126.084219,5.816,5.779
284.626590,-127.940337,6.002,5.849
280.006160,-129.830753,6.188,5.920
275.400879,-131.755795,6.375,5.990
270.810530,-133.715789,6.561,6.061
266.234900,-135.711061,6.747,6.131
261.673772,-137.741939,6.916,6.212
257.126933,-139.808750,6.896,6.400
252.594167,-141.911820,6.877,6.588
248.075260,-144.051476,6.857,6.776
243.569995,-146.228045,6.837,6.964
239.078159,-148.441854,6.817,7.152
234.599579,-150.693176,6.982,7.327
230.135655,-152.980290,7.413,7.481
225.689788,-155.298942,7.844,7.636
221.265508,-157.644713,8.276,7.791
216.866345,-160.013182,8.296,7.724
212.495831,-162.399931,8.123,7.553
208.157494,-164.800540,7.950,7.382
203.853512,-167.212860,7.777,7.211
199.566372,-169.667776,7.604,7.039
195.263682,-172.221124,7.431,6.868
190.912688,-174.929357,7.258,6.697
186.487983,-177.724071,7.078,6.551
181.992983,-180.047120,6.789,6.764
177.438175,-181.220304,6.203,6.945
172.870986,-180.656336,6.339,7.243
168.602825,-178.417542,6.636,6.911
165.010059,-174.878403,7.071,6.883
162.122071,-170.618791,7.181,6.805
159.750492,-166.150514,7.152,6.715
157.558157,-161.658507,7.123,6.624
155.189121,-157.286255,7.093,6.533
152.359584,-153.167518,7.064,6.443
149.057687,-149.399398,6.723,6.016
145.335628,-146.070364,6.197,5.369
141.245605,-143.268882,5.813,5.483
136.839819,-141.083420,5.615,5.650
132.170467,-139.602446,5.607,5.556
127.289888,-138.914002,5.642,5.330
122.272466,-139.038412,5.431,5.067
117.238594,-139.854676,5.131,4.831
112.314429,-141.224096,4.822,4.830
107.623328,-143.018285,4.742,4.689
103.250890,-145.248063,4.859,4.429
99.255600,-148.024195,4.934,4.321
95.696653,-151.455576,4.649,4.520
92.675502,-155.519437,4.528,4.649
90.344115,-160.035622,4.667,4.596
88.856582,-164.815027,4.703,4.596
88.243937,-169.712396,4.812,4.552
88.286263,-174.671888,4.788,4.429
88.733063,-179.648558,4.874,4.484
89.374668,-184.606576,4.960,4.568
90.149191,-189.543100,4.955,4.566
91.028177,-194.462751,4.950,4.564
91.983170,-199.370149,4.945,4.563
92.985716,-204.269917,4.940,4.561
94.007360,-209.166676,4.934,4.559
95.019718,-214.065034,4.929,4.558
96.004832,-218.967894,4.924,4.556
96.965993,-223.874674,4.919,4.555
97.909081,-228.784371,4.914,4.553
98.839976,-233.695981,4.909,4.551
99.764556,-238.608499,4.904,4.550
100.688701,-243.520920,4.898,4.548
101.618197,-248.432257,4.893,4.546
102.555794,-253.342056,4.888,4.545
103.500606,-258.250500,4.883,4.543
104.451536,-263.157814,4.878,4.542
105.407485,-268.064218,4.873,4.540
106.367355,-272.969935,4.868,4.538
107.330048,-277.875186,4.862,4.537
108.294464,-282.780196,4.857,4.535
109.259505,-287.685184,4.852,4.534
110.224074,-292.590374,4.847,4.532
111.187071,-297.495988,4.842,4.530
112.147399,-302.402248,4.837,4.529
113.103958,-307.309376,4.832,4.527
114.055651,-312.217594,4.826,4.525
115.001615,-317.127073,4.821,4.524
115.942575,-322.037631,4.816,4.522
116.879915,-326.948942,4.811,4.521
117.815019,-331.860680,4.806,4.519
118.749270,-336.772517,4.801,4.517
119.684054,-341.684127,4.795,4.516
120.620755,-346.595184,4.790,4.514
121.560757,-351.505360,4.785,4.512
122.505444,-356.414329,4.780,4.511
123.456202,-361.321764,4.775,4.509
124.414414,-366.227339,4.770,4.508
125.381466,-371.130726,4.765,4.506
126.358740,-376.031599,4.759,4.504
127.347598,-380.929639,4.754,4.503
128.345619,-385.825549,4.749,4.501
129.342556,-390.722158,4.744,4.499
130.327190,-395.622556,4.739,4.498
131.288302,-400.529834,4.734,4.496
132.214673,-405.447083,4.729,4.495
133.095083,-410.377394,4.683,4.590
133.917404,-415.323672,4.623,4.720
134.638923,-420.282615,4.457,4.923
135.179778,-425.243373,4.219,5.176
135.457865,-430.194646,4.345,5.035
135.391083,-435.125129,4.520,4.798
134.897330,-440.023522,4.740,4.485
133.894503,-444.878522,4.971,4.557
132.336811,-449.670650,5.116,4.317
130.312854,-454.350171,4.238,4.713
127.942320,-458.860348,4.493,4.717
125.341900,-463.144788,4.832,4.446
122.528502,-467.158487,4.407,5.135
119.398290,-470.870226,4.540,5.028
115.840666,-474.249571,4.692,4.847
111.815858,-477.260106,4.796,4.742
107.429983,-479.853095,4.993,4.883
102.807143,-481.978282,5.144,4.671
98.066603,-483.592601,4.997,4.496
93.262909,-484.749189,4.346,5.074
88.404440,-485.569807,4.216,5.375
83.498594,-486.176411,4.600,5.017
78.553298,-486.648841,4.913,4.723
73.577110,-487.016376,4.873,4.744
68.578624,-487.305298,4.832,4.766
63.566436,-487.541894,4.792,4.787
58.549142,-487.752447,4.752,4.809
53.535335,-487.963242,4.712,4.830
48.533082,-488.198747,4.671,4.852
43.543349,-488.459106,4.631,4.874
38.562040,-488.727119,4.591,4.895
33.584950,-488.985207,4.550,4.917
28.607876,-489.215796,4.510,4.938
23.626611,-489.401309,4.494,4.943
18.636952,-489.524170,4.592,4.871
13.635726,-489.567169,4.690,4.799
8.626745,-489.515580,4.791,4.707
3.616713,-489.355702,4.905,4.545
-1.387655,-489.073840,4.987,4.419
-6.379646,-488.656298,4.833,4.555
-11.352545,-488.089378,4.681,4.685
-16.299639,-487.359387,4.536,4.799
-21.214299,-486.455141,4.463,4.853
-26.090210,-485.374739,4.576,4.755
-30.921130,-484.118421,4.582,4.768
-35.700815,-482.686423,4.522,4.848
-40.423024,-481.078986,4.498,4.905
-45.081514,-479.296347,4.487,4.948
-49.670044,-477.338752,4.568,4.879
-54.182501,-475.207651,4.658,4.797
-58.613044,-472.906981,4.765,4.683
-62.955864,-470.440990,4.830,4.597
-67.205151,-467.813926,4.720,4.624
-71.355097,-465.030037,4.629,4.657
-75.399894,-462.093570,4.584,4.703
-79.333732,-459.008773,4.692,4.591
-83.150802,-455.779894,4.790,4.495
-86.845296,-452.411181,4.700,4.618
-90.411405,-448.906882,4.501,4.828
-93.843320,-445.271244,4.212,5.105
-97.135232,-441.508515,4.502,4.728
-100.281332,-437.622943,4.692,4.503
-103.276256,-433.619225,4.728,4.508
-106.116287,-429.503720,4.668,4.614
-108.798092,-425.283176,4.513,4.820
-111.318336,-420.964340,4.574,4.784
-113.673685,-416.553957,4.674,4.702
-115.860805,-412.058774,4.708,4.695
-117.876362,-407.485538,4.717,4.717
-119.717022,-402.840995,4.673,4.745
-121.379450,-398.131892,4.621,4.775
-122.860313,-393.364976,4.599,4.922
-124.156277,-388.546993,4.577,5.032
-125.264006,-383.684690,4.597,5.061
-126.180169,-378.784813,4.804,4.887
-126.901541,-373.854095,4.655,4.719
-127.428676,-368.898797,4.516,4.593
-127.766739,-363.924608,4.611,4.602
-127.921173,-358.937177,4.759,4.548
-127.897419,-353.942159,4.812,4.530
-127.700923,-348.945204,4.747,4.569
-127.337126,-343.951966,4.658,4.569
-126.811472,-338.968095,4.573,4.609
-126.129405,-333.999244,4.504,4.716
-125.296367,-329.051065,4.458,4.741
-124.317801,-324.129210,4.449,4.630
-123.199151,-319.239331,4.425,4.558
-121.945861,-314.387080,4.321,4.705
-120.563372,-309.578109,4.473,4.754
-119.058509,-304.816715,4.680,4.769
-117.447588,-300.097872,4.829,4.771
-115.750915,-295.412637,4.896,4.761
-113.988811,-290.752052,4.861,4.736
-112.181595,-286.107159,4.826,4.711
-110.349589,-281.469002,4.791,4.686
-108.513113,-276.828622,4.777,4.683
-106.688459,-272.178978,4.764,4.680
-104.876827,-267.520207,4.750,4.677
-103.075877,-262.854130,4.737,4.675
-101.283269,-258.182568,4.724,4.672
-99.496665,-253.507342,4.711,4.669
-97.713725,-248.830270,4.697,4.667
-95.932114,-244.153172,4.684,4.664
-94.150161,-239.477307,4.671,4.662
-92.367593,-234.802761,4.658,4.659
-90.584313,-230.129473,4.645,4.656
-88.800227,-225.457379,4.631,4.654
-87.015237,-220.786419,4.618,4.651
-85.229248,-216.116530,4.605,4.648
-83.442165,-211.447649,4.592,4.646
-81.653892,-206.779715,4.578,4.643
-79.864331,-202.112665,4.565,4.640
-78.073389,-197.446438,4.552,4.638
-76.280968,-192.780971,4.539,4.635
-74.486973,-188.116201,4.526,4.632
-72.691308,-183.452068,4.512,4.630
-70.893901,-178.788517,4.499,4.627
-69.094771,-174.125528,4.486,4.624
-67.293958,-169.463089,4.473,4.622
-65.491502,-164.801187,4.459,4.619
-63.687444,-160.139812,4.446,4.617
-61.881823,-155.478949,4.433,4.614
-60.074681,-150.818588,4.420,4.611
-58.266057,-146.158715,4.407,4.609
-56.455991,-141.499319,4.393,4.606
-54.644524,-136.840387,4.380,4.603
-52.831697,-132.181907,4.367,4.601
-51.017548,-127.523866,4.392,4.625
-49.202119,-122.866254,4.417,4.649
-47.385450,-118.209056,4.443,4.672
-45.567581,-113.552261,4.468,4.696
-43.748552,-108.895857,4.493,4.720
-41.928403,-104.239831,4.518,4.744
-40.107175,-99.584172,4.544,4.768
-38.284908,-94.928866,4.569,4.792
-36.461642,-90.273902,4.594,4.816
-34.637418,-85.619267,4.619,4.840
-32.812275,-80.964950,4.645,4.864
-30.986254,-76.310937,4.670,4.888
-29.159396,-71.657217,4.695,4.912
-27.331740,-67.003778,4.720,4.936
-25.503326,-62.350606,4.746,4.960
-23.674195,-57.697691,4.771,4.984
-21.844388,-53.045019,4.796,5.008
-20.013943,-48.392578,4.821,5.032
-18.182903,-43.740356,4.847,5.055
-16.351306,-39.088341,4.872,5.079
-14.519193,-34.436521,4.897,5.103
-12.686605,-29.784883,4.923,5.127
-10.853581,-25.133415,4.948,5.151
-9.020162,-20.482105,4.973,5.175
-7.186388,-15.830941,4.998,5.199
-5.352300,-11.179909,5.024,5.223
-3.517937,-6.528999,5.049,5.247
1 # x_m y_m w_tr_right_m w_tr_left_m
2 -1.683339 -1.878198 5.074 5.271
3 0.151452 2.772507 5.099 5.295
4 1.986397 7.423128 5.125 5.319
5 3.821455 12.073677 5.150 5.343
6 5.656587 16.724166 5.175 5.367
7 7.491752 21.374607 5.200 5.391
8 9.326909 26.025014 5.226 5.415
9 11.162019 30.675397 5.251 5.439
10 12.997042 35.325770 5.276 5.462
11 14.831936 39.976144 5.301 5.486
12 16.666662 44.626532 5.327 5.510
13 18.501180 49.276946 5.352 5.534
14 20.335449 53.927398 5.377 5.558
15 22.169429 58.577901 5.402 5.582
16 24.003080 63.228467 5.428 5.606
17 25.836362 67.879107 5.453 5.630
18 27.669244 72.529833 5.478 5.654
19 29.501738 77.180644 5.503 5.678
20 31.333865 81.831537 5.529 5.702
21 33.165645 86.482511 5.554 5.726
22 34.997100 91.133563 5.579 5.750
23 36.828251 95.784691 5.604 5.774
24 38.659117 100.435894 5.630 5.798
25 40.489721 105.087167 5.655 5.822
26 42.320083 109.738510 5.680 5.845
27 44.150224 114.389921 5.706 5.869
28 45.980165 119.041396 5.731 5.893
29 47.809927 123.692934 5.756 5.917
30 49.639531 128.344532 5.781 5.941
31 51.468997 132.996189 5.807 5.965
32 53.298346 137.647901 5.832 5.989
33 55.127600 142.299668 5.857 6.013
34 56.956780 146.951486 5.882 6.037
35 58.785905 151.603353 5.908 6.061
36 60.614998 156.255268 5.933 6.085
37 62.444078 160.907227 5.958 6.109
38 64.273168 165.559229 5.983 6.133
39 66.102287 170.211271 6.009 6.157
40 67.931458 174.863352 6.034 6.181
41 69.760699 179.515468 6.059 6.205
42 71.590034 184.167619 6.084 6.229
43 73.419481 188.819800 6.110 6.252
44 75.249063 193.472011 6.135 6.276
45 77.078801 198.124249 6.160 6.300
46 78.908714 202.776512 6.185 6.324
47 80.738825 207.428798 6.211 6.348
48 82.569153 212.081104 6.236 6.372
49 84.399720 216.733428 6.261 6.396
50 86.230547 221.385768 6.286 6.420
51 88.061655 226.038121 6.312 6.444
52 89.893064 230.690486 6.337 6.468
53 91.724795 235.342861 6.362 6.492
54 93.556870 239.995242 6.388 6.516
55 95.389309 244.647628 6.413 6.540
56 97.222133 249.300016 6.438 6.564
57 99.055363 253.952405 6.463 6.588
58 100.889021 258.604792 6.489 6.612
59 102.723126 263.257175 6.514 6.635
60 104.557699 267.909552 6.539 6.659
61 106.392763 272.561920 6.564 6.683
62 108.228337 277.214277 6.590 6.707
63 110.064442 281.866621 6.615 6.731
64 111.901100 286.518949 6.640 6.755
65 113.738331 291.171261 6.665 6.779
66 115.576156 295.823552 6.691 6.803
67 117.414596 300.475821 6.716 6.827
68 119.253672 305.128067 6.741 6.851
69 121.093405 309.780286 6.766 6.875
70 122.933816 314.432476 6.792 6.899
71 124.774925 319.084635 6.816 6.923
72 126.651699 323.714334 6.669 7.006
73 128.738887 328.209430 6.522 7.089
74 131.246183 332.435357 6.522 6.226
75 134.379060 336.257639 6.092 6.062
76 138.182494 339.545392 5.677 6.289
77 142.495039 342.172347 5.848 6.230
78 147.141834 344.013044 6.038 6.065
79 151.981474 345.037089 5.885 6.029
80 156.945280 345.420747 6.132 5.821
81 161.974127 345.367418 6.058 5.924
82 167.008204 345.065211 5.807 6.178
83 171.977944 344.482774 5.789 6.230
84 176.806475 343.424482 5.869 6.193
85 181.417183 341.694720 5.987 6.121
86 185.749365 339.242190 5.914 6.218
87 189.762356 336.197440 5.948 6.207
88 193.416775 332.702620 6.070 6.105
89 196.666967 328.885936 6.207 5.965
90 199.423062 324.777280 5.742 6.233
91 201.576184 320.364273 5.591 6.084
92 203.023502 315.640256 5.646 5.825
93 203.748491 310.681493 5.785 5.710
94 203.798453 305.625580 5.801 5.643
95 203.222189 300.611552 5.651 5.577
96 202.092240 295.744077 5.363 5.608
97 200.571389 290.997188 5.182 5.600
98 198.843858 286.313886 5.142 5.539
99 197.076965 281.642398 5.102 5.479
100 195.319515 276.967602 5.062 5.418
101 193.569611 272.290054 5.022 5.358
102 191.825166 267.610371 4.982 5.297
103 190.084090 262.929171 4.942 5.236
104 188.344295 258.247069 4.903 5.176
105 186.603693 253.564683 4.863 5.115
106 184.860195 248.882630 4.823 5.055
107 183.111713 244.201525 4.783 4.994
108 181.356158 239.521985 4.743 4.934
109 179.591443 234.844628 4.703 4.873
110 177.815478 230.170070 4.664 4.813
111 176.026175 225.498928 4.624 4.752
112 174.221466 220.831812 4.584 4.692
113 172.402865 216.168291 4.544 4.631
114 170.579569 211.505702 4.504 4.571
115 168.761766 206.841091 4.464 4.510
116 166.959647 202.171505 4.424 4.450
117 165.183399 197.493991 4.385 4.389
118 163.443211 192.805596 4.345 4.329
119 161.749274 188.103367 4.305 4.268
120 160.111775 183.384351 4.190 4.272
121 158.540904 178.645594 4.021 4.323
122 157.046851 173.884144 4.128 4.318
123 155.639803 169.097048 4.247 4.300
124 154.329950 164.281352 4.406 4.212
125 153.127482 159.434104 4.493 4.107
126 152.040841 154.553794 4.555 3.996
127 151.071739 149.644481 4.460 4.003
128 150.220267 144.711567 4.332 4.045
129 149.486513 139.760453 4.374 4.113
130 148.870566 134.796540 4.291 4.230
131 148.372516 129.825230 4.183 4.336
132 147.992434 124.851911 4.140 4.294
133 147.726990 119.879465 4.200 4.285
134 147.565511 114.905358 4.313 4.294
135 147.496360 109.926350 4.273 4.313
136 147.507905 104.939200 4.175 4.335
137 147.588509 99.940667 4.077 4.357
138 147.726539 94.927512 4.132 4.316
139 147.909661 89.896706 4.206 4.266
140 148.099958 84.853004 4.281 4.217
141 148.227166 79.811000 4.355 4.167
142 148.218945 74.785923 4.352 4.137
143 148.002954 69.792997 4.281 4.126
144 147.506854 64.847451 4.275 4.132
145 146.658303 59.964509 4.310 4.205
146 145.388472 55.160670 4.205 4.498
147 143.678977 50.470695 4.146 4.624
148 141.549258 45.943039 4.172 4.747
149 139.019670 41.626490 4.262 4.889
150 136.110565 37.569834 4.418 4.983
151 132.842300 33.821858 4.451 4.599
152 129.235227 30.431348 4.451 4.398
153 125.312766 27.436881 4.418 4.409
154 121.120144 24.804331 4.355 4.278
155 116.712056 22.468034 4.270 4.348
156 112.143230 20.362198 4.184 4.427
157 107.468396 18.421033 4.099 4.507
158 102.742286 16.578745 4.048 4.545
159 98.019629 14.769545 4.095 4.463
160 93.342513 12.942394 4.142 4.381
161 88.704216 11.103219 4.189 4.300
162 84.086235 9.271696 4.236 4.218
163 79.470070 7.467499 4.284 4.136
164 74.837217 5.710302 4.331 4.055
165 70.169176 4.019780 4.278 4.105
166 65.447529 2.415476 4.160 4.240
167 60.669630 0.892412 4.042 4.375
168 55.866984 -0.607489 4.038 4.423
169 51.075564 -2.149247 4.236 4.314
170 46.331341 -3.797882 4.434 4.205
171 41.670287 -5.618416 4.632 4.096
172 37.128373 -7.675868 4.635 4.242
173 32.743211 -10.035645 4.623 4.392
174 28.612354 -12.777269 4.606 4.509
175 24.909111 -15.998105 4.888 4.185
176 21.811325 -19.796169 4.673 4.211
177 19.439269 -24.181707 4.222 4.435
178 17.789594 -28.976489 4.444 4.545
179 16.842948 -33.977887 4.564 4.573
180 16.579252 -39.007227 4.818 4.705
181 16.975636 -43.977492 5.060 4.754
182 18.008569 -48.823586 5.137 4.584
183 19.654514 -53.480415 4.896 4.452
184 21.889938 -57.882883 4.802 4.511
185 24.691308 -61.965894 4.744 4.612
186 28.034938 -65.664418 4.670 4.685
187 31.872160 -68.924115 4.762 4.498
188 36.101648 -71.713185 4.797 4.469
189 40.615402 -74.002680 4.672 4.788
190 45.309127 -75.747824 4.864 4.612
191 50.128975 -76.688113 5.130 4.321
192 55.040283 -76.579563 4.952 4.341
193 59.946477 -75.810565 4.752 4.290
194 64.789826 -74.708054 4.543 4.150
195 69.577538 -73.344400 4.460 4.132
196 74.320695 -71.776786 4.424 4.159
197 79.030380 -70.062396 4.388 4.186
198 83.717677 -68.258412 4.352 4.213
199 88.393668 -66.422017 4.316 4.240
200 93.068996 -64.607786 4.280 4.268
201 97.748404 -62.835178 4.244 4.295
202 102.432408 -61.098522 4.208 4.322
203 107.121432 -59.391600 4.172 4.349
204 111.815902 -57.708192 4.136 4.377
205 116.516242 -56.042081 4.100 4.404
206 121.222878 -54.387047 4.064 4.431
207 125.936245 -52.737906 4.028 4.458
208 130.656867 -51.096499 3.992 4.485
209 135.385298 -49.467589 3.956 4.513
210 140.122098 -47.855949 4.007 4.456
211 144.867821 -46.266353 4.087 4.372
212 149.623025 -44.703573 4.167 4.288
213 154.388268 -43.172382 4.247 4.203
214 159.164104 -41.677554 4.298 4.120
215 163.951092 -40.223862 4.334 4.036
216 168.749789 -38.816079 4.370 3.953
217 173.560750 -37.458978 4.405 3.869
218 178.384534 -36.157332 4.254 4.031
219 183.221696 -34.915914 4.064 4.244
220 188.072792 -33.739486 3.874 4.456
221 192.938144 -32.630868 3.876 4.512
222 197.817589 -31.588837 3.951 4.510
223 202.710900 -30.611665 4.026 4.507
224 207.617853 -29.697620 4.115 4.497
225 212.538223 -28.844975 4.216 4.481
226 217.471784 -28.052000 4.345 4.438
227 222.418294 -27.317078 4.570 4.297
228 227.376885 -26.642445 4.794 4.157
229 232.345927 -26.035039 4.806 4.423
230 237.323747 -25.502088 4.795 4.733
231 242.308667 -25.050816 4.804 4.968
232 247.299013 -24.688449 4.870 4.985
233 252.293109 -24.422213 4.936 5.003
234 257.289037 -24.259478 4.961 5.020
235 262.283974 -24.208158 4.971 5.038
236 267.274885 -24.276290 4.800 5.101
237 272.258736 -24.471913 4.628 5.164
238 277.232491 -24.803068 4.505 5.156
239 282.193116 -25.277793 4.486 5.000
240 287.137588 -25.904062 4.466 4.845
241 292.064716 -26.679188 4.474 4.579
242 296.977157 -27.578124 4.488 4.286
243 301.878054 -28.573005 4.503 3.993
244 306.770548 -29.635967 4.404 3.982
245 311.657780 -30.739145 4.285 4.017
246 316.542892 -31.854674 4.167 4.051
247 321.428992 -32.955036 4.096 4.095
248 326.318026 -34.024611 4.133 4.158
249 331.210506 -35.062414 4.169 4.222
250 336.106862 -36.068357 4.205 4.286
251 341.007518 -37.042351 4.225 4.300
252 345.912902 -37.984309 4.219 4.240
253 350.823442 -38.894142 4.214 4.181
254 355.739563 -39.771763 4.209 4.121
255 360.661693 -40.617082 4.204 4.062
256 365.590258 -41.430014 4.198 4.003
257 370.525686 -42.210468 4.181 3.995
258 375.468403 -42.958358 4.141 4.092
259 380.418836 -43.673594 4.100 4.190
260 385.377412 -44.356090 4.194 4.121
261 390.344264 -45.001791 4.371 3.948
262 395.317475 -45.579028 4.443 3.916
263 400.294259 -46.044395 4.418 4.015
264 405.271826 -46.354443 4.385 4.118
265 410.247385 -46.465723 4.282 4.258
266 415.218148 -46.334784 4.178 4.398
267 420.181323 -45.918177 4.224 4.298
268 425.133987 -45.197781 4.323 4.108
269 430.072713 -44.251288 4.344 4.070
270 434.993954 -43.179046 4.316 4.125
271 439.894009 -42.078959 4.281 4.177
272 444.763823 -40.963691 4.231 4.223
273 449.587719 -39.740469 4.201 4.249
274 454.349640 -38.310236 4.266 4.175
275 459.038639 -36.617037 4.326 4.089
276 463.654604 -34.696295 4.371 3.972
277 468.198805 -32.595092 4.383 3.886
278 472.673103 -30.359601 3.976 4.184
279 477.087549 -28.023365 3.990 4.182
280 481.458197 -25.610672 4.119 4.098
281 485.800998 -23.145258 4.249 4.014
282 490.123304 -20.638911 4.379 3.930
283 494.421825 -18.088632 4.371 3.952
284 498.692612 -15.490497 4.249 4.062
285 502.931711 -12.840586 4.126 4.173
286 507.135172 -10.134977 4.004 4.283
287 511.299044 -7.369750 4.089 4.144
288 515.423163 -4.546296 4.176 4.003
289 519.521744 -1.686182 4.263 3.862
290 523.612415 1.184239 4.166 3.903
291 527.712803 4.038614 3.966 4.047
292 531.840536 6.850589 3.819 4.161
293 536.013241 9.593812 3.869 4.167
294 540.248511 12.241964 4.004 4.106
295 544.557752 14.774904 4.127 4.031
296 548.939186 17.185655 4.102 4.026
297 553.389343 19.468929 4.048 4.004
298 557.904756 21.619437 3.997 4.001
299 562.481955 23.631891 3.949 4.032
300 567.117471 25.501002 3.951 4.119
301 571.807805 27.221672 3.978 4.235
302 576.548384 28.795486 4.095 4.320
303 581.333297 30.232374 4.258 4.389
304 586.156546 31.542788 4.369 4.434
305 591.012137 32.737181 4.398 4.439
306 595.894073 33.826004 4.428 4.443
307 600.796359 34.819711 4.342 4.407
308 605.713335 35.726460 4.185 4.346
309 610.644123 36.522011 4.027 4.284
310 615.591378 37.158137 4.053 4.379
311 620.557840 37.586044 4.089 4.483
312 625.544317 37.776802 4.175 4.408
313 630.544207 37.777603 4.261 4.331
314 635.549133 37.653867 4.305 4.272
315 640.551532 37.465775 4.266 4.246
316 645.549590 37.236469 4.228 4.220
317 650.543968 36.973127 4.189 4.195
318 655.535339 36.682867 4.151 4.169
319 660.524373 36.372805 4.113 4.143
320 665.511744 36.050057 4.205 4.209
321 670.498122 35.721741 4.298 4.277
322 675.484179 35.394973 4.392 4.344
323 680.470588 35.076869 4.485 4.411
324 685.458019 34.774546 4.578 4.478
325 690.447146 34.495121 4.672 4.545
326 695.438639 34.245711 4.765 4.612
327 700.433170 34.033432 4.859 4.679
328 705.431408 33.865362 4.912 4.711
329 710.433423 33.741608 4.827 4.620
330 715.437997 33.647216 4.743 4.530
331 720.443740 33.565270 4.658 4.439
332 725.449265 33.478855 4.574 4.348
333 730.453184 33.371056 4.489 4.258
334 735.454108 33.224956 4.405 4.167
335 740.450587 33.023502 4.286 4.211
336 745.438840 32.744590 4.134 4.392
337 750.412147 32.359732 3.981 4.572
338 755.363599 31.840032 3.878 4.650
339 760.286286 31.156595 3.899 4.616
340 765.173300 30.280525 4.058 4.459
341 770.017731 29.182924 4.231 4.252
342 774.811717 27.841028 4.260 4.180
343 779.543702 26.255866 4.236 4.158
344 784.201230 24.434244 4.119 4.268
345 788.771846 22.382966 4.080 4.251
346 793.243097 20.108838 4.203 3.975
347 797.602526 17.618665 4.216 4.021
348 801.837680 14.919252 4.222 4.103
349 805.936103 12.017403 4.226 4.225
350 809.885342 8.919924 4.235 4.237
351 813.672940 5.633620 4.249 4.191
352 817.286445 2.165295 4.283 4.160
353 820.713399 -1.478244 4.332 4.094
354 823.941350 -5.290194 4.351 4.032
355 826.957948 -9.263686 3.868 4.384
356 829.754717 -13.389548 3.924 4.341
357 832.328095 -17.655687 4.092 4.272
358 834.674835 -22.049819 4.085 4.457
359 836.791692 -26.559662 4.044 4.341
360 838.675419 -31.172934 3.951 4.294
361 840.322770 -35.877353 3.873 4.297
362 841.730499 -40.660635 3.942 4.140
363 842.895359 -45.510499 4.032 4.063
364 843.814104 -50.414663 4.113 4.038
365 844.483488 -55.360842 4.079 4.147
366 844.900265 -60.336757 4.221 4.148
367 845.061188 -65.330123 4.272 4.158
368 844.963011 -70.328658 4.222 4.184
369 844.603481 -75.319993 4.123 4.224
370 843.987444 -80.291123 4.229 4.096
371 843.122839 -85.228773 4.214 4.084
372 842.017620 -90.119662 4.126 4.175
373 840.679739 -94.950513 4.017 4.390
374 839.117149 -99.708047 4.070 4.387
375 837.337803 -104.378985 4.045 4.431
376 835.352725 -108.954255 4.002 4.435
377 833.184895 -113.441146 3.951 4.377
378 830.860195 -117.850926 3.900 4.319
379 828.404511 -122.194866 3.849 4.261
380 825.843726 -126.484231 3.798 4.204
381 823.203724 -130.730292 3.811 4.173
382 820.510358 -134.944303 3.852 4.154
383 817.783350 -139.135229 3.894 4.135
384 815.029104 -143.307047 3.935 4.115
385 812.252270 -147.463082 3.976 4.096
386 809.457503 -151.606658 4.018 4.077
387 806.649452 -155.741097 4.043 4.067
388 803.832772 -159.869725 4.035 4.073
389 801.012113 -163.995864 4.028 4.078
390 798.192128 -168.122838 4.021 4.084
391 795.377469 -172.253972 4.014 4.090
392 792.572788 -176.392589 4.006 4.096
393 789.782738 -180.542012 4.016 4.084
394 787.011970 -184.705566 4.062 4.035
395 784.265137 -188.886574 4.108 3.985
396 781.548155 -193.088638 4.154 3.936
397 778.871892 -197.316448 4.187 3.912
398 776.248431 -201.574960 4.213 3.905
399 773.689850 -205.869131 4.226 3.963
400 771.208232 -210.203916 4.218 4.136
401 768.815657 -214.584272 4.326 4.338
402 766.524154 -219.015133 4.587 4.577
403 764.335653 -223.497073 4.847 4.816
404 762.229923 -228.021102 5.174 5.141
405 760.183793 -232.576960 5.514 5.484
406 758.174091 -237.154385 5.854 5.826
407 756.177647 -241.743118 6.194 6.169
408 754.171288 -246.332898 6.534 6.512
409 752.132210 -250.913573 6.875 6.854
410 750.051474 -255.479086 6.929 6.928
411 747.937913 -260.028628 6.935 6.955
412 745.801525 -264.561735 6.941 6.983
413 743.652310 -269.077941 6.947 7.011
414 741.500266 -273.576782 6.953 7.038
415 739.355392 -278.057794 6.959 7.062
416 737.227192 -282.522008 6.957 6.995
417 735.117889 -286.992512 6.954 6.927
418 733.024156 -291.509202 6.952 6.860
419 730.942527 -296.112395 6.949 6.793
420 728.838033 -300.796250 6.947 6.725
421 726.550918 -305.372085 6.816 6.838
422 723.890534 -309.605955 6.657 7.124
423 720.690584 -313.287789 6.919 7.008
424 716.962948 -316.382204 6.936 6.563
425 712.798664 -318.931422 6.330 7.057
426 708.289129 -320.978019 6.497 7.072
427 703.525739 -322.564569 6.586 7.140
428 698.599890 -323.733646 6.635 7.236
429 693.602980 -324.527826 7.056 6.882
430 688.609823 -324.991490 7.328 6.647
431 683.631014 -325.176014 7.024 6.932
432 678.661600 -325.134471 6.721 7.218
433 673.696625 -324.919930 6.832 7.143
434 668.731136 -324.585464 6.953 7.059
435 663.760179 -324.184143 7.018 7.031
436 658.778821 -323.768904 6.947 7.138
437 653.786008 -323.367672 6.875 7.244
438 648.789087 -322.954242 6.929 7.170
439 643.796500 -322.495333 7.011 7.054
440 638.816689 -321.957669 7.093 6.939
441 633.858098 -321.307969 7.122 6.893
442 628.929168 -320.512955 7.079 6.942
443 624.038261 -319.539882 7.030 6.996
444 619.190736 -318.375604 6.783 7.274
445 614.388155 -317.031783 6.537 7.552
446 609.631833 -315.521672 6.759 7.267
447 604.923088 -313.858527 7.030 6.923
448 600.263236 -312.055602 7.123 6.884
449 595.653594 -310.126153 7.190 6.891
450 591.095298 -308.081827 7.140 6.938
451 586.588781 -305.928036 7.021 7.008
452 582.134305 -303.668679 6.893 7.134
453 577.732134 -301.307655 6.749 7.356
454 573.382530 -298.848864 6.804 7.293
455 569.085755 -296.296203 6.932 7.126
456 564.842074 -293.653573 7.060 6.958
457 560.651748 -290.924873 7.039 6.927
458 556.515040 -288.114002 6.945 6.961
459 552.432213 -285.224858 6.856 6.995
460 548.403530 -282.261342 6.963 7.018
461 544.429254 -279.227351 7.071 7.042
462 540.509648 -276.126786 7.045 7.143
463 536.646058 -272.962511 6.921 7.301
464 532.879958 -269.699105 6.796 7.459
465 529.303798 -266.252512 6.800 7.424
466 526.013321 -262.535532 6.982 7.125
467 523.106293 -258.472868 7.046 6.955
468 520.695052 -254.074915 6.962 6.947
469 518.898317 -249.389602 6.882 7.008
470 517.832775 -244.470660 6.727 7.126
471 517.585351 -239.453276 6.760 7.127
472 518.220595 -234.533878 6.960 6.976
473 519.802514 -229.910386 6.644 7.012
474 522.334949 -225.730525 6.697 7.030
475 525.588832 -221.947703 6.723 7.076
476 529.278745 -218.468315 6.755 7.116
477 533.145068 -215.207132 7.006 6.938
478 537.111602 -212.138479 7.135 6.844
479 541.181603 -209.262478 6.882 7.016
480 545.358650 -206.579354 6.630 7.189
481 549.646318 -204.089333 6.583 7.245
482 554.048185 -201.792641 6.776 7.166
483 558.567826 -199.689504 6.962 7.066
484 563.205028 -197.787576 7.142 6.952
485 567.944951 -196.123167 7.104 6.998
486 572.769226 -194.739502 6.943 7.135
487 577.659441 -193.677704 6.782 7.272
488 582.595565 -192.902588 6.832 7.157
489 587.555526 -192.282824 6.891 7.032
490 592.517155 -191.681168 6.950 6.907
491 597.464671 -191.000804 7.008 6.782
492 602.396071 -190.232186 7.067 6.656
493 607.311150 -189.377138 7.078 6.584
494 612.209702 -188.437485 6.754 6.880
495 617.091520 -187.415051 6.736 6.909
496 621.956399 -186.311660 6.885 6.792
497 626.804133 -185.129135 6.995 6.731
498 631.634516 -183.869300 7.081 6.705
499 636.447341 -182.533981 7.031 6.778
500 641.242404 -181.125000 6.926 6.889
501 646.019497 -179.644181 6.822 7.001
502 650.778415 -178.093350 6.911 6.915
503 655.518952 -176.474329 7.032 6.797
504 660.238753 -174.785985 7.152 6.679
505 664.927143 -173.015721 7.144 6.677
506 669.571431 -171.148166 6.832 6.948
507 674.158924 -169.167949 6.519 7.220
508 678.676932 -167.059698 6.652 7.059
509 683.112764 -164.808044 7.010 6.679
510 687.453615 -162.397497 7.367 6.300
511 691.665455 -159.790647 7.318 6.459
512 695.668265 -156.902579 7.235 6.631
513 699.376004 -153.642165 7.092 6.768
514 702.706093 -149.926475 6.881 6.943
515 705.625359 -145.789734 6.597 7.155
516 708.137497 -141.353584 6.711 7.081
517 710.246759 -136.740516 6.913 6.949
518 711.945681 -132.028298 7.275 6.712
519 713.212100 -127.238602 7.271 6.600
520 714.022926 -122.389546 7.233 6.584
521 714.355066 -117.499248 7.183 6.721
522 714.185428 -112.585823 7.151 6.829
523 713.490920 -107.667391 7.131 6.916
524 712.250145 -102.766987 6.929 6.984
525 710.465448 -97.976495 6.713 7.023
526 708.156646 -93.438475 7.013 6.892
527 705.343960 -89.296659 7.275 6.739
528 702.055119 -85.657540 7.465 6.546
529 698.346209 -82.486891 7.379 6.678
530 694.280014 -79.717258 6.996 7.159
531 689.919273 -77.291912 7.046 7.064
532 685.326428 -75.228159 7.189 6.846
533 680.563791 -73.574557 7.133 6.834
534 675.693600 -72.379388 7.037 6.865
535 670.765309 -71.627906 7.088 6.839
536 665.801465 -71.172685 7.209 6.787
537 660.821215 -70.849523 7.175 6.820
538 655.840166 -70.524248 6.962 6.952
539 650.860639 -70.175383 6.793 6.998
540 645.881844 -69.807882 6.707 6.881
541 640.902988 -69.426694 6.621 6.763
542 635.923278 -69.036773 6.535 6.646
543 630.941924 -68.643070 6.449 6.528
544 625.958135 -68.250537 6.363 6.411
545 620.971472 -67.864144 6.277 6.293
546 615.982233 -67.488901 6.192 6.175
547 610.990811 -67.129823 6.093 6.032
548 605.997598 -66.791923 5.973 5.842
549 601.002986 -66.480216 5.852 5.652
550 596.007369 -66.199717 5.791 5.575
551 591.011138 -65.955440 5.734 5.551
552 586.014686 -65.752400 5.650 5.580
553 581.018405 -65.595610 5.565 5.609
554 576.022688 -65.490086 5.481 5.638
555 571.027927 -65.440841 5.534 5.590
556 566.034515 -65.452890 5.705 5.477
557 561.042844 -65.531248 5.876 5.364
558 556.053237 -65.679211 5.782 5.483
559 551.065759 -65.893563 5.623 5.659
560 546.080411 -66.169548 6.015 6.094
561 541.097195 -66.502409 6.506 6.577
562 536.116113 -66.887389 6.677 6.700
563 531.137167 -67.319731 6.553 6.493
564 526.160360 -67.794679 6.430 6.286
565 521.185692 -68.307476 6.306 6.079
566 516.213166 -68.853365 6.182 5.872
567 511.242784 -69.427590 6.058 5.664
568 506.274548 -70.025392 5.935 5.457
569 501.308460 -70.642017 5.896 5.416
570 496.344521 -71.272706 6.002 5.654
571 491.382740 -71.912804 6.107 5.892
572 486.423329 -72.561174 6.212 6.130
573 481.466756 -73.221067 6.318 6.368
574 476.513507 -73.896006 6.381 6.522
575 471.564064 -74.589515 6.270 6.332
576 466.618913 -75.305119 6.158 6.142
577 461.678537 -76.046340 6.047 5.952
578 456.743421 -76.816702 5.936 5.762
579 451.814048 -77.619730 5.824 5.571
580 446.890904 -78.458948 5.713 5.381
581 441.974472 -79.337878 5.621 5.239
582 437.065236 -80.260046 5.595 5.267
583 432.163681 -81.228974 5.570 5.295
584 427.270291 -82.248187 5.544 5.323
585 422.385725 -83.321083 5.518 5.351
586 417.511874 -84.450176 5.515 5.365
587 412.651163 -85.637598 5.517 5.377
588 407.806015 -86.885480 5.518 5.389
589 402.978857 -88.195952 5.519 5.401
590 398.172113 -89.571147 5.520 5.432
591 393.388210 -91.013195 5.520 5.463
592 388.624995 -92.511917 5.520 5.495
593 383.862725 -94.009802 5.520 5.526
594 379.077425 -95.437961 5.521 5.557
595 374.245857 -96.729642 5.517 5.554
596 369.371439 -97.895329 5.513 5.549
597 364.491077 -99.042554 5.509 5.545
598 359.643725 -100.284782 5.510 5.531
599 354.853551 -101.692947 5.546 5.452
600 350.112834 -103.246245 5.582 5.374
601 345.409702 -104.911934 5.649 5.341
602 340.732282 -106.657272 6.154 5.936
603 336.068704 -108.449520 6.658 6.530
604 331.407095 -110.255934 7.163 7.125
605 326.735781 -112.044283 7.177 7.169
606 322.050266 -113.800844 6.985 6.979
607 317.355113 -115.535242 6.792 6.790
608 312.655461 -117.258596 6.599 6.601
609 307.956451 -118.982024 6.406 6.412
610 303.263223 -120.716643 6.214 6.223
611 298.580917 -122.473571 6.021 6.034
612 293.913754 -124.262073 5.828 5.844
613 289.262383 -126.084219 5.816 5.779
614 284.626590 -127.940337 6.002 5.849
615 280.006160 -129.830753 6.188 5.920
616 275.400879 -131.755795 6.375 5.990
617 270.810530 -133.715789 6.561 6.061
618 266.234900 -135.711061 6.747 6.131
619 261.673772 -137.741939 6.916 6.212
620 257.126933 -139.808750 6.896 6.400
621 252.594167 -141.911820 6.877 6.588
622 248.075260 -144.051476 6.857 6.776
623 243.569995 -146.228045 6.837 6.964
624 239.078159 -148.441854 6.817 7.152
625 234.599579 -150.693176 6.982 7.327
626 230.135655 -152.980290 7.413 7.481
627 225.689788 -155.298942 7.844 7.636
628 221.265508 -157.644713 8.276 7.791
629 216.866345 -160.013182 8.296 7.724
630 212.495831 -162.399931 8.123 7.553
631 208.157494 -164.800540 7.950 7.382
632 203.853512 -167.212860 7.777 7.211
633 199.566372 -169.667776 7.604 7.039
634 195.263682 -172.221124 7.431 6.868
635 190.912688 -174.929357 7.258 6.697
636 186.487983 -177.724071 7.078 6.551
637 181.992983 -180.047120 6.789 6.764
638 177.438175 -181.220304 6.203 6.945
639 172.870986 -180.656336 6.339 7.243
640 168.602825 -178.417542 6.636 6.911
641 165.010059 -174.878403 7.071 6.883
642 162.122071 -170.618791 7.181 6.805
643 159.750492 -166.150514 7.152 6.715
644 157.558157 -161.658507 7.123 6.624
645 155.189121 -157.286255 7.093 6.533
646 152.359584 -153.167518 7.064 6.443
647 149.057687 -149.399398 6.723 6.016
648 145.335628 -146.070364 6.197 5.369
649 141.245605 -143.268882 5.813 5.483
650 136.839819 -141.083420 5.615 5.650
651 132.170467 -139.602446 5.607 5.556
652 127.289888 -138.914002 5.642 5.330
653 122.272466 -139.038412 5.431 5.067
654 117.238594 -139.854676 5.131 4.831
655 112.314429 -141.224096 4.822 4.830
656 107.623328 -143.018285 4.742 4.689
657 103.250890 -145.248063 4.859 4.429
658 99.255600 -148.024195 4.934 4.321
659 95.696653 -151.455576 4.649 4.520
660 92.675502 -155.519437 4.528 4.649
661 90.344115 -160.035622 4.667 4.596
662 88.856582 -164.815027 4.703 4.596
663 88.243937 -169.712396 4.812 4.552
664 88.286263 -174.671888 4.788 4.429
665 88.733063 -179.648558 4.874 4.484
666 89.374668 -184.606576 4.960 4.568
667 90.149191 -189.543100 4.955 4.566
668 91.028177 -194.462751 4.950 4.564
669 91.983170 -199.370149 4.945 4.563
670 92.985716 -204.269917 4.940 4.561
671 94.007360 -209.166676 4.934 4.559
672 95.019718 -214.065034 4.929 4.558
673 96.004832 -218.967894 4.924 4.556
674 96.965993 -223.874674 4.919 4.555
675 97.909081 -228.784371 4.914 4.553
676 98.839976 -233.695981 4.909 4.551
677 99.764556 -238.608499 4.904 4.550
678 100.688701 -243.520920 4.898 4.548
679 101.618197 -248.432257 4.893 4.546
680 102.555794 -253.342056 4.888 4.545
681 103.500606 -258.250500 4.883 4.543
682 104.451536 -263.157814 4.878 4.542
683 105.407485 -268.064218 4.873 4.540
684 106.367355 -272.969935 4.868 4.538
685 107.330048 -277.875186 4.862 4.537
686 108.294464 -282.780196 4.857 4.535
687 109.259505 -287.685184 4.852 4.534
688 110.224074 -292.590374 4.847 4.532
689 111.187071 -297.495988 4.842 4.530
690 112.147399 -302.402248 4.837 4.529
691 113.103958 -307.309376 4.832 4.527
692 114.055651 -312.217594 4.826 4.525
693 115.001615 -317.127073 4.821 4.524
694 115.942575 -322.037631 4.816 4.522
695 116.879915 -326.948942 4.811 4.521
696 117.815019 -331.860680 4.806 4.519
697 118.749270 -336.772517 4.801 4.517
698 119.684054 -341.684127 4.795 4.516
699 120.620755 -346.595184 4.790 4.514
700 121.560757 -351.505360 4.785 4.512
701 122.505444 -356.414329 4.780 4.511
702 123.456202 -361.321764 4.775 4.509
703 124.414414 -366.227339 4.770 4.508
704 125.381466 -371.130726 4.765 4.506
705 126.358740 -376.031599 4.759 4.504
706 127.347598 -380.929639 4.754 4.503
707 128.345619 -385.825549 4.749 4.501
708 129.342556 -390.722158 4.744 4.499
709 130.327190 -395.622556 4.739 4.498
710 131.288302 -400.529834 4.734 4.496
711 132.214673 -405.447083 4.729 4.495
712 133.095083 -410.377394 4.683 4.590
713 133.917404 -415.323672 4.623 4.720
714 134.638923 -420.282615 4.457 4.923
715 135.179778 -425.243373 4.219 5.176
716 135.457865 -430.194646 4.345 5.035
717 135.391083 -435.125129 4.520 4.798
718 134.897330 -440.023522 4.740 4.485
719 133.894503 -444.878522 4.971 4.557
720 132.336811 -449.670650 5.116 4.317
721 130.312854 -454.350171 4.238 4.713
722 127.942320 -458.860348 4.493 4.717
723 125.341900 -463.144788 4.832 4.446
724 122.528502 -467.158487 4.407 5.135
725 119.398290 -470.870226 4.540 5.028
726 115.840666 -474.249571 4.692 4.847
727 111.815858 -477.260106 4.796 4.742
728 107.429983 -479.853095 4.993 4.883
729 102.807143 -481.978282 5.144 4.671
730 98.066603 -483.592601 4.997 4.496
731 93.262909 -484.749189 4.346 5.074
732 88.404440 -485.569807 4.216 5.375
733 83.498594 -486.176411 4.600 5.017
734 78.553298 -486.648841 4.913 4.723
735 73.577110 -487.016376 4.873 4.744
736 68.578624 -487.305298 4.832 4.766
737 63.566436 -487.541894 4.792 4.787
738 58.549142 -487.752447 4.752 4.809
739 53.535335 -487.963242 4.712 4.830
740 48.533082 -488.198747 4.671 4.852
741 43.543349 -488.459106 4.631 4.874
742 38.562040 -488.727119 4.591 4.895
743 33.584950 -488.985207 4.550 4.917
744 28.607876 -489.215796 4.510 4.938
745 23.626611 -489.401309 4.494 4.943
746 18.636952 -489.524170 4.592 4.871
747 13.635726 -489.567169 4.690 4.799
748 8.626745 -489.515580 4.791 4.707
749 3.616713 -489.355702 4.905 4.545
750 -1.387655 -489.073840 4.987 4.419
751 -6.379646 -488.656298 4.833 4.555
752 -11.352545 -488.089378 4.681 4.685
753 -16.299639 -487.359387 4.536 4.799
754 -21.214299 -486.455141 4.463 4.853
755 -26.090210 -485.374739 4.576 4.755
756 -30.921130 -484.118421 4.582 4.768
757 -35.700815 -482.686423 4.522 4.848
758 -40.423024 -481.078986 4.498 4.905
759 -45.081514 -479.296347 4.487 4.948
760 -49.670044 -477.338752 4.568 4.879
761 -54.182501 -475.207651 4.658 4.797
762 -58.613044 -472.906981 4.765 4.683
763 -62.955864 -470.440990 4.830 4.597
764 -67.205151 -467.813926 4.720 4.624
765 -71.355097 -465.030037 4.629 4.657
766 -75.399894 -462.093570 4.584 4.703
767 -79.333732 -459.008773 4.692 4.591
768 -83.150802 -455.779894 4.790 4.495
769 -86.845296 -452.411181 4.700 4.618
770 -90.411405 -448.906882 4.501 4.828
771 -93.843320 -445.271244 4.212 5.105
772 -97.135232 -441.508515 4.502 4.728
773 -100.281332 -437.622943 4.692 4.503
774 -103.276256 -433.619225 4.728 4.508
775 -106.116287 -429.503720 4.668 4.614
776 -108.798092 -425.283176 4.513 4.820
777 -111.318336 -420.964340 4.574 4.784
778 -113.673685 -416.553957 4.674 4.702
779 -115.860805 -412.058774 4.708 4.695
780 -117.876362 -407.485538 4.717 4.717
781 -119.717022 -402.840995 4.673 4.745
782 -121.379450 -398.131892 4.621 4.775
783 -122.860313 -393.364976 4.599 4.922
784 -124.156277 -388.546993 4.577 5.032
785 -125.264006 -383.684690 4.597 5.061
786 -126.180169 -378.784813 4.804 4.887
787 -126.901541 -373.854095 4.655 4.719
788 -127.428676 -368.898797 4.516 4.593
789 -127.766739 -363.924608 4.611 4.602
790 -127.921173 -358.937177 4.759 4.548
791 -127.897419 -353.942159 4.812 4.530
792 -127.700923 -348.945204 4.747 4.569
793 -127.337126 -343.951966 4.658 4.569
794 -126.811472 -338.968095 4.573 4.609
795 -126.129405 -333.999244 4.504 4.716
796 -125.296367 -329.051065 4.458 4.741
797 -124.317801 -324.129210 4.449 4.630
798 -123.199151 -319.239331 4.425 4.558
799 -121.945861 -314.387080 4.321 4.705
800 -120.563372 -309.578109 4.473 4.754
801 -119.058509 -304.816715 4.680 4.769
802 -117.447588 -300.097872 4.829 4.771
803 -115.750915 -295.412637 4.896 4.761
804 -113.988811 -290.752052 4.861 4.736
805 -112.181595 -286.107159 4.826 4.711
806 -110.349589 -281.469002 4.791 4.686
807 -108.513113 -276.828622 4.777 4.683
808 -106.688459 -272.178978 4.764 4.680
809 -104.876827 -267.520207 4.750 4.677
810 -103.075877 -262.854130 4.737 4.675
811 -101.283269 -258.182568 4.724 4.672
812 -99.496665 -253.507342 4.711 4.669
813 -97.713725 -248.830270 4.697 4.667
814 -95.932114 -244.153172 4.684 4.664
815 -94.150161 -239.477307 4.671 4.662
816 -92.367593 -234.802761 4.658 4.659
817 -90.584313 -230.129473 4.645 4.656
818 -88.800227 -225.457379 4.631 4.654
819 -87.015237 -220.786419 4.618 4.651
820 -85.229248 -216.116530 4.605 4.648
821 -83.442165 -211.447649 4.592 4.646
822 -81.653892 -206.779715 4.578 4.643
823 -79.864331 -202.112665 4.565 4.640
824 -78.073389 -197.446438 4.552 4.638
825 -76.280968 -192.780971 4.539 4.635
826 -74.486973 -188.116201 4.526 4.632
827 -72.691308 -183.452068 4.512 4.630
828 -70.893901 -178.788517 4.499 4.627
829 -69.094771 -174.125528 4.486 4.624
830 -67.293958 -169.463089 4.473 4.622
831 -65.491502 -164.801187 4.459 4.619
832 -63.687444 -160.139812 4.446 4.617
833 -61.881823 -155.478949 4.433 4.614
834 -60.074681 -150.818588 4.420 4.611
835 -58.266057 -146.158715 4.407 4.609
836 -56.455991 -141.499319 4.393 4.606
837 -54.644524 -136.840387 4.380 4.603
838 -52.831697 -132.181907 4.367 4.601
839 -51.017548 -127.523866 4.392 4.625
840 -49.202119 -122.866254 4.417 4.649
841 -47.385450 -118.209056 4.443 4.672
842 -45.567581 -113.552261 4.468 4.696
843 -43.748552 -108.895857 4.493 4.720
844 -41.928403 -104.239831 4.518 4.744
845 -40.107175 -99.584172 4.544 4.768
846 -38.284908 -94.928866 4.569 4.792
847 -36.461642 -90.273902 4.594 4.816
848 -34.637418 -85.619267 4.619 4.840
849 -32.812275 -80.964950 4.645 4.864
850 -30.986254 -76.310937 4.670 4.888
851 -29.159396 -71.657217 4.695 4.912
852 -27.331740 -67.003778 4.720 4.936
853 -25.503326 -62.350606 4.746 4.960
854 -23.674195 -57.697691 4.771 4.984
855 -21.844388 -53.045019 4.796 5.008
856 -20.013943 -48.392578 4.821 5.032
857 -18.182903 -43.740356 4.847 5.055
858 -16.351306 -39.088341 4.872 5.079
859 -14.519193 -34.436521 4.897 5.103
860 -12.686605 -29.784883 4.923 5.127
861 -10.853581 -25.133415 4.948 5.151
862 -9.020162 -20.482105 4.973 5.175
863 -7.186388 -15.830941 4.998 5.199
864 -5.352300 -11.179909 5.024 5.223
865 -3.517937 -6.528999 5.049 5.247

View File

@@ -0,0 +1,27 @@
Texture2D ShaderTexture : register(t2);
SamplerState SampleType : register(s0);
struct PS_INPUT
{
float4 Position : SV_POSITION;
float2 Tex : TEXCOORD0;
float4 Color : COLOR0;
};
struct PS_OUTPUT
{
float4 RGBColor : SV_TARGET;
};
PS_OUTPUT main(PS_INPUT In)
{
PS_OUTPUT Output;
float t = ShaderTexture.Sample(SampleType, In.Tex).r;
if (t < 0.5)
discard;
Output.RGBColor = float4(In.Color.rgb, t);
return Output;
}

View File

@@ -0,0 +1,35 @@
#include "VertexConstants.h"
struct VS_INPUT
{
float3 vPos : POSITION;
float2 vTex : TEXCOORD0;
float4 vCol : COLOR;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float2 Tex : TEXCOORD0;
float4 Color : COLOR0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT Output;
float4 pos = float4(input.vPos, 1.0f);
// Transform the position from object space to homogeneous projection space
pos = mul(View, pos);
pos = mul(Projection, pos);
Output.Position = pos;
// Output texture coordinates
Output.Tex = input.vTex;
// Output color
Output.Color = input.vCol;
return Output;
}

View File

@@ -0,0 +1,19 @@
struct PS_INPUT
{
float4 Position : SV_POSITION;
float4 Color : COLOR0;
};
struct PS_OUTPUT
{
float4 RGBColor : SV_TARGET;
};
PS_OUTPUT main(PS_INPUT In)
{
PS_OUTPUT Output;
Output.RGBColor = In.Color;
return Output;
}

View File

@@ -0,0 +1,30 @@
#include "VertexConstants.h"
struct VS_INPUT
{
float3 vPos : POSITION;
float3 vColor : COLOR;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float4 Color : COLOR0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT Output;
float4 pos = float4(input.vPos, 1.0f);
// Transform the position from object space to homogeneous projection space
pos = mul(View, pos);
pos = mul(Projection, pos);
Output.Position = pos;
// Output color
Output.Color = float4(input.vColor, 1.0f);
return Output;
}

View File

@@ -0,0 +1,4 @@
// We only write depth, so this shader does nothing
void main()
{
}

View File

@@ -0,0 +1,43 @@
#include "VertexConstants.h"
struct VS_INPUT
{
// Per vertex data
float3 vPos : POSITION;
float3 vNorm : NORMAL;
float2 vTex : TEXCOORD0;
float4 vCol : COLOR;
// Per instance data
matrix iModel : INSTANCE_TRANSFORM; // model matrix
matrix iModelInvTrans : INSTANCE_INV_TRANSFORM; // (model matrix^-1)^T
float4 iCol : INSTANCE_COLOR; // color of the model
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
// Check if the alpha = 0
if (input.vCol.a * input.iCol.a == 0.0)
{
// Don't draw the triangle by moving it to an invalid location
output.Position = float4(0, 0, 0, 0);
}
else
{
// Transform the position from world space to homogeneous projection space for the light
float4 pos = float4(input.vPos, 1.0f);
pos = mul(input.iModel, pos);
pos = mul(LightView, pos);
pos = mul(LightProjection, pos);
output.Position = pos;
}
return output;
}

View File

@@ -0,0 +1,121 @@
// Shader that uses a shadow map for rendering shadows, see:
// http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/
// https://takinginitiative.wordpress.com/2011/05/25/directx10-tutorial-10-shadow-mapping-part-2/
Texture2D LightDepthTexture : register(t2);
SamplerComparisonState LightDepthSampler : register(s2);
cbuffer PixelShaderConstantBuffer : register(b1)
{
float3 CameraPos;
float3 LightPos;
};
struct PS_INPUT
{
float4 Position : SV_POSITION; // interpolated vertex position
float3 Normal : TEXCOORD0;
float3 WorldPos : TEXCOORD1;
float2 Tex : TEXCOORD2;
float4 PositionL : TEXCOORD3; // interpolated vertex position in light space
float4 Color : COLOR0;
};
struct PS_OUTPUT
{
float4 RGBColor : SV_TARGET;
};
PS_OUTPUT main(PS_INPUT input)
{
// Constants
float AmbientFactor = 0.3;
float3 DiffuseColor = float3(input.Color.r, input.Color.g, input.Color.b);
float3 SpecularColor = float3(1, 1, 1);
float SpecularPower = 100.0;
float bias = 1.0e-7;
// Homogenize position in light space
input.PositionL.xyz /= input.PositionL.w;
// Calculate dot product between direction to light and surface normal and clamp between [0, 1]
float3 view_dir = normalize(CameraPos - input.WorldPos);
float3 world_to_light = LightPos - input.WorldPos;
float3 light_dir = normalize(world_to_light);
float3 normal = normalize(input.Normal);
if (dot(view_dir, normal) < 0) // If we're viewing the triangle from the back side, flip the normal to get the correct lighting
normal = -normal;
float normal_dot_light_dir = saturate(dot(normal, light_dir));
// Calculate texture coordinates in light depth texture
float2 tex_coord;
tex_coord.x = input.PositionL.x / 2.0 + 0.5;
tex_coord.y = -input.PositionL.y / 2.0 + 0.5;
// Check that the texture coordinate is inside the depth texture, if not we don't know if it is lit or not so we assume lit
float shadow_factor = 1.0;
if (input.Color.a > 0 // Alpha = 0 means don't receive shadows
&& tex_coord.x == saturate(tex_coord.x) && tex_coord.y == saturate(tex_coord.y))
{
// Modify shadow bias according to the angle between the normal and the light dir
float modified_bias = bias * tan(acos(normal_dot_light_dir));
modified_bias = min(modified_bias, 10.0 * bias);
// Get texture size
float width, height, levels;
LightDepthTexture.GetDimensions(0, width, height, levels);
width = 1.0 / width;
height = 1.0 / height;
// Samples to take
uint num_samples = 16;
float2 offsets[] = {
float2(-1.5 * width, -1.5 * height),
float2(-0.5 * width, -1.5 * height),
float2(0.5 * width, -1.5 * height),
float2(1.5 * width, -1.5 * height),
float2(-1.5 * width, -0.5 * height),
float2(-0.5 * width, -0.5 * height),
float2(0.5 * width, -0.5 * height),
float2(1.5 * width, -0.5 * height),
float2(-1.5 * width, 0.5 * height),
float2(-0.5 * width, 0.5 * height),
float2(0.5 * width, 0.5 * height),
float2(1.5 * width, 0.5 * height),
float2(-1.5 * width, 1.5 * height),
float2(-0.5 * width, 1.5 * height),
float2(0.5 * width, 1.5 * height),
float2(1.5 * width, 1.5 * height),
};
// Calculate depth of this pixel relative to the light
float light_depth = input.PositionL.z + modified_bias;
// Sample shadow factor
shadow_factor = 0.0;
[unroll] for (uint i = 0; i < num_samples; ++i)
shadow_factor += LightDepthTexture.SampleCmp(LightDepthSampler, tex_coord + offsets[i], light_depth);
shadow_factor /= num_samples;
}
// Calculate diffuse and specular
float diffuse = normal_dot_light_dir;
float specular = diffuse > 0.0? pow(saturate(-dot(reflect(light_dir, normal), view_dir)), SpecularPower) : 0.0;
// Apply procedural pattern based on the uv coordinates
bool2 less_half = input.Tex - floor(input.Tex) < float2(0.5, 0.5);
float darken_factor = less_half.r ^ less_half.g? 0.5 : 1.0;
// Fade out checkerboard pattern when it tiles too often
float2 dx = ddx(input.Tex), dy = ddy(input.Tex);
float texel_distance = sqrt(dot(dx, dx) + dot(dy, dy));
darken_factor = lerp(darken_factor, 0.75, clamp(5.0 * texel_distance - 1.5, 0.0, 1.0));
// Calculate color
PS_OUTPUT output;
output.RGBColor = float4(saturate((AmbientFactor + diffuse * shadow_factor) * darken_factor * DiffuseColor + SpecularColor * specular * shadow_factor), 1);
return output;
}

View File

@@ -0,0 +1,59 @@
#include "VertexConstants.h"
struct VS_INPUT
{
// Per vertex data
float3 vPos : POSITION;
float3 vNorm : NORMAL;
float2 vTex : TEXCOORD0;
float4 vCol : COLOR;
// Per instance data
matrix iModel : INSTANCE_TRANSFORM; // model matrix
matrix iModelInvTrans : INSTANCE_INV_TRANSFORM; // (model matrix^-1)^T
float4 iCol : INSTANCE_COLOR; // color of the model
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float3 Normal : TEXCOORD0;
float3 WorldPos : TEXCOORD1;
float2 Tex : TEXCOORD2;
float4 PositionL : TEXCOORD3;
float4 Color : COLOR0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT output;
// Get world position
float4 pos = float4(input.vPos, 1.0f);
float4 world_pos = mul(input.iModel, pos);
// Transform the position from world space to homogeneous projection space
float4 proj_pos = mul(View, world_pos);
proj_pos = mul(Projection, proj_pos);
output.Position = proj_pos;
// Transform the position from world space to projection space of the light
float4 proj_lpos = mul(LightView, world_pos);
proj_lpos = mul(LightProjection, proj_lpos);
output.PositionL = proj_lpos;
// output normal
float4 norm = float4(input.vNorm, 0.0f);
output.Normal = normalize(mul(input.iModelInvTrans, norm).xyz);
// output world position of the vertex
output.WorldPos = world_pos.xyz;
// output texture coordinates
output.Tex = input.vTex;
// output color
output.Color = input.vCol * input.iCol;
return output;
}

View File

@@ -0,0 +1,23 @@
Texture2D ShaderTexture : register(t2);
SamplerState SampleType : register(s1);
struct PS_INPUT
{
float4 Position : SV_POSITION;
float2 Tex : TEXCOORD0;
float4 Color : COLOR0;
};
struct PS_OUTPUT
{
float4 RGBColor : SV_TARGET;
};
PS_OUTPUT main(PS_INPUT In)
{
PS_OUTPUT Output;
Output.RGBColor = In.Color * ShaderTexture.Sample(SampleType, In.Tex);
return Output;
}

View File

@@ -0,0 +1,20 @@
struct PS_INPUT
{
float4 Position : SV_POSITION;
float2 Tex : TEXCOORD0;
float4 Color : COLOR0;
};
struct PS_OUTPUT
{
float4 RGBColor : SV_TARGET;
};
PS_OUTPUT main(PS_INPUT In)
{
PS_OUTPUT Output;
Output.RGBColor = In.Color;
return Output;
}

View File

@@ -0,0 +1,34 @@
#include "VertexConstants.h"
struct VS_INPUT
{
float3 vPos : POSITION;
float2 vTex : TEXCOORD0;
float4 vCol : COLOR;
};
struct VS_OUTPUT
{
float4 Position : SV_POSITION;
float2 Tex : TEXCOORD0;
float4 Color : COLOR0;
};
VS_OUTPUT main(VS_INPUT input)
{
VS_OUTPUT Output;
float4 pos = float4(input.vPos, 1.0f);
// Transform the position from object space to ortho space
pos = mul(Projection, pos);
Output.Position = pos;
// Output texture coordinates
Output.Tex = input.vTex;
// Output color
Output.Color = input.vCol;
return Output;
}

View File

@@ -0,0 +1,7 @@
cbuffer VertexShaderConstantBuffer : register(b0)
{
matrix View; // view matrix
matrix Projection; // projection matrix
matrix LightView; // view matrix of the light
matrix LightProjection; // projection matrix of the light
};

View File

@@ -0,0 +1,39 @@
#include <metal_stdlib>
using namespace metal;
#include "VertexConstants.h"
constexpr sampler alphaTextureSampler(mag_filter::linear, min_filter::linear);
struct FontVertex
{
float3 vPos [[attribute(0)]];
float2 vTex [[attribute(1)]];
uchar4 vCol [[attribute(2)]];
};
struct FontOut
{
float4 oPosition [[position]];
float2 oTex;
float4 oColor;
};
vertex FontOut FontVertexShader(FontVertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]])
{
FontOut out;
out.oPosition = constants->Projection * constants->View * float4(vert.vPos, 1.0);
out.oTex = vert.vTex;
out.oColor = float4(vert.vCol) / 255.0;
return out;
}
fragment float4 FontPixelShader(FontOut in [[stage_in]], texture2d<float> alphaTexture [[texture(0)]])
{
const float4 sample = alphaTexture.sample(alphaTextureSampler, in.oTex);
if (sample.x < 0.5)
discard_fragment();
return float4(in.oColor.xyz, sample.x);
}

View File

@@ -0,0 +1,30 @@
#include <metal_stdlib>
using namespace metal;
#include "VertexConstants.h"
struct LineVertex
{
float3 iPosition [[attribute(0)]];
uchar4 iColor [[attribute(1)]];
};
struct LineOut
{
float4 oPosition [[position]];
float4 oColor;
};
vertex LineOut LineVertexShader(LineVertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]])
{
LineOut out;
out.oPosition = constants->Projection * constants->View * float4(vert.iPosition, 1.0);
out.oColor = float4(vert.iColor) / 255.0;
return out;
}
fragment float4 LinePixelShader(LineOut in [[stage_in]])
{
return in.oColor;
}

View File

@@ -0,0 +1,199 @@
#include <metal_stdlib>
using namespace metal;
#include "VertexConstants.h"
constexpr sampler depthSampler(mag_filter::nearest, min_filter::nearest);
struct Vertex
{
float3 vPos [[attribute(0)]];
float3 vNorm [[attribute(1)]];
float2 vTex [[attribute(2)]];
uchar4 vCol [[attribute(3)]];
float4 iModel0 [[attribute(4)]];
float4 iModel1 [[attribute(5)]];
float4 iModel2 [[attribute(6)]];
float4 iModel3 [[attribute(7)]];
float4 iModelInvTrans0 [[attribute(8)]];
float4 iModelInvTrans1 [[attribute(9)]];
float4 iModelInvTrans2 [[attribute(10)]];
float4 iModelInvTrans3 [[attribute(11)]];
uchar4 iCol [[attribute(12)]];
};
struct TriangleOut
{
float4 oPosition [[position]];
float3 oNormal;
float3 oWorldPos;
float2 oTex;
float4 oPositionL;
float4 oColor;
};
vertex TriangleOut TriangleVertexShader(Vertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]])
{
TriangleOut out;
// Convert input matrices
float4x4 iModel(vert.iModel0, vert.iModel1, vert.iModel2, vert.iModel3);
float4x4 iModelInvTrans(vert.iModelInvTrans0, vert.iModelInvTrans1, vert.iModelInvTrans2, vert.iModelInvTrans3);
// Get world position
float4 pos = float4(vert.vPos, 1.0f);
float4 world_pos = iModel * pos;
// Transform the position from world space to homogeneous projection space
float4 proj_pos = constants->View * world_pos;
proj_pos = constants->Projection * proj_pos;
out.oPosition = proj_pos;
// Transform the position from world space to projection space of the light
float4 proj_lpos = constants->LightView * world_pos;
proj_lpos = constants->LightProjection * proj_lpos;
out.oPositionL = proj_lpos;
// output normal
float4 norm = float4(vert.vNorm, 0.0f);
out.oNormal = normalize(iModelInvTrans * norm).xyz;
// output world position of the vertex
out.oWorldPos = world_pos.xyz;
// output texture coordinates
out.oTex = vert.vTex;
// output color
out.oColor = float4(vert.vCol) * float4(vert.iCol) / (255.0 * 255.0);
return out;
}
fragment float4 TrianglePixelShader(TriangleOut vert [[stage_in]], constant PixelShaderConstantBuffer *constants, texture2d<float> depthTexture [[texture(0)]])
{
// Constants
float AmbientFactor = 0.3;
float3 DiffuseColor = float3(vert.oColor.r, vert.oColor.g, vert.oColor.b);
float3 SpecularColor = float3(1, 1, 1);
float SpecularPower = 100.0;
float bias = 1.0e-7;
// Homogenize position in light space
float3 position_l = vert.oPositionL.xyz / vert.oPositionL.w;
// Calculate dot product between direction to light and surface normal and clamp between [0, 1]
float3 view_dir = normalize(constants->CameraPos - vert.oWorldPos);
float3 world_to_light = constants->LightPos - vert.oWorldPos;
float3 light_dir = normalize(world_to_light);
float3 normal = normalize(vert.oNormal);
if (dot(view_dir, normal) < 0) // If we're viewing the triangle from the back side, flip the normal to get the correct lighting
normal = -normal;
float normal_dot_light_dir = clamp(dot(normal, light_dir), 0.0, 1.0);
// Calculate texture coordinates in light depth texture
float2 tex_coord;
tex_coord.x = position_l.x / 2.0 + 0.5;
tex_coord.y = -position_l.y / 2.0 + 0.5;
// Check that the texture coordinate is inside the depth texture, if not we don't know if it is lit or not so we assume lit
float shadow_factor = 1.0;
if (vert.oColor.a > 0 // Alpha = 0 means don't receive shadows
&& tex_coord.x == clamp(tex_coord.x, 0.0, 1.0) && tex_coord.y == clamp(tex_coord.y, 0.0, 1.0))
{
// Modify shadow bias according to the angle between the normal and the light dir
float modified_bias = bias * tan(acos(normal_dot_light_dir));
modified_bias = min(modified_bias, 10.0 * bias);
// Get texture size
float width = 1.0 / 4096;
float height = 1.0 / 4096;
// Samples to take
uint num_samples = 16;
float2 offsets[] = {
float2(-1.5 * width, -1.5 * height),
float2(-0.5 * width, -1.5 * height),
float2(0.5 * width, -1.5 * height),
float2(1.5 * width, -1.5 * height),
float2(-1.5 * width, -0.5 * height),
float2(-0.5 * width, -0.5 * height),
float2(0.5 * width, -0.5 * height),
float2(1.5 * width, -0.5 * height),
float2(-1.5 * width, 0.5 * height),
float2(-0.5 * width, 0.5 * height),
float2(0.5 * width, 0.5 * height),
float2(1.5 * width, 0.5 * height),
float2(-1.5 * width, 1.5 * height),
float2(-0.5 * width, 1.5 * height),
float2(0.5 * width, 1.5 * height),
float2(1.5 * width, 1.5 * height),
};
// Calculate depth of this pixel relative to the light
float light_depth = position_l.z + modified_bias;
// Sample shadow factor
shadow_factor = 0.0;
for (uint i = 0; i < num_samples; ++i)
shadow_factor += depthTexture.sample(depthSampler, tex_coord + offsets[i]).x <= light_depth? 1.0 : 0.0;
shadow_factor /= num_samples;
}
// Calculate diffuse and specular
float diffuse = normal_dot_light_dir;
float specular = diffuse > 0.0? pow(clamp(-dot(reflect(light_dir, normal), view_dir), 0.0, 1.0), SpecularPower) : 0.0;
// Apply procedural pattern based on the uv coordinates
bool2 less_half = (vert.oTex - floor(vert.oTex)) < float2(0.5, 0.5);
float darken_factor = less_half.r ^ less_half.g? 0.5 : 1.0;
// Fade out checkerboard pattern when it tiles too often
float2 dx = dfdx(vert.oTex), dy = dfdy(vert.oTex);
float texel_distance = sqrt(dot(dx, dx) + dot(dy, dy));
darken_factor = mix(darken_factor, 0.75, clamp(5.0 * texel_distance - 1.5, 0.0, 1.0));
// Calculate color
return float4(clamp((AmbientFactor + diffuse * shadow_factor) * darken_factor * DiffuseColor + SpecularColor * specular * shadow_factor, 0, 1), 1);
}
struct DepthOut
{
float4 oPosition [[position]];
};
vertex DepthOut TriangleDepthVertexShader(Vertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]])
{
DepthOut out;
// Check if the alpha = 0
if (vert.vCol.a * vert.iCol.a == 0.0)
{
// Don't draw the triangle by moving it to an invalid location
out.oPosition = float4(0, 0, 0, 0);
}
else
{
// Convert input matrix
float4x4 iModel(vert.iModel0, vert.iModel1, vert.iModel2, vert.iModel3);
// Transform the position from world space to homogeneous projection space for the light
float4 pos = float4(vert.vPos, 1.0f);
pos = iModel * pos;
pos = constants->LightView * pos;
pos = constants->LightProjection * pos;
out.oPosition = pos;
}
return out;
}
fragment float4 TriangleDepthPixelShader(DepthOut in [[stage_in]])
{
// We only write depth, so this shader does nothing
return float4(0.0, 0.0, 0.0, 1.0);
}

View File

@@ -0,0 +1,41 @@
#include <metal_stdlib>
using namespace metal;
#include "VertexConstants.h"
constexpr sampler uiTextureSampler(mag_filter::linear, min_filter::linear);
struct UIVertex
{
float3 vPos [[attribute(0)]];
float2 vTex [[attribute(1)]];
uchar4 vCol [[attribute(2)]];
};
struct UIOut
{
float4 oPosition [[position]];
float2 oTex;
float4 oColor;
};
vertex UIOut UIVertexShader(UIVertex vert [[stage_in]], constant VertexShaderConstantBuffer *constants [[buffer(2)]])
{
UIOut out;
out.oPosition = constants->Projection * constants->View * float4(vert.vPos, 1.0);
out.oTex = vert.vTex;
out.oColor = float4(vert.vCol) / 255.0;
return out;
}
fragment float4 UIPixelShader(UIOut in [[stage_in]], texture2d<float> uiTexture [[texture(0)]])
{
const float4 sample = uiTexture.sample(uiTextureSampler, in.oTex);
return sample * in.oColor;
}
fragment float4 UIPixelShaderUntextured(UIOut in [[stage_in]])
{
return in.oColor;
}

View File

@@ -0,0 +1,13 @@
struct VertexShaderConstantBuffer
{
float4x4 View; // view matrix
float4x4 Projection; // projection matrix
float4x4 LightView; // view matrix of the light
float4x4 LightProjection; // projection matrix of the light
};
struct PixelShaderConstantBuffer
{
float3 CameraPos;
float3 LightPos;
};

View File

@@ -0,0 +1,17 @@
#version 450
layout(set = 1, binding = 0) uniform sampler2D texSampler;
layout(location = 0) in vec2 iTex;
layout(location = 1) in vec4 iColor;
layout(location = 0) out vec4 oColor;
void main()
{
float t = texture(texSampler, iTex).x;
if (t < 0.5)
discard;
oColor = vec4(iColor.xyz, t);
}

View File

@@ -0,0 +1,17 @@
#version 450
#include "VertexConstants.h"
layout(location = 0) in vec3 vPos;
layout(location = 1) in vec2 vTex;
layout(location = 2) in vec4 vCol;
layout(location = 0) out vec2 oTex;
layout(location = 1) out vec4 oColor;
void main()
{
gl_Position = c.Projection * c.View * vec4(vPos, 1.0f);
oTex = vTex;
oColor = vCol;
}

View File

@@ -0,0 +1,10 @@
#version 450
layout(location = 0) in vec4 iColor;
layout(location = 0) out vec4 oColor;
void main()
{
oColor = iColor;
}

View File

@@ -0,0 +1,14 @@
#version 450
#include "VertexConstants.h"
layout(location = 0) in vec3 iPosition;
layout(location = 1) in vec4 iColor;
layout(location = 0) out vec4 oColor;
void main()
{
gl_Position = c.Projection * c.View * vec4(iPosition, 1.0);
oColor = iColor;
}

View File

@@ -0,0 +1,6 @@
#version 450
// We only write depth, so this shader does nothing
void main()
{
}

View File

@@ -0,0 +1,31 @@
#version 450
#include "VertexConstants.h"
layout(location = 0) in vec3 vPos;
layout(location = 1) in vec3 vNorm;
layout(location = 2) in vec2 vTex;
layout(location = 3) in vec4 vCol;
layout(location = 4) in mat4 iModel;
layout(location = 8) in mat4 iModelInvTrans;
layout(location = 12) in vec4 iCol;
void main()
{
// Check if the alpha = 0
if (vCol.a * iCol.a == 0.0)
{
// Don't draw the triangle by moving it to an invalid location
gl_Position = vec4(0, 0, 0, 0);
}
else
{
// Transform the position from world space to homogeneous projection space for the light
vec4 pos = vec4(vPos, 1.0f);
pos = iModel * pos;
pos = c.LightView * pos;
pos = c.LightProjection * pos;
gl_Position = pos;
}
}

View File

@@ -0,0 +1,107 @@
#version 450
layout(binding = 1) uniform PixelShaderConstantBuffer
{
vec3 CameraPos;
vec3 LightPos;
} c;
layout(location = 0) in vec3 iNormal;
layout(location = 1) in vec3 iWorldPos;
layout(location = 2) in vec2 iTex;
layout(location = 3) in vec4 iPositionL;
layout(location = 4) in vec4 iColor;
layout(location = 0) out vec4 oColor;
layout(set = 1, binding = 0) uniform sampler2D LightDepthSampler;
void main()
{
// Constants
float AmbientFactor = 0.3;
vec3 DiffuseColor = vec3(iColor.r, iColor.g, iColor.b);
vec3 SpecularColor = vec3(1, 1, 1);
float SpecularPower = 100.0;
float bias = 1.0e-7;
// Homogenize position in light space
vec3 position_l = iPositionL.xyz / iPositionL.w;
// Calculate dot product between direction to light and surface normal and clamp between [0, 1]
vec3 view_dir = normalize(c.CameraPos - iWorldPos);
vec3 world_to_light = c.LightPos - iWorldPos;
vec3 light_dir = normalize(world_to_light);
vec3 normal = normalize(iNormal);
if (dot(view_dir, normal) < 0) // If we're viewing the triangle from the back side, flip the normal to get the correct lighting
normal = -normal;
float normal_dot_light_dir = clamp(dot(normal, light_dir), 0, 1);
// Calculate texture coordinates in light depth texture
vec2 tex_coord;
tex_coord.x = position_l.x / 2.0 + 0.5;
tex_coord.y = position_l.y / 2.0 + 0.5;
// Check that the texture coordinate is inside the depth texture, if not we don't know if it is lit or not so we assume lit
float shadow_factor = 1.0;
if (iColor.a > 0 // Alpha = 0 means don't receive shadows
&& tex_coord.x == clamp(tex_coord.x, 0, 1) && tex_coord.y == clamp(tex_coord.y, 0, 1))
{
// Modify shadow bias according to the angle between the normal and the light dir
float modified_bias = bias * tan(acos(normal_dot_light_dir));
modified_bias = min(modified_bias, 10.0 * bias);
// Get texture size
float width = 1.0 / 4096;
float height = 1.0 / 4096;
// Samples to take
uint num_samples = 16;
vec2 offsets[] = {
vec2(-1.5 * width, -1.5 * height),
vec2(-0.5 * width, -1.5 * height),
vec2(0.5 * width, -1.5 * height),
vec2(1.5 * width, -1.5 * height),
vec2(-1.5 * width, -0.5 * height),
vec2(-0.5 * width, -0.5 * height),
vec2(0.5 * width, -0.5 * height),
vec2(1.5 * width, -0.5 * height),
vec2(-1.5 * width, 0.5 * height),
vec2(-0.5 * width, 0.5 * height),
vec2(0.5 * width, 0.5 * height),
vec2(1.5 * width, 0.5 * height),
vec2(-1.5 * width, 1.5 * height),
vec2(-0.5 * width, 1.5 * height),
vec2(0.5 * width, 1.5 * height),
vec2(1.5 * width, 1.5 * height),
};
// Calculate depth of this pixel relative to the light
float light_depth = position_l.z + modified_bias;
// Sample shadow factor
shadow_factor = 0.0;
for (uint i = 0; i < num_samples; ++i)
shadow_factor += texture(LightDepthSampler, tex_coord + offsets[i]).x <= light_depth? 1.0 : 0.0;
shadow_factor /= num_samples;
}
// Calculate diffuse and specular
float diffuse = normal_dot_light_dir;
float specular = diffuse > 0.0? pow(clamp(-dot(reflect(light_dir, normal), view_dir), 0, 1), SpecularPower) : 0.0;
// Apply procedural pattern based on the uv coordinates
bvec2 less_half = lessThan(iTex - floor(iTex), vec2(0.5, 0.5));
float darken_factor = less_half.r ^^ less_half.g? 0.5 : 1.0;
// Fade out checkerboard pattern when it tiles too often
vec2 dx = dFdx(iTex), dy = dFdy(iTex);
float texel_distance = sqrt(dot(dx, dx) + dot(dy, dy));
darken_factor = mix(darken_factor, 0.75, clamp(5.0 * texel_distance - 1.5, 0.0, 1.0));
// Calculate color
oColor = vec4(clamp((AmbientFactor + diffuse * shadow_factor) * darken_factor * DiffuseColor + SpecularColor * specular * shadow_factor, 0, 1), 1);
}

View File

@@ -0,0 +1,48 @@
#version 450
#include "VertexConstants.h"
layout(location = 0) in vec3 vPos;
layout(location = 1) in vec3 vNorm;
layout(location = 2) in vec2 vTex;
layout(location = 3) in vec4 vCol;
layout(location = 4) in mat4 iModel;
layout(location = 8) in mat4 iModelInvTrans;
layout(location = 12) in vec4 iCol;
layout(location = 0) out vec3 oNormal;
layout(location = 1) out vec3 oWorldPos;
layout(location = 2) out vec2 oTex;
layout(location = 3) out vec4 oPositionL;
layout(location = 4) out vec4 oColor;
void main()
{
// Get world position
vec4 pos = vec4(vPos, 1.0f);
vec4 world_pos = iModel * pos;
// Transform the position from world space to homogeneous projection space
vec4 proj_pos = c.View * world_pos;
proj_pos = c.Projection * proj_pos;
gl_Position = proj_pos;
// Transform the position from world space to projection space of the light
vec4 proj_lpos = c.LightView * world_pos;
proj_lpos = c.LightProjection * proj_lpos;
oPositionL = proj_lpos;
// output normal
vec4 norm = vec4(vNorm, 0.0f);
oNormal = normalize(iModelInvTrans * norm).xyz;
// output world position of the vertex
oWorldPos = world_pos.xyz;
// output texture coordinates
oTex = vTex;
// output color
oColor = vCol * iCol;
}

View File

@@ -0,0 +1,13 @@
#version 450
layout(set = 1, binding = 0) uniform sampler2D texSampler;
layout(location = 0) in vec4 iColor;
layout(location = 1) in vec2 iTex;
layout(location = 0) out vec4 oColor;
void main()
{
oColor = iColor * texture(texSampler, iTex);
}

View File

@@ -0,0 +1,10 @@
#version 450
layout(location = 0) in vec4 iColor;
layout(location = 0) out vec4 oColor;
void main()
{
oColor = iColor;
}

View File

@@ -0,0 +1,17 @@
#version 450
#include "VertexConstants.h"
layout(location = 0) in vec3 vPos;
layout(location = 1) in vec2 vTex;
layout(location = 2) in vec4 vCol;
layout(location = 0) out vec4 oColor;
layout(location = 1) out vec2 oTex;
void main()
{
gl_Position = c.Projection * c.View * vec4(vPos, 1.0f);
oTex = vTex;
oColor = vCol;
}

View File

@@ -0,0 +1,7 @@
layout(binding = 0) uniform VertexShaderConstantBuffer
{
mat4 View;
mat4 Projection;
mat4 LightView;
mat4 LightProjection;
} c;

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

7
lib/All/JoltPhysics/Build/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
/Linux*
/WASM*
/VS20*
/XCode*
/MinGW*
/Doxygen
/CoverageReport

View File

@@ -0,0 +1,5 @@
.idea
.gradle
.cxx
build
local.properties

View File

@@ -0,0 +1,51 @@
plugins {
id 'com.android.application'
}
android {
compileSdk 33
ndkVersion "26.1.10909125"
defaultConfig {
applicationId "com.joltphysics.performancetest"
minSdk 21
targetSdk 33
versionCode 1
versionName "1.0"
ndk.abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64', 'x86'
externalNativeBuild {
cmake {
cppFlags '-std=c++17 -Wall -Werror -ffp-model=precise -ffp-contract=off -DJPH_PROFILE_ENABLED -DJPH_DEBUG_RENDERER'
arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static', '-DCROSS_PLATFORM_DETERMINISTIC=ON'
}
}
signingConfig signingConfigs.debug
}
buildTypes {
release {
minifyEnabled false
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
externalNativeBuild {
cmake {
path file('src/main/cpp/CMakeLists.txt')
version '3.22.1'
}
}
buildFeatures {
viewBinding true
}
namespace 'com.joltphysics.performancetest'
}
dependencies {
}

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:label="Jolt Physics Performance Test"
android:supportsRtl="false"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<activity
android:name="android.app.NativeActivity"
android:exported="true">
<meta-data android:name="android.app.lib_name" android:value="PerformanceTest"/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>

View File

@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.10.2)
project("JoltPhysicsPerformanceTest")
# Make sure we include the app glue sources
set(APP_GLUE_DIR ${ANDROID_NDK}/sources/android/native_app_glue)
include_directories(${APP_GLUE_DIR})
# Set repository root
set(PHYSICS_REPO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../")
# Make targets
include(${PHYSICS_REPO_ROOT}/Jolt/Jolt.cmake)
include(${PHYSICS_REPO_ROOT}/PerformanceTest/PerformanceTest.cmake)
# Link shared native library
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")
add_library(PerformanceTest SHARED ${PERFORMANCE_TEST_SRC_FILES} ${APP_GLUE_DIR}/android_native_app_glue.c)
target_include_directories(PerformanceTest PUBLIC Jolt ${JOLT_PHYSICS_ROOT} ${PERFORMANCE_TEST_ROOT})
target_link_libraries(PerformanceTest Jolt android log)

View File

@@ -0,0 +1,51 @@
plugins {
id 'com.android.application'
}
android {
compileSdk 33
ndkVersion "26.1.10909125"
defaultConfig {
applicationId "com.joltphysics.unittests"
minSdk 21
targetSdk 33
versionCode 1
versionName "1.0"
ndk.abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64', 'x86'
externalNativeBuild {
cmake {
cppFlags '-std=c++17 -Wall -Werror -ffp-contract=off -DJPH_PROFILE_ENABLED -DJPH_DEBUG_RENDERER'
arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static'
}
}
signingConfig signingConfigs.debug
}
buildTypes {
release {
minifyEnabled false
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
externalNativeBuild {
cmake {
path file('src/main/cpp/CMakeLists.txt')
version '3.22.1'
}
}
buildFeatures {
viewBinding true
}
namespace 'com.joltphysics.unittests'
}
dependencies {
}

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:allowBackup="true"
android:label="Jolt Physics Unit Tests"
android:supportsRtl="false"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<activity
android:name="android.app.NativeActivity"
android:exported="true">
<meta-data android:name="android.app.lib_name" android:value="UnitTests"/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>

View File

@@ -0,0 +1,20 @@
cmake_minimum_required(VERSION 3.10.2)
project("JoltPhysicsUnitTests")
# Make sure we include the app glue sources
set(APP_GLUE_DIR ${ANDROID_NDK}/sources/android/native_app_glue)
include_directories(${APP_GLUE_DIR})
# Set repository root
set(PHYSICS_REPO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../")
# Make targets
include(${PHYSICS_REPO_ROOT}/Jolt/Jolt.cmake)
include(${PHYSICS_REPO_ROOT}/UnitTests/UnitTests.cmake)
# Link shared native library
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")
add_library(UnitTests SHARED ${UNIT_TESTS_SRC_FILES} ${APP_GLUE_DIR}/android_native_app_glue.c)
target_include_directories(UnitTests PUBLIC Jolt ${JOLT_PHYSICS_ROOT} ${UNIT_TESTS_ROOT})
target_link_libraries(UnitTests Jolt android log)

View File

@@ -0,0 +1,17 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.7.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

View File

@@ -0,0 +1,21 @@
# 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=-Xmx2048m -Dfile.encoding=UTF-8
# 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
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false

Binary file not shown.

View File

@@ -0,0 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

185
lib/All/JoltPhysics/Build/Android/gradlew vendored Executable file
View File

@@ -0,0 +1,185 @@
#!/usr/bin/env sh
#
# Copyright 2015 the original author or 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 UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$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 "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# 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
;;
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" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
exec "$JAVACMD" "$@"

View File

@@ -0,0 +1,89 @@
@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

View File

@@ -0,0 +1,10 @@
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "Jolt Physics"
include ':UnitTests'
include ':PerformanceTest'

View File

@@ -0,0 +1,449 @@
cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
project(JoltPhysics VERSION 5.5.0 LANGUAGES CXX)
# When turning this option on, the library will be compiled using assertions. By default asserts are enabled in Debug build.
option(USE_ASSERTS "Enable asserts" OFF)
# When turning this option on, the library will be compiled using doubles for positions. This allows for much bigger worlds.
option(DOUBLE_PRECISION "Use double precision math" OFF)
# When turning this option on, the library will be compiled with debug symbols
option(GENERATE_DEBUG_SYMBOLS "Generate debug symbols" ON)
# Which type of debug symbols to generate, e.g. using source-map when compiling with emscripten makes compilation a lot faster
set(JPH_DEBUG_SYMBOL_FORMAT "" CACHE STRING "Which type of debug symbols to generate")
# When turning this option on, the library will override the default CMAKE_CXX_FLAGS_DEBUG/RELEASE values, otherwise they will use the platform defaults
option(OVERRIDE_CXX_FLAGS "Override CMAKE_CXX_FLAGS_DEBUG/RELEASE" ON)
# When turning this option on, the library will be compiled in such a way to attempt to keep the simulation deterministic across platforms
option(CROSS_PLATFORM_DETERMINISTIC "Cross platform deterministic" OFF)
# When turning this option on, the library will be compiled for ARM using the CROSS_COMPILE_ARM_TARGET architecture, requires compiling with clang
option(CROSS_COMPILE_ARM "Cross compile to the CROSS_COMPILE_ARM_TARGET architecture" OFF)
# When cross compiling to ARM this specifies which target to use. Can be 'aarch64-linux-gnu' for 64-bit or 'arm-linux-gnueabihf' for 32-bit
set(CROSS_COMPILE_ARM_TARGET "aarch64-linux-gnu" CACHE STRING "The target to use")
# When turning this option on, Jolt will be compiled as a shared library and public symbols will be exported.
option(BUILD_SHARED_LIBS "Compile Jolt as a shared library" OFF)
# When turning this option on, the library will be compiled with interprocedural optimizations enabled, also known as link-time optimizations or link-time code generation.
# Note that if you turn this on you need to use SET_INTERPROCEDURAL_OPTIMIZATION() or set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) to enable LTO specifically for your own project as well.
# If you don't do this you may get an error: /usr/bin/ld: libJolt.a: error adding symbols: file format not recognized
option(INTERPROCEDURAL_OPTIMIZATION "Enable interprocedural optimizations" ON)
# When turning this on, in Debug and Release mode, the library will emit extra code to ensure that the 4th component of a 3-vector is kept the same as the 3rd component
# and will enable floating point exceptions during simulation to detect divisions by zero.
# Note that this currently only works using MSVC. Clang turns Float2 into a SIMD vector sometimes causing floating point exceptions (the option is ignored).
option(FLOATING_POINT_EXCEPTIONS_ENABLED "Enable floating point exceptions" ON)
# When turning this on, the library will be compiled with C++ exceptions enabled.
# This adds some overhead and Jolt doesn't use exceptions so by default it is off.
option(CPP_EXCEPTIONS_ENABLED "Enable C++ exceptions" OFF)
# When turning this on, the library will be compiled with C++ RTTI enabled.
# This adds some overhead and Jolt doesn't use RTTI so by default it is off.
option(CPP_RTTI_ENABLED "Enable C++ RTTI" OFF)
# Number of bits to use in ObjectLayer. Can be 16 or 32.
option(OBJECT_LAYER_BITS "Number of bits in ObjectLayer" 16)
# Select X86 processor features to use (if everything is off it will be SSE2 compatible)
option(USE_SSE4_1 "Enable SSE4.1" ON)
option(USE_SSE4_2 "Enable SSE4.2" ON)
option(USE_AVX "Enable AVX" ON)
option(USE_AVX2 "Enable AVX2" ON)
option(USE_AVX512 "Enable AVX512" OFF)
option(USE_LZCNT "Enable LZCNT" ON)
option(USE_TZCNT "Enable TZCNT" ON)
option(USE_F16C "Enable F16C" ON)
option(USE_FMADD "Enable FMADD" ON)
# Enable SIMD for the WASM build. Note that this is currently off by default since not all browsers support this.
# See: https://caniuse.com/?search=WebAssembly%20SIMD (Safari got support in March 2023 and was the last major browser to get support).
option(USE_WASM_SIMD "Enable SIMD for WASM" OFF)
# Enable 64 bit WASM instead of the default 32 bit WASM. Note that this currently requires special commandline flags in browsers and nodejs to enable.
# E.g. use 'node --experimental-wasm-memory64 UnitTests.js' to run the unit tests in nodejs in 64 bit.
option(JPH_USE_WASM64 "Enable 64 bit WASM" OFF)
# Enable all warnings
option(ENABLE_ALL_WARNINGS "Enable all warnings and warnings as errors" ON)
# Setting to periodically trace broadphase stats to help determine if the broadphase layer configuration is optimal
option(TRACK_BROADPHASE_STATS "Track Broadphase Stats" OFF)
# Setting to periodically trace narrowphase stats to help determine which collision queries could be optimized
option(TRACK_NARROWPHASE_STATS "Track Narrowphase Stats" OFF)
# Setting to track simulation timings per body
option(JPH_TRACK_SIMULATION_STATS "Track Simulation Stats" OFF)
# Enable the debug renderer in the Debug and Release builds. Note that DEBUG_RENDERER_IN_DISTRIBUTION will override this setting.
option(DEBUG_RENDERER_IN_DEBUG_AND_RELEASE "Enable debug renderer in Debug and Release builds" ON)
# Setting to enable the debug renderer in all builds.
# Note that enabling this reduces the performance of the library even if you're not drawing anything.
option(DEBUG_RENDERER_IN_DISTRIBUTION "Enable debug renderer in all builds" OFF)
# Enable the profiler in Debug and Release builds. Note that PROFILER_IN_DISTRIBUTION will override this setting.
option(PROFILER_IN_DEBUG_AND_RELEASE "Enable the profiler in Debug and Release builds" ON)
# Enable the profiler in all builds.
# Note that enabling this reduces the performance of the library.
option(PROFILER_IN_DISTRIBUTION "Enable the profiler in all builds" OFF)
# Ability to use the external profiler using CMake config. Defines preprocessor JPH_EXTERNAL_PROFILE.
# Use external profiler set using ProfileStartMeasurement and ProfileEndMeasurement to profile.
# Option is available only when profiling is enabled using PROFILER_IN_DEBUG_AND_RELEASE or PROFILER_IN_DISTRIBUTION.
option(JPH_USE_EXTERNAL_PROFILE "Use external profiler when profiling is enabled" OFF)
# Setting this option will force the library to use malloc/free instead of allowing the user to override the memory allocator
option(DISABLE_CUSTOM_ALLOCATOR "Disable support for a custom memory allocator" OFF)
# Setting this option will force the library to use the STL vector instead of the custom Array class
option(USE_STD_VECTOR "Use std::vector instead of own Array class" OFF)
# Setting this option will compile the ObjectStream class and RTTI attribute information
option(ENABLE_OBJECT_STREAM "Compile the ObjectStream class and RTTI attribute information" ON)
# Enable installation
option(ENABLE_INSTALL "Generate installation target" ON)
include(CMakeDependentOption)
# Ability to toggle between the static and DLL versions of the MSVC runtime library
# Windows Store only supports the DLL version
cmake_dependent_option(USE_STATIC_MSVC_RUNTIME_LIBRARY "Use the static MSVC runtime library" ON "MSVC;NOT WINDOWS_STORE" OFF)
# Enable Vulkan instead of DirectX
cmake_dependent_option(JPH_ENABLE_VULKAN "Enable Vulkan" ON "LINUX" OFF)
# Determine which configurations exist
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) # Only do this when we're at the top level, see: https://gitlab.kitware.com/cmake/cmake/-/issues/24181
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;Distribution")
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
set(CMAKE_CONFIGURATION_TYPES "Debug;Release;ReleaseASAN;ReleaseUBSAN;ReleaseTSAN;ReleaseCoverage;Distribution")
endif()
endif()
if (MSVC)
# Fill in the path to the asan libraries
set(CLANG_LIB_PATH "\"$(VSInstallDir)\\VC\\Tools\\Llvm\\x64\\lib\\clang\\${CMAKE_CXX_COMPILER_VERSION}\\lib\\windows\"")
# 64 bit architecture
set(CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE "x64")
# Set runtime library
if (USE_STATIC_MSVC_RUNTIME_LIBRARY)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
# Set general compiler flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:__cplusplus /Gm- /MP /nologo /diagnostics:classic /FC /fp:except- /Zc:inline")
# Enable warnings
if (ENABLE_ALL_WARNINGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Wall /WX")
endif()
# Optionally generate debug symbols
if (GENERATE_DEBUG_SYMBOLS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi")
endif()
if (NOT CPP_RTTI_ENABLED)
# Set compiler flag for disabling RTTI
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR-")
else()
# Set compiler flag for enabling RTTI
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /GR")
endif()
if (NOT CPP_EXCEPTIONS_ENABLED)
# Remove any existing compiler flag that enables exceptions
string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
# Disable warning about STL and compiler-generated types using noexcept when exceptions are disabled
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4577")
else()
# Enable exceptions
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
endif()
# Set compiler flags for various configurations
if (OVERRIDE_CXX_FLAGS)
set(CMAKE_CXX_FLAGS_DEBUG "/GS /Od /Ob0 /RTC1")
set(CMAKE_CXX_FLAGS_RELEASE "/GS- /Gy /O2 /Oi /Ot")
endif()
set(CMAKE_CXX_FLAGS_DISTRIBUTION "${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELEASEASAN "-fsanitize=address /Od")
set(CMAKE_CXX_FLAGS_RELEASEUBSAN "-fsanitize=undefined,implicit-conversion,float-divide-by-zero,local-bounds -fno-sanitize-recover=all")
set(CMAKE_CXX_FLAGS_RELEASETSAN "${CMAKE_CXX_FLAGS_RELEASE} -fsanitize=thread")
set(CMAKE_CXX_FLAGS_RELEASECOVERAGE "-fprofile-instr-generate -fcoverage-mapping")
# Set linker flags
set(CMAKE_EXE_LINKER_FLAGS "/SUBSYSTEM:WINDOWS /ignore:4221")
if (GENERATE_DEBUG_SYMBOLS)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG")
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
if (CROSS_PLATFORM_DETERMINISTIC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:precise")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast") # Clang doesn't use fast math because it cannot be turned off inside a single compilation unit
endif()
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /showFilenames")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments") # Clang emits warnings about unused arguments such as /MP and /GL
set(CMAKE_EXE_LINKER_FLAGS_RELEASEASAN "/SUBSYSTEM:CONSOLE /LIBPATH:${CLANG_LIB_PATH} clang_rt.asan-x86_64.lib -wholearchive:clang_rt.asan-x86_64.lib clang_rt.asan_cxx-x86_64.lib -wholearchive:clang_rt.asan_cxx-x86_64.lib")
set(CMAKE_EXE_LINKER_FLAGS_RELEASEUBSAN "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}")
set(CMAKE_EXE_LINKER_FLAGS_RELEASETSAN "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}")
set(CMAKE_EXE_LINKER_FLAGS_RELEASECOVERAGE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LIBPATH:${CLANG_LIB_PATH}")
endif()
else()
# Enable warnings
if (ENABLE_ALL_WARNINGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror")
endif()
# Optionally generate debug symbols
if (GENERATE_DEBUG_SYMBOLS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g${JPH_DEBUG_SYMBOL_FORMAT}")
endif()
if (NOT CPP_RTTI_ENABLED)
# Set compiler flag for disabling RTTI
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
else()
# Set compiler flag for enabling RTTI
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -frtti")
endif()
if (NOT CPP_EXCEPTIONS_ENABLED)
# Set compiler flag for disabling exception-handling
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions")
else()
# Set compiler flag for enabling exception-handling
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions")
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# Also disable -Wstringop-overflow or it will generate false positives that can't be disabled from code when link-time optimizations are enabled
# Also disable -Wno-psabi to avoid messages of the form note: parameter passing for argument of type '...' changed in GCC 7.1
# Also turn off automatic fused multiply add contractions, there doesn't seem to be a way to do this selectively through the macro JPH_PRECISE_MATH_OFF
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-stringop-overflow -Wno-psabi -ffp-contract=off")
else()
# Do not use -ffast-math since it cannot be turned off in a single compilation unit under clang, see Core.h
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffp-model=precise")
# On clang 14 and later we can turn off float contraction through a pragma, older versions and deterministic versions need it off always, see Core.h
# clang on LoongArch does not support such pragma, also turn off contraction for it.
if (CMAKE_CXX_COMPILER_VERSION LESS 14 OR CROSS_PLATFORM_DETERMINISTIC OR "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "loongarch")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffp-contract=off")
# Clang 20 and later complain with: overriding '-ffp-model=precise' option with '-ffp-contract=off' [-Woverriding-option], but this is exactly what we want.
if (CMAKE_CXX_COMPILER_VERSION GREATER 19)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-overriding-option")
endif()
endif()
# Cross compiler flags
if (CROSS_COMPILE_ARM AND NOT ("${CROSS_COMPILE_ARM_TARGET}" STREQUAL ""))
set(CMAKE_CXX_FLAGS "--target=${CROSS_COMPILE_ARM_TARGET} ${CMAKE_CXX_FLAGS}")
endif()
endif()
# See https://github.com/jrouwe/JoltPhysics/issues/922. When compiling with DOUBLE_PRECISION=YES and CMAKE_OSX_DEPLOYMENT_TARGET=10.12 clang triggers a warning that we silence here.
if ("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin" AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-allocation")
endif()
# Set compiler flags for various configurations
if (OVERRIDE_CXX_FLAGS)
set(CMAKE_CXX_FLAGS_DEBUG "")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
endif()
set(CMAKE_CXX_FLAGS_DISTRIBUTION "${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELEASEASAN "-fsanitize=address")
set(CMAKE_CXX_FLAGS_RELEASEUBSAN "-fsanitize=undefined,implicit-conversion,float-divide-by-zero,local-bounds -fno-sanitize-recover=all")
set(CMAKE_CXX_FLAGS_RELEASETSAN "${CMAKE_CXX_FLAGS_RELEASE} -fsanitize=thread")
set(CMAKE_CXX_FLAGS_RELEASECOVERAGE "-O0 -DJPH_NO_FORCE_INLINE -fprofile-instr-generate -fcoverage-mapping")
endif()
# Set linker flags
set(CMAKE_EXE_LINKER_FLAGS_DISTRIBUTION "${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
# Enable link time optimization in Release and Distribution mode if requested and available
function(SET_INTERPROCEDURAL_OPTIMIZATION)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE OFF PARENT_SCOPE)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DISTRIBUTION OFF PARENT_SCOPE)
# On ARM, whole program optimization triggers an internal compiler error during code gen, so we don't turn it on
# When compiling as a shared lib with MinGW, turning on LTO causes errors of the form 'ld.exe: cannot export symbol X wrong type (4 vs 3)'
if (INTERPROCEDURAL_OPTIMIZATION
AND NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "ARM64")
AND NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "ARM")
AND (NOT CROSS_COMPILE_ARM OR ("${CROSS_COMPILE_ARM_TARGET}" STREQUAL "aarch64-linux-gnu"))
AND NOT (MINGW AND BUILD_SHARED_LIBS))
include(CheckIPOSupported)
check_ipo_supported(RESULT IS_IPO_SUPPORTED OUTPUT IPO_CHECK_OUTPUT)
if (IS_IPO_SUPPORTED)
message("Interprocedural optimizations are turned on")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON PARENT_SCOPE)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DISTRIBUTION ON PARENT_SCOPE)
else()
message("Warning: Interprocedural optimizations are not supported for this target, turn off the option INTERPROCEDURAL_OPTIMIZATION to disable this warning")
endif()
endif()
endfunction()
SET_INTERPROCEDURAL_OPTIMIZATION()
# Set repository root
set(PHYSICS_REPO_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../)
# Make Jolt Library
include(${PHYSICS_REPO_ROOT}/Jolt/Jolt.cmake)
if (XCODE)
# Ensure that we enable SSE4.2 for the x86_64 build, XCode builds multiple architectures
set_property(TARGET Jolt PROPERTY XCODE_ATTRIBUTE_OTHER_CPLUSPLUSFLAGS[arch=x86_64] "$(inherited) -msse4.2 -mpopcnt")
endif()
# Install Jolt library and includes
if (ENABLE_INSTALL)
include(GNUInstallDirs)
install(TARGETS Jolt
EXPORT JoltExport
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
foreach(SRC_FILE ${JOLT_PHYSICS_SRC_FILES})
string(REPLACE ${PHYSICS_REPO_ROOT} "" RELATIVE_SRC_FILE ${SRC_FILE})
get_filename_component(DESTINATION_PATH ${RELATIVE_SRC_FILE} DIRECTORY)
if (NOT RELATIVE_SRC_FILE MATCHES "\.cpp")
cmake_path(SET DST_FILE NORMALIZE "${CMAKE_INSTALL_INCLUDEDIR}/${DESTINATION_PATH}")
install(FILES ${SRC_FILE} DESTINATION ${DST_FILE})
endif()
endforeach()
# Export Jolt library
export(TARGETS Jolt
NAMESPACE Jolt::
FILE JoltConfig.cmake)
install(EXPORT JoltExport
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Jolt/
NAMESPACE Jolt::
FILE JoltConfig.cmake)
endif()
# Check if we're the root CMakeLists.txt, if not we are included by another CMake file and we should disable everything except for the main library
if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
# Ability to turn ON/OFF individual applications
option(TARGET_UNIT_TESTS "Build Unit Tests" ON)
option(TARGET_HELLO_WORLD "Build Hello World" ON)
option(TARGET_PERFORMANCE_TEST "Build Performance Test" ON)
option(TARGET_SAMPLES "Build Samples" ON)
option(TARGET_VIEWER "Build JoltViewer" ON)
if (TARGET_UNIT_TESTS)
# Create UnitTests executable
include(${PHYSICS_REPO_ROOT}/UnitTests/UnitTests.cmake)
add_executable(UnitTests ${UNIT_TESTS_SRC_FILES})
target_include_directories(UnitTests PUBLIC ${UNIT_TESTS_ROOT})
target_link_libraries(UnitTests LINK_PUBLIC Jolt)
if (EMSCRIPTEN)
target_link_options(UnitTests PUBLIC -sSTACK_SIZE=1048576 -sINITIAL_MEMORY=134217728)
endif()
# Code coverage doesn't work when using precompiled headers
if (CMAKE_GENERATOR STREQUAL "Ninja Multi-Config" AND MSVC)
# The Ninja Multi-Config generator errors out when selectively disabling precompiled headers for certain configurations.
# See: https://github.com/jrouwe/JoltPhysics/issues/1211
target_precompile_headers(UnitTests PRIVATE "${JOLT_PHYSICS_ROOT}/Jolt.h")
else()
target_precompile_headers(UnitTests PRIVATE "$<$<NOT:$<CONFIG:ReleaseCoverage>>:${JOLT_PHYSICS_ROOT}/Jolt.h>")
endif()
if (MSVC)
target_link_options(UnitTests PUBLIC "/SUBSYSTEM:CONSOLE")
endif()
if (IOS)
# Set the bundle information
set_property(TARGET UnitTests PROPERTY MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/iOS/UnitTestsInfo.plist")
set_property(TARGET UnitTests PROPERTY XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "com.joltphysics.unittests")
endif()
if (XCODE)
# Ensure that we enable SSE4.2 for the x86_64 build, XCode builds multiple architectures
set_property(TARGET UnitTests PROPERTY XCODE_ATTRIBUTE_OTHER_CPLUSPLUSFLAGS[arch=x86_64] "$(inherited) -msse4.2 -mpopcnt")
endif()
# Register unit tests as a test so that it can be run with:
# ctest --output-on-failure
enable_testing()
add_test(UnitTests UnitTests)
endif()
if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore")
if (TARGET_HELLO_WORLD)
# Example 'Hello World' application
include(${PHYSICS_REPO_ROOT}/HelloWorld/HelloWorld.cmake)
add_executable(HelloWorld ${HELLO_WORLD_SRC_FILES})
target_include_directories(HelloWorld PUBLIC ${HELLO_WORLD_ROOT})
target_link_libraries(HelloWorld LINK_PUBLIC Jolt)
if (MSVC)
target_link_options(HelloWorld PUBLIC "/SUBSYSTEM:CONSOLE")
endif()
if (EMSCRIPTEN)
target_link_options(HelloWorld PUBLIC -sSTACK_SIZE=1048576 -sINITIAL_MEMORY=134217728)
endif()
endif()
if (TARGET_PERFORMANCE_TEST)
# Performance Test application
include(${PHYSICS_REPO_ROOT}/PerformanceTest/PerformanceTest.cmake)
add_executable(PerformanceTest ${PERFORMANCE_TEST_SRC_FILES})
target_include_directories(PerformanceTest PUBLIC ${PERFORMANCE_TEST_ROOT})
target_link_libraries(PerformanceTest LINK_PUBLIC Jolt)
if (MSVC)
target_link_options(PerformanceTest PUBLIC "/SUBSYSTEM:CONSOLE")
endif()
if (EMSCRIPTEN)
# Embed the assets for the RagdollScene
target_link_options(PerformanceTest PUBLIC "SHELL:--preload-file ${PHYSICS_REPO_ROOT}/Assets/Human.tof@/Assets/Human.tof")
target_link_options(PerformanceTest PUBLIC "SHELL:--preload-file ${PHYSICS_REPO_ROOT}/Assets/Human/dead_pose1.tof@/Assets/Human/dead_pose1.tof")
target_link_options(PerformanceTest PUBLIC "SHELL:--preload-file ${PHYSICS_REPO_ROOT}/Assets/terrain2.bof@/Assets/terrain2.bof")
target_link_options(PerformanceTest PUBLIC -sSTACK_SIZE=1048576 -sINITIAL_MEMORY=134217728)
endif()
set_property(TARGET PerformanceTest PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${PHYSICS_REPO_ROOT}")
endif()
endif()
if ((WIN32 OR LINUX OR ("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")) AND NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "ARM")) # ARM 32-bit is missing dinput8.lib
# Windows only targets
if (TARGET_SAMPLES OR TARGET_VIEWER)
include(${PHYSICS_REPO_ROOT}/TestFramework/TestFramework.cmake)
endif()
if (TARGET_SAMPLES)
if (TEST_FRAMEWORK_AVAILABLE)
include(${PHYSICS_REPO_ROOT}/Samples/Samples.cmake)
else()
message("Cannot build Samples because Vulkan/DirectX SDK is not available!")
endif()
endif()
if (TARGET_VIEWER)
if (TEST_FRAMEWORK_AVAILABLE)
include(${PHYSICS_REPO_ROOT}/JoltViewer/JoltViewer.cmake)
else()
message("Cannot build JoltViewer because Vulkan/DirectX SDK is not available!")
endif()
endif()
endif()
endif()

View File

@@ -0,0 +1,250 @@
# Building and Using Jolt Physics
## Build Types
Each platform supports multiple build targets
- Debug - Debug version of the library, turns on asserts
- Release - Release version of the library, no asserts but includes profiling support and can draw the world and simulation properties
- ReleaseASAN - As Release but turns on Address Sanitizer (clang only) to find bugs
- ReleaseUBSAN - As Release but turns on Undefined Behavior Sanitizer (clang only) to find bugs
- ReleaseTSAN - As Release but turns on the Thread Sanitizer (clang only) to find bugs
- ReleaseCoverage - As Release but turns on Coverage reporting (clang only) to find which areas of the code are not executed
- Distribution - Shippable version of the library, turns off all debugging support
## Includes
The Jolt headers don't include Jolt/Jolt.h. Always include Jolt/Jolt.h before including any other Jolt header.
You can use Jolt/Jolt.h in your precompiled header to speed up compilation.
## Defines
There are a number of user configurable defines that turn on/off certain features:
<details>
<summary>General Options (click to see more)</summary>
<ul>
<li>JPH_SHARED_LIBRARY - Use the Jolt library as a shared library. Use JPH_BUILD_SHARED_LIBRARY to build Jolt as a shared library.</li>
<li>JPH_PROFILE_ENABLED - Turns on the internal profiler.</li>
<li>JPH_EXTERNAL_PROFILE - Turns on the internal profiler but forwards the information to a user defined external system (see Profiler.h). Use JPH_USE_EXTERNAL_PROFILE option to enable this from CMake config.</li>
<li>JPH_DEBUG_RENDERER - Adds support to draw lines and triangles, used to be able to debug draw the state of the world.</li>
<li>JPH_DISABLE_TEMP_ALLOCATOR - Disables the temporary memory allocator, used mainly to allow ASAN to do its job.</li>
<li>JPH_DISABLE_CUSTOM_ALLOCATOR - Disables the ability to override the memory allocator.</li>
<li>JPH_FLOATING_POINT_EXCEPTIONS_ENABLED - Turns on division by zero and invalid floating point exception support in order to detect bugs (Windows only).</li>
<li>JPH_CROSS_PLATFORM_DETERMINISTIC - Turns on behavior to attempt cross platform determinism. If this is set, JPH_USE_FMADD is ignored.</li>
<li>JPH_DET_LOG - Turn on a lot of extra logging to help debug determinism issues when JPH_CROSS_PLATFORM_DETERMINISTIC is turned on.</li>
<li>JPH_ENABLE_ASSERTS - Compiles the library so that it rises an assert in case of failures. The library ignores these failures otherwise.</li>
<li>JPH_DOUBLE_PRECISION - Compiles the library so that all positions are stored in doubles instead of floats. This makes larger worlds possible.</li>
<li>JPH_OBJECT_LAYER_BITS - Defines the size of ObjectLayer, must be 16 or 32 bits.</li>
<li>JPH_OBJECT_STREAM - Includes the code to serialize physics data in the ObjectStream format (mostly used by the examples).</li>
<li>JPH_NO_FORCE_INLINE - Don't use force inlining but fall back to a regular 'inline'.</li>
<li>JPH_USE_STD_VECTOR - Use std::vector instead of Jolt's own Array class.</li>
<li>CPP_RTTI_ENABLED - Enable C++ RTTI for the library. Disabled by default.</li>
</ul>
</details>
<details>
<summary>CPU Instruction Sets (click to see more)</summary>
<ul>
<li>JPH_USE_SSE4_1 - Enable SSE4.1 CPU instructions (default: on, x86/x64 only)</li>
<li>JPH_USE_SSE4_2 - Enable SSE4.2 CPU instructions (default: on, x86/x64 only)</li>
<li>JPH_USE_F16C - Enable half float CPU instructions (default: on, x86/x64 only)</li>
<li>JPH_USE_LZCNT - Enable the lzcnt CPU instruction (default: on, x86/x64 only)</li>
<li>JPH_USE_TZCNT - Enable the tzcnt CPU instruction (default: on, x86/x64 only)</li>
<li>JPH_USE_AVX - Enable AVX CPU instructions (default: on, x86/x64 only)</li>
<li>JPH_USE_AVX2 - Enable AVX2 CPU instructions (default: on, x86/x64 only)</li>
<li>JPH_USE_AVX512 - Enable AVX512F+AVX512VL CPU instructions (default: off, x86/x64 only)</li>
<li>JPH_USE_FMADD - Enable fused multiply add CPU instructions (default: on, x86/x64 only)</li>
</ul>
</details>
## Logging & Asserting
To override the default trace and assert mechanism install your own custom handlers in Trace and AssertFailed (see IssueReporting.h).
## Custom Memory Allocator
To implement your custom memory allocator override Allocate, Free, Reallocate, AlignedAllocate and AlignedFree (see Memory.h).
## Building
<details>
<summary>Windows 10+</summary>
<ul style="list-style: none"><li>
<details>
<summary>MSVC CL (default compiler)</summary>
<ul>
<li>Download Visual Studio 2022 (Community or other edition)</li>
<li>Download CMake 3.20+ (https://cmake.org/download/)</li>
<li>Run cmake_vs2022_cl.bat</li>
<li>Open the resulting project file VS2022_CL\JoltPhysics.sln</li>
<li>Compile and run either 'Samples' or 'UnitTests'</li>
</ul>
</details>
<details>
<summary>MSVC CL - 32 bit</summary>
<ul>
<li>Download Visual Studio 2022 (Community or other edition)</li>
<li>Download CMake 3.20+ (https://cmake.org/download/)</li>
<li>Run cmake_vs2022_cl_32bit.bat</li>
<li>Open the resulting project file VS2022_CL_32BIT\JoltPhysics.sln</li>
<li>Compile and run either 'Samples' or 'UnitTests'</li>
</ul>
</details>
<details>
<summary>MSVC Clang compiler</summary>
<ul>
<li>Download Visual Studio 2022 (Community or other edition)</li>
<li>Make sure to install "C++ Clang Compiler for Windows 11.0.0+" and "C++ Clang-cl for v142+ build tools (x64/x86)" using the Visual Studio Installer</li>
<li>Download CMake 3.20+ (https://cmake.org/download/)</li>
<li>Run cmake_vs2022_clang.bat</li>
<li>Open the resulting project file VS2022_Clang\JoltPhysics.sln</li>
<li>Compile and run either 'Samples' or 'UnitTests'</li>
</ul>
</details>
<details>
<summary>MSVC Universal Windows Platform</summary>
<ul>
<li>Download Visual Studio 2022+ (Community or other edition)</li>
<li>Make sure to install "Universal Windows Platform development" using the Visual Studio Installer</li>
<li>Download CMake 3.20+ (https://cmake.org/download/)</li>
<li>Run cmake_vs2022_uwp.bat</li>
<li>Open the resulting project file VS2022_UWP\JoltPhysics.sln</li>
<li>Compile and run 'UnitTests'</li>
</ul>
</details>
<details>
<summary>MinGW</summary>
<ul>
<li>Follow download instructions for MSYS2 (https://www.msys2.org/)</li>
<li>From the MSYS2 MSYS app run: pacman -S --needed mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake</li>
<li>From the MSYS2 MINGW x64 app, in the Build folder run: ./cmake_windows_mingw.sh</li>
<li>Run: cmake --build MinGW_Debug</li>
<li>Run: MinGW_Debug/UnitTests.exe</li>
</ul>
</details>
</li></ul>
</details>
<details>
<summary>Linux (Ubuntu)</summary>
<ul>
<li>Install clang (apt-get install clang)</li>
<li>Install cmake (apt-get install cmake)</li>
<li>If you want to build the Samples or JoltViewer, install the <a href="https://vulkan.lunarg.com/doc/view/latest/linux/getting_started_ubuntu.html">Vulkan SDK</a></li>
<li>Run: ./cmake_linux_clang_gcc.sh</li>
<li>Go to the Linux_Debug folder</li>
<li>Run: make -j$(nproc) && ./UnitTests</li>
<li>If you built the samples you can run: ./Samples</li>
</ul>
</details>
<details>
<summary>Android</summary>
<ul>
<li>Install Android Studio 2020.3.1+ (https://developer.android.com/studio/)</li>
<li>Open the 'Android' folder in Android Studio and wait until gradle finishes</li>
<li>Select 'Run' / 'Run...' and 'UnitTests'</li>
<li>If the screen turns green after a while the unit tests succeeded, when red they failed (see the android log for details)</li>
</ul>
</details>
<details>
<summary>macOS</summary>
<ul>
<li>Install XCode</li>
<li>Download CMake 3.23+ (https://cmake.org/download/)</li>
<li>Run: ./cmake_xcode_macos.sh</li>
<li>This will open XCode with a newly generated project</li>
<li>Build and run the project</li>
<li>Note that you can also follow the steps in the 'Linux' section if you wish to build without XCode.</li>
</ul>
</details>
<details>
<summary>iOS</summary>
<ul>
<li>Install XCode</li>
<li>Download CMake 3.23+ (https://cmake.org/download/)</li>
<li>Run: ./cmake_xcode.ios.sh</li>
<li>This will open XCode with a newly generated project</li>
<li>Build and run the project (note that this will only work in the simulator as the code signing information is not set up)</li>
</ul>
</details>
<details>
<summary>Emscripten (tested only on Linux)</summary>
<ul>
<li>Install Emscripten (https://emscripten.org/docs/getting_started/downloads.html)</li>
<li>Install nodejs (apt-get install nodejs)</li>
<li>Download CMake 3.23+ (https://cmake.org/download/)</li>
<li>Run: ./cmake_linux_emscripten.sh</li>
<li>Go to the WASM_Debug folder</li>
<li>Run: make -j$(nproc) && node UnitTests.js</li>
</ul>
</details>
## Other Build Tools
* A vcpkg package is available [here](https://github.com/microsoft/vcpkg/tree/master/ports/joltphysics).
* A xmake package is available [here](https://github.com/xmake-io/xmake-repo/tree/dev/packages/j/joltphysics).
* A conan package is available [here](https://conan.io/center/recipes/joltphysics)
* Jolt has been verified to build with [ninja](https://ninja-build.org/) through CMake.
## Errors
### Link Error: File Format Not Recognized
If you receive the following error when linking:
```
/usr/bin/ld: libJolt.a: error adding symbols: file format not recognized
```
Then you have not enabled interprocedural optimizations (link time optimizations) for your own application. See the INTERPROCEDURAL_OPTIMIZATION option in CMakeLists.txt.
### Link Error: Unresolved External Symbol
If you receive a link error that looks like:
```
error LNK2001: unresolved external symbol "public: virtual void __cdecl JPH::ConvexShape::GetSubmergedVolume(...) const"
```
you have a mismatch in defines between your own code and the Jolt library. In this case the mismatch is in the define `JPH_DEBUG_RENDERER` which is most likely defined in `Jolt.lib` and not in your own project. In `Debug` and `Release` builds, Jolt by default has `JPH_DEBUG_RENDERER` defined, in `Distribution` it is not defined. The cmake options `DEBUG_RENDERER_IN_DEBUG_AND_RELEASE` and `DEBUG_RENDERER_IN_DISTRIBUTION` override this behavior.
The `RegisterTypes` function (which you have to call to initialize the library) checks the other important defines and will trace and abort if there are more mismatches.
### Link Error: Undefined Symbol
If you receive a link error that looks like:
```
error: undefined symbol: typeinfo for JPH::DebugRenderer
```
you have a mismatch between RTTI settings (MSVC: `/GR`/`/GR-`, clang: `-frtti`/`-fno-rtti`). Jolt by default compiles without RTTI and if your project compiles with RTTI you can get this error. Either turn RTTI off for your project or turn it on for Jolt using the CPP_RTTI_ENABLED cmake option.
### DirectX Error
The samples use DirectX for the graphics implementation, when attempting to run the samples you may get a DirectX error pop-up which may say "The GPU device instance has been suspended", in your debugger you may see the message "Using the Redistributable D3D12 SDKLayers dll also requires that the latest SDKLayers for Windows 10 is installed.".
Fix this by enabling "Graphics Tools" which is an optional Windows settings. To enable it you have to press the windows key, search for "Manage Optional Features", and then click "Add a Feature", and install "Graphics Tools".
### Illegal Instruction Error
If your CPU doesn't support all of the instructions you'll get an `Illegal instruction` exception.
On Linux to see what instructions your CPU supports run `lscpu` and then look at the flags section, on Windows you can use a program like [`coreinfo`](https://learn.microsoft.com/en-us/sysinternals/downloads/coreinfo). Once you know what instructions your cpu supports you can configure the project through cmake and for example disable all special instructions:
```
./cmake_linux_clang_gcc.sh Release clang++ -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF
```
Note that this example is for Linux but the cmake settings work on Windows too.
## Doxygen on Windows
Documentation can be generated through doxygen:
- Install Doxygen (https://www.doxygen.nl/download.html)
- Run: run_doxygen.bat

View File

@@ -0,0 +1,28 @@
#!/bin/sh
if [ -z $1 ]
then
BUILD_TYPE=Debug
else
BUILD_TYPE=$1
shift
fi
if [ -z $1 ]
then
COMPILER=clang++
else
COMPILER=$1
shift
fi
BUILD_DIR=Linux_$BUILD_TYPE
echo Usage: ./cmake_linux_clang_gcc.sh [Configuration] [Compiler]
echo "Possible configurations: Debug (default), Release, Distribution, ReleaseUBSAN, ReleaseASAN, ReleaseTSAN, ReleaseCoverage"
echo "Possible compilers: clang++, clang++-XX, g++, g++-XX where XX is the version"
echo Generating Makefile for build type \"$BUILD_TYPE\" and compiler \"$COMPILER\" in folder \"$BUILD_DIR\"
cmake -S . -B $BUILD_DIR -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_CXX_COMPILER=$COMPILER "${@}"
echo Compile by running \"make -j $(nproc) \&\& ./UnitTests\" in folder \"$BUILD_DIR\"

View File

@@ -0,0 +1,19 @@
#!/bin/sh
if [ -z $1 ]
then
BUILD_TYPE=Debug
else
BUILD_TYPE=$1
shift
fi
BUILD_DIR=WASM_$BUILD_TYPE
echo Usage: ./cmake_linux_emscripten.sh [Configuration]
echo "Possible configurations: Debug (default), Release, Distribution"
echo Generating Makefile for build type \"$BUILD_TYPE\" in folder \"$BUILD_DIR\"
cmake -S . -B $BUILD_DIR -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=${EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake "${@}"
echo Compile by running \"make -j $(nproc) \&\& node UnitTests.js\" in folder \"$BUILD_DIR\"

View File

@@ -0,0 +1,19 @@
#!/bin/sh
if [ -z $1 ]
then
BUILD_TYPE=Release
else
BUILD_TYPE=$1
shift
fi
BUILD_DIR=MinGW_$BUILD_TYPE
echo Usage: ./cmake_linux_mingw.sh [Configuration]
echo "Possible configurations: Debug, Release (default), Distribution"
echo Generating Makefile for build type \"$BUILD_TYPE\" in folder \"$BUILD_DIR\"
cmake -S . -B $BUILD_DIR -DCMAKE_TOOLCHAIN_FILE=mingw-w64-x86_64.cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE "${@}"
echo Compile by running \"cmake --build $BUILD_DIR -j $(nproc)\"

View File

@@ -0,0 +1,3 @@
@echo off
cmake -S . -B VS2022_CL -G "Visual Studio 17 2022" -A x64 %*
echo Open VS2022_CL\JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,3 @@
@echo off
cmake -S . -B VS2022_CL_32BIT -G "Visual Studio 17 2022" -A Win32 -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF %*
echo Open VS2022_CL_32BIT\JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,3 @@
@echo off
cmake -S . -B VS2022_CL_ARM -G "Visual Studio 17 2022" -A ARM64 %*
echo Open VS2022_CL_ARM\JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,4 @@
@echo off
cmake -S . -B VS2022_CL_ARM_32BIT -G "Visual Studio 17 2022" -A ARM -DCMAKE_SYSTEM_VERSION="10.0.22621.0" -DCMAKE_CXX_COMPILER_WORKS=1 %*
echo Note that Windows 11 SDK (10.0.22621.0) is the last SDK to support 32-bit ARM, make sure you have it installed.
echo Open VS2022_CL_ARM_32BIT\JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,3 @@
@echo off
cmake -S . -B VS2022_CL_CPD -G "Visual Studio 17 2022" -A x64 -DCROSS_PLATFORM_DETERMINISTIC=ON %*
echo Open VS2022_CL_CPD\JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,3 @@
@echo off
cmake -S . -B VS2022_CL_Double -G "Visual Studio 17 2022" -A x64 -DDOUBLE_PRECISION=ON %*
echo Open VS2022_CL_Double\JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,3 @@
@echo off
cmake -S . -B VS2022_CL_NO_OBJ_STR -G "Visual Studio 17 2022" -A x64 -DENABLE_OBJECT_STREAM=OFF %*
echo Open VS2022_CL_NO_OBJ_STR\JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,10 @@
@echo off
cmake -S . -B VS2022_Clang -G "Visual Studio 17 2022" -A x64 -T ClangCL %*
echo:
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Make sure to install:
echo - C++ Clang Compiler for Windows 12.0.0+
echo - C++ Clang-cl for v143+ build tools (x64/x86)
echo Using the Visual Studio Installer
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Open VS2022_Clang/JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,10 @@
@echo off
cmake -S . -B VS2022_Clang_CPD -G "Visual Studio 17 2022" -A x64 -T ClangCL -DCROSS_PLATFORM_DETERMINISTIC=ON %*
echo:
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Make sure to install:
echo - C++ Clang Compiler for Windows 12.0.0+
echo - C++ Clang-cl for v143+ build tools (x64/x86)
echo Using the Visual Studio Installer
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Open VS2022_Clang_CPD/JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,10 @@
@echo off
cmake -S . -B VS2022_Clang_Double -G "Visual Studio 17 2022" -A x64 -T ClangCL -DDOUBLE_PRECISION=YES %*
echo:
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Make sure to install:
echo - C++ Clang Compiler for Windows 12.0.0+
echo - C++ Clang-cl for v143+ build tools (x64/x86)
echo Using the Visual Studio Installer
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Open VS2022_Clang_Double/JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,5 @@
@echo off
cmake -S . -B VS2022_UWP -G "Visual Studio 17 2022" -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 %*
echo If cmake failed then be sure to check the "Universal Windows Platform development" checkbox in the Visual Studio Installer
echo Open VS2022_UWP\JoltPhysics.sln to build the project.
echo Note that none of the sample applications are available for the Universal Windows Platform (use cmake_vs2022_cl.bat instead).

View File

@@ -0,0 +1,5 @@
@echo off
cmake -S . -B VS2022_UWP_ARM -G "Visual Studio 17 2022" -A ARM64 -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 %*
echo If cmake failed then be sure to check the "Universal Windows Platform development" checkbox in the Visual Studio Installer
echo Open VS2022_UWP_ARM\JoltPhysics.sln to build the project.
echo Note that none of the sample applications are available for the Universal Windows Platform (use cmake_vs2022_cl_arm.bat instead).

View File

@@ -0,0 +1,3 @@
@echo off
cmake -S . -B VS2026_CL -G "Visual Studio 18 2026" -A x64 %*
echo Open VS2026_CL\JoltPhysics.slnx to build the project.

View File

@@ -0,0 +1,3 @@
@echo off
cmake -S . -B VS2026_CL_CPD -G "Visual Studio 18 2026" -A x64 -DCROSS_PLATFORM_DETERMINISTIC=ON %*
echo Open VS2026_CL_CPD\JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,3 @@
@echo off
cmake -S . -B VS2026_CL_Double -G "Visual Studio 18 2026" -A x64 -DDOUBLE_PRECISION=ON %*
echo Open VS2026_CL_Double\JoltPhysics.slnx to build the project.

View File

@@ -0,0 +1,10 @@
@echo off
cmake -S . -B VS2026_Clang -G "Visual Studio 18 2026" -A x64 -T ClangCL %*
echo:
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Make sure to install:
echo - C++ Clang Compiler for Windows 20+
echo - MSBuild support for LLVM (clang-cl) toolset
echo Using the Visual Studio Installer
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Open VS2026_Clang/JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,10 @@
@echo off
cmake -S . -B VS2026_Clang_CPD -G "Visual Studio 18 2026" -A x64 -T ClangCL -DCROSS_PLATFORM_DETERMINISTIC=ON %*
echo:
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Make sure to install:
echo - C++ Clang Compiler for Windows 20+
echo - MSBuild support for LLVM (clang-cl) toolset
echo Using the Visual Studio Installer
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Open VS2026_Clang_CPD/JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,10 @@
@echo off
cmake -S . -B VS2026_Clang_Double -G "Visual Studio 18 2026" -A x64 -T ClangCL -DDOUBLE_PRECISION=YES %*
echo:
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Make sure to install:
echo - C++ Clang Compiler for Windows 20+
echo - MSBuild support for LLVM (clang-cl) toolset
echo Using the Visual Studio Installer
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo Open VS2026_Clang_Double/JoltPhysics.sln to build the project.

View File

@@ -0,0 +1,19 @@
#!/bin/sh
if [ -z $1 ]
then
BUILD_TYPE=Debug
else
BUILD_TYPE=$1
shift
fi
BUILD_DIR=MinGW_$BUILD_TYPE
echo Usage: ./cmake_windows_mingw.sh [Configuration]
echo "Possible configurations: Debug (default), Release, Distribution"
echo Generating Makefile for build type \"$BUILD_TYPE\" in folder \"$BUILD_DIR\"
cmake -S . -B $BUILD_DIR -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=$BUILD_TYPE "${@}"
echo Compile by running \"cmake --build $BUILD_DIR -j $(nproc)\"

View File

@@ -0,0 +1,4 @@
#!/bin/sh
cmake -S . -B XCode_iOS -DTARGET_HELLO_WORLD=OFF -DTARGET_PERFORMANCE_TEST=OFF -DCMAKE_SYSTEM_NAME=iOS -GXcode
open XCode_iOS/JoltPhysics.xcodeproj

View File

@@ -0,0 +1,4 @@
#!/bin/sh
cmake -S . -B XCode_MacOS -GXcode -D"CMAKE_OSX_ARCHITECTURES=x86_64;arm64"
open XCode_MacOS/JoltPhysics.xcodeproj

Some files were not shown because too many files have changed in this diff Show More