This repository contains the source for the ANARI API SDK

Overview

logo

ANARI-SDK

This repository contains the source for the ANARI API SDK. This includes:

The 1.0 provisional ANARI specification can be found on the Khronos website here.

Please note that the example device, sample applications, and tests do not yet fully cover the entire specification and are still a work-in-progress. These are expected to be completed in full on or before the official 1.0 ANARI specification release.

The SDK is tested on Linux, but is also intended to be usable on other operating systems such as macOS and Windows.

If you find any problems with the SDK, please do not hesitate to open an issue on this project!

Building the SDK

The repository uses CMake 3.11+ to build the library, example implementation, sample apps, and tests. For example, to build (must be in a separate directory from the source directory), you can do:

% cd /path/to/anari
% mkdir build
% cd build
% cmake ..

Using a tool like ccmake or cmake-gui will let you see which options are available to enable. The following CMake options are offered:

  • BUILD_SHARED_LIBS : build everything as shared libraries or static libraries
  • BUILD_TESTING : build unit and regression test binaries
  • BUILD_EXAMPLES : build example device and example applications
  • BUILD_VIEWER : build viewer too (needs glfw3) if building examples

Once built, the library can be installed via the install target created by CMake. This can be invoked from your build directory with (on any platform):

% cmake --build . -t install

Using the SDK after install with CMake

The ANARI SDK exports CMake targets for the main front-end library and utilities helper library. The targets which are exported are as follows:

  • anari::anari : main library target to link with libanari
  • anari::anari_utilities : library target which adds implementation helpers

These targets can be found with CMake via find_package(anari). There is an example provided to demonstrate what consuming the ANARI SDK with CMake looks like here.

Running the examples

The basic tutorial app (built by default) uses the example device as an example, which can be run with:

% ./anariTutorial

The viewer application (enabled with BUILD_VIEWER=ON) by default uses the environment library, which reads ANARI_LIBRARY as an environment variable to get the library to load. For example it can be run with:

% export ANARI_LIBRARY=example
% ./viewer /path/to/some/file.obj

Alternatively, either --library or -l can be used to override the library to be loaded on the command line directly.

The regression test binary used to render the test scenes without a window (results saved out as PNG images) uses the same mechanisms as the viewer to select/override which library is loaded at runtime.

Using the provided ExampleDevice implementation

The example device implementation is provided as a starting point for users exploring the SDK and implementors to see how the API might be implemented. It currently uses OpenMP multi-threading for simplicity and is not built to be a robust and fast rendering engine. Users should look to use hardware-optimized ANARI implementations which are shipped independently from the SDK.

