From 08fc2feecc61fbf00ee4d00be68ffdb574606d1f Mon Sep 17 00:00:00 2001 From: saschawillems Date: Fri, 25 Mar 2016 15:29:38 +0100 Subject: [PATCH] Added android support for shadow mapping (projected and omni) and texture (array and cubemap ) example (#97) --- android/build-shadowmapping.bat | 1 + android/build-shadowmappingomni.bat | 1 + android/build-texturearray.bat | 1 + android/build-texturecubemap.bat | 1 + android/shadowmapping/.gitignore | 10 + android/shadowmapping/AndroidManifest.xml | 27 + android/shadowmapping/build.bat | 20 + android/shadowmapping/jni/Android.mk | 47 ++ android/shadowmapping/jni/Application.mk | 5 + android/shadowmappingomni/.gitignore | 10 + android/shadowmappingomni/AndroidManifest.xml | 27 + android/shadowmappingomni/build.bat | 21 + android/shadowmappingomni/jni/Android.mk | 47 ++ android/shadowmappingomni/jni/Application.mk | 5 + android/texturearray/.gitignore | 10 + android/texturearray/AndroidManifest.xml | 27 + android/texturearray/build.bat | 20 + android/texturearray/jni/Android.mk | 47 ++ android/texturearray/jni/Application.mk | 5 + android/texturecubemap/.gitignore | 10 + android/texturecubemap/AndroidManifest.xml | 27 + android/texturecubemap/build.bat | 24 + android/texturecubemap/jni/Android.mk | 47 ++ android/texturecubemap/jni/Application.mk | 5 + base/vulkanMeshLoader.hpp | 3 +- base/vulkanandroid.cpp | 6 +- base/vulkanandroid.h | 2 + data/models/shadowscene_fire.X | Bin 175812 -> 0 bytes data/models/shadowscene_fire.dae | 731 ++++++++++++++++++ shadowmapping/shadowmapping.cpp | 54 +- shadowmappingomni/shadowmappingomni.cpp | 55 +- texturearray/texturearray.cpp | 68 +- texturecubemap/texturecubemap.cpp | 76 +- 33 files changed, 1363 insertions(+), 77 deletions(-) create mode 100644 android/build-shadowmapping.bat create mode 100644 android/build-shadowmappingomni.bat create mode 100644 android/build-texturearray.bat create mode 100644 android/build-texturecubemap.bat create mode 100644 android/shadowmapping/.gitignore create mode 100644 android/shadowmapping/AndroidManifest.xml create mode 100644 android/shadowmapping/build.bat create mode 100644 android/shadowmapping/jni/Android.mk create mode 100644 android/shadowmapping/jni/Application.mk create mode 100644 android/shadowmappingomni/.gitignore create mode 100644 android/shadowmappingomni/AndroidManifest.xml create mode 100644 android/shadowmappingomni/build.bat create mode 100644 android/shadowmappingomni/jni/Android.mk create mode 100644 android/shadowmappingomni/jni/Application.mk create mode 100644 android/texturearray/.gitignore create mode 100644 android/texturearray/AndroidManifest.xml create mode 100644 android/texturearray/build.bat create mode 100644 android/texturearray/jni/Android.mk create mode 100644 android/texturearray/jni/Application.mk create mode 100644 android/texturecubemap/.gitignore create mode 100644 android/texturecubemap/AndroidManifest.xml create mode 100644 android/texturecubemap/build.bat create mode 100644 android/texturecubemap/jni/Android.mk create mode 100644 android/texturecubemap/jni/Application.mk delete mode 100644 data/models/shadowscene_fire.X create mode 100644 data/models/shadowscene_fire.dae diff --git a/android/build-shadowmapping.bat b/android/build-shadowmapping.bat new file mode 100644 index 00000000..4cd83362 --- /dev/null +++ b/android/build-shadowmapping.bat @@ -0,0 +1 @@ +_build shadowmapping %1 \ No newline at end of file diff --git a/android/build-shadowmappingomni.bat b/android/build-shadowmappingomni.bat new file mode 100644 index 00000000..bf20755d --- /dev/null +++ b/android/build-shadowmappingomni.bat @@ -0,0 +1 @@ +_build shadowmappingomni %1 \ No newline at end of file diff --git a/android/build-texturearray.bat b/android/build-texturearray.bat new file mode 100644 index 00000000..ec3b7d0d --- /dev/null +++ b/android/build-texturearray.bat @@ -0,0 +1 @@ +_build texturearray %1 \ No newline at end of file diff --git a/android/build-texturecubemap.bat b/android/build-texturecubemap.bat new file mode 100644 index 00000000..819d26aa --- /dev/null +++ b/android/build-texturecubemap.bat @@ -0,0 +1 @@ +_build texturecubemap %1 \ No newline at end of file diff --git a/android/shadowmapping/.gitignore b/android/shadowmapping/.gitignore new file mode 100644 index 00000000..7a5d249c --- /dev/null +++ b/android/shadowmapping/.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/shadowmapping/AndroidManifest.xml b/android/shadowmapping/AndroidManifest.xml new file mode 100644 index 00000000..b124b11b --- /dev/null +++ b/android/shadowmapping/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/android/shadowmapping/build.bat b/android/shadowmapping/build.bat new file mode 100644 index 00000000..04c69d92 --- /dev/null +++ b/android/shadowmapping/build.bat @@ -0,0 +1,20 @@ +cd jni +call ndk-build +if %ERRORLEVEL% EQU 0 ( + echo ndk-build has failed, build cancelled + cd.. + + mkdir "assets\shaders\shadowmapping" + xcopy "..\..\data\shaders\shadowmapping\*.spv" "assets\shaders\shadowmapping" /Y + + mkdir "assets\models" + xcopy "..\..\data\models\vulkanscene_shadow.dae" "assets\models" /Y + + mkdir "res\drawable" + xcopy "..\..\android\images\icon.png" "res\drawable" /Y + + call ant debug -Dout.final.file=vulkanShadowmapping.apk +) ELSE ( + echo error : ndk-build failed with errors! + cd.. +) diff --git a/android/shadowmapping/jni/Android.mk b/android/shadowmapping/jni/Android.mk new file mode 100644 index 00000000..d28de6f8 --- /dev/null +++ b/android/shadowmapping/jni/Android.mk @@ -0,0 +1,47 @@ +LOCAL_PATH := $(call my-dir)/../../shadowmapping + +# 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 := vulkanShadowmapping + +PROJECT_FILES := $(wildcard $(LOCAL_PATH)/../../shadowmapping/*.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_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/shadowmapping/jni/Application.mk b/android/shadowmapping/jni/Application.mk new file mode 100644 index 00000000..62020feb --- /dev/null +++ b/android/shadowmapping/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/shadowmappingomni/.gitignore b/android/shadowmappingomni/.gitignore new file mode 100644 index 00000000..7a5d249c --- /dev/null +++ b/android/shadowmappingomni/.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/shadowmappingomni/AndroidManifest.xml b/android/shadowmappingomni/AndroidManifest.xml new file mode 100644 index 00000000..25148b0f --- /dev/null +++ b/android/shadowmappingomni/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/android/shadowmappingomni/build.bat b/android/shadowmappingomni/build.bat new file mode 100644 index 00000000..40bf7684 --- /dev/null +++ b/android/shadowmappingomni/build.bat @@ -0,0 +1,21 @@ +cd jni +call ndk-build +if %ERRORLEVEL% EQU 0 ( + echo ndk-build has failed, build cancelled + cd.. + + mkdir "assets\shaders\shadowmapomni" + xcopy "..\..\data\shaders\shadowmapomni\*.spv" "assets\shaders\shadowmapomni" /Y + + mkdir "assets\models" + xcopy "..\..\data\models\shadowscene_fire.dae" "assets\models" /Y + xcopy "..\..\data\models\cube.obj" "assets\models" /Y + + mkdir "res\drawable" + xcopy "..\..\android\images\icon.png" "res\drawable" /Y + + call ant debug -Dout.final.file=vulkanShadowmappingomni.apk +) ELSE ( + echo error : ndk-build failed with errors! + cd.. +) diff --git a/android/shadowmappingomni/jni/Android.mk b/android/shadowmappingomni/jni/Android.mk new file mode 100644 index 00000000..fd0df8ea --- /dev/null +++ b/android/shadowmappingomni/jni/Android.mk @@ -0,0 +1,47 @@ +LOCAL_PATH := $(call my-dir)/../../shadowmappingomni + +# 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 := vulkanShadowmappingomni + +PROJECT_FILES := $(wildcard $(LOCAL_PATH)/../../shadowmappingomni/*.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_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/shadowmappingomni/jni/Application.mk b/android/shadowmappingomni/jni/Application.mk new file mode 100644 index 00000000..62020feb --- /dev/null +++ b/android/shadowmappingomni/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/texturearray/.gitignore b/android/texturearray/.gitignore new file mode 100644 index 00000000..7a5d249c --- /dev/null +++ b/android/texturearray/.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/texturearray/AndroidManifest.xml b/android/texturearray/AndroidManifest.xml new file mode 100644 index 00000000..2999d429 --- /dev/null +++ b/android/texturearray/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/android/texturearray/build.bat b/android/texturearray/build.bat new file mode 100644 index 00000000..2c368458 --- /dev/null +++ b/android/texturearray/build.bat @@ -0,0 +1,20 @@ +cd jni +call ndk-build +if %ERRORLEVEL% EQU 0 ( + echo ndk-build has failed, build cancelled + cd.. + + mkdir "assets\shaders\texturearray" + xcopy "..\..\data\shaders\texturearray\*.spv" "assets\shaders\texturearray" /Y + + mkdir "assets\textures" + xcopy "..\..\data\textures\texturearray_bc3.ktx" "assets\textures" /Y + + mkdir "res\drawable" + xcopy "..\..\android\images\icon.png" "res\drawable" /Y + + call ant debug -Dout.final.file=vulkanTexturearray.apk +) ELSE ( + echo error : ndk-build failed with errors! + cd.. +) diff --git a/android/texturearray/jni/Android.mk b/android/texturearray/jni/Android.mk new file mode 100644 index 00000000..b11b1de0 --- /dev/null +++ b/android/texturearray/jni/Android.mk @@ -0,0 +1,47 @@ +LOCAL_PATH := $(call my-dir)/../../texturearray + +# 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 := vulkanTexturearray + +PROJECT_FILES := $(wildcard $(LOCAL_PATH)/../../texturearray/*.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_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/texturearray/jni/Application.mk b/android/texturearray/jni/Application.mk new file mode 100644 index 00000000..62020feb --- /dev/null +++ b/android/texturearray/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/texturecubemap/.gitignore b/android/texturecubemap/.gitignore new file mode 100644 index 00000000..7a5d249c --- /dev/null +++ b/android/texturecubemap/.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/texturecubemap/AndroidManifest.xml b/android/texturecubemap/AndroidManifest.xml new file mode 100644 index 00000000..56f9d885 --- /dev/null +++ b/android/texturecubemap/AndroidManifest.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/android/texturecubemap/build.bat b/android/texturecubemap/build.bat new file mode 100644 index 00000000..2caa3ab2 --- /dev/null +++ b/android/texturecubemap/build.bat @@ -0,0 +1,24 @@ +cd jni +call ndk-build +if %ERRORLEVEL% EQU 0 ( + echo ndk-build has failed, build cancelled + cd.. + + mkdir "assets\shaders\cubemap" + xcopy "..\..\data\shaders\cubemap\*.spv" "assets\shaders\cubemap" /Y + + mkdir "assets\textures" + xcopy "..\..\data\textures\cubemap_yokohama.ktx" "assets\textures" /Y + + mkdir "assets\models" + xcopy "..\..\data\models\sphere.obj" "assets\models" /Y + xcopy "..\..\data\models\cube.obj" "assets\models" /Y + + mkdir "res\drawable" + xcopy "..\..\android\images\icon.png" "res\drawable" /Y + + call ant debug -Dout.final.file=vulkanTexturecubemap.apk +) ELSE ( + echo error : ndk-build failed with errors! + cd.. +) diff --git a/android/texturecubemap/jni/Android.mk b/android/texturecubemap/jni/Android.mk new file mode 100644 index 00000000..a4237f61 --- /dev/null +++ b/android/texturecubemap/jni/Android.mk @@ -0,0 +1,47 @@ +LOCAL_PATH := $(call my-dir)/../../texturecubemap + +# 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 := vulkanTexturecubemap + +PROJECT_FILES := $(wildcard $(LOCAL_PATH)/../../texturecubemap/*.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_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/texturecubemap/jni/Application.mk b/android/texturecubemap/jni/Application.mk new file mode 100644 index 00000000..62020feb --- /dev/null +++ b/android/texturecubemap/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/base/vulkanMeshLoader.hpp b/base/vulkanMeshLoader.hpp index b8965ff8..bbbe84f7 100644 --- a/base/vulkanMeshLoader.hpp +++ b/base/vulkanMeshLoader.hpp @@ -367,7 +367,8 @@ public: for (unsigned int i = 0; i < paiMesh->mNumFaces; i++) { const aiFace& Face = paiMesh->mFaces[i]; - assert(Face.mNumIndices == 3); + if (Face.mNumIndices != 3) + continue; m_Entries[index].Indices.push_back(Face.mIndices[0]); m_Entries[index].Indices.push_back(Face.mIndices[1]); m_Entries[index].Indices.push_back(Face.mIndices[2]); diff --git a/base/vulkanandroid.cpp b/base/vulkanandroid.cpp index 2e1b4a7c..0d720241 100644 --- a/base/vulkanandroid.cpp +++ b/base/vulkanandroid.cpp @@ -81,6 +81,8 @@ PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; PFN_vkCmdSetViewport vkCmdSetViewport; PFN_vkCmdSetScissor vkCmdSetScissor; PFN_vkCmdSetLineWidth vkCmdSetLineWidth; +PFN_vkCmdSetDepthBias vkCmdSetDepthBias; +PFN_vkCmdPushConstants vkCmdPushConstants; PFN_vkCmdDrawIndexed vkCmdDrawIndexed; PFN_vkCmdDraw vkCmdDraw; PFN_vkCmdDispatch vkCmdDispatch; @@ -210,7 +212,9 @@ void loadVulkanFunctions(VkInstance instance) vkCmdSetViewport = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdSetViewport")); vkCmdSetScissor = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdSetScissor")); - vkCmdSetLineWidth = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdSetLineWidth"));; + vkCmdSetLineWidth = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdSetLineWidth")); + vkCmdSetDepthBias = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdSetDepthBias")); + vkCmdPushConstants = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdPushConstants"));; vkCmdDrawIndexed = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdDrawIndexed")); vkCmdDraw = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdDraw")); diff --git a/base/vulkanandroid.h b/base/vulkanandroid.h index ddf7345a..c976f658 100644 --- a/base/vulkanandroid.h +++ b/base/vulkanandroid.h @@ -100,6 +100,8 @@ extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; extern PFN_vkCmdSetViewport vkCmdSetViewport; extern PFN_vkCmdSetScissor vkCmdSetScissor; extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth; +extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias; +extern PFN_vkCmdPushConstants vkCmdPushConstants; extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed; extern PFN_vkCmdDraw vkCmdDraw; extern PFN_vkCmdDispatch vkCmdDispatch; diff --git a/data/models/shadowscene_fire.X b/data/models/shadowscene_fire.X deleted file mode 100644 index 737ebf128ea0f7fa3d84c63a7aa796c51070070e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175812 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 + + + + Assimp + Assimp Exporter + + 2016-03-25T15:06:43 + 2016-03-25T15:06:43 + + Y_UP + + + + + + + + 0 0 0 1 + + + 0.647059 0.619608 0.564706 1 + + + 0 0 0 1 + + + 10 + + + + + + + + + + + 0 0 0 1 + + + 0.513726 0.513726 0.513726 1 + + + 0 0 0 1 + + + 10 + + + + + + + + + + + 0 0 0 1 + + + 0.815686 0.815686 0.815686 1 + + + 0 0 0 1 + + + 10 + + + + + + + + + + + 0 0 0 1 + + + 0.0901961 0.0901961 0.0901961 1 + + + 0 0 0 1 + + + 10 + + + + + + + + + + + + + + + + + + + + + + + + + -1.74846e-07 0 -4 0.780361 0 -3.92314 0.780361 0.854701 -3.92314 -1.74846e-07 0.854701 -4 1.53073 0 -3.69552 1.53073 0.854701 -3.69552 2.22228 0 -3.32588 2.22228 0.854701 -3.32588 2.82843 0 -2.82843 2.82843 0.854701 -2.82843 3.32588 0 -2.22228 3.32588 0.854701 -2.22228 3.69552 0 -1.53073 3.69552 0.854701 -1.53073 3.92314 0 -0.780361 3.92314 0.854701 -0.780361 4 0 -1.19209e-07 4 0.854701 -1.19209e-07 3.92314 0 0.780361 3.92314 0.854701 0.780361 3.69552 0 1.53073 3.69552 0.854701 1.53073 3.32588 0 2.22228 3.32588 0.854701 2.22228 2.82843 0 2.82843 2.82843 0.854701 2.82843 2.22228 0 3.32588 2.22228 0.854701 3.32588 1.53073 0 3.69552 1.53073 0.854701 3.69552 0.780361 0 3.92314 0.780361 0.854701 3.92314 3.01992e-07 0 4 3.01992e-07 0.854701 4 -0.780361 0 3.92314 -0.780361 0.854701 3.92314 -1.53073 0 3.69552 -1.53073 0.854701 3.69552 -2.22228 0 3.32588 -2.22228 0.854701 3.32588 -2.82843 0 2.82843 -2.82843 0.854701 2.82843 -3.32588 0 2.22228 -3.32588 0.854701 2.22228 -3.69552 0 1.53073 -3.69552 0.854701 1.53073 -3.92314 0 0.78036 -3.92314 0.854701 0.78036 -4 0 -1.30337e-06 -4 0.854701 -1.30337e-06 -3.92314 0 -0.780363 -3.92314 0.854701 -0.780363 -3.69552 0 -1.53074 -3.69552 0.854701 -1.53074 -3.32588 0 -2.22228 -3.32588 0.854701 -2.22228 -2.82843 0 -2.82843 -2.82843 0.854701 -2.82843 -2.22228 0 -3.32588 -2.22228 0.854701 -3.32588 -1.53073 0 -3.69552 -1.53073 0.854701 -3.69552 -0.780358 0 -3.92314 -0.780358 0.854701 -3.92314 -1.74846e-07 0 -4 -1.74846e-07 0.854701 -4 -1.74846e-07 0.854701 -4 0.780361 0.854701 -3.92314 0.702325 0.854701 -3.53083 -1.57361e-07 0.854701 -3.6 1.53073 0.854701 -3.69552 1.37766 0.854701 -3.32597 2.22228 0.854701 -3.32588 2.00005 0.854701 -2.99329 2.82843 0.854701 -2.82843 2.54558 0.854701 -2.54558 3.32588 0.854701 -2.22228 2.99329 0.854701 -2.00005 3.69552 0.854701 -1.53073 3.32597 0.854701 -1.37766 3.92314 0.854701 -0.780361 3.53083 0.854701 -0.702325 4 0.854701 -1.19209e-07 3.6 0.854701 -1.07288e-07 3.92314 0.854701 0.780361 3.53083 0.854701 0.702325 3.69552 0.854701 1.53073 3.32597 0.854701 1.37766 3.32588 0.854701 2.22228 2.99329 0.854701 2.00005 2.82843 0.854701 2.82843 2.54558 0.854701 2.54558 2.22228 0.854701 3.32588 2.00005 0.854701 2.99329 1.53073 0.854701 3.69552 1.37766 0.854701 3.32597 0.780361 0.854701 3.92314 0.702325 0.854701 3.53083 3.01992e-07 0.854701 4 2.71792e-07 0.854701 3.6 -0.780361 0.854701 3.92314 -0.702325 0.854701 3.53083 -1.53073 0.854701 3.69552 -1.37766 0.854701 3.32597 -2.22228 0.854701 3.32588 -2.00005 0.854701 2.99329 -2.82843 0.854701 2.82843 -2.54558 0.854701 2.54558 -3.32588 0.854701 2.22228 -2.99329 0.854701 2.00005 -3.69552 0.854701 1.53073 -3.32597 0.854701 1.37766 -3.92314 0.854701 0.78036 -3.53083 0.854701 0.702324 -4 0.854701 -1.30337e-06 -3.6 0.854701 -1.17303e-06 -3.92314 0.854701 -0.780363 -3.53083 0.854701 -0.702327 -3.69552 0.854701 -1.53074 -3.32597 0.854701 -1.37766 -3.32588 0.854701 -2.22228 -2.99329 0.854701 -2.00005 -2.82843 0.854701 -2.82843 -2.54558 0.854701 -2.54559 -2.22228 0.854701 -3.32588 -2.00005 0.854701 -2.99329 -1.53073 0.854701 -3.69552 -1.37766 0.854701 -3.32597 -0.780358 0.854701 -3.92314 -0.702322 0.854701 -3.53083 -1.74846e-07 0.854701 -4 -1.57361e-07 0.854701 -3.6 -1.57361e-07 0.854701 -3.6 0.702325 0.854701 -3.53083 0.702325 0 -3.53083 -1.57361e-07 0 -3.6 1.37766 0.854701 -3.32597 1.37766 0 -3.32597 2.00005 0.854701 -2.99329 2.00005 0 -2.99329 2.54558 0.854701 -2.54558 2.54558 0 -2.54558 2.99329 0.854701 -2.00005 2.99329 0 -2.00005 3.32597 0.854701 -1.37766 3.32597 0 -1.37766 3.53083 0.854701 -0.702325 3.53083 0 -0.702325 3.6 0.854701 -1.07288e-07 3.6 0 -1.07288e-07 3.53083 0.854701 0.702325 3.53083 0 0.702325 3.32597 0.854701 1.37766 3.32597 0 1.37766 2.99329 0.854701 2.00005 2.99329 0 2.00005 2.54558 0.854701 2.54558 2.54558 0 2.54558 2.00005 0.854701 2.99329 2.00005 0 2.99329 1.37766 0.854701 3.32597 1.37766 0 3.32597 0.702325 0.854701 3.53083 0.702325 0 3.53083 2.71792e-07 0.854701 3.6 2.71792e-07 0 3.6 -0.702325 0.854701 3.53083 -0.702325 0 3.53083 -1.37766 0.854701 3.32597 -1.37766 0 3.32597 -2.00005 0.854701 2.99329 -2.00005 0 2.99329 -2.54558 0.854701 2.54558 -2.54558 0 2.54558 -2.99329 0.854701 2.00005 -2.99329 0 2.00005 -3.32597 0.854701 1.37766 -3.32597 0 1.37766 -3.53083 0.854701 0.702324 -3.53083 0 0.702324 -3.6 0.854701 -1.17303e-06 -3.6 0 -1.17303e-06 -3.53083 0.854701 -0.702327 -3.53083 0 -0.702327 -3.32597 0.854701 -1.37766 -3.32597 0 -1.37766 -2.99329 0.854701 -2.00005 -2.99329 0 -2.00005 -2.54558 0.854701 -2.54559 -2.54558 0 -2.54559 -2.00005 0.854701 -2.99329 -2.00005 0 -2.99329 -1.37766 0.854701 -3.32597 -1.37766 0 -3.32597 -0.702322 0.854701 -3.53083 -0.702322 0 -3.53083 -1.57361e-07 0.854701 -3.6 -1.57361e-07 0 -3.6 -1.57361e-07 0 -3.6 0.702325 0 -3.53083 0.780361 0 -3.92314 -1.74846e-07 0 -4 1.37766 0 -3.32597 1.53073 0 -3.69552 2.00005 0 -2.99329 2.22228 0 -3.32588 2.54558 0 -2.54558 2.82843 0 -2.82843 2.99329 0 -2.00005 3.32588 0 -2.22228 3.32597 0 -1.37766 3.69552 0 -1.53073 3.53083 0 -0.702325 3.92314 0 -0.780361 3.6 0 -1.07288e-07 4 0 -1.19209e-07 3.53083 0 0.702325 3.92314 0 0.780361 3.32597 0 1.37766 3.69552 0 1.53073 2.99329 0 2.00005 3.32588 0 2.22228 2.54558 0 2.54558 2.82843 0 2.82843 2.00005 0 2.99329 2.22228 0 3.32588 1.37766 0 3.32597 1.53073 0 3.69552 0.702325 0 3.53083 0.780361 0 3.92314 2.71792e-07 0 3.6 3.01992e-07 0 4 -0.702325 0 3.53083 -0.780361 0 3.92314 -1.37766 0 3.32597 -1.53073 0 3.69552 -2.00005 0 2.99329 -2.22228 0 3.32588 -2.54558 0 2.54558 -2.82843 0 2.82843 -2.99329 0 2.00005 -3.32588 0 2.22228 -3.32597 0 1.37766 -3.69552 0 1.53073 -3.53083 0 0.702324 -3.92314 0 0.78036 -3.6 0 -1.17303e-06 -4 0 -1.30337e-06 -3.53083 0 -0.702327 -3.92314 0 -0.780363 -3.32597 0 -1.37766 -3.69552 0 -1.53074 -2.99329 0 -2.00005 -3.32588 0 -2.22228 -2.54558 0 -2.54559 -2.82843 0 -2.82843 -2.00005 0 -2.99329 -2.22228 0 -3.32588 -1.37766 0 -3.32597 -1.53073 0 -3.69552 -0.702322 0 -3.53083 -0.780358 0 -3.92314 -1.57361e-07 0 -3.6 -1.74846e-07 0 -4 + + + + + + + + + + 0.0328128 0 -0.999462 0.227168 0 -0.973856 0.162803 0 -0.986659 -0.0328126 0 -0.999462 0.412792 0 -0.910825 0.352162 0 -0.935939 0.582554 0 -0.812792 0.527988 0 -0.849252 0.729928 0 -0.683524 0.683524 0 -0.729928 0.849252 0 -0.527988 0.812792 0 -0.582554 0.935939 0 -0.352162 0.910825 0 -0.412792 0.986659 0 -0.162803 0.973856 0 -0.227168 0.999462 0 0.0328126 0.999462 0 -0.0328129 0.973856 0 0.227167 0.986659 0 0.162803 0.910825 0 0.412793 0.935939 0 0.352162 0.812792 0 0.582554 0.849252 0 0.527988 0.683524 0 0.729928 0.729928 0 0.683524 0.527988 0 0.849252 0.582554 0 0.812792 0.352162 0 0.935939 0.412792 0 0.910825 0.162803 0 0.986659 0.227168 0 0.973856 -0.0328126 0 0.999462 0.0328129 0 0.999462 -0.227168 0 0.973856 -0.162803 0 0.986659 -0.412792 0 0.910825 -0.352162 0 0.935939 -0.582554 0 0.812792 -0.527988 0 0.849252 -0.729928 0 0.683524 -0.683524 0 0.729928 -0.849252 0 0.527988 -0.812792 0 0.582554 -0.935939 0 0.352162 -0.910825 0 0.412792 -0.986659 0 0.162803 -0.973856 0 0.227167 -0.999462 0 -0.0328131 -0.999462 0 0.0328125 -0.973856 0 -0.227168 -0.986659 0 -0.162803 -0.910825 0 -0.412793 -0.935939 0 -0.352163 -0.812792 0 -0.582554 -0.849251 0 -0.527989 -0.683523 0 -0.729929 -0.729928 0 -0.683524 -0.527988 0 -0.849252 -0.582553 0 -0.812793 -0.352161 0 -0.935939 -0.412792 0 -0.910825 -0.162802 0 -0.986659 -0.227167 0 -0.973856 0.0328128 0 -0.999462 -0.0328126 0 -0.999462 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 -0.0328128 0 0.999462 -0.227168 0 0.973856 -0.162803 0 0.986659 0.0328126 0 0.999462 -0.412792 0 0.910825 -0.352162 0 0.935939 -0.582554 0 0.812792 -0.527988 0 0.849252 -0.729928 0 0.683524 -0.683524 0 0.729928 -0.849252 0 0.527988 -0.812792 0 0.582554 -0.935939 0 0.352162 -0.910825 0 0.412792 -0.986659 0 0.162803 -0.973856 0 0.227168 -0.999462 0 -0.0328126 -0.999462 0 0.032813 -0.973856 0 -0.227168 -0.986659 0 -0.162803 -0.910825 0 -0.412793 -0.935939 0 -0.352162 -0.812792 0 -0.582554 -0.849252 0 -0.527988 -0.683524 0 -0.729928 -0.729928 0 -0.683524 -0.527988 0 -0.849252 -0.582554 0 -0.812792 -0.352162 0 -0.935939 -0.412792 0 -0.910825 -0.162803 0 -0.986659 -0.227168 0 -0.973856 0.0328126 0 -0.999462 -0.032813 0 -0.999462 0.227168 0 -0.973856 0.162803 0 -0.986659 0.412792 0 -0.910825 0.352162 0 -0.935939 0.582554 0 -0.812792 0.527988 0 -0.849252 0.729928 0 -0.683524 0.683524 0 -0.729928 0.849252 0 -0.527988 0.812792 0 -0.582554 0.935939 0 -0.352162 0.910825 0 -0.412792 0.986659 0 -0.162803 0.973856 0 -0.227167 0.999462 0 0.0328132 0.999462 0 -0.0328125 0.973856 0 0.227168 0.986659 0 0.162803 0.910825 0 0.412793 0.935939 0 0.352163 0.812792 0 0.582554 0.849252 0 0.527988 0.683523 0 0.729929 0.729928 0 0.683524 0.527988 0 0.849252 0.582553 0 0.812793 0.352162 0 0.935939 0.412792 0 0.910825 0.162802 0 0.986659 0.227167 0 0.973856 -0.0328128 0 0.999462 0.0328126 0 0.999462 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 + + + + + + + + + + 0 0 0 0.03125 0.25 0.03125 0.25 0 0 0.0625 0.25 0.0625 0 0.09375 0.25 0.09375 0 0.125 0.25 0.125 0 0.15625 0.25 0.15625 0 0.1875 0.25 0.1875 0 0.21875 0.25 0.21875 0 0.25 0.25 0.25 0 0.28125 0.25 0.28125 0 0.3125 0.25 0.3125 0 0.34375 0.25 0.34375 0 0.375 0.25 0.375 0 0.40625 0.25 0.40625 0 0.4375 0.25 0.4375 0 0.46875 0.25 0.46875 0 0.5 0.25 0.5 0 0.53125 0.25 0.53125 0 0.5625 0.25 0.5625 0 0.59375 0.25 0.59375 0 0.625 0.25 0.625 0 0.65625 0.25 0.65625 0 0.6875 0.25 0.6875 0 0.71875 0.25 0.71875 0 0.75 0.25 0.75 0 0.78125 0.25 0.78125 0 0.8125 0.25 0.8125 0 0.84375 0.25 0.84375 0 0.875 0.25 0.875 0 0.90625 0.25 0.90625 0 0.9375 0.25 0.9375 0 0.96875 0.25 0.96875 0 1 0.25 1 0.25 0 0.25 0.03125 0.5 0.03125 0.5 0 0.25 0.0625 0.5 0.0625 0.25 0.09375 0.5 0.09375 0.25 0.125 0.5 0.125 0.25 0.15625 0.5 0.15625 0.25 0.1875 0.5 0.1875 0.25 0.21875 0.5 0.21875 0.25 0.25 0.5 0.25 0.25 0.28125 0.5 0.28125 0.25 0.3125 0.5 0.3125 0.25 0.34375 0.5 0.34375 0.25 0.375 0.5 0.375 0.25 0.40625 0.5 0.40625 0.25 0.4375 0.5 0.4375 0.25 0.46875 0.5 0.46875 0.25 0.5 0.5 0.5 0.25 0.53125 0.5 0.53125 0.25 0.5625 0.5 0.5625 0.25 0.59375 0.5 0.59375 0.25 0.625 0.5 0.625 0.25 0.65625 0.5 0.65625 0.25 0.6875 0.5 0.6875 0.25 0.71875 0.5 0.71875 0.25 0.75 0.5 0.75 0.25 0.78125 0.5 0.78125 0.25 0.8125 0.5 0.8125 0.25 0.84375 0.5 0.84375 0.25 0.875 0.5 0.875 0.25 0.90625 0.5 0.90625 0.25 0.9375 0.5 0.9375 0.25 0.96875 0.5 0.96875 0.25 1 0.5 1 0.5 0 0.5 0.03125 0.75 0.03125 0.75 0 0.5 0.0625 0.75 0.0625 0.5 0.09375 0.75 0.09375 0.5 0.125 0.75 0.125 0.5 0.15625 0.75 0.15625 0.5 0.1875 0.75 0.1875 0.5 0.21875 0.75 0.21875 0.5 0.25 0.75 0.25 0.5 0.28125 0.75 0.28125 0.5 0.3125 0.75 0.3125 0.5 0.34375 0.75 0.34375 0.5 0.375 0.75 0.375 0.5 0.40625 0.75 0.40625 0.5 0.4375 0.75 0.4375 0.5 0.46875 0.75 0.46875 0.5 0.5 0.75 0.5 0.5 0.53125 0.75 0.53125 0.5 0.5625 0.75 0.5625 0.5 0.59375 0.75 0.59375 0.5 0.625 0.75 0.625 0.5 0.65625 0.75 0.65625 0.5 0.6875 0.75 0.6875 0.5 0.71875 0.75 0.71875 0.5 0.75 0.75 0.75 0.5 0.78125 0.75 0.78125 0.5 0.8125 0.75 0.8125 0.5 0.84375 0.75 0.84375 0.5 0.875 0.75 0.875 0.5 0.90625 0.75 0.90625 0.5 0.9375 0.75 0.9375 0.5 0.96875 0.75 0.96875 0.5 1 0.75 1 0.75 0 0.75 0.03125 1 0.03125 1 0 0.75 0.0625 1 0.0625 0.75 0.09375 1 0.09375 0.75 0.125 1 0.125 0.75 0.15625 1 0.15625 0.75 0.1875 1 0.1875 0.75 0.21875 1 0.21875 0.75 0.25 1 0.25 0.75 0.28125 1 0.28125 0.75 0.3125 1 0.3125 0.75 0.34375 1 0.34375 0.75 0.375 1 0.375 0.75 0.40625 1 0.40625 0.75 0.4375 1 0.4375 0.75 0.46875 1 0.46875 0.75 0.5 1 0.5 0.75 0.53125 1 0.53125 0.75 0.5625 1 0.5625 0.75 0.59375 1 0.59375 0.75 0.625 1 0.625 0.75 0.65625 1 0.65625 0.75 0.6875 1 0.6875 0.75 0.71875 1 0.71875 0.75 0.75 1 0.75 0.75 0.78125 1 0.78125 0.75 0.8125 1 0.8125 0.75 0.84375 1 0.84375 0.75 0.875 1 0.875 0.75 0.90625 1 0.90625 0.75 0.9375 1 0.9375 0.75 0.96875 1 0.96875 0.75 1 1 1 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

2 1 0 3 2 0 5 4 1 2 5 1 7 6 4 5 7 4 9 8 6 7 9 6 11 10 8 9 11 8 13 12 10 11 13 10 15 14 12 13 15 12 17 16 14 15 17 14 19 18 16 17 19 16 21 20 18 19 21 18 23 22 20 21 23 20 25 24 22 23 25 22 27 26 24 25 27 24 29 28 26 27 29 26 31 30 28 29 31 28 33 32 30 31 33 30 35 34 32 33 35 32 37 36 34 35 37 34 39 38 36 37 39 36 41 40 38 39 41 38 43 42 40 41 43 40 45 44 42 43 45 42 47 46 44 45 47 44 49 48 46 47 49 46 51 50 48 49 51 48 53 52 50 51 53 50 55 54 52 53 55 52 57 56 54 55 57 54 59 58 56 57 59 56 61 60 58 59 61 58 63 62 60 61 63 60 65 64 62 63 65 62 68 67 66 69 68 66 71 70 67 68 71 67 73 72 70 71 73 70 75 74 72 73 75 72 77 76 74 75 77 74 79 78 76 77 79 76 81 80 78 79 81 78 83 82 80 81 83 80 85 84 82 83 85 82 87 86 84 85 87 84 89 88 86 87 89 86 91 90 88 89 91 88 93 92 90 91 93 90 95 94 92 93 95 92 97 96 94 95 97 94 99 98 96 97 99 96 101 100 98 99 101 98 103 102 100 101 103 100 105 104 102 103 105 102 107 106 104 105 107 104 109 108 106 107 109 106 111 110 108 109 111 108 113 112 110 111 113 110 115 114 112 113 115 112 117 116 114 115 117 114 119 118 116 117 119 116 121 120 118 119 121 118 123 122 120 121 123 120 125 124 122 123 125 122 127 126 124 125 127 124 129 128 126 127 129 126 131 130 128 129 131 128 134 133 132 135 134 132 137 136 133 134 137 133 139 138 136 137 139 136 141 140 138 139 141 138 143 142 140 141 143 140 145 144 142 143 145 142 147 146 144 145 147 144 149 148 146 147 149 146 151 150 148 149 151 148 153 152 150 151 153 150 155 154 152 153 155 152 157 156 154 155 157 154 159 158 156 157 159 156 161 160 158 159 161 158 163 162 160 161 163 160 165 164 162 163 165 162 167 166 164 165 167 164 169 168 166 167 169 166 171 170 168 169 171 168 173 172 170 171 173 170 175 174 172 173 175 172 177 176 174 175 177 174 179 178 176 177 179 176 181 180 178 179 181 178 183 182 180 181 183 180 185 184 182 183 185 182 187 186 184 185 187 184 189 188 186 187 189 186 191 190 188 189 191 188 193 192 190 191 193 190 195 194 192 193 195 192 197 196 194 195 197 194 200 199 198 201 200 198 203 202 199 200 203 199 205 204 202 203 205 202 207 206 204 205 207 204 209 208 206 207 209 206 211 210 208 209 211 208 213 212 210 211 213 210 215 214 212 213 215 212 217 216 214 215 217 214 219 218 216 217 219 216 221 220 218 219 221 218 223 222 220 221 223 220 225 224 222 223 225 222 227 226 224 225 227 224 229 228 226 227 229 226 231 230 228 229 231 228 233 232 230 231 233 230 235 234 232 233 235 232 237 236 234 235 237 234 239 238 236 237 239 236 241 240 238 239 241 238 243 242 240 241 243 240 245 244 242 243 245 242 247 246 244 245 247 244 249 248 246 247 249 246 251 250 248 249 251 248 253 252 250 251 253 250 255 254 252 253 255 252 257 256 254 255 257 254 259 258 256 257 259 256 261 260 258 259 261 258 263 262 260 261 263 260

+
+
+
+ + + + -1.7266e-07 0 -3.95 0.770606 0 -3.8741 0.755975 0.129904 -3.80054 -1.69382e-07 0.129904 -3.875 1.5116 0 -3.64932 1.4829 0.129904 -3.58003 0.726711 0.129904 -3.65343 1.4255 0.129904 -3.44145 -1.62825e-07 0.129904 -3.725 0.712079 -1.31134e-08 -3.57987 1.39679 -1.31134e-08 -3.37216 2.0695 0.129904 -3.09722 2.02783 -1.31134e-08 -3.03486 2.15283 0.129904 -3.22194 2.1945 0 -3.28431 2.74004 0.129904 -2.74004 2.63397 0.129904 -2.63397 2.58094 -1.31134e-08 -2.58094 2.0695 -0.129904 -3.09722 2.63397 -0.129904 -2.63397 3.03486 -1.31134e-08 -2.02783 3.09722 -0.129904 -2.0695 3.09722 0.129904 -2.0695 3.37216 -1.31134e-08 -1.39679 3.44145 -0.129904 -1.4255 3.22194 -0.129904 -2.15283 3.58003 -0.129904 -1.4829 2.74004 -0.129904 -2.74004 3.2843 0 -2.1945 3.64932 0 -1.5116 3.80054 -0.129904 -0.755975 3.8741 0 -0.770607 3.65342 -0.129904 -0.726712 3.875 -0.129904 -1.15484e-07 3.95 0 -1.17719e-07 3.57987 -1.31134e-08 -0.71208 3.725 -0.129904 -1.11014e-07 3.80054 -0.129904 0.755975 3.8741 0 0.770607 3.65 -1.31134e-08 -1.08778e-07 3.65343 -0.129904 0.726711 3.44145 0.129904 -1.4255 3.65342 0.129904 -0.726712 3.725 0.129904 -1.11014e-07 3.57987 -1.31134e-08 0.71208 3.44145 -0.129904 1.4255 3.58003 -0.129904 1.4829 3.65343 0.129904 0.726711 3.37216 -1.31134e-08 1.39679 3.80054 0.129904 -0.755975 3.875 0.129904 -1.15484e-07 3.80054 0.129904 0.755975 3.44145 0.129904 1.4255 3.03486 -1.31134e-08 2.02783 3.09722 -0.129904 2.0695 3.58003 0.129904 1.4829 3.09722 0.129904 2.0695 3.95 0 -1.17719e-07 3.8741 0 0.770607 3.64932 0 1.5116 3.22194 0.129904 2.15283 2.63397 0.129904 2.63397 2.58094 -1.31134e-08 2.58094 3.2843 0 2.1945 2.74004 0.129904 2.74004 2.0695 0.129904 3.09722 2.02783 -1.31134e-08 3.03486 2.63397 -0.129904 2.63397 2.0695 -0.129904 3.09722 1.39679 -1.31134e-08 3.37216 1.4255 -0.129904 3.44145 2.15283 -0.129904 3.22194 1.4829 -0.129904 3.58003 2.74004 -0.129904 2.74004 2.1945 0 3.28431 1.5116 0 3.64932 0.755975 -0.129904 3.80054 0.770607 0 3.8741 0.726712 -0.129904 3.65342 2.92554e-07 -0.129904 3.875 2.98217e-07 0 3.95 0.71208 -1.31134e-08 3.57987 2.8123e-07 -0.129904 3.725 -0.755975 -0.129904 3.80054 -0.770606 0 3.8741 2.75567e-07 -1.31134e-08 3.65 -0.726711 -0.129904 3.65343 -1.4829 -0.129904 3.58003 -1.5116 0 3.64932 -0.712079 -1.31134e-08 3.57987 -1.4255 -0.129904 3.44145 0.726712 0.129904 3.65342 2.8123e-07 0.129904 3.725 -0.726711 0.129904 3.65343 -1.39679 -1.31134e-08 3.37216 -2.0695 -0.129904 3.09722 -2.15283 -0.129904 3.22194 -1.4255 0.129904 3.44145 -2.02783 -1.31134e-08 3.03486 2.92554e-07 0.129904 3.875 -0.755975 0.129904 3.80054 -1.4829 0.129904 3.58003 -2.0695 0.129904 3.09722 -2.58094 -1.31134e-08 2.58094 -2.63397 -0.129904 2.63397 -2.15283 0.129904 3.22194 -2.63397 0.129904 2.63397 -0.770606 0 3.8741 -1.5116 0 3.64932 -2.1945 0 3.28431 -2.74004 0.129904 2.74004 -3.09722 0.129904 2.0695 -3.03486 -1.31134e-08 2.02783 -2.79307 0 2.79307 -3.22194 0.129904 2.15283 -3.44145 0.129904 1.4255 -3.37216 -1.31134e-08 1.39679 -3.09722 -0.129904 2.0695 -3.44145 -0.129904 1.4255 -3.57987 -1.31134e-08 0.712079 -3.65343 -0.129904 0.726711 -3.58003 -0.129904 1.4829 -3.80054 -0.129904 0.755974 -3.22194 -0.129904 2.15283 -3.64932 0 1.5116 -3.8741 0 0.770606 -3.875 -0.129904 -1.26264e-06 -3.95 0 -1.28707e-06 -3.725 -0.129904 -1.21376e-06 -3.80054 -0.129904 -0.755977 -3.8741 0 -0.770608 -3.65 -1.31134e-08 -1.18932e-06 -3.65342 -0.129904 -0.726713 -3.58003 -0.129904 -1.4829 -3.64932 0 -1.5116 -3.57987 -1.31134e-08 -0.712081 -3.44145 -0.129904 -1.4255 -3.22194 -0.129904 -2.15284 -3.2843 0 -2.1945 -3.37216 -1.31134e-08 -1.3968 -3.09722 -0.129904 -2.0695 -3.725 0.129904 -1.21376e-06 -3.65342 0.129904 -0.726713 -3.44145 0.129904 -1.4255 -3.03486 -1.31134e-08 -2.02783 -2.63397 -0.129904 -2.63397 -2.74004 -0.129904 -2.74004 -3.09722 0.129904 -2.0695 -2.58094 -1.31134e-08 -2.58094 -3.80054 0.129904 -0.755977 -3.58003 0.129904 -1.4829 -3.22194 0.129904 -2.15284 -2.63397 0.129904 -2.63397 -2.02783 -1.31134e-08 -3.03487 -2.0695 -0.129904 -3.09723 -2.74004 0.129904 -2.74004 -2.0695 0.129904 -3.09723 -3.64932 0 -1.5116 -3.2843 0 -2.1945 -2.79307 0 -2.79307 -2.15283 0.129904 -3.22195 -1.42549 0.129904 -3.44145 -1.39679 -1.31134e-08 -3.37216 -2.1945 0 -3.28431 -1.4829 0.129904 -3.58003 -0.726708 0.129904 -3.65343 -0.712076 -1.31134e-08 -3.57987 -1.42549 -0.129904 -3.44145 -0.726708 -0.129904 -3.65343 -1.59547e-07 -1.31134e-08 -3.65 -1.62825e-07 -0.129904 -3.725 -0.755972 -0.129904 -3.80054 -1.69382e-07 -0.129904 -3.875 -1.4829 -0.129904 -3.58003 -0.770603 0 -3.8741 -1.7266e-07 0 -3.95 -2.15283 -0.129904 -3.22195 -1.5116 0 -3.64933 -2.1945 0 -3.28431 -2.79307 0 -2.79307 -1.62825e-07 0.129904 -3.725 -0.755972 0.129904 -3.80054 -1.69382e-07 0.129904 -3.875 -1.5116 0 -3.64933 -0.770603 0 -3.8741 -1.7266e-07 0 -3.95 -3.8741 0 -0.770608 -3.95 0 -1.28707e-06 -3.875 0.129904 -1.26264e-06 -3.8741 0 0.770606 -3.80054 0.129904 0.755974 -3.64932 0 1.5116 -3.58003 0.129904 1.4829 -3.65343 0.129904 0.726711 -3.28431 0 2.1945 -3.28431 0 2.1945 -2.74004 -0.129904 2.74004 -2.79307 0 2.79307 -2.1945 0 3.28431 2.98217e-07 0 3.95 0.770607 0 3.8741 0.755975 0.129904 3.80054 1.5116 0 3.64932 1.4829 0.129904 3.58003 2.1945 0 3.28431 2.15283 0.129904 3.22194 1.4255 0.129904 3.44145 2.79307 0 2.79307 2.79307 0 2.79307 3.22194 -0.129904 2.15283 3.2843 0 2.1945 3.64932 0 1.5116 3.8741 0 -0.770607 3.64932 0 -1.5116 3.58003 0.129904 -1.4829 3.2843 0 -2.1945 3.22194 0.129904 -2.15283 2.79307 0 -2.79307 2.79307 0 -2.79307 2.15283 -0.129904 -3.22194 2.1945 0 -3.28431 1.4255 -0.129904 -3.44145 1.4829 -0.129904 -3.58003 0.726711 -0.129904 -3.65343 0.755975 -0.129904 -3.80054 1.5116 0 -3.64932 -1.59547e-07 -1.31134e-08 -3.65 -1.62825e-07 -0.129904 -3.725 -1.69382e-07 -0.129904 -3.875 0.770606 0 -3.8741 -1.7266e-07 0 -3.95 + + + + + + + + + + 9.06615e-08 5.75629e-09 -1 0.19509 1.03613e-07 -0.980785 0.0812867 0.866432 -0.492634 -0.0163832 0.866432 -0.499026 0.382683 5.75629e-09 -0.92388 0.175833 0.866432 -0.46731 -0.113424 0.866432 0.486241 -0.206105 0.866432 0.454771 -0.0163833 0.866432 0.499027 -0.19509 -1.26638e-07 0.980785 -0.382683 -2.87814e-08 0.92388 -0.290866 0.866432 0.405823 -0.55557 -1.72689e-08 0.83147 0.263622 0.866432 -0.424027 0.55557 1.15126e-08 -0.83147 0.34128 0.866432 -0.36445 -0.36445 0.866432 0.34128 -0.707107 1.32395e-07 0.707107 -0.263622 -0.866432 0.424027 -0.34128 -0.866432 0.36445 -0.83147 -4.0294e-08 0.55557 -0.405823 -0.866432 0.290867 -0.424027 0.866432 0.263622 -0.92388 -1.5542e-07 0.382683 -0.454771 -0.866432 0.206105 0.424027 -0.866432 -0.263622 0.46731 -0.866432 -0.175833 0.364449 -0.866432 -0.34128 0.83147 5.75629e-09 -0.55557 0.92388 2.30252e-08 -0.382683 0.492634 -0.866432 -0.0812868 0.980785 -1.20882e-07 -0.19509 -0.486241 -0.866432 0.113424 0.499026 -0.866432 0.0163832 1 0 -1.56859e-07 -0.980785 8.0588e-08 0.19509 -0.499026 -0.866432 0.0163834 0.486241 -0.866432 0.113424 0.980785 1.15126e-07 0.19509 -1 -2.30251e-08 1.68371e-07 -0.492634 -0.866432 -0.0812867 -0.46731 0.866432 0.175833 -0.492634 0.866432 0.0812868 -0.499026 0.866432 -0.0163832 -0.980785 -1.43907e-07 -0.19509 -0.46731 -0.866432 -0.175833 0.45477 -0.866432 0.206105 -0.486241 0.866432 -0.113424 -0.92388 6.90755e-08 -0.382683 0.486241 0.866432 -0.113424 0.499026 0.866432 -0.0163833 0.492634 0.866432 0.0812867 -0.454771 0.866432 -0.206105 -0.83147 -4.0294e-08 -0.55557 -0.424027 -0.866432 -0.263622 0.46731 0.866432 0.175833 -0.405823 0.866432 -0.290866 1 0 -1.56859e-07 0.980785 1.15126e-07 0.19509 0.92388 -1.15126e-08 0.382684 0.424027 0.866432 0.263622 -0.34128 0.866432 -0.36445 -0.707107 -4.0294e-08 -0.707107 0.831469 1.15126e-08 0.55557 0.36445 0.866432 0.34128 -0.263622 0.866432 -0.424027 -0.55557 -4.60503e-08 -0.83147 -0.36445 -0.866432 -0.34128 -0.290866 -0.866432 -0.405823 -0.382683 -1.61176e-07 -0.92388 -0.206105 -0.866432 -0.454771 0.263622 -0.866432 0.424027 0.175833 -0.866432 0.46731 0.34128 -0.866432 0.36445 0.55557 0 0.83147 0.382683 0 0.92388 0.0812868 -0.866432 0.492634 0.19509 -9.21006e-08 0.980785 -0.113424 -0.866432 -0.486241 -0.0163832 -0.866432 0.499026 1.56859e-07 5.75629e-09 1 -0.19509 6.33192e-08 -0.980785 -0.0163834 -0.866432 -0.499026 -0.113424 -0.866432 0.486241 -0.19509 6.90755e-08 0.980785 -1.6981e-07 -5.75629e-09 -1 0.0812867 -0.866432 -0.492634 -0.206105 -0.866432 0.454771 -0.382683 -2.30252e-08 0.92388 0.19509 -8.63443e-08 -0.980785 0.175833 -0.866432 -0.46731 -0.0812868 0.866432 -0.492634 0.0163832 0.866432 -0.499026 0.113424 0.866432 -0.486241 0.382683 9.21006e-08 -0.92388 0.263622 -0.866432 -0.424027 -0.290866 -0.866432 0.405823 0.206105 0.866432 -0.454771 0.55557 -7.48317e-08 -0.83147 0.0163833 0.866432 0.499026 -0.0812867 0.866432 0.492634 -0.175833 0.866432 0.46731 0.290866 0.866432 -0.405823 0.707107 -4.0294e-08 -0.707107 0.34128 -0.866432 -0.36445 -0.263622 0.866432 0.424027 0.36445 0.866432 -0.34128 -0.19509 6.90755e-08 0.980785 -0.382683 -2.30252e-08 0.92388 -0.55557 2.87814e-08 0.83147 -0.34128 0.866432 0.36445 0.424027 0.866432 -0.263622 0.83147 1.15126e-08 -0.55557 -0.707107 -5.75629e-09 0.707107 -0.405823 0.866432 0.290866 0.46731 0.866432 -0.175833 0.92388 -1.32395e-07 -0.382683 0.405823 -0.866432 -0.290866 0.454771 -0.866432 -0.206105 0.980785 2.87814e-08 -0.19509 0.486241 -0.866432 -0.113423 -0.46731 -0.866432 0.175833 -0.492634 -0.866432 0.0812866 -0.424027 -0.866432 0.263622 -0.92388 5.75629e-09 0.382683 -0.980785 -6.33192e-08 0.19509 -0.499026 -0.866432 -0.0163834 -1 1.15126e-08 -3.15157e-07 0.499026 -0.866432 -0.0163831 -0.486241 -0.866432 -0.113424 -0.980785 1.20882e-07 -0.195091 1 -4.0294e-08 3.32426e-07 0.492634 -0.866432 0.081287 -0.454771 -0.866432 -0.206106 -0.923879 -3.1084e-07 -0.382684 0.980785 6.90754e-08 0.195091 0.46731 -0.866432 0.175833 -0.405824 -0.866432 -0.290867 -0.831469 -1.78445e-07 -0.555571 0.923879 -2.87814e-08 0.382684 0.424027 -0.866432 0.263622 0.499026 0.866432 0.0163835 0.486242 0.866432 0.113424 0.454771 0.866432 0.206106 0.831469 9.21006e-08 0.555571 0.36445 -0.866432 0.341281 -0.34128 -0.866432 -0.36445 0.405823 0.866432 0.290867 0.707106 9.78568e-08 0.707107 -0.492634 0.866432 -0.0812869 -0.46731 0.866432 -0.175833 -0.424028 0.866432 -0.263622 0.34128 0.866432 0.36445 0.55557 -3.68402e-07 0.83147 0.290866 -0.866432 0.405824 -0.36445 0.866432 -0.341281 0.263622 0.866432 0.424028 -0.923879 -3.1084e-07 -0.382684 -0.831469 -1.78445e-07 -0.555571 -0.707106 1.84201e-07 -0.707107 -0.290866 0.866432 -0.405824 0.175833 0.866432 0.46731 0.382683 -1.43907e-07 0.92388 -0.55557 1.20882e-07 -0.83147 -0.206105 0.866432 -0.454771 0.0812865 0.866432 0.492634 0.19509 4.60503e-08 0.980785 0.206105 -0.866432 0.454771 0.113423 -0.866432 0.486241 -1.09369e-07 -1.72689e-08 1 0.0163832 -0.866432 0.499026 -0.0812864 -0.866432 -0.492634 0.0163833 -0.866432 -0.499026 -0.175833 -0.866432 -0.46731 -0.19509 -7.48317e-08 -0.980785 9.06615e-08 5.75629e-09 -1 -0.263622 -0.866432 -0.424028 -0.382683 1.03613e-07 -0.92388 -0.55557 1.20882e-07 -0.83147 -0.707106 1.84201e-07 -0.707107 -0.0163833 0.866432 0.499027 -0.113423 0.866432 -0.486242 -0.0163832 0.866432 -0.499026 -0.382683 1.03613e-07 -0.92388 -0.19509 -7.48317e-08 -0.980785 9.06615e-08 5.75629e-09 -1 -0.980785 1.20882e-07 -0.195091 -1 1.15126e-08 -3.15157e-07 -0.499026 0.866432 0.0163831 -0.980785 -6.33192e-08 0.19509 -0.486241 0.866432 0.113423 -0.92388 5.75629e-09 0.382683 -0.454771 0.866432 0.206105 0.492634 0.866432 -0.0812866 -0.83147 -4.0294e-08 0.55557 -0.83147 -4.0294e-08 0.55557 -0.36445 -0.866432 0.34128 -0.707107 -5.75629e-09 0.707107 -0.55557 2.87814e-08 0.83147 1.56859e-07 5.75629e-09 1 0.19509 -9.21006e-08 0.980785 0.113424 0.866432 0.486241 0.382683 0 0.92388 0.206105 0.866432 0.454771 0.55557 0 0.83147 0.290866 0.866432 0.405823 -0.175833 0.866432 -0.46731 0.707107 -5.75629e-09 0.707107 0.707107 -5.75629e-09 0.707107 0.405823 -0.866432 0.290866 0.831469 1.15126e-08 0.55557 0.92388 -1.15126e-08 0.382684 0.980785 -1.20882e-07 -0.19509 0.92388 2.30252e-08 -0.382683 0.45477 0.866432 -0.206105 0.83147 5.75629e-09 -0.55557 0.405823 0.866432 -0.290866 0.707107 1.72689e-08 -0.707107 0.707107 1.72689e-08 -0.707107 0.290866 -0.866432 -0.405823 0.55557 1.15126e-08 -0.83147 -0.175833 -0.866432 0.46731 0.206105 -0.866432 -0.454771 -0.0812867 -0.866432 0.492634 0.113424 -0.866432 -0.486241 0.382683 5.75629e-09 -0.92388 -1.09369e-07 -1.72689e-08 1 0.0163832 -0.866432 0.499026 0.0163833 -0.866432 -0.499026 0.19509 1.03613e-07 -0.980785 9.06615e-08 5.75629e-09 -1 + + + + + + + + + + 0 0 0 0.03125 0.166667 0.03125 0.166667 0 0 0.0625 0.166667 0.0625 0.333333 0.03125 0.333333 0.0625 0.333333 0 0.5 0.03125 0.5 0.0625 0.333333 0.09375 0.5 0.09375 0.166667 0.09375 0 0.09375 0.166667 0.125 0.333333 0.125 0.5 0.125 0.666667 0.09375 0.666667 0.125 0.5 0.15625 0.666667 0.15625 0.333333 0.15625 0.5 0.1875 0.666667 0.1875 0.833333 0.15625 0.833333 0.1875 0.833333 0.125 1 0.15625 1 0.1875 0.833333 0.21875 1 0.21875 0.666667 0.21875 0.833333 0.25 1 0.25 0.5 0.21875 0.666667 0.25 0.833333 0.28125 1 0.28125 0.5 0.25 0.666667 0.28125 0.333333 0.1875 0.333333 0.21875 0.333333 0.25 0.5 0.28125 0.666667 0.3125 0.833333 0.3125 0.333333 0.28125 0.5 0.3125 0.166667 0.21875 0.166667 0.25 0.166667 0.28125 0.333333 0.3125 0.5 0.34375 0.666667 0.34375 0.166667 0.3125 0.333333 0.34375 0 0.25 0 0.28125 0 0.3125 0.166667 0.34375 0.333333 0.375 0.5 0.375 0 0.34375 0.166667 0.375 0.333333 0.40625 0.5 0.40625 0.666667 0.375 0.666667 0.40625 0.5 0.4375 0.666667 0.4375 0.833333 0.40625 0.833333 0.4375 0.833333 0.375 1 0.40625 1 0.4375 0.833333 0.46875 1 0.46875 0.666667 0.46875 0.833333 0.5 1 0.5 0.5 0.46875 0.666667 0.5 0.833333 0.53125 1 0.53125 0.5 0.5 0.666667 0.53125 0.833333 0.5625 1 0.5625 0.5 0.53125 0.666667 0.5625 0.333333 0.46875 0.333333 0.5 0.333333 0.53125 0.5 0.5625 0.666667 0.59375 0.833333 0.59375 0.333333 0.5625 0.5 0.59375 0.166667 0.5 0.166667 0.53125 0.166667 0.5625 0.333333 0.59375 0.5 0.625 0.666667 0.625 0.166667 0.59375 0.333333 0.625 0 0.53125 0 0.5625 0 0.59375 0.166667 0.625 0.333333 0.65625 0.5 0.65625 0 0.625 0.166667 0.65625 0.333333 0.6875 0.5 0.6875 0.666667 0.65625 0.666667 0.6875 0.5 0.71875 0.666667 0.71875 0.833333 0.6875 0.833333 0.71875 0.833333 0.65625 1 0.6875 1 0.71875 0.833333 0.75 1 0.75 0.666667 0.75 0.833333 0.78125 1 0.78125 0.5 0.75 0.666667 0.78125 0.833333 0.8125 1 0.8125 0.5 0.78125 0.666667 0.8125 0.833333 0.84375 1 0.84375 0.5 0.8125 0.666667 0.84375 0.333333 0.75 0.333333 0.78125 0.333333 0.8125 0.5 0.84375 0.666667 0.875 0.833333 0.875 0.333333 0.84375 0.5 0.875 0.166667 0.78125 0.166667 0.8125 0.166667 0.84375 0.333333 0.875 0.5 0.90625 0.666667 0.90625 0.166667 0.875 0.333333 0.90625 0 0.8125 0 0.84375 0 0.875 0.166667 0.90625 0.333333 0.9375 0.5 0.9375 0 0.90625 0.166667 0.9375 0.333333 0.96875 0.5 0.96875 0.666667 0.9375 0.666667 0.96875 0.5 1 0.666667 1 0.833333 0.96875 0.833333 1 0.833333 0.9375 1 0.96875 1 1 0.833333 0.90625 1 0.9375 1 0.90625 1 0.875 0.333333 1 0.166667 0.96875 0.166667 1 0 0.9375 0 0.96875 0 1 0 0.78125 0 0.75 0.166667 0.75 0 0.71875 0.166667 0.71875 0 0.6875 0.166667 0.6875 0.333333 0.71875 0 0.65625 1 0.65625 0.833333 0.625 1 0.625 1 0.59375 0 0.5 0 0.46875 0.166667 0.46875 0 0.4375 0.166667 0.4375 0 0.40625 0.166667 0.40625 0.333333 0.4375 0 0.375 1 0.375 0.833333 0.34375 1 0.34375 1 0.3125 0 0.21875 0 0.1875 0.166667 0.1875 0 0.15625 0.166667 0.15625 0 0.125 1 0.125 0.833333 0.09375 1 0.09375 0.666667 0.0625 0.833333 0.0625 0.666667 0.03125 0.833333 0.03125 1 0.0625 0.5 0 0.666667 0 0.833333 0 1 0.03125 1 0 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

2 1 0 3 2 0 5 4 1 2 5 1 6 2 3 7 5 2 6 7 2 8 6 3 9 6 8 10 7 6 9 10 6 7 11 5 12 11 7 10 12 7 5 13 4 11 13 5 13 14 4 13 15 14 16 15 13 11 16 13 17 16 11 12 17 11 18 12 10 19 17 12 18 19 12 17 20 16 21 20 17 19 21 17 16 22 15 20 22 16 20 23 22 24 23 20 21 24 20 25 21 19 26 24 21 25 26 21 27 19 18 27 25 19 28 25 27 29 26 25 28 29 25 26 30 24 31 30 26 29 31 26 24 32 23 30 32 24 30 33 32 34 33 30 31 34 30 32 35 23 32 36 35 33 36 32 33 37 36 38 37 33 34 38 33 36 39 35 36 40 39 37 40 36 35 42 41 23 35 41 35 39 42 39 43 42 39 44 43 40 44 39 40 45 44 46 45 40 37 46 40 44 47 43 44 48 47 45 48 44 43 50 49 42 43 49 43 47 50 47 51 50 47 52 51 48 52 47 48 53 52 54 53 48 45 54 48 52 55 51 52 56 55 53 56 52 51 58 57 50 51 57 51 55 58 55 59 58 55 60 59 56 60 55 56 61 60 62 61 56 53 62 56 60 63 59 60 64 63 61 64 60 61 65 64 66 65 61 62 66 61 67 62 53 68 66 62 67 68 62 66 69 65 70 69 66 68 70 66 71 68 67 72 70 68 71 72 68 54 67 53 73 67 54 73 71 67 74 71 73 75 72 71 74 75 71 72 76 70 77 76 72 75 77 72 76 78 70 76 79 78 80 79 76 77 80 76 78 81 69 70 78 69 78 82 81 79 82 78 79 83 82 84 83 79 80 84 79 82 85 81 82 86 85 83 86 82 83 87 86 88 87 83 84 88 83 86 89 85 86 90 89 87 90 86 85 92 91 81 85 91 85 89 92 89 93 92 89 94 93 90 94 89 90 95 94 96 95 90 87 96 90 94 97 93 94 98 97 95 98 94 93 100 99 92 93 99 93 97 100 97 101 100 97 102 101 98 102 97 98 103 102 104 103 98 95 104 98 102 105 101 102 106 105 103 106 102 101 108 107 100 101 107 101 105 108 105 109 108 105 110 109 106 110 105 106 111 110 112 111 106 103 112 106 110 113 109 110 114 113 111 114 110 111 115 114 116 115 111 112 116 111 117 112 103 118 116 112 117 118 112 116 119 115 120 119 116 118 120 116 121 118 117 122 120 118 121 122 118 104 117 103 123 117 104 123 121 117 124 121 123 125 122 121 124 125 121 122 126 120 127 126 122 125 127 122 126 128 120 126 129 128 130 129 126 127 130 126 128 131 119 120 128 119 128 132 131 129 132 128 129 133 132 134 133 129 130 134 129 132 135 131 132 136 135 133 136 132 133 137 136 138 137 133 134 138 133 136 139 135 136 140 139 137 140 136 135 142 141 131 135 141 135 139 142 139 143 142 139 144 143 140 144 139 140 145 144 146 145 140 137 146 140 144 147 143 144 148 147 145 148 144 143 150 149 142 143 149 143 147 150 147 151 150 147 152 151 148 152 147 148 153 152 154 153 148 145 154 148 152 155 151 152 156 155 153 156 152 151 158 157 150 151 157 151 155 158 155 159 158 155 160 159 156 160 155 156 161 160 162 161 156 153 162 156 160 163 159 160 164 163 161 164 160 161 165 164 166 165 161 162 166 161 167 162 153 168 166 162 167 168 162 166 169 165 170 169 166 168 170 166 171 168 167 172 170 168 171 172 168 154 167 153 173 167 154 173 171 167 174 171 173 175 172 171 174 175 171 176 173 154 177 173 176 177 174 173 176 154 145 146 176 145 178 176 146 178 177 176 179 146 137 179 178 146 138 179 137 169 180 165 165 181 164 165 180 181 180 182 181 181 184 183 164 181 183 181 182 184 164 183 163 182 185 184 150 157 186 149 150 186 149 186 187 188 149 187 142 149 188 188 187 189 190 188 189 141 188 190 141 142 188 190 189 191 192 190 191 193 190 192 193 141 190 131 141 193 115 193 192 119 193 115 119 131 193 192 191 194 114 192 194 115 192 114 114 194 113 195 124 123 196 123 104 195 123 196 197 195 196 196 104 95 96 196 95 197 196 96 198 197 96 198 96 87 88 198 87 100 107 199 99 100 199 99 199 200 201 99 200 92 99 201 201 200 202 203 201 202 91 201 203 91 92 201 203 202 204 205 203 204 206 203 205 206 91 203 81 91 206 65 206 205 69 206 65 69 81 206 205 204 207 64 205 207 65 205 64 64 207 63 208 74 73 209 73 54 208 73 209 210 208 209 209 54 45 46 209 45 210 209 46 211 210 46 211 46 37 38 211 37 50 57 212 49 50 212 49 212 213 214 49 213 42 49 214 214 213 215 216 214 215 41 214 216 41 42 214 216 215 217 15 216 217 22 216 15 22 41 216 23 41 22 15 217 14 218 28 27 219 27 18 218 27 219 220 218 219 219 18 221 222 219 221 220 219 222 221 18 10 221 10 9 223 221 9 222 221 223 224 222 223 225 222 224 225 220 222 223 9 226 227 223 226 224 223 227 226 9 8 228 224 227 229 224 228 229 225 224 230 229 228

+
+
+
+ + + + 0 0 -0 0.174019 0 -0 0.150705 0 -0.0870097 0.0870097 0 -0.150705 -0.0870098 0 0.150705 -8.09038e-08 0 0.174019 0.0870096 0 0.150705 0.150705 0 0.0870098 0 0 -0 -0.150705 0 0.0870097 -0.174019 0 -2.62762e-08 0 0 -0 -0.150705 0 -0.0870097 -0.0870097 0 -0.150705 0 0 -0 -7.60663e-09 0 -0.174019 0.0870097 0 -0.150705 0.174019 0 -0 0.174019 12.8048 -0 0.150705 12.8048 -0.0870097 0.150705 0 -0.0870097 0.150705 0 0.0870098 0.150705 12.8048 0.0870098 0.0870096 0 0.150705 0.0870096 12.8048 0.150705 -8.09038e-08 0 0.174019 -8.09038e-08 12.8048 0.174019 -0.0870098 0 0.150705 -0.0870098 12.8048 0.150705 -0.150705 0 0.0870097 -0.150705 12.8048 0.0870097 -0.174019 0 -2.62762e-08 -0.174019 12.8048 -2.62762e-08 -0.150705 0 -0.0870097 -0.150705 12.8048 -0.0870097 -0.0870097 0 -0.150705 -0.0870097 12.8048 -0.150705 -7.60663e-09 0 -0.174019 -7.60663e-09 12.8048 -0.174019 0.0870097 0 -0.150705 0.0870097 12.8048 -0.150705 0.0870097 12.8048 -0.150705 0.0870097 0 -0.150705 0 12.8048 -0 0.150705 12.8048 -0.0870097 0.174019 12.8048 -0 0.0870097 12.8048 -0.150705 -8.09038e-08 12.8048 0.174019 -0.0870098 12.8048 0.150705 0.0870096 12.8048 0.150705 0.150705 12.8048 0.0870098 0 12.8048 -0 -0.150705 12.8048 0.0870097 -0.174019 12.8048 -2.62762e-08 0 12.8048 -0 -0.150705 12.8048 -0.0870097 -0.0870097 12.8048 -0.150705 0 12.8048 -0 -7.60663e-09 12.8048 -0.174019 0.0870097 12.8048 -0.150705 + + + + + + + + + + 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0.996035 0 -0.0889622 0.996035 0 0.0889624 0.907073 0 -0.420974 0.81811 0 -0.575061 0.907073 0 0.420974 0.81811 0 0.575062 0.575061 0 0.818111 0.420973 0 0.907073 0.0889618 0 0.996035 -0.0889627 0 0.996035 -0.420974 0 0.907073 -0.575061 0 0.81811 -0.818111 0 0.575061 -0.907073 0 0.420974 -0.996035 0 0.088962 -0.996035 0 -0.0889625 -0.907073 0 -0.420974 -0.81811 0 -0.575061 -0.575061 0 -0.81811 -0.420974 0 -0.907073 -0.0889623 0 -0.996035 0.0889622 0 -0.996035 0.420974 0 -0.907073 0.575061 0 -0.818111 0.575061 0 -0.818111 0.420974 0 -0.907073 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 + + + + + + + + + + 0.5 0 0.75 0 0.833333 0 0.916667 0 0.416667 0 0.5 0 0.583333 0 0.666667 0 0.5 0 0.333333 0 0.25 0 0.5 0 0.166667 0 0.0833334 0 0.5 0 3.79455e-08 0 -0.0833333 0 0.75 0 0.75 1 0.833333 1 0.833333 0 0.666667 0 0.666667 1 0.583333 0 0.583333 1 0.5 0 0.5 1 0.416667 0 0.416667 1 0.333333 0 0.333333 1 0.25 0 0.25 1 0.166667 0 0.166667 1 0.0833334 0 0.0833334 1 3.79455e-08 0 3.79455e-08 1 -0.0833333 0 -0.0833333 1 0.916667 1 0.916667 0 0.5 1 0.833333 1 0.75 1 0.916667 1 0.5 1 0.416667 1 0.583333 1 0.666667 1 0.5 1 0.333333 1 0.25 1 0.5 1 0.166667 1 0.0833334 1 0.5 1 3.79455e-08 1 -0.0833333 1 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

2 1 0 3 2 0 5 4 0 6 5 0 7 6 0 1 7 0 4 9 8 9 10 8 10 12 11 12 13 11 13 15 14 15 16 14 19 18 17 20 19 17 17 18 21 18 22 21 21 22 23 22 24 23 23 24 25 24 26 25 25 26 27 26 28 27 27 28 29 28 30 29 29 30 31 30 32 31 31 32 33 32 34 33 33 34 35 34 36 35 35 36 37 36 38 37 37 38 39 38 40 39 41 19 20 42 41 20 45 44 43 44 46 43 48 47 43 47 49 43 49 50 43 50 45 43 52 48 51 53 52 51 55 53 54 56 55 54 58 56 57 59 58 57

+
+
+
+ + + + -30 0 15 -15 0 15 -30 0 30 -30 0 -0 -15 0 -0 -15 0 30 0 0 15 0 0 -0 -15 0 -15 0 0 -15 -30 0 -15 -15 0 -30 0 0 -30 15 0 -15 15 0 -30 15 0 -0 30 0 -15 30 0 -30 15 0 15 30 0 -0 0 0 30 15 0 30 30 0 15 30 0 30 -30 0 -30 + + + + + + + + + + 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 + + + + + + + + + + 0 0.25 0.25 0.25 0 0 0 0.5 0.25 0.5 0.25 0 0.5 0.25 0.5 0.5 0.25 0.75 0.5 0.75 0 0.75 0.25 1 0.5 1 0.75 0.75 0.75 1 0.75 0.5 1 0.75 1 1 0.75 0.25 1 0.5 0.5 0 0.75 0 1 0.25 1 0 0 1 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

2 1 0 0 4 3 4 0 1 1 2 5 5 6 1 1 7 4 7 1 6 8 3 4 4 9 8 9 4 7 3 8 10 11 10 8 8 12 11 12 8 9 7 13 9 9 14 12 14 9 13 6 15 7 13 7 15 15 16 13 13 17 14 17 13 16 15 6 18 18 19 15 16 15 19 20 18 6 18 20 21 21 22 18 19 18 22 6 5 20 22 21 23 10 11 24

+
+
+
+ + + + -30 0 7.5 -15 0 7.5 -30 0 15 -30 0 -0 -15 0 -0 -15 0 15 0 0 7.5 0 0 -0 -15 0 -7.5 0 0 -7.5 -30 0 -7.5 -15 0 -15 0 0 -15 15 0 -7.5 15 0 -15 15 0 -0 30 0 -7.5 30 0 -15 15 0 7.5 30 0 -0 0 0 15 15 0 15 30 0 7.5 30 0 15 -30 0 -15 + + + + + + + + + + 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 + + + + + + + + + + 0 0.25 0.25 0.25 0 0 0 0.5 0.25 0.5 0.25 0 0.5 0.25 0.5 0.5 0.25 0.75 0.5 0.75 0 0.75 0.25 1 0.5 1 0.75 0.75 0.75 1 0.75 0.5 1 0.75 1 1 0.75 0.25 1 0.5 0.5 0 0.75 0 1 0.25 1 0 0 1 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

2 1 0 0 4 3 4 0 1 1 2 5 5 6 1 1 7 4 7 1 6 8 3 4 4 9 8 9 4 7 3 8 10 11 10 8 8 12 11 12 8 9 7 13 9 9 14 12 14 9 13 6 15 7 13 7 15 15 16 13 13 17 14 17 13 16 15 6 18 18 19 15 16 15 19 20 18 6 18 20 21 21 22 18 19 18 22 6 5 20 22 21 23 10 11 24

+
+
+
+ + + + -15 -1.49606e-19 15 -7.5 -1.49606e-19 15 -15 -2.99212e-19 30 -15 0 -0 -7.5 0 -0 -7.5 -2.99212e-19 30 0 -1.49606e-19 15 0 0 -0 -7.5 1.49606e-19 -15 0 1.49606e-19 -15 -15 1.49606e-19 -15 -7.5 2.99212e-19 -30 0 2.99212e-19 -30 7.5 1.49606e-19 -15 7.5 2.99212e-19 -30 7.5 0 -0 15 1.49606e-19 -15 15 2.99212e-19 -30 7.5 -1.49606e-19 15 15 0 -0 0 -2.99212e-19 30 7.5 -2.99212e-19 30 15 -1.49606e-19 15 15 -2.99212e-19 30 -15 2.99212e-19 -30 + + + + + + + + + + 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 0 1 -9.97372e-21 + + + + + + + + + + 0 0.25 0.25 0.25 0 0 0 0.5 0.25 0.5 0.25 0 0.5 0.25 0.5 0.5 0.25 0.75 0.5 0.75 0 0.75 0.25 1 0.5 1 0.75 0.75 0.75 1 0.75 0.5 1 0.75 1 1 0.75 0.25 1 0.5 0.5 0 0.75 0 1 0.25 1 0 0 1 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

2 1 0 0 4 3 4 0 1 1 2 5 5 6 1 1 7 4 7 1 6 8 3 4 4 9 8 9 4 7 3 8 10 11 10 8 8 12 11 12 8 9 7 13 9 9 14 12 14 9 13 6 15 7 13 7 15 15 16 13 13 17 14 17 13 16 15 6 18 18 19 15 16 15 19 20 18 6 18 20 21 21 22 18 19 18 22 6 5 20 22 21 23 10 11 24

+
+
+
+ + + + 0 0 -0 4 0 -0 3.92314 0 -0.780361 3.69552 0 -1.53073 3.32588 0 -2.22228 2.82843 0 -2.82843 2.22228 0 -3.32588 -2.82843 0 2.82843 -2.22228 0 3.32588 -1.53073 0 3.69552 -0.780358 0 3.92314 3.8624e-06 0 4 0.780365 0 3.92314 1.53074 0 3.69552 2.22229 0 3.32588 2.82843 0 2.82842 3.32588 0 2.22228 3.69552 0 1.53073 3.92314 0 0.780355 0 0 -0 1.53073 0 -3.69552 0.780361 0 -3.92314 3.01992e-07 0 -4 0 0 -0 -3.32588 0 2.22228 -3.69552 0 1.53074 -3.92314 0 0.780363 -4 0 1.30337e-06 -3.32588 0 -2.22228 -3.69552 0 -1.53073 -3.92314 0 -0.78036 0 0 -0 -2.82843 0 -2.82843 3.01992e-07 0 -4 -0.780361 0 -3.92314 -1.53073 0 -3.69552 -2.22228 0 -3.32588 4 0 -0 4 1.5 -0 3.92314 1.5 -0.780361 3.92314 0 -0.780361 3.92314 0 0.780355 3.92314 1.5 0.780355 3.69552 0 1.53073 3.69552 1.5 1.53073 3.32588 0 2.22228 3.32588 1.5 2.22228 2.82843 0 2.82842 2.82843 1.5 2.82842 2.22229 0 3.32588 2.22229 1.5 3.32588 1.53074 0 3.69552 1.53074 1.5 3.69552 0.780365 0 3.92314 0.780365 1.5 3.92314 3.8624e-06 0 4 3.8624e-06 1.5 4 -0.780358 0 3.92314 -0.780358 1.5 3.92314 -1.53073 0 3.69552 -1.53073 1.5 3.69552 -2.22228 0 3.32588 -2.22228 1.5 3.32588 -2.82843 0 2.82843 -2.82843 1.5 2.82843 -3.32588 0 2.22228 -3.32588 1.5 2.22228 -3.69552 0 1.53074 -3.69552 1.5 1.53074 -3.92314 0 0.780363 -3.92314 1.5 0.780363 -4 0 1.30337e-06 -4 1.5 1.30337e-06 -3.92314 0 -0.78036 -3.92314 1.5 -0.78036 -3.69552 0 -1.53073 -3.69552 1.5 -1.53073 -3.32588 0 -2.22228 -3.32588 1.5 -2.22228 -2.82843 0 -2.82843 -2.82843 1.5 -2.82843 -2.22228 0 -3.32588 -2.22228 1.5 -3.32588 -1.53073 0 -3.69552 -1.53073 1.5 -3.69552 -0.780361 0 -3.92314 -0.780361 1.5 -3.92314 3.01992e-07 0 -4 3.01992e-07 1.5 -4 3.69552 1.5 -1.53073 3.69552 0 -1.53073 3.32588 1.5 -2.22228 3.32588 0 -2.22228 2.82843 1.5 -2.82843 2.82843 0 -2.82843 2.22228 1.5 -3.32588 2.22228 0 -3.32588 1.53073 1.5 -3.69552 1.53073 0 -3.69552 0.780361 1.5 -3.92314 0.780361 0 -3.92314 3.01992e-07 1.5 -4 3.01992e-07 0 -4 0 1.5 -0 3.92314 1.5 -0.780361 4 1.5 -0 3.69552 1.5 -1.53073 3.32588 1.5 -2.22228 2.82843 1.5 -2.82843 2.22228 1.5 -3.32588 -2.22228 1.5 3.32588 -2.82843 1.5 2.82843 -1.53073 1.5 3.69552 -0.780358 1.5 3.92314 3.8624e-06 1.5 4 0.780365 1.5 3.92314 1.53074 1.5 3.69552 2.22229 1.5 3.32588 2.82843 1.5 2.82842 3.32588 1.5 2.22228 3.69552 1.5 1.53073 3.92314 1.5 0.780355 0 1.5 -0 1.53073 1.5 -3.69552 0.780361 1.5 -3.92314 3.01992e-07 1.5 -4 0 1.5 -0 -3.32588 1.5 2.22228 -3.69552 1.5 1.53074 -3.92314 1.5 0.780363 -4 1.5 1.30337e-06 -3.69552 1.5 -1.53073 -3.32588 1.5 -2.22228 -3.92314 1.5 -0.78036 0 1.5 -0 -2.82843 1.5 -2.82843 -0.780361 1.5 -3.92314 3.01992e-07 1.5 -4 -1.53073 1.5 -3.69552 -2.22228 1.5 -3.32588 + + + + + + + + + + 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0 -1 -0 0.999462 0 -0.0328131 0.999462 0 0.0328123 0.986659 0 -0.162803 0.973856 0 -0.227168 0.986659 0 0.162802 0.973856 0 0.227166 0.935939 0 0.352161 0.910826 0 0.412791 0.849252 0 0.527987 0.812793 0 0.582553 0.729929 0 0.683523 0.683525 0 0.729927 0.582555 0 0.812791 0.527989 0 0.849251 0.412793 0 0.910825 0.352163 0 0.935939 0.227169 0 0.973855 0.162804 0 0.986658 0.0328137 0 0.999461 -0.0328119 0 0.999462 -0.162802 0 0.986659 -0.227167 0 0.973856 -0.352161 0 0.935939 -0.412792 0 0.910825 -0.527988 0 0.849252 -0.582553 0 0.812792 -0.683523 0 0.729929 -0.729928 0 0.683524 -0.812792 0 0.582554 -0.849251 0 0.527989 -0.910825 0 0.412793 -0.935939 0 0.352163 -0.973856 0 0.227168 -0.986659 0 0.162803 -0.999462 0 0.0328131 -0.999462 0 -0.0328125 -0.986659 0 -0.162803 -0.973856 0 -0.227167 -0.935939 0 -0.352162 -0.910825 0 -0.412792 -0.849252 0 -0.527988 -0.812792 0 -0.582554 -0.729928 0 -0.683524 -0.683524 0 -0.729928 -0.582554 0 -0.812792 -0.527988 0 -0.849252 -0.412792 0 -0.910825 -0.352162 0 -0.935939 -0.227168 0 -0.973856 -0.162803 0 -0.986659 -0.0328126 0 -0.999462 0.0328129 0 -0.999462 0.935939 0 -0.352162 0.910825 0 -0.412792 0.849252 0 -0.527988 0.812792 0 -0.582554 0.729928 0 -0.683524 0.683524 0 -0.729928 0.582554 0 -0.812792 0.527988 0 -0.849252 0.412792 0 -0.910825 0.352162 0 -0.935939 0.227168 0 -0.973856 0.162803 0 -0.986659 0.0328129 0 -0.999462 -0.0328126 0 -0.999462 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 0 1 -0 + + + + + + + + + + 0.5 0 0.75 0 0.78125 0 0.8125 0 0.84375 0 0.875 0 0.90625 0 0.375 0 0.40625 0 0.4375 0 0.46875 0 0.5 0 0.53125 0 0.5625 0 0.59375 0 0.625 0 0.65625 0 0.6875 0 0.71875 0 0.5 0 0.9375 0 0.96875 0 1 0 0.5 0 0.34375 0 0.3125 0 0.28125 0 0.25 0 0.15625 0 0.1875 0 0.21875 0 0.5 0 0.125 0 -5.96046e-08 0 0.03125 0 0.0625 0 0.09375 0 0.75 0 0.75 1 0.78125 1 0.78125 0 0.71875 0 0.71875 1 0.6875 0 0.6875 1 0.65625 0 0.65625 1 0.625 0 0.625 1 0.59375 0 0.59375 1 0.5625 0 0.5625 1 0.53125 0 0.53125 1 0.5 0 0.5 1 0.46875 0 0.46875 1 0.4375 0 0.4375 1 0.40625 0 0.40625 1 0.375 0 0.375 1 0.34375 0 0.34375 1 0.3125 0 0.3125 1 0.28125 0 0.28125 1 0.25 0 0.25 1 0.21875 0 0.21875 1 0.1875 0 0.1875 1 0.15625 0 0.15625 1 0.125 0 0.125 1 0.09375 0 0.09375 1 0.0625 0 0.0625 1 0.03125 0 0.03125 1 -5.96046e-08 0 -5.96046e-08 1 0.8125 1 0.8125 0 0.84375 1 0.84375 0 0.875 1 0.875 0 0.90625 1 0.90625 0 0.9375 1 0.9375 0 0.96875 1 0.96875 0 1 1 1 0 0.5 1 0.78125 1 0.75 1 0.8125 1 0.84375 1 0.875 1 0.90625 1 0.40625 1 0.375 1 0.4375 1 0.46875 1 0.5 1 0.53125 1 0.5625 1 0.59375 1 0.625 1 0.65625 1 0.6875 1 0.71875 1 0.5 1 0.9375 1 0.96875 1 1 1 0.5 1 0.34375 1 0.3125 1 0.28125 1 0.25 1 0.1875 1 0.15625 1 0.21875 1 0.5 1 0.125 1 0.03125 1 -5.96046e-08 1 0.0625 1 0.09375 1 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

2 1 0 3 2 0 4 3 0 5 4 0 6 5 0 8 7 0 9 8 0 10 9 0 11 10 0 12 11 0 13 12 0 14 13 0 15 14 0 16 15 0 17 16 0 18 17 0 1 18 0 20 6 19 21 20 19 22 21 19 7 24 23 24 25 23 25 26 23 26 27 23 29 28 23 30 29 23 27 30 23 28 32 31 34 33 31 35 34 31 36 35 31 32 36 31 39 38 37 40 39 37 37 38 41 38 42 41 41 42 43 42 44 43 43 44 45 44 46 45 45 46 47 46 48 47 47 48 49 48 50 49 49 50 51 50 52 51 51 52 53 52 54 53 53 54 55 54 56 55 55 56 57 56 58 57 57 58 59 58 60 59 59 60 61 60 62 61 61 62 63 62 64 63 63 64 65 64 66 65 65 66 67 66 68 67 67 68 69 68 70 69 69 70 71 70 72 71 71 72 73 72 74 73 73 74 75 74 76 75 75 76 77 76 78 77 77 78 79 78 80 79 79 80 81 80 82 81 81 82 83 82 84 83 83 84 85 84 86 85 85 86 87 86 88 87 89 39 40 90 89 40 91 89 90 92 91 90 93 91 92 94 93 92 95 93 94 96 95 94 97 95 96 98 97 96 99 97 98 100 99 98 101 99 100 102 101 100 105 104 103 104 106 103 106 107 103 107 108 103 108 109 103 111 110 103 110 112 103 112 113 103 113 114 103 114 115 103 115 116 103 116 117 103 117 118 103 118 119 103 119 120 103 120 121 103 121 105 103 109 123 122 123 124 122 124 125 122 127 111 126 128 127 126 129 128 126 130 129 126 132 131 126 131 133 126 133 130 126 135 132 134 137 136 134 136 138 134 138 139 134 139 135 134

+
+
+
+ + + + 0.117748 -1.74815 -3.22474 -1.39583 -0.305493 -3.27788 -1.39583 -0.305493 -3.27788 -2.43757 0.114644 -2.03476 -2.43757 0.114644 -2.03476 -3.27788 -1.2854 -0.151462 -3.27788 -1.2854 -0.151462 -2.35356 -1.62058 1.21655 -2.35356 -1.62058 1.21655 -1.21655 -2.14473 2.35356 -1.21655 -2.14473 2.35356 0.15146 -1.14758 3.27788 0.15146 -1.14758 3.27788 2.03476 -1.17169 2.43758 2.03476 -1.17169 2.43758 3.27788 -1.20279 1.39583 3.27788 -1.20279 1.39583 3.22474 -1.31912 -0.117745 3.22474 -1.31912 -0.117745 3.19386 -0.819785 -1.85547 3.19386 -0.819785 -1.85547 1.85548 -0.691539 -3.19386 1.85548 -0.691539 -3.19386 0.117748 -1.74815 -3.22474 0.117748 -1.74815 -3.22474 0 0 -0 + + + + + + + + + + 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 1 0 -0 0 0 -0 + + + + + + + + + + 0 0.5 0.0833333 0.333333 0.0833333 0.5 0.166667 0.333333 0.166667 0.5 0.25 0.333333 0.25 0.5 0.333333 0.333333 0.333333 0.5 0.416667 0.333333 0.416667 0.5 0.5 0.333333 0.5 0.5 0.583333 0.333333 0.583333 0.5 0.666667 0.333333 0.666667 0.5 0.75 0.333333 0.75 0.5 0.833333 0.333333 0.833333 0.5 0.916667 0.333333 0.916667 0.5 1 0.333333 1 0.5 0 1 + + + + + + + + + + + + + + +

1 0 2 0 3 2 4 2 5 4 6 4 7 6 8 6 9 8 10 8 11 10 12 10 13 12 14 12 15 14 16 14 17 16 18 16 19 18 20 18 21 20 22 20 23 22 24 22

+
+
+
+ + + + -0.31129 1.78788 0.31129 -0.29072 1.02903 -1.90107 0.745326 1.06783 -1.75098 -0.31129 1.78788 0.31129 -1.30475 1.24054 -1.72295 -0.29072 1.02903 -1.90107 -0.31129 1.78788 0.31129 -1.50033 1.84101 -1.13137 -1.30475 1.24054 -1.72295 -0.31129 1.78788 0.31129 -0.914649 1.83875 -0.0972906 -1.50033 1.84101 -1.13137 -0.31129 1.78788 0.31129 0.0972897 2.14473 0.914648 -0.914649 1.83875 -0.0972906 -0.31129 1.78788 0.31129 1.13137 1.67006 1.50033 0.0972897 2.14473 0.914648 -0.31129 1.78788 0.31129 1.72295 1.9986 1.30475 1.13137 1.67006 1.50033 -0.31129 1.78788 0.31129 1.90107 1.88048 0.290722 1.72295 1.9986 1.30475 -0.31129 1.78788 0.31129 1.75098 1.757 -0.745324 1.90107 1.88048 0.290722 -0.31129 1.78788 0.31129 1.51097 1.08279 -1.33494 1.75098 1.757 -0.745324 -0.31129 1.78788 0.31129 1.33494 0.969724 -1.51097 1.51097 1.08279 -1.33494 -0.31129 1.78788 0.31129 0.745326 1.06783 -1.75098 1.33494 0.969724 -1.51097 0.745326 1.06783 -1.75098 -0.955731 1.06431 -2.95438 0.617076 0.314113 -2.50469 0.745326 1.06783 -1.75098 -0.29072 1.02903 -1.90107 -0.955731 1.06431 -2.95438 -0.29072 1.02903 -1.90107 -2.44247 1.26282 -2.52681 -0.955731 1.06431 -2.95438 -0.29072 1.02903 -1.90107 -1.30475 1.24054 -1.72295 -2.44247 1.26282 -2.52681 -1.30475 1.24054 -1.72295 -3.12674 0.5979 -1.55151 -2.44247 1.26282 -2.52681 -1.30475 1.24054 -1.72295 -1.50033 1.84101 -1.13137 -3.12674 0.5979 -1.55151 -1.50033 1.84101 -1.13137 -1.92259 0.357294 0.28891 -3.12674 0.5979 -1.55151 -1.50033 1.84101 -1.13137 -0.914649 1.83875 -0.0972906 -1.92259 0.357294 0.28891 -0.914649 1.83875 -0.0972906 -0.288911 -0.14017 1.92259 -1.92259 0.357294 0.28891 -0.914649 1.83875 -0.0972906 0.0972897 2.14473 0.914648 -0.288911 -0.14017 1.92259 0.0972897 2.14473 0.914648 1.55151 0.327938 3.12674 -0.288911 -0.14017 1.92259 0.0972897 2.14473 0.914648 1.13137 1.67006 1.50033 1.55151 0.327938 3.12674 1.13137 1.67006 1.50033 2.52681 0.196151 2.44248 1.55151 0.327938 3.12674 1.13137 1.67006 1.50033 1.72295 1.9986 1.30475 2.52681 0.196151 2.44248 1.72295 1.9986 1.30475 2.95438 0.433123 0.955733 2.52681 0.196151 2.44248 1.72295 1.9986 1.30475 1.90107 1.88048 0.290722 2.95438 0.433123 0.955733 1.90107 1.88048 0.290722 2.50469 0.418612 -0.617073 2.95438 0.433123 0.955733 1.90107 1.88048 0.290722 1.75098 1.757 -0.745324 2.50469 0.418612 -0.617073 1.75098 1.757 -0.745324 2.43449 0.434895 -1.85998 2.50469 0.418612 -0.617073 1.75098 1.757 -0.745324 1.51097 1.08279 -1.33494 2.43449 0.434895 -1.85998 1.51097 1.08279 -1.33494 1.85999 0.698394 -2.43449 2.43449 0.434895 -1.85998 1.51097 1.08279 -1.33494 1.33494 0.969724 -1.51097 1.85999 0.698394 -2.43449 1.33494 0.969724 -1.51097 0.617076 0.314113 -2.50469 1.85999 0.698394 -2.43449 1.33494 0.969724 -1.51097 0.745326 1.06783 -1.75098 0.617076 0.314113 -2.50469 0.617076 0.314113 -2.50469 -1.39583 -0.305493 -3.27788 0.117748 -1.74815 -3.22474 0.617076 0.314113 -2.50469 -0.955731 1.06431 -2.95438 -1.39583 -0.305493 -3.27788 -0.955731 1.06431 -2.95438 -2.43757 0.114644 -2.03476 -1.39583 -0.305493 -3.27788 -0.955731 1.06431 -2.95438 -2.44247 1.26282 -2.52681 -2.43757 0.114644 -2.03476 -2.44247 1.26282 -2.52681 -3.27788 -1.2854 -0.151462 -2.43757 0.114644 -2.03476 -2.44247 1.26282 -2.52681 -3.12674 0.5979 -1.55151 -3.27788 -1.2854 -0.151462 -3.12674 0.5979 -1.55151 -2.35356 -1.62058 1.21655 -3.27788 -1.2854 -0.151462 -3.12674 0.5979 -1.55151 -1.92259 0.357294 0.28891 -2.35356 -1.62058 1.21655 -1.92259 0.357294 0.28891 -1.21655 -2.14473 2.35356 -2.35356 -1.62058 1.21655 -1.92259 0.357294 0.28891 -0.288911 -0.14017 1.92259 -1.21655 -2.14473 2.35356 -0.288911 -0.14017 1.92259 0.15146 -1.14758 3.27788 -1.21655 -2.14473 2.35356 -0.288911 -0.14017 1.92259 1.55151 0.327938 3.12674 0.15146 -1.14758 3.27788 1.55151 0.327938 3.12674 2.03476 -1.17169 2.43758 0.15146 -1.14758 3.27788 1.55151 0.327938 3.12674 2.52681 0.196151 2.44248 2.03476 -1.17169 2.43758 2.52681 0.196151 2.44248 3.27788 -1.20279 1.39583 2.03476 -1.17169 2.43758 2.52681 0.196151 2.44248 2.95438 0.433123 0.955733 3.27788 -1.20279 1.39583 2.95438 0.433123 0.955733 3.22474 -1.31912 -0.117745 3.27788 -1.20279 1.39583 2.95438 0.433123 0.955733 2.50469 0.418612 -0.617073 3.22474 -1.31912 -0.117745 2.50469 0.418612 -0.617073 3.19386 -0.819785 -1.85547 3.22474 -1.31912 -0.117745 2.50469 0.418612 -0.617073 2.43449 0.434895 -1.85998 3.19386 -0.819785 -1.85547 2.43449 0.434895 -1.85998 1.85548 -0.691539 -3.19386 3.19386 -0.819785 -1.85547 2.43449 0.434895 -1.85998 1.85999 0.698394 -2.43449 1.85548 -0.691539 -3.19386 1.85999 0.698394 -2.43449 0.117748 -1.74815 -3.22474 1.85548 -0.691539 -3.19386 1.85999 0.698394 -2.43449 0.617076 0.314113 -2.50469 0.117748 -1.74815 -3.22474 -0.0265664 -1.46343 0.0265669 0.117748 -1.74815 -3.22474 -1.39583 -0.305493 -3.27788 -0.0265664 -1.46343 0.0265669 -1.39583 -0.305493 -3.27788 -2.43757 0.114644 -2.03476 -0.0265664 -1.46343 0.0265669 -2.43757 0.114644 -2.03476 -3.27788 -1.2854 -0.151462 -0.0265664 -1.46343 0.0265669 -3.27788 -1.2854 -0.151462 -2.35356 -1.62058 1.21655 -0.0265664 -1.46343 0.0265669 -2.35356 -1.62058 1.21655 -1.21655 -2.14473 2.35356 -0.0265664 -1.46343 0.0265669 -1.21655 -2.14473 2.35356 0.15146 -1.14758 3.27788 -0.0265664 -1.46343 0.0265669 0.15146 -1.14758 3.27788 2.03476 -1.17169 2.43758 -0.0265664 -1.46343 0.0265669 2.03476 -1.17169 2.43758 3.27788 -1.20279 1.39583 -0.0265664 -1.46343 0.0265669 3.27788 -1.20279 1.39583 3.22474 -1.31912 -0.117745 -0.0265664 -1.46343 0.0265669 3.22474 -1.31912 -0.117745 3.19386 -0.819785 -1.85547 -0.0265664 -1.46343 0.0265669 3.19386 -0.819785 -1.85547 1.85548 -0.691539 -3.19386 -0.0265664 -1.46343 0.0265669 1.85548 -0.691539 -3.19386 0.117748 -1.74815 -3.22474 + + + + + + + + + + 0.0115621 0.945872 -0.324333 0.0115621 0.945872 -0.324333 0.0115621 0.945872 -0.324333 0.139226 0.937087 -0.320132 0.139226 0.937087 -0.320132 0.139226 0.937087 -0.320132 0.595533 0.653816 -0.46676 0.595533 0.653816 -0.46676 0.595533 0.653816 -0.46676 0.132821 0.988443 -0.0730672 0.132821 0.988443 -0.0730672 0.132821 0.988443 -0.0730672 0.497734 0.555847 -0.665804 0.497734 0.555847 -0.665804 0.497734 0.555847 -0.665804 0.587819 0.456375 -0.667976 0.587819 0.456375 -0.667976 0.587819 0.456375 -0.667976 -0.310456 0.832345 0.45915 -0.310456 0.832345 0.45915 -0.310456 0.832345 0.45915 -0.0426439 0.991492 -0.122987 -0.0426439 0.991492 -0.122987 -0.0426439 0.991492 -0.122987 -0.0425971 0.992777 -0.112157 -0.0425971 0.992777 -0.112157 -0.0425971 0.992777 -0.112157 -0.323825 0.685524 -0.652069 -0.323825 0.685524 -0.652069 -0.323825 0.685524 -0.652069 -0.0889744 0.876152 -0.473753 -0.0889744 0.876152 -0.473753 -0.0889744 0.876152 -0.473753 0.241986 0.947943 -0.206996 0.241986 0.947943 -0.206996 0.241986 0.947943 -0.206996 0.468113 0.583752 -0.663404 0.468113 0.583752 -0.663404 0.468113 0.583752 -0.663404 -0.0464211 0.996952 0.0627044 -0.0464211 0.996952 0.0627044 -0.0464211 0.996952 0.0627044 0.120165 0.991838 -0.042642 0.120165 0.991838 -0.042642 0.120165 0.991838 -0.042642 0.164871 0.964432 -0.206612 0.164871 0.964432 -0.206612 0.164871 0.964432 -0.206612 -0.269764 0.873147 0.406008 -0.269764 0.873147 0.406008 -0.269764 0.873147 0.406008 -0.288107 0.622787 -0.727414 -0.288107 0.622787 -0.727414 -0.288107 0.622787 -0.727414 -0.607587 0.632621 0.480239 -0.607587 0.632621 0.480239 -0.607587 0.632621 0.480239 -0.705478 0.584483 0.400848 -0.705478 0.584483 0.400848 -0.705478 0.584483 0.400848 -0.515415 0.526859 0.675846 -0.515415 0.526859 0.675846 -0.515415 0.526859 0.675846 -0.708746 0.381552 0.593378 -0.708746 0.381552 0.593378 -0.708746 0.381552 0.593378 -0.570076 0.410344 0.71178 -0.570076 0.410344 0.71178 -0.570076 0.410344 0.71178 -0.00754014 0.770316 0.637617 -0.00754014 0.770316 0.637617 -0.00754014 0.770316 0.637617 0.448958 0.742665 0.496876 0.448958 0.742665 0.496876 0.448958 0.742665 0.496876 -0.0135552 0.529392 0.848269 -0.0135552 0.529392 0.848269 -0.0135552 0.529392 0.848269 0.779484 0.543851 0.310855 0.779484 0.543851 0.310855 0.779484 0.543851 0.310855 0.791481 0.607368 0.0682811 0.791481 0.607368 0.0682811 0.791481 0.607368 0.0682811 0.834035 0.4953 -0.243029 0.834035 0.4953 -0.243029 0.834035 0.4953 -0.243029 0.864237 0.469341 -0.181143 0.864237 0.469341 -0.181143 0.864237 0.469341 -0.181143 0.872282 0.48712 -0.0428874 0.872282 0.48712 -0.0428874 0.872282 0.48712 -0.0428874 0.0272584 0.65254 -0.757264 0.0272584 0.65254 -0.757264 0.0272584 0.65254 -0.757264 0.51844 0.845042 -0.130854 0.51844 0.845042 -0.130854 0.51844 0.845042 -0.130854 -0.200658 0.903196 -0.379438 -0.200658 0.903196 -0.379438 -0.200658 0.903196 -0.379438 -0.249848 0.881354 -0.400987 -0.249848 0.881354 -0.400987 -0.249848 0.881354 -0.400987 0.382084 0.620141 -0.685155 0.382084 0.620141 -0.685155 0.382084 0.620141 -0.685155 0.276826 0.256327 -0.926102 0.276826 0.256327 -0.926102 0.276826 0.256327 -0.926102 0.324379 0.117447 -0.938608 0.324379 0.117447 -0.938608 0.324379 0.117447 -0.938608 -0.648668 0.366 -0.667288 -0.648668 0.366 -0.667288 -0.648668 0.366 -0.667288 -0.30213 -0.376579 -0.875732 -0.30213 -0.376579 -0.875732 -0.30213 -0.376579 -0.875732 -0.811866 -0.232898 -0.53538 -0.811866 -0.232898 -0.53538 -0.811866 -0.232898 -0.53538 -0.53291 -0.47687 -0.699 -0.53291 -0.47687 -0.699 -0.53291 -0.47687 -0.699 -0.669629 0.476958 0.569305 -0.669629 0.476958 0.569305 -0.669629 0.476958 0.569305 -0.736892 0.41195 0.535992 -0.736892 0.41195 0.535992 -0.736892 0.41195 0.535992 -0.517136 0.453212 0.726065 -0.517136 0.453212 0.726065 -0.517136 0.453212 0.726065 -0.575778 0.417574 0.702931 -0.575778 0.417574 0.702931 -0.575778 0.417574 0.702931 -0.700879 0.444306 0.557997 -0.700879 0.444306 0.557997 -0.700879 0.444306 0.557997 -0.544441 0.57878 0.607122 -0.544441 0.57878 0.607122 -0.544441 0.57878 0.607122 0.388365 -0.278527 0.878405 0.388365 -0.278527 0.878405 0.388365 -0.278527 0.878405 0.544717 -0.198866 0.814699 0.544717 -0.198866 0.814699 0.544717 -0.198866 0.814699 0.622265 -0.226528 0.749314 0.622265 -0.226528 0.749314 0.622265 -0.226528 0.749314 0.915245 0.263081 0.305146 0.915245 0.263081 0.305146 0.915245 0.263081 0.305146 0.982251 0.181217 -0.0484078 0.982251 0.181217 -0.0484078 0.982251 0.181217 -0.0484078 0.915437 0.303312 -0.264532 0.915437 0.303312 -0.264532 0.915437 0.303312 -0.264532 0.908646 0.405337 0.100323 0.908646 0.405337 0.100323 0.908646 0.405337 0.100323 0.854842 0.517226 -0.0415079 0.854842 0.517226 -0.0415079 0.854842 0.517226 -0.0415079 0.666639 0.401211 -0.62819 0.666639 0.401211 -0.62819 0.666639 0.401211 -0.62819 0.739244 0.32103 -0.591995 0.739244 0.32103 -0.591995 0.739244 0.32103 -0.591995 -0.266369 0.46279 -0.845502 -0.266369 0.46279 -0.845502 -0.266369 0.46279 -0.845502 -0.0522329 0.340439 -0.938815 -0.0522329 0.340439 -0.938815 -0.0522329 0.340439 -0.938815 -0.690177 -0.722903 0.0326712 -0.690177 -0.722903 0.0326712 -0.690177 -0.722903 0.0326712 -0.478935 -0.871321 -0.10687 -0.478935 -0.871321 -0.10687 -0.478935 -0.871321 -0.10687 -0.0109739 -0.800136 -0.599718 -0.0109739 -0.800136 -0.599718 -0.0109739 -0.800136 -0.599718 -0.0419236 -0.976598 -0.210948 -0.0419236 -0.976598 -0.210948 -0.0419236 -0.976598 -0.210948 -0.104483 -0.938781 -0.328289 -0.104483 -0.938781 -0.328289 -0.104483 -0.938781 -0.328289 0.56655 -0.822576 0.048888 0.56655 -0.822576 0.048888 0.56655 -0.822576 0.048888 0.029668 -0.995031 0.0950384 0.029668 -0.995031 0.0950384 0.029668 -0.995031 0.0950384 0.0443052 -0.995598 0.0825927 0.0443052 -0.995598 0.0825927 0.0443052 -0.995598 0.0825927 0.0475356 -0.996059 0.0748845 0.0475356 -0.996059 0.0748845 0.0475356 -0.996059 0.0748845 0.0303599 -0.960522 -0.276542 0.0303599 -0.960522 -0.276542 0.0303599 -0.960522 -0.276542 0.088906 -0.979135 -0.182728 0.088906 -0.979135 -0.182728 0.088906 -0.979135 -0.182728 0.515803 -0.851149 0.0974312 0.515803 -0.851149 0.0974312 0.515803 -0.851149 0.0974312 + + + + + + + + + + 0 1 0.0833333 0.833333 0 0.833333 0.0833333 1 0.166667 0.833333 0.0833333 0.833333 0.166667 1 0.25 0.833333 0.166667 0.833333 0.25 1 0.333333 0.833333 0.25 0.833333 0.333333 1 0.416667 0.833333 0.333333 0.833333 0.416667 1 0.5 0.833333 0.416667 0.833333 0.5 1 0.583333 0.833333 0.5 0.833333 0.583333 1 0.666667 0.833333 0.583333 0.833333 0.666667 1 0.75 0.833333 0.666667 0.833333 0.75 1 0.833333 0.833333 0.75 0.833333 0.833333 1 0.916667 0.833333 0.833333 0.833333 0.916667 1 1 0.833333 0.916667 0.833333 0 0.833333 0.0833333 0.666667 0 0.666667 0 0.833333 0.0833333 0.833333 0.0833333 0.666667 0.0833333 0.833333 0.166667 0.666667 0.0833333 0.666667 0.0833333 0.833333 0.166667 0.833333 0.166667 0.666667 0.166667 0.833333 0.25 0.666667 0.166667 0.666667 0.166667 0.833333 0.25 0.833333 0.25 0.666667 0.25 0.833333 0.333333 0.666667 0.25 0.666667 0.25 0.833333 0.333333 0.833333 0.333333 0.666667 0.333333 0.833333 0.416667 0.666667 0.333333 0.666667 0.333333 0.833333 0.416667 0.833333 0.416667 0.666667 0.416667 0.833333 0.5 0.666667 0.416667 0.666667 0.416667 0.833333 0.5 0.833333 0.5 0.666667 0.5 0.833333 0.583333 0.666667 0.5 0.666667 0.5 0.833333 0.583333 0.833333 0.583333 0.666667 0.583333 0.833333 0.666667 0.666667 0.583333 0.666667 0.583333 0.833333 0.666667 0.833333 0.666667 0.666667 0.666667 0.833333 0.75 0.666667 0.666667 0.666667 0.666667 0.833333 0.75 0.833333 0.75 0.666667 0.75 0.833333 0.833333 0.666667 0.75 0.666667 0.75 0.833333 0.833333 0.833333 0.833333 0.666667 0.833333 0.833333 0.916667 0.666667 0.833333 0.666667 0.833333 0.833333 0.916667 0.833333 0.916667 0.666667 0.916667 0.833333 1 0.666667 0.916667 0.666667 0.916667 0.833333 1 0.833333 1 0.666667 0 0.666667 0.0833333 0.5 0 0.5 0 0.666667 0.0833333 0.666667 0.0833333 0.5 0.0833333 0.666667 0.166667 0.5 0.0833333 0.5 0.0833333 0.666667 0.166667 0.666667 0.166667 0.5 0.166667 0.666667 0.25 0.5 0.166667 0.5 0.166667 0.666667 0.25 0.666667 0.25 0.5 0.25 0.666667 0.333333 0.5 0.25 0.5 0.25 0.666667 0.333333 0.666667 0.333333 0.5 0.333333 0.666667 0.416667 0.5 0.333333 0.5 0.333333 0.666667 0.416667 0.666667 0.416667 0.5 0.416667 0.666667 0.5 0.5 0.416667 0.5 0.416667 0.666667 0.5 0.666667 0.5 0.5 0.5 0.666667 0.583333 0.5 0.5 0.5 0.5 0.666667 0.583333 0.666667 0.583333 0.5 0.583333 0.666667 0.666667 0.5 0.583333 0.5 0.583333 0.666667 0.666667 0.666667 0.666667 0.5 0.666667 0.666667 0.75 0.5 0.666667 0.5 0.666667 0.666667 0.75 0.666667 0.75 0.5 0.75 0.666667 0.833333 0.5 0.75 0.5 0.75 0.666667 0.833333 0.666667 0.833333 0.5 0.833333 0.666667 0.916667 0.5 0.833333 0.5 0.833333 0.666667 0.916667 0.666667 0.916667 0.5 0.916667 0.666667 1 0.5 0.916667 0.5 0.916667 0.666667 1 0.666667 1 0.5 0 0.166667 0 0.333333 0.0833333 0.333333 0.0833333 0.166667 0.0833333 0.333333 0.166667 0.333333 0.166667 0.166667 0.166667 0.333333 0.25 0.333333 0.25 0.166667 0.25 0.333333 0.333333 0.333333 0.333333 0.166667 0.333333 0.333333 0.416667 0.333333 0.416667 0.166667 0.416667 0.333333 0.5 0.333333 0.5 0.166667 0.5 0.333333 0.583333 0.333333 0.583333 0.166667 0.583333 0.333333 0.666667 0.333333 0.666667 0.166667 0.666667 0.333333 0.75 0.333333 0.75 0.166667 0.75 0.333333 0.833333 0.333333 0.833333 0.166667 0.833333 0.333333 0.916667 0.333333 0.916667 0.166667 0.916667 0.333333 1 0.333333 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

2 1 0 5 4 3 8 7 6 11 10 9 14 13 12 17 16 15 20 19 18 23 22 21 26 25 24 29 28 27 32 31 30 35 34 33 38 37 36 41 40 39 44 43 42 47 46 45 50 49 48 53 52 51 56 55 54 59 58 57 62 61 60 65 64 63 68 67 66 71 70 69 74 73 72 77 76 75 80 79 78 83 82 81 86 85 84 89 88 87 92 91 90 95 94 93 98 97 96 101 100 99 104 103 102 107 106 105 110 109 108 113 112 111 116 115 114 119 118 117 122 121 120 125 124 123 128 127 126 131 130 129 134 133 132 137 136 135 140 139 138 143 142 141 146 145 144 149 148 147 152 151 150 155 154 153 158 157 156 161 160 159 164 163 162 167 166 165 170 169 168 173 172 171 176 175 174 179 178 177 182 181 180 185 184 183 188 187 186 191 190 189 194 193 192 197 196 195 200 199 198 203 202 201 206 205 204 209 208 207 212 211 210 215 214 213

+
+
+
+
+ + + + 1 0 -0 0 0 1 -0 0 -0 -0 1 -0 0 0 -0 1 + + + + + + + + + + 1 0 -0 0 0 -4.37114e-08 -1 15 -0 1 -4.37114e-08 -30 0 0 -0 1 + + + + + + + + + + 3.37766e-07 -1 1.11273e-07 30 1 3.37766e-07 -2.95285e-14 15 -8.05564e-15 1.11273e-07 1 -0 0 0 -0 1 + + + + + + + + + + 1 0 -0 0 0 1 -0 0 -0 -0 1 -0 0 0 -0 1 + + + + + + + + + + 1 0 -0 0 0 1 -0 12.5 -0 -0 1 5.32221e-07 0 0 -0 1 + + + + + + + + + + 1 0 -0 0 0 1 -0 2.5 -0 -0 1 2.68044e-07 0 0 -0 1 + + + + + + + + + + 1 0 -0 0 0 1 -0 5 -0 -0 1 2.68044e-07 0 0 -0 1 + + + + + + + + + + 1 0 -0 0 0 1 -0 10 -0 -0 1 2.68044e-07 0 0 -0 1 + + + + + + + + + + 1 0 -0 -3.8 0 1 -0 0 -0 -0 1 -0 0 0 -0 1 + + + + + + + + + + 1 0 -0 3.8 0 1 -0 0 -0 -0 1 -0 0 0 -0 1 + + + + + + + + + + 0.866025 0 0.5 3.2909 0 1 -0 0 -0.5 -0 0.866025 -1.9 0 0 -0 1 + + + + + + + + + + 0.866025 0 0.5 -3.2909 0 1 -0 0 -0.5 -0 0.866025 1.9 0 0 -0 1 + + + + + + + + + + 0.5 0 0.866025 1.9 0 1 -0 0 -0.866025 -0 0.5 -3.2909 0 0 -0 1 + + + + + + + + + + 0.5 0 0.866025 -1.9 0 1 -0 0 -0.866025 -0 0.5 3.2909 0 0 -0 1 + + + + + + + + + + -4.37114e-08 0 1 -8.34465e-07 0 1 -0 0 -1 -0 -4.37114e-08 -3.8 0 0 -0 1 + + + + + + + + + + -4.37114e-08 0 1 8.34465e-07 0 1 -0 0 -1 -0 -4.37114e-08 3.8 0 0 -0 1 + + + + + + + + + + -0.5 0 0.866025 -1.9 0 1 -0 0 -0.866025 -0 -0.5 -3.2909 0 0 -0 1 + + + + + + + + + + -0.5 0 0.866025 1.9 0 1 -0 0 -0.866025 -0 -0.5 3.2909 0 0 -0 1 + + + + + + + + + + -0.866025 0 0.5 -3.2909 0 1 -0 0 -0.5 -0 -0.866025 -1.9 0 0 -0 1 + + + + + + + + + + -0.866025 0 0.5 3.2909 0 1 -0 0 -0.5 -0 -0.866025 1.9 0 0 -0 1 + + + + + + + + + + 1 0 -0 0 0 1 -0 6.84656 -0 -0 1 2.85101e-07 0 0 -0 1 + + + + + + + + + + 1 0 -0 0 0 1 -0 2.6852 -0 -0 1 -0 0 0 -0 1 + + + + + + + + + + + + + + + + + + + + +
diff --git a/shadowmapping/shadowmapping.cpp b/shadowmapping/shadowmapping.cpp index a7bbc981..d2596bf1 100644 --- a/shadowmapping/shadowmapping.cpp +++ b/shadowmapping/shadowmapping.cpp @@ -51,7 +51,7 @@ std::vector vertexLayout = class VulkanExample : public VulkanExampleBase { public: - bool displayShadowMap = true; + bool displayShadowMap = false; bool lightPOV = false; // Keep depth range as small as possible @@ -613,7 +613,7 @@ public: void loadMeshes() { - loadMesh("./../data/models/vulkanscene_shadow.dae", &meshes.scene, vertexLayout, 4.0f); + loadMesh(getAssetPath() + "models/vulkanscene_shadow.dae", &meshes.scene, vertexLayout, 4.0f); } void generateQuad() @@ -892,8 +892,8 @@ public: // Load shaders std::array shaderStages; - shaderStages[0] = loadShader("./../data/shaders/shadowmapping/quad.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); - shaderStages[1] = loadShader("./../data/shaders/shadowmapping/quad.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[0] = loadShader(getAssetPath() + "shaders/shadowmapping/quad.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[1] = loadShader(getAssetPath() + "shaders/shadowmapping/quad.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); VkGraphicsPipelineCreateInfo pipelineCreateInfo = vkTools::initializers::pipelineCreateInfo( @@ -918,15 +918,15 @@ public: assert(!err); // 3D scene - shaderStages[0] = loadShader("./../data/shaders/shadowmapping/scene.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); - shaderStages[1] = loadShader("./../data/shaders/shadowmapping/scene.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[0] = loadShader(getAssetPath() + "shaders/shadowmapping/scene.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[1] = loadShader(getAssetPath() + "shaders/shadowmapping/scene.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); rasterizationState.cullMode = VK_CULL_MODE_NONE; err = vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.scene); assert(!err); // Offscreen pipeline - shaderStages[0] = loadShader("./../data/shaders/shadowmapping/offscreen.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); - shaderStages[1] = loadShader("./../data/shaders/shadowmapping/offscreen.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[0] = loadShader(getAssetPath() + "shaders/shadowmapping/offscreen.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[1] = loadShader(getAssetPath() + "shaders/shadowmapping/offscreen.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); pipelineCreateInfo.layout = pipelineLayouts.offscreen; // Cull front faces depthStencilState.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL; @@ -1167,8 +1167,7 @@ public: VulkanExample *vulkanExample; -#ifdef _WIN32 - +#if defined(_WIN32) LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (vulkanExample != NULL) @@ -1189,9 +1188,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } return (DefWindowProc(hWnd, uMsg, wParam, lParam)); } - -#else - +#elif defined(__linux__) && !defined(__ANDROID__) static void handleEvent(const xcb_generic_event_t *event) { if (vulkanExample != NULL) @@ -1201,21 +1198,42 @@ static void handleEvent(const xcb_generic_event_t *event) } #endif -#ifdef _WIN32 +// Main entry point +#if defined(_WIN32) +// Windows entry point int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow) -#else +#elif defined(__ANDROID__) +// Android entry point +void android_main(android_app* state) +#elif defined(__linux__) +// Linux entry point int main(const int argc, const char *argv[]) #endif { +#if defined(__ANDROID__) + // Removing this may cause the compiler to omit the main entry point + // which would make the application crash at start + app_dummy(); +#endif vulkanExample = new VulkanExample(); -#ifdef _WIN32 +#if defined(_WIN32) vulkanExample->setupWindow(hInstance, WndProc); -#else +#elif defined(__ANDROID__) + // Attach vulkan example to global android application state + state->userData = vulkanExample; + state->onAppCmd = VulkanExample::handleAppCommand; + state->onInputEvent = VulkanExample::handleAppInput; + vulkanExample->androidApp = state; +#elif defined(__linux__) vulkanExample->setupWindow(); #endif +#if !defined(__ANDROID__) vulkanExample->initSwapchain(); vulkanExample->prepare(); +#endif vulkanExample->renderLoop(); +#if !defined(__ANDROID__) delete(vulkanExample); return 0; -} +#endif +} \ No newline at end of file diff --git a/shadowmappingomni/shadowmappingomni.cpp b/shadowmappingomni/shadowmappingomni.cpp index f6ed5e5d..4141ef78 100644 --- a/shadowmappingomni/shadowmappingomni.cpp +++ b/shadowmappingomni/shadowmappingomni.cpp @@ -714,8 +714,8 @@ public: void loadMeshes() { - loadMesh("./../data/models/cube.obj", &meshes.skybox, vertexLayout, 2.0f); - loadMesh("./../data/models/shadowscene_fire.X", &meshes.scene, vertexLayout, 2.0f); + loadMesh(getAssetPath() + "models/cube.obj", &meshes.skybox, vertexLayout, 2.0f); + loadMesh(getAssetPath() + "models/shadowscene_fire.dae", &meshes.scene, vertexLayout, 2.0f); } void setupVertexDescriptions() @@ -942,8 +942,8 @@ public: // Load shaders std::array shaderStages; - shaderStages[0] = loadShader("./../data/shaders/shadowmapomni/scene.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); - shaderStages[1] = loadShader("./../data/shaders/shadowmapomni/scene.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[0] = loadShader(getAssetPath() + "shaders/shadowmapomni/scene.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[1] = loadShader(getAssetPath() + "shaders/shadowmapomni/scene.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); VkGraphicsPipelineCreateInfo pipelineCreateInfo = vkTools::initializers::pipelineCreateInfo( @@ -966,15 +966,15 @@ public: assert(!err); // Cube map display pipeline - shaderStages[0] = loadShader("./../data/shaders/shadowmapomni/cubemapdisplay.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); - shaderStages[1] = loadShader("./../data/shaders/shadowmapomni/cubemapdisplay.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[0] = loadShader(getAssetPath() + "shaders/shadowmapomni/cubemapdisplay.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[1] = loadShader(getAssetPath() + "shaders/shadowmapomni/cubemapdisplay.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); rasterizationState.cullMode = VK_CULL_MODE_FRONT_BIT; err = vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.cubeMap); assert(!err); // Offscreen pipeline - shaderStages[0] = loadShader("./../data/shaders/shadowmapomni/offscreen.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); - shaderStages[1] = loadShader("./../data/shaders/shadowmapomni/offscreen.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[0] = loadShader(getAssetPath() + "shaders/shadowmapomni/offscreen.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[1] = loadShader(getAssetPath() + "shaders/shadowmapomni/offscreen.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); rasterizationState.cullMode = VK_CULL_MODE_BACK_BIT; pipelineCreateInfo.layout = pipelineLayouts.offscreen; err = vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.offscreen); @@ -1089,10 +1089,10 @@ public: } }; + VulkanExample *vulkanExample; -#ifdef _WIN32 - +#if defined(_WIN32) LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (vulkanExample != NULL) @@ -1110,9 +1110,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } return (DefWindowProc(hWnd, uMsg, wParam, lParam)); } - -#else - +#elif defined(__linux__) && !defined(__ANDROID__) static void handleEvent(const xcb_generic_event_t *event) { if (vulkanExample != NULL) @@ -1122,21 +1120,42 @@ static void handleEvent(const xcb_generic_event_t *event) } #endif -#ifdef _WIN32 +// Main entry point +#if defined(_WIN32) +// Windows entry point int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow) -#else +#elif defined(__ANDROID__) +// Android entry point +void android_main(android_app* state) +#elif defined(__linux__) +// Linux entry point int main(const int argc, const char *argv[]) #endif { +#if defined(__ANDROID__) + // Removing this may cause the compiler to omit the main entry point + // which would make the application crash at start + app_dummy(); +#endif vulkanExample = new VulkanExample(); -#ifdef _WIN32 +#if defined(_WIN32) vulkanExample->setupWindow(hInstance, WndProc); -#else +#elif defined(__ANDROID__) + // Attach vulkan example to global android application state + state->userData = vulkanExample; + state->onAppCmd = VulkanExample::handleAppCommand; + state->onInputEvent = VulkanExample::handleAppInput; + vulkanExample->androidApp = state; +#elif defined(__linux__) vulkanExample->setupWindow(); #endif +#if !defined(__ANDROID__) vulkanExample->initSwapchain(); vulkanExample->prepare(); +#endif vulkanExample->renderLoop(); +#if !defined(__ANDROID__) delete(vulkanExample); return 0; -} +#endif +} \ No newline at end of file diff --git a/texturearray/texturearray.cpp b/texturearray/texturearray.cpp index 85edc387..73f359c4 100644 --- a/texturearray/texturearray.cpp +++ b/texturearray/texturearray.cpp @@ -110,12 +110,25 @@ public: delete[] uboVS.instance; } - void loadTextureArray(const char* filename, VkFormat format) + void loadTextureArray(std::string filename, VkFormat format) { - VkFormatProperties formatProperties; - VkResult err; +#if defined(__ANDROID__) + // Textures are stored inside the apk on Android (compressed) + // So they need to be loaded via the asset manager + AAsset* asset = AAssetManager_open(androidApp->activity->assetManager, filename.c_str(), AASSET_MODE_STREAMING); + assert(asset); + size_t size = AAsset_getLength(asset); + assert(size > 0); + void *textureData = malloc(size); + AAsset_read(asset, textureData, size); + AAsset_close(asset); + + gli::texture2DArray tex2DArray(gli::load((const char*)textureData, size)); +#else gli::texture2DArray tex2DArray(gli::load(filename)); +#endif + assert(!tex2DArray.empty()); textureArray.width = tex2DArray.dimensions().x; @@ -123,6 +136,7 @@ public: layerCount = tex2DArray.layers(); // Get device properites for the requested texture format + VkFormatProperties formatProperties; vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &formatProperties); VkImageCreateInfo imageCreateInfo = vkTools::initializers::imageCreateInfo(); @@ -155,7 +169,7 @@ public: cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY, 1); - err = vkAllocateCommandBuffers(device, &cmdBufAlllocatInfo, &cmdBuffer); + VkResult err = vkAllocateCommandBuffers(device, &cmdBufAlllocatInfo, &cmdBuffer); assert(!err); VkCommandBufferBeginInfo cmdBufInfo = @@ -332,7 +346,9 @@ public: void loadTextures() { - loadTextureArray("./../data/textures/texturearray_bc3.ktx", VK_FORMAT_BC3_UNORM_BLOCK); + loadTextureArray( + getAssetPath() + "textures/texturearray_bc3.ktx", + VK_FORMAT_BC3_UNORM_BLOCK); } void buildCommandBuffers() @@ -629,8 +645,8 @@ public: // Load shaders std::array shaderStages; - shaderStages[0] = loadShader("./../data/shaders/texturearray/instancing.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); - shaderStages[1] = loadShader("./../data/shaders/texturearray/instancing.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[0] = loadShader(getAssetPath() + "shaders/texturearray/instancing.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[1] = loadShader(getAssetPath() + "shaders/texturearray/instancing.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); VkGraphicsPipelineCreateInfo pipelineCreateInfo = vkTools::initializers::pipelineCreateInfo( @@ -747,8 +763,7 @@ public: VulkanExample *vulkanExample; -#ifdef _WIN32 - +#if defined(_WIN32) LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (vulkanExample != NULL) @@ -757,9 +772,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } return (DefWindowProc(hWnd, uMsg, wParam, lParam)); } - -#else - +#elif defined(__linux__) && !defined(__ANDROID__) static void handleEvent(const xcb_generic_event_t *event) { if (vulkanExample != NULL) @@ -769,21 +782,42 @@ static void handleEvent(const xcb_generic_event_t *event) } #endif -#ifdef _WIN32 +// Main entry point +#if defined(_WIN32) +// Windows entry point int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow) -#else +#elif defined(__ANDROID__) +// Android entry point +void android_main(android_app* state) +#elif defined(__linux__) +// Linux entry point int main(const int argc, const char *argv[]) #endif { +#if defined(__ANDROID__) + // Removing this may cause the compiler to omit the main entry point + // which would make the application crash at start + app_dummy(); +#endif vulkanExample = new VulkanExample(); -#ifdef _WIN32 +#if defined(_WIN32) vulkanExample->setupWindow(hInstance, WndProc); -#else +#elif defined(__ANDROID__) + // Attach vulkan example to global android application state + state->userData = vulkanExample; + state->onAppCmd = VulkanExample::handleAppCommand; + state->onInputEvent = VulkanExample::handleAppInput; + vulkanExample->androidApp = state; +#elif defined(__linux__) vulkanExample->setupWindow(); #endif +#if !defined(__ANDROID__) vulkanExample->initSwapchain(); vulkanExample->prepare(); +#endif vulkanExample->renderLoop(); +#if !defined(__ANDROID__) delete(vulkanExample); return 0; -} +#endif +} \ No newline at end of file diff --git a/texturecubemap/texturecubemap.cpp b/texturecubemap/texturecubemap.cpp index bd3c2480..8eabca90 100644 --- a/texturecubemap/texturecubemap.cpp +++ b/texturecubemap/texturecubemap.cpp @@ -103,18 +103,32 @@ public: vkTools::destroyUniformData(device, &uniformData.skyboxVS); } - void loadTexture(const char* filename, VkFormat format, bool forceLinearTiling) + void loadCubemap(std::string filename, VkFormat format, bool forceLinearTiling) { - VkFormatProperties formatProperties; - VkResult err; +#if defined(__ANDROID__) + // Textures are stored inside the apk on Android (compressed) + // So they need to be loaded via the asset manager + AAsset* asset = AAssetManager_open(androidApp->activity->assetManager, filename.c_str(), AASSET_MODE_STREAMING); + assert(asset); + size_t size = AAsset_getLength(asset); + assert(size > 0); + void *textureData = malloc(size); + AAsset_read(asset, textureData, size); + AAsset_close(asset); + + gli::textureCube texCube(gli::load((const char*)textureData, size)); +#else gli::textureCube texCube(gli::load(filename)); +#endif + assert(!texCube.empty()); cubeMap.width = texCube[0].dimensions().x; cubeMap.height = texCube[0].dimensions().y; // Get device properites for the requested texture format + VkFormatProperties formatProperties; vkGetPhysicalDeviceFormatProperties(physicalDevice, format, &formatProperties); VkImageCreateInfo imageCreateInfo = vkTools::initializers::imageCreateInfo(); @@ -145,7 +159,7 @@ public: cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY, 1); - err = vkAllocateCommandBuffers(device, &cmdBufAlllocatInfo, &cmdBuffer); + VkResult err = vkAllocateCommandBuffers(device, &cmdBufAlllocatInfo, &cmdBuffer); assert(!err); VkCommandBufferBeginInfo cmdBufInfo = @@ -420,8 +434,8 @@ public: void loadMeshes() { - loadMesh("./../data/models/sphere.obj", &meshes.object, vertexLayout, 0.05f); - loadMesh("./../data/models/cube.obj", &meshes.skybox, vertexLayout, 0.05f); + loadMesh(getAssetPath() + "models/sphere.obj", &meshes.object, vertexLayout, 0.05f); + loadMesh(getAssetPath() + "models/cube.obj", &meshes.skybox, vertexLayout, 0.05f); } void setupVertexDescriptions() @@ -627,8 +641,8 @@ public: // Skybox pipeline (background cube) std::array shaderStages; - shaderStages[0] = loadShader("./../data/shaders/cubemap/skybox.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); - shaderStages[1] = loadShader("./../data/shaders/cubemap/skybox.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[0] = loadShader(getAssetPath() + "shaders/cubemap/skybox.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[1] = loadShader(getAssetPath() + "shaders/cubemap/skybox.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); VkGraphicsPipelineCreateInfo pipelineCreateInfo = vkTools::initializers::pipelineCreateInfo( @@ -651,8 +665,8 @@ public: assert(!err); // Cube map reflect pipeline - shaderStages[0] = loadShader("./../data/shaders/cubemap/reflect.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); - shaderStages[1] = loadShader("./../data/shaders/cubemap/reflect.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); + shaderStages[0] = loadShader(getAssetPath() + "shaders/cubemap/reflect.vert.spv", VK_SHADER_STAGE_VERTEX_BIT); + shaderStages[1] = loadShader(getAssetPath() + "shaders/cubemap/reflect.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT); depthStencilState.depthWriteEnable = VK_TRUE; err = vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.reflect); assert(!err); @@ -721,8 +735,8 @@ public: loadMeshes(); setupVertexDescriptions(); prepareUniformBuffers(); - loadTexture( - "./../data/textures/cubemap_yokohama.ktx", + loadCubemap( + getAssetPath() + "textures/cubemap_yokohama.ktx", VK_FORMAT_BC3_UNORM_BLOCK, false); setupDescriptorSetLayout(); @@ -751,8 +765,7 @@ public: VulkanExample *vulkanExample; -#ifdef _WIN32 - +#if defined(_WIN32) LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (vulkanExample != NULL) @@ -761,9 +774,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) } return (DefWindowProc(hWnd, uMsg, wParam, lParam)); } - -#else - +#elif defined(__linux__) && !defined(__ANDROID__) static void handleEvent(const xcb_generic_event_t *event) { if (vulkanExample != NULL) @@ -773,21 +784,42 @@ static void handleEvent(const xcb_generic_event_t *event) } #endif -#ifdef _WIN32 +// Main entry point +#if defined(_WIN32) +// Windows entry point int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow) -#else +#elif defined(__ANDROID__) +// Android entry point +void android_main(android_app* state) +#elif defined(__linux__) +// Linux entry point int main(const int argc, const char *argv[]) #endif { +#if defined(__ANDROID__) + // Removing this may cause the compiler to omit the main entry point + // which would make the application crash at start + app_dummy(); +#endif vulkanExample = new VulkanExample(); -#ifdef _WIN32 +#if defined(_WIN32) vulkanExample->setupWindow(hInstance, WndProc); -#else +#elif defined(__ANDROID__) + // Attach vulkan example to global android application state + state->userData = vulkanExample; + state->onAppCmd = VulkanExample::handleAppCommand; + state->onInputEvent = VulkanExample::handleAppInput; + vulkanExample->androidApp = state; +#elif defined(__linux__) vulkanExample->setupWindow(); #endif +#if !defined(__ANDROID__) vulkanExample->initSwapchain(); vulkanExample->prepare(); +#endif vulkanExample->renderLoop(); +#if !defined(__ANDROID__) delete(vulkanExample); return 0; -} +#endif +} \ No newline at end of file