armory3d

armorpaint

3D PBR Texture Painting Software
Under Other
By armory3d

3d tool painting texturing


armorpaint

ArmorPaint is a software for 3D PBR texture painting - check out the manual.


Note 1: This repository is aimed at developers and may not be stable. Distributed binaries are paid to help with the project funding. All of the development is happening here in order to make it accessible to everyone. Thank you for support!


Note 2: If you are compiling git version of ArmorPaint, then you need to have a compiler (Visual Studio - Windows, clang + deps - Linux, Xcode - macOS / iOS, Android Studio - Android), nodejs and git installed.


bash
git clone --recursive https://github.com/armory3d/armorpaint
cd armorpaint


Windows
```bash
node armorcore/make -g direct3d11
cd armorcore


Unpack v8\libraries\win32\release\v8_monolith.7z using 7-Zip - Extract Here (exceeds 100MB)

git apply patch/window_handling.diff --directory=Kinc
node Kinc/make -g direct3d11


Open generated Visual Studio project at build\ArmorPaint.sln
Build and run for x64 & release

```


Linux
bash
node armorcore/make -g opengl
cd armorcore
node Kinc/make -g opengl --compiler clang --compile
cd Deployment
strip ArmorPaint
./ArmorPaint ../../build/krom


macOS
```bash
node armorcore/make -g metal
cp -a build/krom/ armorcore/Deployment
cd armorcore
git apply patch/metal_depth.diff --directory=Kinc
node Kinc/make -g metal


Open generated Xcode project at build/ArmorPaint.xcodeproj
Build and run

```


Android wip
```bash
node armorcore/make android -g opengl --shaderversion 300
cp -r build/krom/* armorcore/build/ArmorPaint/app/src/main/assets/
cd armorcore
git apply patch/android_document_picker.diff --directory=Kinc
node Kinc/make android -g opengl


Manual tweaking is required for now:
https://github.com/armory3d/armorcore/blob/master/kincfile.js#L68
Open generated Android Studio project at build/ArmorPaint
Build for device

```


iOS wip
```bash
node armorcore/make ios -g metal
cp -a build/krom/ armorcore/Deployment
cd armorcore
git apply patch/ios_document_picker.diff --directory=Kinc
git apply patch/metal_depth.diff --directory=Kinc
node Kinc/make ios -g metal


Open generated Xcode project build/ArmorPaint.xcodeproj
Set iOS Deployment Target to 11.0
Build for device in release mode

```


Windows DXR wip
```bash
node armorcore/make -g direct3d12
cd armorcore


Unpack v8\libraries\win32\release\v8_monolith.7z using 7-Zip - Extract Here (exceeds 100MB)

git apply patch/window_handling.diff --directory=Kinc
git apply patch/d3d12_raytrace.diff --directory=Kinc
git apply patch/d3d12_wrap_sampler.diff --directory=Kinc
node Kinc/make -g direct3d12 --raytrace dxr


Open generated Visual Studio project at build\ArmorPaint.sln
Build and run for x64 & release

```


Linux VKRT wip
bash
node armorcore/make -g vulkan
cd armorcore
git apply patch/vulkan_raytrace.diff --directory=Kinc
git clone --recursive https://github.com/armory3d/glsl_to_spirv Libraries/glsl_to_spirv
node Kinc/make -g vulkan --raytrace vkrt --compiler clang --compile
cd Deployment
strip ArmorPaint
./ArmorPaint ../../build/krom


Windows VR wip
```bash
node armorcore/make -g direct3d11 --vr oculus
cd armorcore


Unpack v8\libraries\win32\release\v8_monolith.7z using 7-Zip - Extract Here (exceeds 100MB)

git apply patch/window_handling.diff --directory=Kinc
node Kinc/make -g direct3d11 --vr oculus


Open generated Visual Studio project at build\ArmorPaint.sln
Build and run for x64 & release

```


Updating cloned repository
```bash
git pull origin master
git submodule update --init --recursive


Delete armorpaint/build directory if present

```


Generating a locale file
```bash
pip install typing_extensions -t Assets/locale/tools
python ./Assets/locale/tools/extract_locales.py


Generates an Assets/locale/<locale code>.json file

```


Release builds Optional, used for best performance
```bash


Compile krom.js using the closure compiler

https://developers.google.com/closure/compiler


Generate a v8 snapshot file

node armorcore/make -g api --snapshot
./ArmorPaint . --snapshot


Generates a krom.bin file from krom.js file

```