Comments
  • Fixed windows build

    Fixed windows build

    This fixes all the issues I identified when trying to build the ANARI SDK in a Windows environment, and should close #2. Most of the issues were related to symbol exporting.

    opened by LDeakin 8
  • Windows cmake 3.21.4 build fails

    Windows cmake 3.21.4 build fails

    Hello,

    When compiling the Anari SDK on Windows 11 Visual Studio 2019 I get this build error:

    8>Generating Code... 8>Done building project "anari_library_example.vcxproj" -- FAILED. 12>------ Build started: Project: anariTutorialDirectLink, Configuration: Release x64 ------ 12>Building Custom Rule C:/Users/Cameron/Downloads/ANARI-SDK/examples/direct_linking/CMakeLists.txt 12>anariTutorialDirectLink.c 12>LINK : fatal error LNK1181: cannot open input file '..\..\Release\anari_library_example.lib' 12>Done building project "anariTutorialDirectLink.vcxproj" -- FAILED. 13>------ Build started: Project: ALL_BUILD, Configuration: Release x64 ------ 13>Building Custom Rule C:/Users/Cameron/Downloads/ANARI-SDK/CMakeLists.txt ========== Build: 8 succeeded, 5 failed, 0 up-to-date, 0 skipped ========== I attempt to continue the build:

    1>C:\Users\Cameron\Downloads\ANARI-SDK\examples\example_device\scene\bvh/SweepSAHBuilder.h(294,3): error C2059: syntax error: '{' 1>C:\Users\Cameron\Downloads\ANARI-SDK\examples\example_device\scene\bvh/SweepSAHBuilder.h(294,3): error C2143: syntax error: missing ';' before '{' 1>C:\Users\Cameron\Downloads\ANARI-SDK\examples\example_device\scene\bvh/SweepSAHBuilder.h(301,31): warning C4267: '=': conversion from 'size_t' to 'uint32_t', possible loss of data 1>C:\Users\Cameron\Downloads\ANARI-SDK\examples\example_device\scene\volume\../SceneObject.h(84,9): error C3001: 'declare': expected an OpenMP directive name 1>C:\Users\Cameron\Downloads\ANARI-SDK\examples\example_device\scene\volume\../SceneObject.h(88,9): error C3036: 'bbox_extend': invalid operator token in OpenMP 'reduction' clause 1>C:\Users\Cameron\Downloads\ANARI-SDK\examples\example_device\scene\volume\../SceneObject.h(88,1): error C3016: 'i': index variable in OpenMP 'for' statement must have signed integral type 1>Generating Code... 1>Done building project "anari_library_example.vcxproj" -- FAILED. ========== Build: 0 succeeded, 1 failed, 3 up-to-date, 0 skipped ==========

    Am I missing prerequisites? I hope this is helpful.

    Kind regards,

    Cameron

    opened by kingc8 7
  • Compiling on Windows - Visual Studio 2019

    Compiling on Windows - Visual Studio 2019

    Is the code ported to Windows ?

    I tried building it but came across this error

    3>Generating Code...
    3>   Creating library C:/Users/yueni/projects/ANARI-SDK/build/Release/anari_library_example.lib and object C:/Users/yueni/projects/ANARI-SDK/build/Release/anari_library_example.exp
    3>ExampleDeviceDebugFactory.obj : error LNK2019: unresolved external symbol "public: void __cdecl anari::debug_device::GenericDebugObject::unknown_parameter(struct ANARIDataType,char const *,char const *,struct ANARIDataType)" (?unknown_parameter@GenericDebugObject@debug_device@anari@@QEAAXUANARIDataType@@PEBD10@Z) referenced in function "public: virtual void __cdecl anari::debug_device::`anonymous namespace'::array1d::setParameter(char const *,struct ANARIDataType,void const *)" (?setParameter@array1d@?A0x220b2aa9@debug_device@anari@@UEAAXPEBDUANARIDataType@@PEBX@Z)
    3>ExampleDeviceDebugFactory.obj : error LNK2019: unresolved external symbol "public: void __cdecl anari::debug_device::GenericDebugObject::check_type(struct ANARIDataType,char const *,char const *,struct ANARIDataType,struct ANARIDataType *)" (?check_type@GenericDebugObject@debug_device@anari@@QEAAXUANARIDataType@@PEBD10PEAU4@@Z) referenced in function "public: virtual void __cdecl anari::debug_device::`anonymous namespace'::array1d::setParameter(char const *,struct ANARIDataType,void const *)" (?setParameter@array1d@?A0x220b2aa9@debug_device@anari@@UEAAXPEBDUANARIDataType@@PEBX@Z)
    3>ExampleDeviceDebugFactory.obj : error LNK2019: unresolved external symbol "public: void __cdecl anari::debug_device::ObjectFactory::unkown_subtype(struct anari::debug_device::DebugDevice *,struct ANARIDataType,char const *)" (?unkown_subtype@ObjectFactory@debug_device@anari@@QEAAXPEAUDebugDevice@23@UANARIDataType@@PEBD@Z) referenced in function "public: virtual struct anari::debug_device::DebugObjectBase * __cdecl anari::debug_device::ExampleDeviceDebugFactory::new_camera(char const *,struct anari::debug_device::DebugDevice *,struct anari::api::Object *,struct anari::api::Object *)" (?new_camera@ExampleDeviceDebugFactory@debug_device@anari@@UEAAPEAUDebugObjectBase@23@PEBDPEAUDebugDevice@23@PEAUObject@api@3@2@Z)
    3>C:\Users\yueni\projects\ANARI-SDK\build\Release\anari_library_example.dll : fatal error LNK1120: 3 unresolved externals
    3>Done building project "anari_library_example.vcxproj" -- FAILED.
    16>------ Build started: Project: anariTutorialDirectLink, Configuration: Release x64 ------
    16>anariTutorialDirectLink.c
    16>anariTutorialDirectLink.vcxproj -> C:\Users\yueni\projects\ANARI-SDK\build\Release\anariTutorialDirectLink.exe
    17>------ Skipped Build: Project: INSTALL, Configuration: Release x64 ------
    17>Project not selected to build for this solution configuration 
    ========== Build: 9 succeeded, 1 failed, 15 up-to-date, 7 skipped ==========
    
    opened by nyue 4
  • Fails to build with Intel compilers.

    Fails to build with Intel compilers.

    Hi there, Building with intel compilers generates a whole lotta errors related to glm. For example:

    [  6%] Building CXX object libs/anari/CMakeFiles/anari.dir/anari_cpp_glm_defs.cpp.o
    In file included from /work2/01197/semeraro/frontera/ANARI/external/glm/include/glm/./ext/../detail/type_mat2x2.hpp(6),
                     from /work2/01197/semeraro/frontera/ANARI/external/glm/include/glm/./ext/matrix_double2x2.hpp(5),
                     from /work2/01197/semeraro/frontera/ANARI/external/glm/include/glm/mat2x2.hpp(5),
                     from /work2/01197/semeraro/frontera/ANARI/libs/anari/include/anari/anari_cpp/ext/glm.h(7),
                     from /work2/01197/semeraro/frontera/ANARI/libs/anari/anari_cpp_glm_defs.cpp(5):
    /work2/01197/semeraro/frontera/ANARI/external/glm/include/glm/./ext/../detail/type_vec2.hpp(93): error: cannot overload functions distinguished by return type alone
                    GLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;
    

    Using the compiler:

    login4.frontera(1091)$ which icc
    /opt/intel/compilers_and_libraries_2020.1.217/linux/bin/intel64/icc 
    

    Builds under gcc/9.1.0. (Ya I know, then use gcc...)

    opened by semeraro 4
  • Offline render back end : Learning route

    Offline render back end : Learning route

    Hi,

    I'd like to learn more about developing back end for ANARI with a specific interest in targeting offline CPU renderers.

    I have built ANARI and toy around with the viewer.

    My main development environment will be Ubuntu.

    What example code should I start focusing on ? I have watched the OSPray back end development video from the ANARI Webinar 2022

    Cheers

    opened by nyue 3
  • Add support for anariGetObjectSubtypes and anariGetObjectParameters for example library/device

    Add support for anariGetObjectSubtypes and anariGetObjectParameters for example library/device

    For a project I'm working on, I noticed that most of the introspection methods (anariGetObjectSubtypes, anariGetObjectParameters, and anariGetParameterInfo) aren't fully implemented for the example library and device. I've added in preliminary support for the first two introspection methods (but not the last method) for all the objects within the example device that I can find.

    In total, this PR adds support for the example device objects: Geometry, Material, Volume, Camera, and Spatial Field. It also fixes support for Renderer (anariGetObjectParameters always returned the same thing for every Renderer subtype despite differences between the subtypes).

    This PR does not add support for Sampler or Light (both objects are implemented in the example library as placeholder objects).

    opened by player1537 3
  • Mistake in cornell box scene

    Mistake in cornell box scene

    In cornell box scene (cornell_box.cpp) there's a possible mistake. There's a check of ANARI_KHR_DEVICE_SYNCHRONIZATION feature (line 275), but it looks like that it should check ANARI_KHR_AREA_LIGHTS

    opened by V-Gorash 3
  • Add matte material with parameter

    Add matte material with parameter "color"

    Would you be willing to merge this PR which adds a dedicated subclass for the matte material? It's mostly that currently, with matte being used as an alias for OBJ, one has to set the color parameter via "kd", not "color", and my own sample code then not being compliant with the standard.

    FWIW, the only use of matte that I can see in the SDK is found in anariTuturial.cpp, where the diffuse color parameter is not set on the material; i.e., the change set shouldn't break existing behavior.

    opened by szellmann 3
  • Fix VS2017 build errors in struct initialization

    Fix VS2017 build errors in struct initialization

    When build on VS2017, the following error triggers:

    Severity Code Description Project File Line Suppression State Error C2100 illegal indirection anari_library_example d:\opensource\anari-sdk\examples\example_device\scene\bvh\SweepSAHBuilder.h 308

    The error is a bit vague and did not give the correct fail reason in fact. Since SAHTaskWorkItem is a struct and no constructor provided, a common used initialization method of struct is provided. After the fix, the project build successfully on VS2017.

    opened by PanGao-h 2
  • Added type specialization for 4x4 matrices

    Added type specialization for 4x4 matrices

    Trying to set the inTransform parameter for Samplers results in an error since there is no type specialization for ANARI_FLOAT32_MAT4 to float[16] as defined in the spec.

    enhancement 
    opened by griffin28 2
  • Add sink and and debug devies

    Add sink and and debug devies

    Update json to reflect current spec and extensions

    fix debug mode in viewer

    Add device json for example and generic devices

    Change to offline generation of headers

    opened by progschj 2
  • Need to move anariGetObjectFeatures definition to the API.cpp implementation file

    Need to move anariGetObjectFeatures definition to the API.cpp implementation file

    Need to move the anariGetObjectFeatures and anariGetInstanceFeatures definitions from the header file (anari_feature_utility.h) to the appropriate implementation file (API.cpp??). Having the definitions in the header file causes a multiple definition error when trying to #include <anari/anari_cpp.hpp> as the definitions will appear in multiple places and the linker doesn't like it.

    opened by griffin28 3
  • Front-end library, C99 backends

    Front-end library, C99 backends

    In the spec we have (bold from me)

    The ANARI API is specified as a C99 API in order to provide compiler-independent linkage

    and

    ANARI back-end devices are created by standard implementors and are expected to be distributed, installed, or upgraded independently of the standard API header and front-end library.

    I fear this cannot hold when using C++ for the backend API (i.e., implementation directly deriving from the SDK anari::Device): there is no C++ ABI even on the same platform. For example, MSVC has the opposite ordering in the vtable than gcc. MSVC even is not compatible to itself (across versions, thought it seems to be better since 2015). Besides vtable ordering another issue to consider is exception propagation (which we currently use to catch exceptions thrown in backends centrally in the front-end lib).

    Furthermore, current SDK implementation is mixing concepts: Device uses virtual functions and implementations derive from it, while Library uses "getProcAddress" and dispatches via function pointers.

    This PR proposes an alternative (which is hopefully not that inelegant):

    • define two C99 structs of function pointers (one for Device, one for Library), the "vtables"
    • on loadLibrary in the init code (a single "getProcAddress") the "vtable" of the backend lib is populated and returned by the implementation
    • on newDevice the "vtable" is populated and returned by the implementation
    • implementations don't need a wrapper, the addresses of the member functions of their C++ objects can directly be used
    • example base classes and utility code to populate those vtables (header only) can be provided by the ANARI SDK for convenience for implementers
    • implementations will need to catch exceptions themselves and already use the ANARI error mechanisms (status callback), though utility functions and macros can be provided by the SDK

    This is only a proof of concept to facilitate discussion, implementing the interface for Library (except not implemented (un-)loadModule). Implementation for Device would be analogous.

    opened by johguenther 2
  • Static builds + install target broken on Unix

    Static builds + install target broken on Unix

    When building the project statically and then installing to CMAKE_INSTALL_PREFIX, on Unix the anchoring logic that determines where to search for libanari_device_XXX.so will base the search path off the folder that the executables are located in (i.e., bin) and thus won't find the actual device library (which is installed to lib). Therefore, static builds currently only work when being used from the build tree.

    opened by szellmann 0
