Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/armory3d/armorpaint/llms.txt

Use this file to discover all available pages before exploring further.

ArmorPaint targets six platforms through a thin hardware abstraction layer in the iron engine. Each platform maps to a specific graphics API backend and a corresponding set of system and compiler requirements. Platform-specific source files, libraries, and defines are selected at build time via project.js conditionals, so only the code relevant to the target platform is compiled into the final binary.

Platform Summary

PlatformGraphics APICompiler / IDEArchitecture
WindowsDirect3D 12Visual Studio + Clangx64
LinuxVulkanClangx64
macOSMetalXcodearm64
iOSMetalXcodearm64
AndroidVulkanAndroid Studioarm64
WASMWebGPUClang / Emscriptenwasm32

Per-Platform Details

Graphics API: Direct3D 12Backend source files:
  • sources/backends/windows_system.* — Win32 window and input management
  • sources/backends/windows_net.* — Windows networking (Winhttp)
  • sources/backends/windows_thread.* — Windows threading primitives
  • sources/backends/direct3d12_gpu.* — Direct3D 12 GPU backend
Preprocessor defines:
  • IRON_DIRECT3D12
  • _CRT_SECURE_NO_WARNINGS
  • _WINSOCK_DEPRECATED_NO_WARNINGS
  • IRON_BGRA (pixel format)
Required libraries:
  • dxguid, dxgi, d3d12 — Direct3D 12 runtime
  • Dwmapi — Dark mode title bar (DWMWA_USE_IMMERSIVE_DARK_MODE)
  • Winhttp — HTTP networking
Optional libraries (flag-gated):
  • dsound + windows_audio.* — audio (with_audio)
  • dinput8 — gamepad input (with_gamepad)
  • d3d11 + d3dcompiler — runtime shader compilation (with_d3dcompiler)
Build command:
cd armorpaint/paint
..\base\make
# Open build\ArmorPaint.sln in Visual Studio, then Build and Run

Graphics API Backend Files

The three GPU backends are selected at compile time based on the active graphics API define:
DefineBackend FileLanguagePlatforms
IRON_DIRECT3D12direct3d12_gpu.cCWindows
IRON_VULKANvulkan_gpu.cCLinux, Android
IRON_METALmetal_gpu.mObjective-CmacOS, iOS
IRON_WEBGPUwebgpu_gpu.cCWASM

CI Workflows

ArmorPaint uses three GitHub Actions workflows to validate builds on push and pull request to main:

linux_vulkan.yml

Runs on ubuntu-latest. Installs make clang libvulkan-dev libgtk-3-dev via apt, then compiles with ../base/make --compile.

macos_metal.yml

Runs on macOS-latest. Uses the pre-installed Xcode toolchain. Compiles with ../base/make --compile.

windows_direct3d12.yml

Runs on windows-latest. Uses the pre-installed Visual Studio + Clang toolchain. Compiles with ../base/make --compile.
macOS builds target arm64 (Apple Silicon) exclusively. The Metal GPU backend (metal_gpu.m) is written in Objective-C and requires Xcode to compile. Intel-based Mac builds are not supported.

Build docs developers (and LLMs) love