Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
ef6bf1f
Project to implement ray-traced VC texture support. Issue #378
Jul 25, 2023
99f135a
Merge branch 'main' of https://github.com/orbitersim/orbiter into Bak…
Jul 25, 2023
62ab5bf
Fixed build errors. Added new shaders in a shader folder.
Jul 25, 2023
a193053
Enabled basic shadows for virtual cockpit. Cascaded maps still needs …
Jul 25, 2023
e86a211
Fixed issue #322
Jul 25, 2023
fb61851
- Added oapiMeshProperty() and oapiLoadAdditionalTextureMaps() functions
Jul 26, 2023
47eec6d
Fixed oapiLoadAdditionalMaps() for D3D7
Jul 26, 2023
8d78044
Work in progress
Jul 26, 2023
ce9fd0a
-Added a baked lights test control slider to debug controls Dialog
Jul 27, 2023
925a4ed
- Pre-Bake is now in a working condition. Baked maps are fed to the s…
Jul 28, 2023
c07d722
Removed texture "tuning" stuff to simplify the code.
Jul 28, 2023
ac7da1a
Merge branch 'main' into BakedVC
jarmonik Jul 28, 2023
ba7a4c6
Merge branch 'main' of https://github.com/orbitersim/orbiter into Bak…
Jul 28, 2023
c72b5e3
Shadow cascade creation implemented.
Jul 29, 2023
6a69b93
Merge branch 'BakedVC' of https://github.com/orbitersim/orbiter into …
Jul 29, 2023
f361bf4
- Fixed a VC shadow bug, exported VC ambient level to shaders.
Jul 30, 2023
2feb632
Cleaned up shadow maps
Jul 31, 2023
55b6cd9
- Implementation of cascaded VC shadows passed preliminary testing. F…
Aug 1, 2023
40c8342
Shadow cascade configuration improved
Aug 2, 2023
ea5d97f
Fixed some bugs. Hard coded VC shadows to use 9 samples. Fixed cascad…
Aug 15, 2023
21631fd
Added VC shadow config options in a setup dialog
Aug 15, 2023
9bc4332
Increased baked lights count to 16
Aug 18, 2023
4e505d2
Added a separate enable control for AO and baked light maps.
Aug 18, 2023
6397e1b
Fixed MeshProperty function to support 16 baked lights.
Aug 18, 2023
8f77cee
Implemented loading of baked sunlight ambient occlusion textures.
Nov 13, 2023
1945793
Fixed light control slider's default position bug
Nov 13, 2023
9afe991
Updated BakedVC shader to use baked sunlight map
Nov 14, 2023
0b59947
Working on better mesh debugger.
Nov 22, 2023
b868bef
Added additional debug options and bug fixes
Nov 23, 2023
0ad2cd4
Fixed Pick related bugs and added Mesh visibility info in debug contr…
Nov 24, 2023
c8e0d84
Fixed Mesh Saving, Improved Picking options, Added VC shadow caster s…
Nov 26, 2023
324be7c
- Verbose logging added. oapiWriteLogVerbose()
Jan 23, 2024
bdc8996
Merge branch 'main' of https://github.com/orbitersim/orbiter into Bak…
Jan 23, 2024
4534b74
Improved VC ambient environment debugging.
Jan 24, 2024
8c8055f
Renamed GetObject() function to avoid mixup with Windows macro.
Jan 24, 2024
80da3af
Created a stage-set for object rendering.
Jan 25, 2024
062e5cf
Added shadows for stage-set, bug fixes and code cleanup.
Feb 4, 2024
fd36aad
Merge branch 'main' of https://github.com/orbitersim/orbiter into Bak…
Feb 4, 2024
2154635
Fixed broken 'pick' function. Added dynamic sunlight disable option i…
Feb 4, 2024
cf964a8
Added rendering of VC reflection and irradiance maps
Feb 9, 2024
9f48115
Dynamic cockpit lighting prototype operational.
Feb 14, 2024
b1d4a4b
Made some improvements and optimizations.
Feb 15, 2024
f58f1e7
Added Debug Visualization of Virtual Cockpit click zones.
Feb 16, 2024
439ba61
Fixed flickering local lights
Feb 17, 2024
d1c1566
Some small fixes.
Feb 18, 2024
6c25b59
Fixed build errors
Feb 18, 2024
23aed29
Merge branch 'main' of https://github.com/orbitersim/orbiter into Bak…
Jan 23, 2025
516cf0c
Merge remote-tracking branch 'remotes/origin/main' into BakedVC
Jan 23, 2025
3c2779b
Fixing merge errors
Jan 24, 2025
b813d7e
Fixing merge errors
Jan 24, 2025
5291e9e
Removal of old D3DX9 Math library for Vulkan transition. Further mat…
Jul 14, 2025
d337037
Further math cleanup and build fixes.
Jul 14, 2025
b0a1318
Further cleaning...
Jul 15, 2025
fedb1aa
Prepared build environment and project for Vulkan.
Jul 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,12 @@ option(
ON
)