Releases(v0.2.0)
  • v0.2.0(Jul 22, 2022)

    Changes since last release

    Updates to synchronize with the latest changes in the ANARI Specification

    • New anariMapFrame() signature to provide output parameters about the buffer returned by the API
    • Rename anariCommit() to anariCommitParameters()
    • Arrays now take const data as input on construction
    • User data pointers are now const (applications can safely cast away const depending on declaration)
    • New _REGION_ and _LIST data types
    • Removal of anariDeviceImplements() in favor of new granular feature testing
    • Update to use ANARI_FLOAT32_MAT4 for instance transforms

    Other SDK updates

    • Added utility functions for more efficient usage of feature queries (see new header and usage in the tutorials)
    • Updates to anari_cpp to mirror changes from the C API
    • SDK version info now provided as pre-processor variables in anari_version.h (included by anari.h)
    • New anariInfo tool to introspect object, parameter, and property info from a device
    • Big overhaul and new additions to code-generation tools, including generated device implementation infrastructure (see example here)
    • Enabled CI builds for Linux, macOS, and Windows via GitHub actions for all incoming PRs

    PRs included in this release

    • make generators scripts more deterministic by @progschj in https://github.com/KhronosGroup/ANARI-SDK/pull/28
    • add template CMake CI workflow file by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/29
    • Enable Windows CI + fix compile issues by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/30
    • enable rendering tests on Windows CI by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/31
    • Internal interface updates by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/34
    • CI config updates by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/36
    • Code gen maintenance by @progschj in https://github.com/KhronosGroup/ANARI-SDK/pull/39
    • Code Gen and other Maintenance by @progschj in https://github.com/KhronosGroup/ANARI-SDK/pull/40
    • Const array pointers by @progschj in https://github.com/KhronosGroup/ANARI-SDK/pull/42
    • Added type specialization for 4x4 matrices by @griffin28 in https://github.com/KhronosGroup/ANARI-SDK/pull/43
    • Debug Trace Feature by @progschj in https://github.com/KhronosGroup/ANARI-SDK/pull/44
    • Make examples (other than the viewer) buildable from outside the SDK by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/46
    • Generator Improvements and Generator Template by @progschj in https://github.com/KhronosGroup/ANARI-SDK/pull/45
    • Viewer Maintenance by @progschj in https://github.com/KhronosGroup/ANARI-SDK/pull/47
    • anari_cpp updates by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/48
    • Sdk spec sync by @progschj in https://github.com/KhronosGroup/ANARI-SDK/pull/52
    • fix region types to include dimensions by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/53
    • add feature queries to anari_cpp for better C++ usage by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/54
    • updates to sync with specification by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/56
    • add version header by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/57
    • rename Library --> LibraryImpl to avoid symbol name collision in anari_cpp by @jeffamstutz in https://github.com/KhronosGroup/ANARI-SDK/pull/58

    New Contributors

    • @griffin28 made their first contribution in https://github.com/KhronosGroup/ANARI-SDK/pull/43

    Full Changelog: https://github.com/KhronosGroup/ANARI-SDK/compare/v0.1.2...v0.2.0

    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Apr 12, 2022)

  • v0.1.1(Apr 12, 2022)

  • v0.1.0(Mar 31, 2022)

    This release is the first for the ANARI-SDK. It marks the beginning of an official versioning scheme to track changes.

    Please note that the SDK is still in flux as the ANARI specification moves toward post-provisional status. Until the SDK reaches v1.0.0, breaking changes may still occur.

    Source code(tar.gz)
    Source code(zip)
