AnKi 3D Engine Documentation
repository·master·Indexed 23 days ago
https://github.com/godlikepanos/anki-3d-engineAn open-source, cross-platform game engine for Linux, Windows, and Android focused on high-performance rendering using the Vulkan API. It supports x64 and arm64 architectures and integrates with DX12 on Windows. The engine includes sample projects such as Sponza, SimpleScene, PhysicsPlayground, and SkeletalAnimation, and utilizes third-party libraries including Jolt Physics, NVIDIA Image Scaling SDK, and HWCPipe for hardware profiling.
What's inside AnKi 3D Engine
- SDL (Simple DirectMedia Layer) is a cross-platform library designed to simplify the development of multi-media software, including games and emulators. It provides a low-level abstraction layer over various hardware components.
Overview of AnKi 3D Engine
masterAnKi 3D engine is an open-source game engine designed for Linux, Windows, and Android. It is built on the Vulkan graphics API.
Supported Platforms and APIs:
- Linux: x64 architecture, Vulkan API.
- Windows: x64 & arm64 architectures, Vulkan & DX12 APIs.
- Android: arm64 architecture, Vulkan API.
What is reproc?
masterreproc (Redirected Process) is a cross-platform C/C++ library designed to simplify starting, stopping, and communicating with external programs. It is primarily used to execute command-line applications directly from C or C++ code and retrieve their output via standard streams.
The project is split into two libraries:
- reproc: A C99 library containing the core logic for working with external programs.
- reproc++: A C++11 wrapper that adapts the C API into an idiomatic C++ interface and adds extra features for C++ applications.
Overview of Simple DirectMedia Layer (SDL3)
masterSimple DirectMedia Layer (SDL) is a cross-platform development library providing low-level access to audio, keyboard, mouse, joystick, and graphics hardware. It is written in C and works natively with C++, but also has bindings for languages like C# and Python.
Supported Platforms:
- Windows, macOS, Linux
- iOS, Android
- Xbox, PlayStation 4/5, Nintendo Switch
- and many others.
License:
- Distributed under the zlib license.
Overview of the Googletest Mocking (gMock) Framework
mastergMock is a C++ framework for writing and using mock classes. It is designed to help developers derive better system designs and write more effective tests by providing a declarative syntax for defining mocks.
Key features include:
- Declarative Mock Definition: Define mock objects using a specialized syntax.
- Partial (Hybrid) Mocks: Create mocks that combine real object behavior with mocked behavior.
- Argument Validation: Uses a rich set of matchers to validate function arguments.
- Behavior Control: Provides intuitive syntax for controlling how mocks respond to calls.
- Automatic Verification: Automatically verifies expectations without requiring a manual record-and-replay cycle.
- Ordering Constraints: Supports expressing arbitrary (partial) ordering constraints on function calls.
- Extensibility: Users can define custom matchers and actions.
- C++ Specificity: Handles overloaded functions and arbitrary types without using exceptions.
Key features of GoogleTest
masterGoogleTest provides several advanced testing capabilities:
- Test discovery: Automatically discovers and runs tests without manual registration.
- Rich assertions: Includes equality, inequality, exception testing, and more.
- User-defined assertions: Allows creating custom assertions specific to your domain.
- Death tests: Verifies that code exits in a specific way (useful for error-handling tests).
- Failure modes: Supports both fatal and non-fatal failures, allowing tests to continue running after certain failures.
- Parameterized tests:
- Value-parameterized tests: Runs the same test multiple times with different input values.
- Type-parameterized tests: Runs tests with different data types.
- Execution options: Supports running individual tests, specifying test order, and running tests in parallel.
Check SDL3 supported and unsupported platforms
masterBefore starting development, verify if your target platform is supported by SDL3.
Supported Platforms:
- Android, Emscripten, FreeBSD, Haiku OS, iOS, Linux, macOS, NetBSD, Nintendo Switch, Nintendo 3DS, OpenBSD, PlayStation 2, PlayStation 4, PlayStation 5, PlayStation Portable, PlayStation Vita, RISC OS, SteamOS, tvOS, Windows, Windows GDK, and Xbox.
Unsupported Platforms:
- Google Stadia, NaCL, Nokia N-Gage, OS/2, QNX, WinPhone, and WinRT/UWP.
If you need to support an unsupported platform, you may use SDL2, though note that SDL2 uses an incompatible API compared to SDL3.
Use the HLSL Standard Header Library
masterTheThirdParty/Dxc/Include/hlsldirectory contains the HLSL Standard Header library. These headers are open source and can be used in HLSL shader development. You may freely distribute all or parts of these headers in accordance with the terms specified in theLICENSE.txtfile located in the repository.Explore Jolt Physics test categories
masterThe Samples application includes several specialized categories of physics tests:
- Vehicles: Demonstrates
VehicleConstraintusing ray- or shape casts to simulate engines, gearboxes, differentials, and suspension (e.g., wheeled vehicles, tanks, motorcycles). - Rig (Ragdolls): Shows ragdoll creation and control via keyframing or motors, including kinematic ragdolls and skeleton mapping.
- Soft Body: Demonstrates soft body physics for cloth or soft balls, including contact listeners, bend constraints, and skin constraints.
- Character: Simulates humanoid characters using a capsule shape (includes movement, sliding, crouching, and jumping).
- Water: Demonstrates buoyancy and friction simulation in water.
- Constraints: Showcases various constraints that limit relative movement between bodies (e.g., Path, Swing Twist, Gear, Rack and Pinion, Pulley).
- General: Covers fundamental simulation tests like friction, restitution, damping, gravity modification, and continuous collision detection (CCD).
- Shapes & Scaled Shapes: Demonstrates supported shapes and runtime scaling (Uniform, Non-uniform, Mirrored, Inside out).
- Vehicles: Demonstrates
Explore Jolt Physics folder structure
masterThe repository is organized as follows:
Jolt/: Contains all source code for the library.HelloWorld/: A simple application demonstrating library usage.Samples/: A sample application containing various feature demonstrations.TestFramework/: A rendering framework used by Samples and JoltViewer to visualize physics results.JoltViewer/: An application to visualize.jorrecordings produced by theDebugRendererRecorderclass.PerformanceTest/: An application for running performance tests and collecting timing information.UnitTests/: A set of unit tests for validating engine behavior.Docs/: Documentation for the library.Assets/: Assets used by the TestFramework, Samples, and JoltViewer.
KMSDRM support on *BSD platforms
masterKMSDRM (Kernel Mode Setting Direct Rendering Manager) is supported on the following *BSD operating systems with specific requirements:
- FreeBSD: Supported.
- OpenBSD: Supported. Note that the video backend requires the user to have read/write permissions to the
/dev/drm*devices. - DragonFlyBSD: Supported, but requires the application to be run as a root user.
- NetBSD: Not currently supported; creating the KMSDRM screen causes the application to crash.
Features of the SPIR-V VS Code extension
masterThe extension provides language server capabilities for
.spvasmfiles, including:- Syntax highlighting
- Navigation: Jump to definition and Find all references
- Refactoring: Symbol renaming
- IntelliSense: Operand hover information and completion suggestions for all Opcodes and Ids
- Formatting: Code formatting support