diff --git a/android/build-all.bat b/android/build-all.bat
index b8315ffc..a072345b 100644
--- a/android/build-all.bat
+++ b/android/build-all.bat
@@ -41,4 +41,6 @@ call _build texturemipmapgen %1
call _build texture3d %1
call _build specializationconstants %1
call _build subpasses %1
-call _build hdr %1
\ No newline at end of file
+call _build hdr %1
+call _build pbrbasic %1
+call _build pbribl %1
\ No newline at end of file
diff --git a/android/pbrbasic/.gitignore b/android/pbrbasic/.gitignore
new file mode 100644
index 00000000..7a5d249c
--- /dev/null
+++ b/android/pbrbasic/.gitignore
@@ -0,0 +1,10 @@
+/assets/
+/res/
+/bin/
+/libs/
+/obj/
+/build.xml
+/local.properties
+/project.properties
+/proguard-project.txt
+*.apk
\ No newline at end of file
diff --git a/android/pbrbasic/AndroidManifest.xml b/android/pbrbasic/AndroidManifest.xml
new file mode 100644
index 00000000..cf06f372
--- /dev/null
+++ b/android/pbrbasic/AndroidManifest.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/pbrbasic/build.py b/android/pbrbasic/build.py
new file mode 100644
index 00000000..5a8bde6a
--- /dev/null
+++ b/android/pbrbasic/build.py
@@ -0,0 +1,49 @@
+import os
+import shutil
+import subprocess
+import sys
+import glob
+
+APK_NAME = "vulkanPBRBasic"
+SHADER_DIR = "pbrbasic"
+ASSETS_MODELS = ["cube.obj", "geosphere.obj", "teapot.dae", "torusknot.obj", "venus.fbx"]
+ASSETS_TEXTURES = [""]
+
+if subprocess.call("ndk-build", shell=True) == 0:
+ print("Build successful")
+
+ # Assets
+ if not os.path.exists("./assets"):
+ os.makedirs("./assets")
+
+ # Shaders
+ # Base
+ if not os.path.exists("./assets/shaders/base"):
+ os.makedirs("./assets/shaders/base")
+ for file in glob.glob("../../data/shaders/base/*.spv"):
+ shutil.copy(file, "./assets/shaders/base")
+ # Sample
+ if not os.path.exists("./assets/shaders/%s" % SHADER_DIR):
+ os.makedirs("./assets/shaders/%s" % SHADER_DIR)
+ for file in glob.glob("../../data/shaders/%s/*.spv" %SHADER_DIR):
+ shutil.copy(file, "./assets/shaders/%s" % SHADER_DIR)
+ # Models
+ if not os.path.exists("./assets/models"):
+ os.makedirs("./assets/models")
+ for file in ASSETS_MODELS:
+ shutil.copy("../../data/models/%s" % file, "./assets/models")
+
+ # Icon
+ if not os.path.exists("./res/drawable"):
+ os.makedirs("./res/drawable")
+ shutil.copy("../../android/images/icon.png", "./res/drawable")
+
+ if subprocess.call("ant debug -Dout.final.file=%s.apk" % APK_NAME, shell=True) == 0:
+ if len(sys.argv) > 1:
+ if sys.argv[1] == "-deploy":
+ if subprocess.call("adb install -r %s.apk" % APK_NAME, shell=True) != 0:
+ print("Could not deploy to device!")
+ else:
+ print("Error during build process!")
+else:
+ print("Error building project!")
diff --git a/android/pbrbasic/jni/Android.mk b/android/pbrbasic/jni/Android.mk
new file mode 100644
index 00000000..4b5d3dba
--- /dev/null
+++ b/android/pbrbasic/jni/Android.mk
@@ -0,0 +1,48 @@
+LOCAL_PATH := $(call my-dir)/../../pbrbasic
+
+# assimp
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := assimp
+LOCAL_SRC_FILES := $(LOCAL_PATH)/../../libs/assimp/$(TARGET_ARCH_ABI)/libassimp.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+# vulkan example
+
+DATADIR := $(LOCAL_PATH)/../../data
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := vulkanPBRBasic
+
+PROJECT_FILES := $(wildcard $(LOCAL_PATH)/../../pbrbasic/*.cpp)
+PROJECT_FILES += $(wildcard $(LOCAL_PATH)/../../base/*.cpp)
+
+LOCAL_CPPFLAGS := -std=c++11
+LOCAL_CPPFLAGS += -D__STDC_LIMIT_MACROS
+LOCAL_CPPFLAGS += -DVK_NO_PROTOTYPES
+LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../external/
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../external/glm
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../external/gli
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../external/assimp
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../base/
+#LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../base/android
+
+LOCAL_SRC_FILES := $(PROJECT_FILES)
+
+LOCAL_LDLIBS := -landroid -llog -lz
+
+LOCAL_DISABLE_FORMAT_STRING_CHECKS := true
+LOCAL_DISABLE_FATAL_LINKER_WARNINGS := true
+
+LOCAL_STATIC_LIBRARIES += android_native_app_glue
+LOCAL_STATIC_LIBRARIES += cpufeatures
+LOCAL_STATIC_LIBRARIES += libassimp
+
+include $(BUILD_SHARED_LIBRARY)
+
+$(call import-module, android/native_app_glue)
+$(call import-module, android/cpufeatures)
diff --git a/android/pbrbasic/jni/Application.mk b/android/pbrbasic/jni/Application.mk
new file mode 100644
index 00000000..62020feb
--- /dev/null
+++ b/android/pbrbasic/jni/Application.mk
@@ -0,0 +1,5 @@
+APP_PLATFORM := android-19
+APP_ABI := armeabi-v7a
+APP_STL := c++_static
+APP_CPPFLAGS := -std=c++11
+NDK_TOOLCHAIN_VERSION := clang
diff --git a/android/pbribl/.gitignore b/android/pbribl/.gitignore
new file mode 100644
index 00000000..7a5d249c
--- /dev/null
+++ b/android/pbribl/.gitignore
@@ -0,0 +1,10 @@
+/assets/
+/res/
+/bin/
+/libs/
+/obj/
+/build.xml
+/local.properties
+/project.properties
+/proguard-project.txt
+*.apk
\ No newline at end of file
diff --git a/android/pbribl/AndroidManifest.xml b/android/pbribl/AndroidManifest.xml
new file mode 100644
index 00000000..2898946c
--- /dev/null
+++ b/android/pbribl/AndroidManifest.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/pbribl/build.py b/android/pbribl/build.py
new file mode 100644
index 00000000..752f2142
--- /dev/null
+++ b/android/pbribl/build.py
@@ -0,0 +1,54 @@
+import os
+import shutil
+import subprocess
+import sys
+import glob
+
+APK_NAME = "vulkanPBRBIBL"
+SHADER_DIR = "pbribl"
+ASSETS_MODELS = ["cube.obj", "geosphere.obj", "teapot.dae", "torusknot.obj", "venus.fbx"]
+ASSETS_TEXTURES = ["hamarikyu_bridge_radiance_cube.ktx", "hamarikyu_bridge_irradiance_cube.ktx"]
+
+if subprocess.call("ndk-build", shell=True) == 0:
+ print("Build successful")
+
+ # Assets
+ if not os.path.exists("./assets"):
+ os.makedirs("./assets")
+
+ # Shaders
+ # Base
+ if not os.path.exists("./assets/shaders/base"):
+ os.makedirs("./assets/shaders/base")
+ for file in glob.glob("../../data/shaders/base/*.spv"):
+ shutil.copy(file, "./assets/shaders/base")
+ # Sample
+ if not os.path.exists("./assets/shaders/%s" % SHADER_DIR):
+ os.makedirs("./assets/shaders/%s" % SHADER_DIR)
+ for file in glob.glob("../../data/shaders/%s/*.spv" %SHADER_DIR):
+ shutil.copy(file, "./assets/shaders/%s" % SHADER_DIR)
+ # Textures
+ if not os.path.exists("./assets/textures"):
+ os.makedirs("./assets/textures")
+ for file in ASSETS_TEXTURES:
+ shutil.copy("../../data/textures/%s" % file, "./assets/textures")
+ # Models
+ if not os.path.exists("./assets/models"):
+ os.makedirs("./assets/models")
+ for file in ASSETS_MODELS:
+ shutil.copy("../../data/models/%s" % file, "./assets/models")
+
+ # Icon
+ if not os.path.exists("./res/drawable"):
+ os.makedirs("./res/drawable")
+ shutil.copy("../../android/images/icon.png", "./res/drawable")
+
+ if subprocess.call("ant debug -Dout.final.file=%s.apk" % APK_NAME, shell=True) == 0:
+ if len(sys.argv) > 1:
+ if sys.argv[1] == "-deploy":
+ if subprocess.call("adb install -r %s.apk" % APK_NAME, shell=True) != 0:
+ print("Could not deploy to device!")
+ else:
+ print("Error during build process!")
+else:
+ print("Error building project!")
diff --git a/android/pbribl/jni/Android.mk b/android/pbribl/jni/Android.mk
new file mode 100644
index 00000000..4abf2833
--- /dev/null
+++ b/android/pbribl/jni/Android.mk
@@ -0,0 +1,48 @@
+LOCAL_PATH := $(call my-dir)/../../pbribl
+
+# assimp
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := assimp
+LOCAL_SRC_FILES := $(LOCAL_PATH)/../../libs/assimp/$(TARGET_ARCH_ABI)/libassimp.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+# vulkan example
+
+DATADIR := $(LOCAL_PATH)/../../data
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := vulkanPBRBIBL
+
+PROJECT_FILES := $(wildcard $(LOCAL_PATH)/../../pbribl/*.cpp)
+PROJECT_FILES += $(wildcard $(LOCAL_PATH)/../../base/*.cpp)
+
+LOCAL_CPPFLAGS := -std=c++11
+LOCAL_CPPFLAGS += -D__STDC_LIMIT_MACROS
+LOCAL_CPPFLAGS += -DVK_NO_PROTOTYPES
+LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../external/
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../external/glm
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../external/gli
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../external/assimp
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../base/
+#LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../base/android
+
+LOCAL_SRC_FILES := $(PROJECT_FILES)
+
+LOCAL_LDLIBS := -landroid -llog -lz
+
+LOCAL_DISABLE_FORMAT_STRING_CHECKS := true
+LOCAL_DISABLE_FATAL_LINKER_WARNINGS := true
+
+LOCAL_STATIC_LIBRARIES += android_native_app_glue
+LOCAL_STATIC_LIBRARIES += cpufeatures
+LOCAL_STATIC_LIBRARIES += libassimp
+
+include $(BUILD_SHARED_LIBRARY)
+
+$(call import-module, android/native_app_glue)
+$(call import-module, android/cpufeatures)
diff --git a/android/pbribl/jni/Application.mk b/android/pbribl/jni/Application.mk
new file mode 100644
index 00000000..62020feb
--- /dev/null
+++ b/android/pbribl/jni/Application.mk
@@ -0,0 +1,5 @@
+APP_PLATFORM := android-19
+APP_ABI := armeabi-v7a
+APP_STL := c++_static
+APP_CPPFLAGS := -std=c++11
+NDK_TOOLCHAIN_VERSION := clang
diff --git a/android/uninstall-all.bat b/android/uninstall-all.bat
index d937b1c1..db310650 100644
--- a/android/uninstall-all.bat
+++ b/android/uninstall-all.bat
@@ -48,6 +48,10 @@ adb uninstall de.saschawillems.vulkanTexture3d
adb uninstall de.saschawillems.vulkanSpecializationconstants
adb uninstall de.saschawillems.vulkanSubpasses
adb uninstall de.saschawillems.vulkanHDR
+adb uninstall de.saschawillems.vulkanSSAO
+adb uninstall de.saschawillems.vulkanComputecullandlod
+adb uninstall de.saschawillems.vulkanPBRBasic
+adb uninstall de.saschawillems.vulkanPBRIBL
goto finish
:exit