Owner
The Khronos Group
Connecting Software to Silicon
The Khronos Group
Translation layer from ANARI to OSPRay, ANARILibrary and ANARIDevice "ospray".

ANARI-OSPRay Translation layer from Khronos® ANARI™ to Intel® OSPRay: ANARILibrary and ANARIDevice "ospray". Status This is an experimental project, v

OSPRay 9 Dec 30, 2022
The Raspberry Pi Pico SDK (henceforth the SDK) provides the headers, libraries and build system necessary

The Raspberry Pi Pico SDK (henceforth the SDK) provides the headers, libraries and build system necessary to write programs for the RP2040-based devices such as the Raspberry Pi Pico in C, C++ or assembly language.

Raspberry Pi 1.9k Jan 5, 2023
The Gecko SDK (GSDK) combines all Silicon Labs 32-bit IoT product software development kits (SDKs) based on Gecko Platform into a single, integrated SDK.

Silicon Labs Gecko SDK (GSDK) The Gecko SDK (GSDK) combines Silicon Labs wireless software development kits (SDKs) and Gecko Platform into a single, i

Silicon Labs 163 Dec 28, 2022
This repository contains the source-code for the Robothon 24h series of workshops and competition within ENSTA Borj Cedria.

Robothon: The 24h long zero to hero robotics bootcamp What is Robothon? Robothon by Electronix ENSTABC is a 24h long event held within the walls of EN