option(
ORBITER_BUILD_VULKANCLIENT
"Build VulkanClient"
ON
)

option(
ORBITER_BUILD_XRSOUND
"Build XRSound module to enable sound in Orbiter"
Expand Down Expand Up @@ -222,10 +228,21 @@ if(ORBITER_BUILD_D3D9CLIENT)
CACHE
PATH
"Installation directory of DirectX SDK (June 2010)"
)
find_package(VULKAN REQUIRED)
set(VULKAN_DIR
${VULKAN_DIR}
CACHE
PATH
"Root directory of Vulkan SDK (containing include/lib directories)"
)

if(${DXSDK_DIR} STREQUAL "DXSDK_DIR-NOTFOUND")
message(FATAL_ERROR "DirectX SDK not found. The D3D9 graphics client will not be built.")
endif()
if(${VULKAN_DIR} STREQUAL "VULKAN_DIR-NOTFOUND")
message(FATAL_ERROR "Vulkan SDK not found. The Vulkan graphics will not be built.")
endif()
endif()

if (ORBITER_MAKE_DOC)
Expand Down
12 changes: 12 additions & 0 deletions Extern/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,15 @@ add_custom_target(CopyLDoc ALL
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/ldoc/ ${ORBITER_BINARY_ROOT_DIR}/packages/ldoc
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Penlight/lua/ ${ORBITER_BINARY_ROOT_DIR}/
)



#file(GLOB DXMATH_INL_FILES "${dxmath_SOURCE_DIR}/Inc/*.inl")
#file(GLOB DXMATH_H_FILES "${dxmath_SOURCE_DIR}/Inc/*.h")
#file(GLOB DXMATH_EXT_FILES "${dxmath_SOURCE_DIR}/Extensions/*.h")
#file(GLOB DXMATH_SH_FILES "${dxmath_SOURCE_DIR}/SHMath/*.*")

#file(COPY ${DXMATH_INL_FILES} DESTINATION ${DXMATH_DIR})
#file(COPY ${DXMATH_H_FILES} DESTINATION ${DXMATH_DIR})
#file(COPY ${DXMATH_EXT_FILES} DESTINATION ${DXMATH_DIR})
#file(COPY ${DXMATH_SH_FILES} DESTINATION ${DXMATH_DIR})
217 changes: 217 additions & 0 deletions Extern/dxmath/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
# DirectXMath

https://github.com/Microsoft/DirectXMath

