CORE is a C++20 framework for GPU computing and rendering. It simplifies working with Vulkan, OpenCL, Metal, and OpenGL, with examples and tests for compute and graphics workloads. It provides higher-level abstractions over these GPU APIs to reduce boilerplate and make compute and rendering tasks easier to implement.
To get started with CORE, see CORE quickstart guide
For batched Vulkan buffer uploads and partial copies, see the buffer transfer guide.
For saving and reloading device-specific OpenCL programs, see the program binary guide.
For vertical-cross cubemap face layout and copy benchmarks, see the cubemap copy guide.
- macOS: build and run locally.
- Android (arm64-v8a): cross-compile on macOS and run on an Android device.
Ask your AI agent to follow docs/install_dependencies.md. For example:
Read
docs/install_dependencies.mdand prepare this machine to build CORE for macOS (or Android arm64-v8a). Check existing tools first, install missing dependencies, configure the environment, and verify the setup.
Run all commands from the repository root in the shell configured in step 2. Initialize submodules before the first build:
git submodule update --init --recursiveBefore running the demos in examples/, sync their required data (such as models and
textures). These data files are not stored in this repository; they are maintained separately
in core_data. Run the sync script from the repository
root to download the data into the corresponding local directories.
./scripts/sync_data.shThe script requires Git LFS and SSH access to git@github.com:chuzcjoe/core_data.git.
Run it again whenever you need to update the local data.
# Build libraries, examples, and tests.
./scripts/run.sh -t macos
# Run the Vulkan triangle example.
./build/macos/examples/vk_triangle_demo
# Build and run all module test suites.
./scripts/run.sh -t macos -r testsMore examples are available in examples/; macOS executables are built under
build/macos/examples/.
./scripts/run.sh -t arm64-v8aTo run tests, connect an Android device with USB debugging enabled and authorize it for adb:
adb devices
./scripts/run.sh -t arm64-v8a -r tests