Radhi SGHAIER 5 Mar 23, 2022
Contains platform and API specific code written by Primal community members.

PrimalPlus Contains platform and API specific code written by Primal community members. How to use The general idea is to simply copy the files from t

Game Engine Series 20 Nov 7, 2022
This Repository is created to help fellow coders learn open source contributions. This Repository is created for Hacktoberfest 2021

Hacktoberfest 2021 Follow the README below to get started! This Repository is created to help fellow coders learn open source contributions This Repos

Somesh Debnath 6 Oct 24, 2022
Learn how to connect your Flexispot (LoctekMotion) desk to the internet. This repository contains a collection of scripts to get your started, combined with research and instructions.

(image source: Windows Central) Turn your LoctekMotion/FlexiSpot desk into a smart desk Recently I acquired a new standing desk from FlexiSpot. During

Mick Vleeshouwer 216 Dec 28, 2022
This repository contains toy ImPlot applications that demonstrate some of the library's functionality

ImPlot Demos This repository contains toy ImPlot applications that demonstrate some of the library's functionality.

Evan Pezent 83 Dec 28, 2022
This repository contains the tools we used in our research on the Google Titan M chip

Titan M tools In this repository, we publish the tools we used in our research on the Google Titan M chip. We presented our results at Black Hat EU 21