Release available for download on [GitHub](https://github.com/microsoft/DirectXMath/releases)

## Release History

### April 2025 (3.20b)
* `XM_DEPRECATED` macro uses C++14 ``[[deprecated]]`` standard attribute when supported
* Cmake project updates with build options for XDSP and SHMath

### October 2024 (3.20)
* Fixed close-to-zero bug in the implementation of `TriangleTests::Intersects`
* Renamed implementation namespace from `DirectX::Internal` to `DirectX::MathInternal` to avoid some conformance issues with other libraries
* CMake project updates including support for ARM64EC
* Added GitHub Actions YAML files

### February 2024 (3.19)
* Fix to address MinGW issue with ``__cpuid`` in cpuid.h vs. intrin.h
* Additional updates for clang/LLVM and GNUC
* Minor comment updates

### December 2023 (3.18b)
* Hot-fix to address ``-Wunsafe-buffer-usage`` warnings from clang v16
* Hot-fix to address MinGW issue with ``__cpuid`` in cpuid.h vs. intrin.h
* CMake project updates including pkg-config file generation

### December 2022 (3.18)
* C++20 spaceship operators for XMFLOAT2, XMFLOAT3, etc. when building with ``/std:c++20 /Zc:_cplusplus``
* Improved conformance for ARM64 when using `/Zc:arm64-aliased-neon-types-`
* Minor code review
* CMake project updated to require 3.20 or later
* Added Azure Dev Ops Pipeline YAML files

### May 2022 (3.17b)
* Hot-fix to address ``-Wreserved-identifier`` warnings with clang v13
* C++20 spaceship operators for XMFLOAT2, XMFLOAT3, etc. when building with ``/std:c++20 /Zc:_cplusplus``
* Minor CMake project update

### January 2022 (3.17)
* Added ColorsLinear namespace to DirectXColors.h with linear versions of .NET colors
* Optimized the ``XMMatrixRotationRollPitchYaw(FromVector)`` functions
* Fixed overread problem for 16bpp GPU types Load functions:
* ``XMUNIBBLE4``, ``XMU555``, ``XMU565``, ``XMBYTEN2``, ``XMBYTE2``, ``XMUBYTEN2``, ``XMUBYTE2``
* ``XM_CACHE_LINE_SIZE`` updated for ARM/ARM64 targets to 128 bytes
* A few comments added to improve IntelliSense experience
* Conformance improvements for GNU compiler
* Minor code cleanup

### January 2021 (3.16b)
* Hot-fixes to resolve build breaks for clang/LLVM and GCC on ARM64
* ``XM_ALIGNED_DATA`` and ``XM_ALIGNED_STRUCT`` macros updated to use C++17 ``alignas`` when available

### December 2020 (3.16)
* Added ``XMVectorLog10`` / ``XMVectorExp10``
* Added ``XMColorRGBToYUV_UHD`` / ``XMColorYUVToRGB_UHD`` for Rec. 2020 YUV
* Added optional ``rhcoords`` parameter for BoundingFrustum ``CreateFromMatrix``
* Added use of Intel® Short Vector Matrix Library (SVML) supported by VS 2019
* Opt-in with ``_XM_SVML_INTRINSICS_``; opt-out with ``_XM_DISABLE_INTEL_SVML_``
* Fixed denorm handling for ``XMConvertFloatToHalf``
* Fixed flush (too small for denorm) handling for ``XMStoreFloat3PK``
* Fixed clamping bug in ``XMStoreByteN4``
* Cleaned up ARM-NEON intrinsics type issues for improved portability on GNUC
* Fixed ``GXMVECTOR`` for x86 ``__vectorcall``
* Code review

### April 2020 (3.15)
* Added ``XMMatrixVectorTensorProduct`` for creating a matrix from two vectors
* Use of m256 registers and FMA3 with ``/arch:AVX2`` for stream and some matrix functions
* Optimized load/stores for SSE2 float2 & float3 functions
* Optimized some instruction choices for better AMD CPU support
* Improved conformance for clang/LLVM, GCC, and MinGW compilers
* Code review (``constexpr`` / ``noexcept`` usage)
* Retired VS 2015 support

### August 2019 (3.14)
* Added float control around IsNan functions to resolve issue with VS 2019 with ``/fp:fast``
* XMVerifyCPUSupport updated for clang/LLVM cpuid implementation on x86/x64
* Added support for clang/LLVM built-in platform defines as well as the MSVC ones
* Cleaned up ARM-NEON intrinsics type issues for improved portability
* Removed unneeded malloc.h include in DirectXMath.h
* Whitespace cleanup

### July 2018 (3.13)
* ``XMFLOAT3X4``, ``XMFLOAT3X4A``, and associated Load/Store functions
* Move/copy constructors and assignment operators for C++ types
* Minor fix for XMVectorClamp behavior with NaN
* Fixed compilation warnings with VS 2017 (15.7 update), Intel C++ 18.0 compiler, and clang 6
* Retired VS 2013 support
* Minor code cleanup

### February 2018 (3.12)
* ARM64 use of fused multiply-accumulate intriniscs
* Conformance fix for XMConvertFloatToHalf
* Minor code cleanup

### June 2017 (3.11)
* AVX optimization of XMMatrixMultiply and XMMatrixMultiplyTranspose
* AVX2 optimization for XMVectorSplatX
* FMA3 optimization of XMVectorMultiplyAdd and XMVectorNegativeMultiplySubtract (implied by /arch:AVX2)
* Conformance fixes to support compilation with Clang 3.7

### January 2017 (3.10)
* Added XMVectorSum for horizontal adds
* ARMv8 intrinsics use for ARM64 platform (division, rounding, half-precision conversion)
* Added SSE3 codepaths using opt-in ``_XM_SSE3_INTRINSICS_``
* XMVectorRound fix for no-intrinsics to match round to nearest (even)
* XMStoreFloat3SE fix when max channel isn't a perfect power of 2
* constexpr conformance fix and workaround for compiler bug in VS 2015 RTM
* Remove support for VS 2012 compilers
* Remove ``__vector4i`` deprecated type

### June 2016 (3.09)
* Includes support for additional optimizations when built with /arch:AVX or /arch:AVX2
* Added use of constexpr for type constructors, XMConvertToRadians, and XMConvertToDegrees
* Marked ``__vector4i``, ``XMXDEC4``, ``XMDECN4``, ``XMDEC4``, and associated Load & Store functions as deprecated.
* These are vestiges of Xbox 360 support and will be removed in a future release
* Renamed parameter in XMMatrixPerspectiveFov* to reduce user confusion when relying on IntelliSense
* XMU565, XMUNIBBLE4 constructors take uint8_t instead of int8_t

### May 2016
* DirectXMath 3.08 released under the MIT license

### November 2015 (3.08)
* Added use of ``_mm_sfence`` for Stream methods
* Fixed bug with non-uniform scaling transforms for BoundingOrientedBox
* Added asserts for Near/FarZ in XMMatrix* methods
* Added use of ``=default`` for PODs with VS 2013/2015
* Additional SSE and ARM-NEON optimizations for PackedVector functions

### April 2015 (3.07)
* Fix customer reported bugs in BoundingBox methods
* Fix customer reported bug in XMStoreFloat3SE
* Fix customer reported bug in XMVectorATan2, XMVectorATan2Est
* Fix customer reported bug in XMVectorRound

### October 2013 (3.06)
* Fixed load/store of XMFLOAT3SE to properly match the ``DXGI_FORMAT_R9G9B9E5_SHAREDEXP``
* Added ``XMLoadUDecN4_XR`` and ``XMStoreUDecN4_XR`` to match ``DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM``
* Added ``XMColorRGBToSRGB`` and ``XMColorSRGBToRGB`` to convert linear RGB <-> sRGB

### July 2013 (3.05)
* Use x86/x64 ``__vectorcall`` calling-convention when available (``XM_CALLCONV``, ``HXMVECTOR``, ``FXMMATRIX`` introduced)
* Fixed bug with XMVectorFloor and XMVectorCeiling when given whole odd numbers (i.e. 105.0)
* Improved XMVectorRound algorithm
* ARM-NEON optimizations for XMVectorExp2, XMVectorLog2, XMVectorExpE, and XMVectorLogE
* ARM-NEON code paths use multiply-by-scalar intrinsics when supported
* Additional optimizations for ARM-NEON Stream functions
* Fixed potential warning C4723 using ``operator/`` or ``operator/=``

### March 2013 (3.04)
* ``XMVectorExp2``, ``XMVectorLog2``, ``XMVectorExpE``, and ``XMVectorLogE`` functions added to provide base-e support in addition to the existing base-2 support
* ``XMVectorExp`` and ``XMVectorLog`` are now aliases for XMVectorExp2 and XMVectorLog2
* Additional optimizations for Stream functions
* XMVector3Cross now ensures w component is zero on ARM
* XMConvertHalfToFloat and XMConvertFloatToHalf now use IEEE 754 standard float16 behavior for INF/QNAN
* Updated matrix version Transform for BoundingOrientedBox and BoundingFrustum to handle scaling

### March 2012 (3.03)
* *breaking change* Removed union members from XMMATRIX type to make it a fully 'opaque' type
* Marked single-parameter C++ constructors for XMFLOAT2, XMFLOAT2A, XMFLOAT3, XMFLOAT3A, XMFLOAT4, and XMFLOAT4A explicit

### February 2012 (3.02)
* ARM-NEON intrinsics (selected by default for the ARM platform)
* Reworked XMVectorPermute, change of ``XM_PERMUTE_`` defines, removal of XMVectorPermuteControl
* Addition of ``XM_SWIZZLE_`` defines
* Optimizations for transcendental functions
* Template forms for permute, swizzle, shift-left, rotate-left, rotation-right, and insert
* Removal of deprecated types and functions
* ``XM_CACHE_LINE_SIZE`` define, XMVectorExpEst, XMVectorLogEst, XMVectorPowEst, XMVectorSinHEs, XMVectorCosHEst, XMVectorTanHEst, XMVector2InBoundsR, XMVector3InBoundsR, XMVector4InBoundsR
* Removed ``XM_STRICT_VECTOR4``; XMVECTOR in NO-INTRINSICS always defined without .x, .y, .z, .w, .v, or .u
* Additional bounding types
* SAL fixes and improvements

### September 2011 (3.00)
* Renamed and reorganized the headers
* Introduced C++ namespaces
* Removed the Xbox 360-specific GPU types
* HENDN3, XMHEND3, XMUHENDN3, XMUHEND3, XMDHENN3, XMDHEN3, XMUDHENN3, XMUDHEN3, XMXICON4, XMXICO4, XMICON4, XMICO4, XMUICON4, XMUICO4

### July 2012 (XNAMath 2.05)
* Template forms have been added for `XMVectorPermute`, `XMVectorSwizzle`, `XMVectorShiftLeft`, `XMVectorRotateLeft`, `XMVectorRotateRight`, and `XMVectorInsert`
* The `XM_STRICT_XMMATRIX` compilation define has been added for opaque `XMMATRIX`.
* Stream stride and count arguments have been changed to `size_t`
* The ``pDeterminant`` parameter of `XMMatrixInverse` is now optional
* Additional operator= overloads for `XMBYTEN4`, `XMBYTE4`, `XMUBYTEN4`, and `XMUBYTE4` types are now available

### February 2011 (XNAMath 2.04)
* Addition of new data types and associated load-store functions:
* `XMBYTEN2, XMBYTE2, XMUBYTEN2, XMUBYTE2`
* `XMLoadByteN2, XMLoadByte2, XMLoadUByteN2, XMLoadUByte2`
* `XMStoreByteN2, XMStoreByte2, XMStoreUByteN2, XMStoreUByte2`
* `XMINT2, XMUINT2, XMINT3, XMUINT3, XMINT4, XMUINT4`
* `XMLoadSInt2, XMLoadUInt2, XMLoadSInt3, XMLoadUInt3, XMLoadSInt4, XMLoadUInt4`
* `XMStoreSInt2, XMStoreUInt2, XMStoreSInt3, XMStoreUInt3, XMStoreSInt4, XMStoreUInt4`
* Marked most single-parameter C++ constructors with `explicit` keyword
* Corrected range issues with SSE implementations of `XMVectorFloor` and `XMVectorCeiling`

### June 2010 (XNAMath 2.03)
* Addition of ``XMVectorDivide`` to optimize SSE2 vector division operations
* Unified handling of floating-point specials between the Windows SSE2 and no-intrinsics implementations
* Use of Visual Studio style SAL annotations
* Modifications to the C++ declarations for `XMFLOAT2A/3A/4A/4X3A/4X4A` to better support these types in C++ templates

### February 2010 (XNAMath 2.02)
* Fixes to `XMStoreColor`, `XMQuaternionRotationMatrix`, `XMVectorATan2`, and `XMVectorATan2Est`

### August 2009 (XNAMath 2.01)
* Adds ``XM_STRICT_VECTOR4``. This opt-in directive disallows the usage of XboxMath-like member accessors such as .x, .y, and .z. This makes it easier to write portable XNA Math code.
* Added conversion support for the following Windows graphics formats:
* 16-bit color formats (565, 555X, 5551)
* 4-bits per channel color formats (4444)
* Unique Direct3D 10/11 formats (``DXGI_FORMAT_R9G9B9E5_SHAREDEXP`` and ``DXGI_FORMAT_R11G11B10_FLOAT``)

### March 2009 (XNAMath 2.00)
* Initial release (based on the Xbox 360 Xbox math library)
10 changes: 10 additions & 0 deletions Extern/dxmath/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Microsoft Open Source Code of Conduct

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).

Resources:

- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
- Employees can reach out at [aka.ms/opensource/moderation-support](https://aka.ms/opensource/moderation-support)
Loading
Loading