├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── LICENSE ├── README.md ├── android ├── .gitignore ├── app │ ├── CMakeLists.txt │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── base ├── CMakeLists.txt ├── VulkanAndroid.cpp ├── VulkanAndroid.h ├── VulkanDevice.hpp ├── VulkanExampleBase.cpp ├── VulkanExampleBase.h ├── VulkanSwapChain.hpp ├── VulkanTexture.hpp ├── VulkanglTFModel.hpp ├── camera.hpp ├── json.hpp ├── keycodes.hpp ├── macros.h ├── stb_image.h └── tiny_gltf.h ├── cmake ├── FindWayland.cmake └── FindXCB.cmake ├── data ├── models │ ├── AnimatedMorphCube │ │ ├── README.md │ │ ├── glTF-Binary │ │ │ └── AnimatedMorphCube.glb │ │ ├── glTF │ │ │ ├── AnimatedMorphCube.bin │ │ │ └── AnimatedMorphCube.gltf │ │ └── screenshot │ │ │ └── screenshot.gif │ ├── AnimatedMorphSphere │ │ ├── README.md │ │ ├── glTF-Binary │ │ │ └── AnimatedMorphSphere.glb │ │ ├── glTF │ │ │ ├── AnimatedMorphSphere.bin │ │ │ └── AnimatedMorphSphere.gltf │ │ └── screenshot │ │ │ └── screenshot.gif │ ├── fourCube │ │ ├── fourCube.bin │ │ ├── fourCube.blend │ │ └── fourCube.gltf │ ├── heart │ │ ├── scene.bin │ │ ├── scene.gltf │ │ └── textures │ │ │ ├── Basic33s_baseColor.png │ │ │ ├── Basic33s_metallicRoughness.png │ │ │ └── Basic33s_normal.png │ ├── threeCube │ │ ├── threeCube.bin │ │ ├── threeCube.blend │ │ └── threeCube.gltf │ ├── twoCube │ │ ├── twoCube.bin │ │ ├── twoCube.gltf │ │ ├── twoCubeLinear.bin │ │ └── twoCubeLinear.gltf │ └── twoCubeMorph │ │ ├── twoCubeMorph.bin │ │ └── twoCubeMorph.gltf └── shaders │ ├── morph.frag │ ├── morph.frag.spv │ ├── morph.vert │ ├── morph.vert.spv │ ├── normal.vert │ └── normal.vert.spv ├── external └── vulkan │ ├── GLSL.std.450.h │ ├── spirv.h │ ├── spirv.hpp │ ├── spirv.hpp11 │ ├── spirv.json │ ├── spirv.lua │ ├── spirv.py │ ├── vk_icd.h │ ├── vk_layer.h │ ├── vk_layer_dispatch_table.h │ ├── vk_platform.h │ ├── vk_sdk_platform.h │ └── vulkan.h ├── libs └── vulkan │ ├── libvulkan.so │ └── vulkan-1.lib ├── screenshots ├── cubeDemo.gif └── fourCubeDemo.gif └── src ├── CMakeLists.txt └── main.cpp /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/.gitmodules -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/CMakeLists.txt -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/README.md -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/.gitignore -------------------------------------------------------------------------------- /android/app/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/app/CMakeLists.txt -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/app/build.gradle -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/app/proguard-rules.pro -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/app/src/main/AndroidManifest.xml -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/build.gradle -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /android/gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/gradlew -------------------------------------------------------------------------------- /android/gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/android/gradlew.bat -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /base/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/CMakeLists.txt -------------------------------------------------------------------------------- /base/VulkanAndroid.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/VulkanAndroid.cpp -------------------------------------------------------------------------------- /base/VulkanAndroid.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/VulkanAndroid.h -------------------------------------------------------------------------------- /base/VulkanDevice.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/VulkanDevice.hpp -------------------------------------------------------------------------------- /base/VulkanExampleBase.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/VulkanExampleBase.cpp -------------------------------------------------------------------------------- /base/VulkanExampleBase.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/VulkanExampleBase.h -------------------------------------------------------------------------------- /base/VulkanSwapChain.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/VulkanSwapChain.hpp -------------------------------------------------------------------------------- /base/VulkanTexture.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/VulkanTexture.hpp -------------------------------------------------------------------------------- /base/VulkanglTFModel.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/VulkanglTFModel.hpp -------------------------------------------------------------------------------- /base/camera.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/camera.hpp -------------------------------------------------------------------------------- /base/json.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/json.hpp -------------------------------------------------------------------------------- /base/keycodes.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/keycodes.hpp -------------------------------------------------------------------------------- /base/macros.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/macros.h -------------------------------------------------------------------------------- /base/stb_image.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/stb_image.h -------------------------------------------------------------------------------- /base/tiny_gltf.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/base/tiny_gltf.h -------------------------------------------------------------------------------- /cmake/FindWayland.cmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/cmake/FindWayland.cmake -------------------------------------------------------------------------------- /cmake/FindXCB.cmake: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/cmake/FindXCB.cmake -------------------------------------------------------------------------------- /data/models/AnimatedMorphCube/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphCube/README.md -------------------------------------------------------------------------------- /data/models/AnimatedMorphCube/glTF-Binary/AnimatedMorphCube.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphCube/glTF-Binary/AnimatedMorphCube.glb -------------------------------------------------------------------------------- /data/models/AnimatedMorphCube/glTF/AnimatedMorphCube.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphCube/glTF/AnimatedMorphCube.bin -------------------------------------------------------------------------------- /data/models/AnimatedMorphCube/glTF/AnimatedMorphCube.gltf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphCube/glTF/AnimatedMorphCube.gltf -------------------------------------------------------------------------------- /data/models/AnimatedMorphCube/screenshot/screenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphCube/screenshot/screenshot.gif -------------------------------------------------------------------------------- /data/models/AnimatedMorphSphere/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphSphere/README.md -------------------------------------------------------------------------------- /data/models/AnimatedMorphSphere/glTF-Binary/AnimatedMorphSphere.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphSphere/glTF-Binary/AnimatedMorphSphere.glb -------------------------------------------------------------------------------- /data/models/AnimatedMorphSphere/glTF/AnimatedMorphSphere.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphSphere/glTF/AnimatedMorphSphere.bin -------------------------------------------------------------------------------- /data/models/AnimatedMorphSphere/glTF/AnimatedMorphSphere.gltf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphSphere/glTF/AnimatedMorphSphere.gltf -------------------------------------------------------------------------------- /data/models/AnimatedMorphSphere/screenshot/screenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/AnimatedMorphSphere/screenshot/screenshot.gif -------------------------------------------------------------------------------- /data/models/fourCube/fourCube.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/fourCube/fourCube.bin -------------------------------------------------------------------------------- /data/models/fourCube/fourCube.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/fourCube/fourCube.blend -------------------------------------------------------------------------------- /data/models/fourCube/fourCube.gltf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/fourCube/fourCube.gltf -------------------------------------------------------------------------------- /data/models/heart/scene.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/heart/scene.bin -------------------------------------------------------------------------------- /data/models/heart/scene.gltf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/heart/scene.gltf -------------------------------------------------------------------------------- /data/models/heart/textures/Basic33s_baseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/heart/textures/Basic33s_baseColor.png -------------------------------------------------------------------------------- /data/models/heart/textures/Basic33s_metallicRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/heart/textures/Basic33s_metallicRoughness.png -------------------------------------------------------------------------------- /data/models/heart/textures/Basic33s_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/heart/textures/Basic33s_normal.png -------------------------------------------------------------------------------- /data/models/threeCube/threeCube.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/threeCube/threeCube.bin -------------------------------------------------------------------------------- /data/models/threeCube/threeCube.blend: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/threeCube/threeCube.blend -------------------------------------------------------------------------------- /data/models/threeCube/threeCube.gltf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/threeCube/threeCube.gltf -------------------------------------------------------------------------------- /data/models/twoCube/twoCube.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/twoCube/twoCube.bin -------------------------------------------------------------------------------- /data/models/twoCube/twoCube.gltf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/twoCube/twoCube.gltf -------------------------------------------------------------------------------- /data/models/twoCube/twoCubeLinear.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/twoCube/twoCubeLinear.bin -------------------------------------------------------------------------------- /data/models/twoCube/twoCubeLinear.gltf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/twoCube/twoCubeLinear.gltf -------------------------------------------------------------------------------- /data/models/twoCubeMorph/twoCubeMorph.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/twoCubeMorph/twoCubeMorph.bin -------------------------------------------------------------------------------- /data/models/twoCubeMorph/twoCubeMorph.gltf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/models/twoCubeMorph/twoCubeMorph.gltf -------------------------------------------------------------------------------- /data/shaders/morph.frag: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/shaders/morph.frag -------------------------------------------------------------------------------- /data/shaders/morph.frag.spv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/shaders/morph.frag.spv -------------------------------------------------------------------------------- /data/shaders/morph.vert: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/shaders/morph.vert -------------------------------------------------------------------------------- /data/shaders/morph.vert.spv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/shaders/morph.vert.spv -------------------------------------------------------------------------------- /data/shaders/normal.vert: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/shaders/normal.vert -------------------------------------------------------------------------------- /data/shaders/normal.vert.spv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/data/shaders/normal.vert.spv -------------------------------------------------------------------------------- /external/vulkan/GLSL.std.450.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/GLSL.std.450.h -------------------------------------------------------------------------------- /external/vulkan/spirv.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/spirv.h -------------------------------------------------------------------------------- /external/vulkan/spirv.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/spirv.hpp -------------------------------------------------------------------------------- /external/vulkan/spirv.hpp11: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/spirv.hpp11 -------------------------------------------------------------------------------- /external/vulkan/spirv.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/spirv.json -------------------------------------------------------------------------------- /external/vulkan/spirv.lua: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/spirv.lua -------------------------------------------------------------------------------- /external/vulkan/spirv.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/spirv.py -------------------------------------------------------------------------------- /external/vulkan/vk_icd.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/vk_icd.h -------------------------------------------------------------------------------- /external/vulkan/vk_layer.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/vk_layer.h -------------------------------------------------------------------------------- /external/vulkan/vk_layer_dispatch_table.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/vk_layer_dispatch_table.h -------------------------------------------------------------------------------- /external/vulkan/vk_platform.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/vk_platform.h -------------------------------------------------------------------------------- /external/vulkan/vk_sdk_platform.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/vk_sdk_platform.h -------------------------------------------------------------------------------- /external/vulkan/vulkan.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/external/vulkan/vulkan.h -------------------------------------------------------------------------------- /libs/vulkan/libvulkan.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/libs/vulkan/libvulkan.so -------------------------------------------------------------------------------- /libs/vulkan/vulkan-1.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/libs/vulkan/vulkan-1.lib -------------------------------------------------------------------------------- /screenshots/cubeDemo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/screenshots/cubeDemo.gif -------------------------------------------------------------------------------- /screenshots/fourCubeDemo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/screenshots/fourCubeDemo.gif -------------------------------------------------------------------------------- /src/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/src/CMakeLists.txt -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sjfricke/Vulkan-glTF-Morph-Target/HEAD/src/main.cpp --------------------------------------------------------------------------------