Quarkslab 149 Dec 5, 2022
Repository contains 1372 group lab works

Осенний курс по дисциплине "Программирование" 2021 Правила работы с репозиторием Для начала работы каждый студент делает форк (fork) репозитория на св

null 5 Mar 26, 2022
Ashita v4 Beta release repository. Contains the current, most up-to-date, publicly released version of the Ashita v4 beta.

Ashita v4 Beta Release This repository contains the current, most up to date and publicly released version of the Ashita v4 beta. Lead Developers Ashi

Ashita 22 Dec 27, 2022
This repository contains important CP questions and Leetcode questions.

Hacktoberfest 2021 For Beginners, students and developers this is great opportunity to learn and contribute to open source. Link To HacktoberFest 2021

Hawk 2 Oct 22, 2021
This is a public repository which contains various topic wise coding problems on Ds and Algo

This repo will be partcipating in the Hacktoberfest 2021. Readme Credit goes to @Saumya ?? ?? All Noobs and pro PR's Are Welcome ?? ?? This repository

John Abraham 10 Nov 3, 2022
This repository contains a collection of 42School cursus projects in addition to the pool/piscine days

This repository contains a collection of 42School cursus projects in addition to the pool/piscine days (with a detailed step by step explanation). Enjoy!

Achraf EL Khnissi 78 Dec 31, 2022
The repository contains some examples of pre-trained SNN (Spiking Neural Network) models.

About the Project The repository contains some examples of pre-trained SNN (Spiking Neural Network) models. The models were trained using the MM-BP tr

ETRI 13 Nov 24, 2022
This repository contains an exploit of CVE-2021-4034, a local privilege escalation in pkexec

pwnkit (CVE-2021-4034) Privilege Escalation exploit sample This repository contains an exploit of CVE-2021-4034, a local privilege escalation in pkexe

Peter Gottesman 29 Dec 20, 2022
This repository contains machine-readable files for the SPIR-V Registry

SPIR-V Headers This repository contains machine-readable files for the SPIR-V Registry. This includes: Header files for various languages. JSON files

The Khronos Group 201 Jan 6, 2023
This is the repository that contains the firmware for theTINA2 3D Printer.

TINA2 Firmware Summary This is the repository that contains the firmware for the TINA2 3D Printer. The framework of the firmware is based on the Marli

perron 12 Nov 28, 2022
First open-source Geometry Dash cross-platform Modding SDK

BoolkaSDK First open-source Geometry Dash cross-platform Modding SDK Requirements CMake 3.21 Android NDK r23 LLVM x86 Java and ApkTool Building Open C

null 7 Nov 20, 2022