Updates to iOS and macOS functionality using MoltenVK.
Use getAssetPath() instead of ASSET_PATH to support broader range of platforms. Multisampling example determines sample rate from device at runtime. Move example wrapper code from DemoViewController.mm to dedicated MVKExample.cpp file. Remove AssImp libraries for iOS and macOS from repo, and add instructions for generating them from AssImp source files. Update general README.md file to mention support for iOS and macOS platforms. Add Apple logo for README.md. Update Vulkan logo to current registered TM logo. Update copyright notice of MoltenVK example files to MIT license. Examples use +/- on main keyboard, instead of numpad.
This commit is contained in:
parent
8b30d7b5fd
commit
96601494d5
27 changed files with 317 additions and 159 deletions
|
|
@ -33,6 +33,10 @@ Note that you need [assimp](https://github.com/assimp/assimp) in order to compil
|
||||||
|
|
||||||
Building on Android is done using the [Android NDK](http://developer.android.com/tools/sdk/ndk/index.html) and requires a device that supports Vulkan. Please see the [Android readme](./android/README.md) on how to build and deploy the examples.
|
Building on Android is done using the [Android NDK](http://developer.android.com/tools/sdk/ndk/index.html) and requires a device that supports Vulkan. Please see the [Android readme](./android/README.md) on how to build and deploy the examples.
|
||||||
|
|
||||||
|
## <img src="./images/applelogo.png" alt="" height="32px"> [iOS and macOS](xcode/)
|
||||||
|
|
||||||
|
Building for *iOS* and *macOS* is done using the [examples](xcode/examples.xcodeproj) *Xcode* project found in the [xcode](xcode) directory. These examples use the [**MoltenVK**](https://moltengl.com/moltenvk) Vulkan driver to provide Vulkan support on *iOS* and *macOS*, and require an *iOS* or *macOS* device that supports *Metal*. Please see the [MoltenVK Examples readme](xcode/README_MoltenVK_Examples.md) for more info on acquiring **MoltenVK** and building and deploying the examples on *iOS* and *macOS*.
|
||||||
|
|
||||||
## Additional asset pack
|
## Additional asset pack
|
||||||
|
|
||||||
**Note:** Binary assets (textures, models) will no longer be added directly to the repository to keep it's size down, so newer examples will require the download of an [additional asset pack](data/README.md).
|
**Note:** Binary assets (textures, models) will no longer be added directly to the repository to keep it's size down, so newer examples will require the download of an [additional asset pack](data/README.md).
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@
|
||||||
|
|
||||||
#elif defined(VK_USE_PLATFORM_IOS_MVK)
|
#elif defined(VK_USE_PLATFORM_IOS_MVK)
|
||||||
// Use numeric keys instead of function keys.
|
// Use numeric keys instead of function keys.
|
||||||
|
// Use main keyboard plus/minus instead of keypad plus/minus
|
||||||
// Use Delete key instead of Escape key.
|
// Use Delete key instead of Escape key.
|
||||||
#define KEY_ESCAPE 0x33
|
#define KEY_ESCAPE 0x33
|
||||||
#define KEY_F1 '1'
|
#define KEY_F1 '1'
|
||||||
|
|
@ -77,8 +78,9 @@
|
||||||
#define KEY_T 't'
|
#define KEY_T 't'
|
||||||
|
|
||||||
#elif defined(VK_USE_PLATFORM_MACOS_MVK)
|
#elif defined(VK_USE_PLATFORM_MACOS_MVK)
|
||||||
// For iOS UX compatibility:
|
// For compatibility with iOS UX and absent keypad on MacBook:
|
||||||
// - Use numeric keys instead of function keys
|
// - Use numeric keys instead of function keys
|
||||||
|
// - Use main keyboard plus/minus instead of keypad plus/minus
|
||||||
// - Use Delete key instead of Escape key
|
// - Use Delete key instead of Escape key
|
||||||
#define KEY_ESCAPE 0x33
|
#define KEY_ESCAPE 0x33
|
||||||
#define KEY_F1 0x12
|
#define KEY_F1 0x12
|
||||||
|
|
@ -91,8 +93,8 @@
|
||||||
#define KEY_D 0x02
|
#define KEY_D 0x02
|
||||||
#define KEY_P 0x23
|
#define KEY_P 0x23
|
||||||
#define KEY_SPACE 0x31
|
#define KEY_SPACE 0x31
|
||||||
#define KEY_KPADD 0x45
|
#define KEY_KPADD 0x18
|
||||||
#define KEY_KPSUB 0x4E
|
#define KEY_KPSUB 0x1B
|
||||||
#define KEY_B 0x0B
|
#define KEY_B 0x0B
|
||||||
#define KEY_F 0x03
|
#define KEY_F 0x03
|
||||||
#define KEY_L 0x25
|
#define KEY_L 0x25
|
||||||
|
|
|
||||||
|
|
@ -606,7 +606,7 @@ public:
|
||||||
std::vector<std::string> filenames = { "geosphere.obj", "teapot.dae", "torusknot.obj", "venus.fbx" };
|
std::vector<std::string> filenames = { "geosphere.obj", "teapot.dae", "torusknot.obj", "venus.fbx" };
|
||||||
for (auto file : filenames) {
|
for (auto file : filenames) {
|
||||||
vks::Model model;
|
vks::Model model;
|
||||||
model.loadFromFile(ASSET_PATH "models/" + file, vertexLayout, 0.05f * (file == "venus.fbx" ? 3.0f : 1.0f), vulkanDevice, queue);
|
model.loadFromFile(getAssetPath() + "models/" + file, vertexLayout, 0.05f * (file == "venus.fbx" ? 3.0f : 1.0f), vulkanDevice, queue);
|
||||||
models.objects.push_back(model);
|
models.objects.push_back(model);
|
||||||
}
|
}
|
||||||
// Load HDR cube map
|
// Load HDR cube map
|
||||||
|
|
|
||||||
BIN
images/applelogo.png
Normal file
BIN
images/applelogo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 19 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -11,6 +11,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#define GLM_FORCE_RADIANS
|
#define GLM_FORCE_RADIANS
|
||||||
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
|
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
|
||||||
|
|
@ -25,7 +26,6 @@
|
||||||
|
|
||||||
#define VERTEX_BUFFER_BIND_ID 0
|
#define VERTEX_BUFFER_BIND_ID 0
|
||||||
#define ENABLE_VALIDATION false
|
#define ENABLE_VALIDATION false
|
||||||
#define SAMPLE_COUNT VK_SAMPLE_COUNT_8_BIT
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
struct {
|
struct {
|
||||||
|
|
@ -44,6 +44,7 @@ class VulkanExample : public VulkanExampleBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool useSampleShading = false;
|
bool useSampleShading = false;
|
||||||
|
VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_1_BIT;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
vks::Texture2D colorMap;
|
vks::Texture2D colorMap;
|
||||||
|
|
@ -123,7 +124,7 @@ public:
|
||||||
void setupMultisampleTarget()
|
void setupMultisampleTarget()
|
||||||
{
|
{
|
||||||
// Check if device supports requested sample count for color and depth frame buffer
|
// Check if device supports requested sample count for color and depth frame buffer
|
||||||
assert((deviceProperties.limits.framebufferColorSampleCounts >= SAMPLE_COUNT) && (deviceProperties.limits.framebufferDepthSampleCounts >= SAMPLE_COUNT));
|
assert((deviceProperties.limits.framebufferColorSampleCounts >= sampleCount) && (deviceProperties.limits.framebufferDepthSampleCounts >= sampleCount));
|
||||||
|
|
||||||
// Color target
|
// Color target
|
||||||
VkImageCreateInfo info = vks::initializers::imageCreateInfo();
|
VkImageCreateInfo info = vks::initializers::imageCreateInfo();
|
||||||
|
|
@ -136,7 +137,7 @@ public:
|
||||||
info.arrayLayers = 1;
|
info.arrayLayers = 1;
|
||||||
info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
||||||
info.tiling = VK_IMAGE_TILING_OPTIMAL;
|
info.tiling = VK_IMAGE_TILING_OPTIMAL;
|
||||||
info.samples = SAMPLE_COUNT;
|
info.samples = sampleCount;
|
||||||
// Image will only be used as a transient target
|
// Image will only be used as a transient target
|
||||||
info.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
|
info.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
|
||||||
info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||||
|
|
@ -184,7 +185,7 @@ public:
|
||||||
info.arrayLayers = 1;
|
info.arrayLayers = 1;
|
||||||
info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
info.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
|
||||||
info.tiling = VK_IMAGE_TILING_OPTIMAL;
|
info.tiling = VK_IMAGE_TILING_OPTIMAL;
|
||||||
info.samples = SAMPLE_COUNT;
|
info.samples = sampleCount;
|
||||||
// Image will only be used as a transient target
|
// Image will only be used as a transient target
|
||||||
info.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
|
info.usage = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT;
|
||||||
info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
info.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
||||||
|
|
@ -230,7 +231,7 @@ public:
|
||||||
|
|
||||||
// Multisampled attachment that we render to
|
// Multisampled attachment that we render to
|
||||||
attachments[0].format = swapChain.colorFormat;
|
attachments[0].format = swapChain.colorFormat;
|
||||||
attachments[0].samples = SAMPLE_COUNT;
|
attachments[0].samples = sampleCount;
|
||||||
attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
attachments[0].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||||
// No longer required after resolve, this may save some bandwidth on certain GPUs
|
// No longer required after resolve, this may save some bandwidth on certain GPUs
|
||||||
attachments[0].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
attachments[0].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
||||||
|
|
@ -252,7 +253,7 @@ public:
|
||||||
|
|
||||||
// Multisampled depth attachment we render to
|
// Multisampled depth attachment we render to
|
||||||
attachments[2].format = depthFormat;
|
attachments[2].format = depthFormat;
|
||||||
attachments[2].samples = SAMPLE_COUNT;
|
attachments[2].samples = sampleCount;
|
||||||
attachments[2].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
attachments[2].loadOp = VK_ATTACHMENT_LOAD_OP_CLEAR;
|
||||||
attachments[2].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
attachments[2].storeOp = VK_ATTACHMENT_STORE_OP_DONT_CARE;
|
||||||
attachments[2].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
attachments[2].stencilLoadOp = VK_ATTACHMENT_LOAD_OP_DONT_CARE;
|
||||||
|
|
@ -630,7 +631,7 @@ public:
|
||||||
shaderStages[0] = loadShader(getAssetPath() + "shaders/mesh/mesh.vert.spv", VK_SHADER_STAGE_VERTEX_BIT);
|
shaderStages[0] = loadShader(getAssetPath() + "shaders/mesh/mesh.vert.spv", VK_SHADER_STAGE_VERTEX_BIT);
|
||||||
shaderStages[1] = loadShader(getAssetPath() + "shaders/mesh/mesh.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT);
|
shaderStages[1] = loadShader(getAssetPath() + "shaders/mesh/mesh.frag.spv", VK_SHADER_STAGE_FRAGMENT_BIT);
|
||||||
// Setup multi sampling
|
// Setup multi sampling
|
||||||
multisampleState.rasterizationSamples = SAMPLE_COUNT; // Number of samples to use for rasterization
|
multisampleState.rasterizationSamples = sampleCount; // Number of samples to use for rasterization
|
||||||
|
|
||||||
VK_CHECK_RESULT(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.MSAA));
|
VK_CHECK_RESULT(vkCreateGraphicsPipelines(device, pipelineCache, 1, &pipelineCreateInfo, nullptr, &pipelines.MSAA));
|
||||||
|
|
||||||
|
|
@ -693,6 +694,7 @@ public:
|
||||||
|
|
||||||
void prepare()
|
void prepare()
|
||||||
{
|
{
|
||||||
|
setSampleCount();
|
||||||
VulkanExampleBase::prepare();
|
VulkanExampleBase::prepare();
|
||||||
loadAssets();
|
loadAssets();
|
||||||
setupVertexDescriptions();
|
setupVertexDescriptions();
|
||||||
|
|
@ -733,6 +735,16 @@ public:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Determine the maximum sample count usable by the platform
|
||||||
|
void setSampleCount()
|
||||||
|
{
|
||||||
|
VkSampleCountFlags flags = std::min(deviceProperties.limits.framebufferColorSampleCounts,
|
||||||
|
deviceProperties.limits.framebufferDepthSampleCounts);
|
||||||
|
// Extract the value of the high-order bit of the flags
|
||||||
|
sampleCount = (VkSampleCountFlagBits)(flags ? (1 << (fls(flags) - 1)) : 0);
|
||||||
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
VULKAN_EXAMPLE_MAIN()
|
VULKAN_EXAMPLE_MAIN()
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,7 @@ public:
|
||||||
void loadTexture()
|
void loadTexture()
|
||||||
{
|
{
|
||||||
// We use the Khronos texture format (https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/)
|
// We use the Khronos texture format (https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/)
|
||||||
std::string filename = ASSET_PATH "textures/metalplate01_rgba.ktx";
|
std::string filename = getAssetPath() + "textures/metalplate01_rgba.ktx";
|
||||||
// Texture data contains 4 channels (RGBA) with unnormalized 8-bit values, this is the most commonly supported format
|
// Texture data contains 4 channels (RGBA) with unnormalized 8-bit values, this is the most commonly supported format
|
||||||
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
|
VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
|
||||||
|
|
||||||
|
|
|
||||||
30
xcode/MVKExample.cpp
Normal file
30
xcode/MVKExample.cpp
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*
|
||||||
|
* MVKExample.cpp
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "MVKExample.h"
|
||||||
|
#include "examples.h"
|
||||||
|
|
||||||
|
void MVKExample::renderFrame() {
|
||||||
|
_vulkanExample->renderFrame();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MVKExample::keyPressed(uint32_t keyCode) {
|
||||||
|
_vulkanExample->keyPressed(keyCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
MVKExample::MVKExample(void* view) {
|
||||||
|
_vulkanExample = new VulkanExample();
|
||||||
|
_vulkanExample->initVulkan();
|
||||||
|
_vulkanExample->setupWindow(view);
|
||||||
|
_vulkanExample->initSwapchain();
|
||||||
|
_vulkanExample->prepare();
|
||||||
|
}
|
||||||
|
|
||||||
|
MVKExample::~MVKExample() {
|
||||||
|
delete _vulkanExample;
|
||||||
|
}
|
||||||
27
xcode/MVKExample.h
Normal file
27
xcode/MVKExample.h
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
/*
|
||||||
|
* MVKExample.h
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "vulkanexamplebase.h"
|
||||||
|
|
||||||
|
// Wrapper class for the SW VulkanExample instance.
|
||||||
|
class MVKExample {
|
||||||
|
|
||||||
|
public:
|
||||||
|
void renderFrame();
|
||||||
|
void keyPressed(uint32_t keyCode);
|
||||||
|
|
||||||
|
MVKExample(void* view);
|
||||||
|
~MVKExample();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
VulkanExampleBase* _vulkanExample;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -4,7 +4,8 @@
|
||||||
|
|
||||||
#MoltenVK Vulkan Examples
|
#MoltenVK Vulkan Examples
|
||||||
|
|
||||||
Copyright (c) 2014-2017 [The Brenwill Workshop Ltd.](http://www.brenwill.com) All rights reserved.
|
Copyright (c) 2016-2017 [The Brenwill Workshop Ltd.](http://www.brenwill.com).
|
||||||
|
This document is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
|
|
||||||
*This document is written in [Markdown](http://en.wikipedia.org/wiki/Markdown) format.
|
*This document is written in [Markdown](http://en.wikipedia.org/wiki/Markdown) format.
|
||||||
For best results, use a Markdown reader.*
|
For best results, use a Markdown reader.*
|
||||||
|
|
@ -27,6 +28,9 @@ Installing MoltenVK
|
||||||
|
|
||||||
The examples in this repository can be run on *iOS* and *macOS* by using
|
The examples in this repository can be run on *iOS* and *macOS* by using
|
||||||
the [**MoltenVK**](http://www.moltengl.com/moltenvk/) *Vulkan* driver.
|
the [**MoltenVK**](http://www.moltengl.com/moltenvk/) *Vulkan* driver.
|
||||||
|
|
||||||
|
These examples require **MoltenVK 0.18.0** or greater.
|
||||||
|
|
||||||
Follow these instructions to install **MoltenVK**:
|
Follow these instructions to install **MoltenVK**:
|
||||||
|
|
||||||
1. [Download](https://moltengl.com/free-trial/) the **Molten** free evaluation trial.
|
1. [Download](https://moltengl.com/free-trial/) the **Molten** free evaluation trial.
|
||||||
|
|
@ -45,6 +49,72 @@ Follow these instructions to install **MoltenVK**:
|
||||||
ln -s path-to-Molten-package/MoltenVK
|
ln -s path-to-Molten-package/MoltenVK
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a name="installing-assimp"></a>
|
||||||
|
|
||||||
|
Installing AssImp
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
The examples in this repository make use of the [*AssImp*](http://assimp.sourceforge.net)
|
||||||
|
library to load resource assets from files. To run the examples you must download and
|
||||||
|
install *AssImp* library as follows.
|
||||||
|
|
||||||
|
>***Note:*** Due to the way that *AssImp* makes use of the *CMake* utility, an installation
|
||||||
|
of *AssImp* can only be built for a single platform. To create *AssImp* libraries for both
|
||||||
|
*iOS* and *macOS*, download a separate copy of the *AssImp* directory for each platform
|
||||||
|
(or create a copy of the downloaded *AssImp* directory for each platform before building).
|
||||||
|
|
||||||
|
|
||||||
|
####iOS
|
||||||
|
|
||||||
|
1. Download [AssImp 3.3.1](https://github.com/assimp/assimp/releases/tag/v3.3.1/).
|
||||||
|
|
||||||
|
2. Unzip and rename the directory to `assimp-3.3.1-ios`.
|
||||||
|
|
||||||
|
3. Open the file `assimp-3.3.1-ios/port/iOS/IPHONEOS_ARM64_TOOLCHAIN.cmake` file and comment
|
||||||
|
out the following lines:
|
||||||
|
|
||||||
|
#SET (CC "${DEVROOT}/usr/bin/llvm-gcc")
|
||||||
|
#SET (CXX "${DEVROOT}/usr/bin/llvm-g++")
|
||||||
|
#CMAKE_FORCE_C_COMPILER (${CC} LLVM)
|
||||||
|
#CMAKE_FORCE_CXX_COMPILER (${CXX} LLVM)
|
||||||
|
|
||||||
|
4. Open a *Terminal* session and navigate to the `assimp-3.3.1-ios/port/iOS` directory,
|
||||||
|
and run the following build command:
|
||||||
|
|
||||||
|
cd path-to-assimp-3.3.1-ios/port/iOS
|
||||||
|
./build.sh --stdlib=libc++ --archs="arm64" --no-fat
|
||||||
|
|
||||||
|
5. In the `assimp` directory within this directory, remove the existing `assimp-ios`
|
||||||
|
symbolic link, and create a new symbolic link pointing to the `assimp-3.3.1-ios` directory:
|
||||||
|
|
||||||
|
cd path-to-this-directory/assimp
|
||||||
|
rm assimp-ios
|
||||||
|
ln -s path-to-assimp-3.3.1-ios assimp-ios
|
||||||
|
|
||||||
|
|
||||||
|
####macOS
|
||||||
|
|
||||||
|
1. Download [AssImp 3.3.1](https://github.com/assimp/assimp/releases/tag/v3.3.1/).
|
||||||
|
|
||||||
|
2. Unzip and rename the directory to `assimp-3.3.1-macos`.
|
||||||
|
|
||||||
|
3. Open a *Terminal* session and navigate to the `assimp-3.3.1-ios/port/macOS` directory,
|
||||||
|
and run the following build commands:
|
||||||
|
|
||||||
|
cd path-to-assimp-3.3.1-macos
|
||||||
|
cmake CMakeLists.txt -G 'Unix Makefiles'
|
||||||
|
make
|
||||||
|
|
||||||
|
4. In the `assimp` directory within this directory, remove the existing `assimp-macos`
|
||||||
|
symbolic link, and create a new symbolic link pointing to the `assimp-3.3.1-macos` directory:
|
||||||
|
|
||||||
|
cd path-to-this-directory/assimp
|
||||||
|
rm assimp-macos
|
||||||
|
ln -s path-to-assimp-3.3.1-macos assimp-macos
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="running-examples"></a>
|
<a name="running-examples"></a>
|
||||||
|
|
||||||
Running the Vulkan Examples
|
Running the Vulkan Examples
|
||||||
|
|
@ -67,5 +137,6 @@ in this repository on either *iOS* or *macOS*. To do so, follow these instructio
|
||||||
|
|
||||||
- On *iOS*, tap on the scene to display the keyboard. Tap again on the scene to hide the keyboard.
|
- On *iOS*, tap on the scene to display the keyboard. Tap again on the scene to hide the keyboard.
|
||||||
- On both *iOS* and *macOS*, use the numeric keys (*1, 2, 3...*) instead of function keys (*F1, F2, F3...*).
|
- On both *iOS* and *macOS*, use the numeric keys (*1, 2, 3...*) instead of function keys (*F1, F2, F3...*).
|
||||||
|
- On both *iOS* and *macOS*, use the regular keyboard *+* and *-* keys instead of the numpad *+* and *-* keys.
|
||||||
- On both *iOS* and *macOS*, use the *delete* key instead of the *escape* key.
|
- On both *iOS* and *macOS*, use the *delete* key instead of the *escape* key.
|
||||||
|
|
||||||
|
|
|
||||||
1
xcode/assimp/assimp-ios
Symbolic link
1
xcode/assimp/assimp-ios
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
../../../assimp-3.3.1-ios
|
||||||
1
xcode/assimp/assimp-macos
Symbolic link
1
xcode/assimp/assimp-macos
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
../../../assimp-3.3.1-macos
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
/*
|
/*
|
||||||
* examples.h
|
* examples.h
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
|
*
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
|
||||||
* http://www.brenwill.com
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads the appropriate example code, as indicated by the appropriate compiler build setting below.
|
* Loads the appropriate example code, as indicated by the appropriate compiler build setting below.
|
||||||
*
|
*
|
||||||
* To select an example to run, define one (and only one) of the macros below, either by
|
* To select an example to run, define one (and only one) of the macros below, either by
|
||||||
|
|
@ -26,9 +24,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
// In the list below, the comments indicate entries that do not currently run correctly on
|
// In the list below, the comments indicate entries that,
|
||||||
// one or both of iOS and macOS, and the comment indicates the problem that is encountered.
|
// under certain conditions, that may not run as expected.
|
||||||
// Fixes are on the way.
|
|
||||||
|
|
||||||
|
|
||||||
// BASICS
|
// BASICS
|
||||||
|
|
@ -37,15 +34,18 @@
|
||||||
# include "../pipelines/pipelines.cpp"
|
# include "../pipelines/pipelines.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_texture // Bad access
|
#ifdef MVK_texture
|
||||||
# include "../texture/texture.cpp"
|
# include "../texture/texture.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_texturecubemap // mat4 passed as input
|
// Does not run. Metal does not support passing matrices between shader stages.
|
||||||
|
#ifdef MVK_texturecubemap
|
||||||
# include "../texturecubemap/texturecubemap.cpp"
|
# include "../texturecubemap/texturecubemap.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_texturearray // Buffer binding error
|
// Runs in Release mode. Does not run in Debug mode, as Metal validation will
|
||||||
|
// assert that UBO buffer length is too short for UBO size declared in shader.
|
||||||
|
#ifdef MVK_texturearray
|
||||||
# include "../texturearray/texturearray.cpp"
|
# include "../texturearray/texturearray.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -53,19 +53,20 @@
|
||||||
# include "../mesh/mesh.cpp"
|
# include "../mesh/mesh.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_dynamicuniformbuffer // Bad access
|
#ifdef MVK_dynamicuniformbuffer
|
||||||
# include "../dynamicuniformbuffer/dynamicuniformbuffer.cpp"
|
# include "../dynamicuniformbuffer/dynamicuniformbuffer.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_pushconstants // Array in shader stage_in breaks shader
|
// Does not run. Metal does not support passing arrays between shader stages.
|
||||||
|
#ifdef MVK_pushconstants
|
||||||
# include "../pushconstants/pushconstants.cpp"
|
# include "../pushconstants/pushconstants.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_specializationconstants // Specialization constants not recognized in shader
|
#ifdef MVK_specializationconstants
|
||||||
# include "../specializationconstants/specializationconstants.cpp"
|
# include "../specializationconstants/specializationconstants.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_offscreen // Bad access on iOS after 'd' key is pressed
|
#ifdef MVK_offscreen
|
||||||
# include "../offscreen/offscreen.cpp"
|
# include "../offscreen/offscreen.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -88,7 +89,7 @@
|
||||||
# include "../multithreading/multithreading.cpp"
|
# include "../multithreading/multithreading.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_scenerendering // Bad access on macOS
|
#ifdef MVK_scenerendering
|
||||||
# include "../scenerendering/scenerendering.cpp"
|
# include "../scenerendering/scenerendering.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -100,47 +101,54 @@
|
||||||
# include "../indirectdraw/indirectdraw.cpp"
|
# include "../indirectdraw/indirectdraw.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_hdr // mat4 passed as input
|
// Does not run. Metal does not support passing matrices between shader stages.
|
||||||
|
#ifdef MVK_hdr
|
||||||
# include "../hdr/hdr.cpp"
|
# include "../hdr/hdr.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_occlusionquery // Runs but exhausts 4096 capacity dynamic buffer
|
#ifdef MVK_occlusionquery
|
||||||
# include "../occlusionquery/occlusionquery.cpp"
|
# include "../occlusionquery/occlusionquery.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_texturemipmapgen // SPIRV->GLSL conversion error
|
// Does not run. Sampler arrays require Metal 2.
|
||||||
|
#ifdef MVK_texturemipmapgen
|
||||||
# include "../texturemipmapgen/texturemipmapgen.cpp"
|
# include "../texturemipmapgen/texturemipmapgen.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_multisampling // Multisampling too low on iOS
|
#ifdef MVK_multisampling
|
||||||
# include "../multisampling/multisampling.cpp"
|
# include "../multisampling/multisampling.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_shadowmapping // Bad access on iOS
|
#ifdef MVK_shadowmapping
|
||||||
# include "../shadowmapping/shadowmapping.cpp"
|
# include "../shadowmapping/shadowmapping.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_shadowmappingomni // Bad access on iOS
|
#ifdef MVK_shadowmappingomni
|
||||||
# include "../shadowmappingomni/shadowmappingomni.cpp"
|
# include "../shadowmappingomni/shadowmappingomni.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_skeletalanimation // Bad access on macOS
|
#ifdef MVK_skeletalanimation
|
||||||
# include "../skeletalanimation/skeletalanimation.cpp"
|
# include "../skeletalanimation/skeletalanimation.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_bloom // Bad access on iOS
|
#ifdef MVK_bloom
|
||||||
# include "../bloom/bloom.cpp"
|
# include "../bloom/bloom.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_deferred // buffer overload
|
// Runs in Release mode. Debug mode Metal validation will assert
|
||||||
|
// UBO buffer length is too short for UBO size declared in shader.
|
||||||
|
#ifdef MVK_deferred
|
||||||
# include "../deferred/deferred.cpp"
|
# include "../deferred/deferred.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_deferredshadows // Geometry shaders not available in Metal
|
// Does not run. Metal does not support geometry shaders.
|
||||||
|
#ifdef MVK_deferredshadows
|
||||||
# include "../deferredshadows/deferredshadows.cpp"
|
# include "../deferredshadows/deferredshadows.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_ssao // SPIRV->MSL conversion error
|
// Runs in Release mode, but does not display content.
|
||||||
|
// Metal does not support the use of specialization constants to set array lengths,
|
||||||
|
#ifdef MVK_ssao
|
||||||
# include "../ssao/ssao.cpp"
|
# include "../ssao/ssao.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -171,7 +179,7 @@
|
||||||
# include "../gears/gears.cpp"
|
# include "../gears/gears.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MVK_distancefieldfonts // Endless loop during loading on macOS
|
#ifdef MVK_distancefieldfonts
|
||||||
# include "../distancefieldfonts/distancefieldfonts.cpp"
|
# include "../distancefieldfonts/distancefieldfonts.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,6 @@
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
A91227C31E9D5F5100108018 /* libMoltenVK.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A91227C21E9D5F5100108018 /* libMoltenVK.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
|
||||||
A91227C41E9D5F8200108018 /* libMoltenVK.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A91227C21E9D5F5100108018 /* libMoltenVK.dylib */; };
|
|
||||||
A91227C71E9D5FE500108018 /* libassimp.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A91227C61E9D5FE500108018 /* libassimp.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
|
||||||
A91227C81E9D601900108018 /* libassimp.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A91227C61E9D5FE500108018 /* libassimp.dylib */; };
|
|
||||||
A945BCFC1E9D4E8700BA3EE2 /* MoltenVK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A945BCFB1E9D4E8700BA3EE2 /* MoltenVK.framework */; };
|
|
||||||
A94C8D601EA047B400B3CE07 /* vulkangear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */; };
|
A94C8D601EA047B400B3CE07 /* vulkangear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */; };
|
||||||
A94C8D611EA047B400B3CE07 /* vulkangear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */; };
|
A94C8D611EA047B400B3CE07 /* vulkangear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */; };
|
||||||
A951FF171E9C349000FA9144 /* VulkanDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF071E9C349000FA9144 /* VulkanDebug.cpp */; };
|
A951FF171E9C349000FA9144 /* VulkanDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF071E9C349000FA9144 /* VulkanDebug.cpp */; };
|
||||||
|
|
@ -20,8 +15,14 @@
|
||||||
A951FF1A1E9C349000FA9144 /* vulkanexamplebase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF0A1E9C349000FA9144 /* vulkanexamplebase.cpp */; };
|
A951FF1A1E9C349000FA9144 /* vulkanexamplebase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF0A1E9C349000FA9144 /* vulkanexamplebase.cpp */; };
|
||||||
A951FF1B1E9C349000FA9144 /* VulkanTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF131E9C349000FA9144 /* VulkanTools.cpp */; };
|
A951FF1B1E9C349000FA9144 /* VulkanTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF131E9C349000FA9144 /* VulkanTools.cpp */; };
|
||||||
A951FF1C1E9C349000FA9144 /* VulkanTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF131E9C349000FA9144 /* VulkanTools.cpp */; };
|
A951FF1C1E9C349000FA9144 /* VulkanTools.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A951FF131E9C349000FA9144 /* VulkanTools.cpp */; };
|
||||||
A951FF271E9C891A00FA9144 /* libassimp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A951FF261E9C891A00FA9144 /* libassimp.a */; };
|
A9532B761EF99894000A09E2 /* libMoltenVK.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A9532B751EF99894000A09E2 /* libMoltenVK.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||||
A98703D71E9D33990066959C /* libzlibstatic.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A98703D61E9D33990066959C /* libzlibstatic.a */; };
|
A9532B771EF9991A000A09E2 /* libMoltenVK.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A9532B751EF99894000A09E2 /* libMoltenVK.dylib */; };
|
||||||
|
A9532B781EF99937000A09E2 /* libMoltenVK.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A9581BAB1EEB64EC00247309 /* libMoltenVK.dylib */; };
|
||||||
|
A9581BA61EEB648800247309 /* libassimp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9581BA51EEB648800247309 /* libassimp.a */; };
|
||||||
|
A9581BA81EEB648C00247309 /* libzlibstatic.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A9581BA71EEB648C00247309 /* libzlibstatic.a */; };
|
||||||
|
A9581BAC1EEB64EC00247309 /* libMoltenVK.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A9581BAB1EEB64EC00247309 /* libMoltenVK.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||||
|
A9581BAE1EEB651100247309 /* libassimp.3.3.1.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A9581BAD1EEB651100247309 /* libassimp.3.3.1.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||||
|
A9581BAF1EEB651500247309 /* libassimp.3.3.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A9581BAD1EEB651100247309 /* libassimp.3.3.1.dylib */; };
|
||||||
A98703D91E9D382A0066959C /* data in Resources */ = {isa = PBXBuildFile; fileRef = A98703D81E9D382A0066959C /* data */; };
|
A98703D91E9D382A0066959C /* data in Resources */ = {isa = PBXBuildFile; fileRef = A98703D81E9D382A0066959C /* data */; };
|
||||||
A98703DA1E9D382A0066959C /* data in Resources */ = {isa = PBXBuildFile; fileRef = A98703D81E9D382A0066959C /* data */; };
|
A98703DA1E9D382A0066959C /* data in Resources */ = {isa = PBXBuildFile; fileRef = A98703D81E9D382A0066959C /* data */; };
|
||||||
A9B67B781C3AAE9800373FFD /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */; };
|
A9B67B781C3AAE9800373FFD /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */; };
|
||||||
|
|
@ -36,6 +37,8 @@
|
||||||
A9B67B8F1C3AAEA200373FFD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B871C3AAEA200373FFD /* main.m */; };
|
A9B67B8F1C3AAEA200373FFD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B871C3AAEA200373FFD /* main.m */; };
|
||||||
A9B67B901C3AAEA200373FFD /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B8A1C3AAEA200373FFD /* Main.storyboard */; };
|
A9B67B901C3AAEA200373FFD /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B8A1C3AAEA200373FFD /* Main.storyboard */; };
|
||||||
A9B67B911C3AAEA200373FFD /* macOS.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */; };
|
A9B67B911C3AAEA200373FFD /* macOS.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */; };
|
||||||
|
A9BC9B1C1EE8421F00384233 /* MVKExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9BC9B1A1EE8421F00384233 /* MVKExample.cpp */; };
|
||||||
|
A9BC9B1D1EE8421F00384233 /* MVKExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9BC9B1A1EE8421F00384233 /* MVKExample.cpp */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXCopyFilesBuildPhase section */
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
|
@ -45,8 +48,18 @@
|
||||||
dstPath = "";
|
dstPath = "";
|
||||||
dstSubfolderSpec = 6;
|
dstSubfolderSpec = 6;
|
||||||
files = (
|
files = (
|
||||||
A91227C71E9D5FE500108018 /* libassimp.dylib in CopyFiles */,
|
A9581BAC1EEB64EC00247309 /* libMoltenVK.dylib in CopyFiles */,
|
||||||
A91227C31E9D5F5100108018 /* libMoltenVK.dylib in CopyFiles */,
|
A9581BAE1EEB651100247309 /* libassimp.3.3.1.dylib in CopyFiles */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
A9532B741EF9987C000A09E2 /* CopyFiles */ = {
|
||||||
|
isa = PBXCopyFilesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
dstPath = "";
|
||||||
|
dstSubfolderSpec = 6;
|
||||||
|
files = (
|
||||||
|
A9532B761EF99894000A09E2 /* libMoltenVK.dylib in CopyFiles */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|
@ -57,10 +70,7 @@
|
||||||
1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
1D3623EB0D0F72F000981E51 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||||
1D6058910D05DD3D006BFB54 /* examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = examples.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
1D6058910D05DD3D006BFB54 /* examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = examples.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
2D500B990D5A79CF00DBA0E3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
2D500B990D5A79CF00DBA0E3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||||
A91227C21E9D5F5100108018 /* libMoltenVK.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libMoltenVK.dylib; path = MoltenVK/macOS/libMoltenVK.dylib; sourceTree = "<group>"; };
|
|
||||||
A91227C61E9D5FE500108018 /* libassimp.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libassimp.dylib; path = ../libs/assimp/macos/libassimp.dylib; sourceTree = "<group>"; };
|
|
||||||
A92F37071C7E1B2B008F8BC9 /* examples.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = examples.h; sourceTree = "<group>"; };
|
A92F37071C7E1B2B008F8BC9 /* examples.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = examples.h; sourceTree = "<group>"; };
|
||||||
A945BCFB1E9D4E8700BA3EE2 /* MoltenVK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MoltenVK.framework; path = MoltenVK/iOS/MoltenVK.framework; sourceTree = "<group>"; };
|
|
||||||
A94A67231B7BDE9B00F6D7C4 /* MetalGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalGL.framework; path = ../../MetalGL/macOS/MetalGL.framework; sourceTree = "<group>"; };
|
A94A67231B7BDE9B00F6D7C4 /* MetalGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalGL.framework; path = ../../MetalGL/macOS/MetalGL.framework; sourceTree = "<group>"; };
|
||||||
A94A67241B7BDE9B00F6D7C4 /* MetalGLShaderConverter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalGLShaderConverter.framework; path = ../../MetalGLShaderConverter/macOS/MetalGLShaderConverter.framework; sourceTree = "<group>"; };
|
A94A67241B7BDE9B00F6D7C4 /* MetalGLShaderConverter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalGLShaderConverter.framework; path = ../../MetalGLShaderConverter/macOS/MetalGLShaderConverter.framework; sourceTree = "<group>"; };
|
||||||
A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = vulkangear.cpp; path = ../gears/vulkangear.cpp; sourceTree = "<group>"; };
|
A94C8D5E1EA047B400B3CE07 /* vulkangear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = vulkangear.cpp; path = ../gears/vulkangear.cpp; sourceTree = "<group>"; };
|
||||||
|
|
@ -84,15 +94,17 @@
|
||||||
A951FF121E9C349000FA9144 /* VulkanTexture.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanTexture.hpp; sourceTree = "<group>"; };
|
A951FF121E9C349000FA9144 /* VulkanTexture.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = VulkanTexture.hpp; sourceTree = "<group>"; };
|
||||||
A951FF131E9C349000FA9144 /* VulkanTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VulkanTools.cpp; sourceTree = "<group>"; };
|
A951FF131E9C349000FA9144 /* VulkanTools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VulkanTools.cpp; sourceTree = "<group>"; };
|
||||||
A951FF141E9C349000FA9144 /* VulkanTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VulkanTools.h; sourceTree = "<group>"; };
|
A951FF141E9C349000FA9144 /* VulkanTools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VulkanTools.h; sourceTree = "<group>"; };
|
||||||
A951FF241E9C7D2B00FA9144 /* libassimp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libassimp.a; path = "../libs/assimp/armeabi-v7a/libassimp.a"; sourceTree = "<group>"; };
|
A9532B751EF99894000A09E2 /* libMoltenVK.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libMoltenVK.dylib; path = MoltenVK/iOS/libMoltenVK.dylib; sourceTree = "<group>"; };
|
||||||
A951FF261E9C891A00FA9144 /* libassimp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libassimp.a; path = ../libs/assimp/ios/arm64/libassimp.a; sourceTree = "<group>"; };
|
A9581BA51EEB648800247309 /* libassimp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libassimp.a; path = "assimp/assimp-ios/lib/iOS/arm64/libassimp.a"; sourceTree = "<group>"; };
|
||||||
|
A9581BA71EEB648C00247309 /* libzlibstatic.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzlibstatic.a; path = "assimp/assimp-ios/lib/libzlibstatic.a"; sourceTree = "<group>"; };
|
||||||
|
A9581BAB1EEB64EC00247309 /* libMoltenVK.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libMoltenVK.dylib; path = MoltenVK/macOS/libMoltenVK.dylib; sourceTree = "<group>"; };
|
||||||
|
A9581BAD1EEB651100247309 /* libassimp.3.3.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libassimp.3.3.1.dylib; path = "assimp/assimp-macos/lib/libassimp.3.3.1.dylib"; sourceTree = "<group>"; };
|
||||||
A977BCFE1B66BB010067E5BF /* examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = examples.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
A977BCFE1B66BB010067E5BF /* examples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = examples.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
A977BD211B67186B0067E5BF /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AppKit.framework; sourceTree = DEVELOPER_DIR; };
|
A977BD211B67186B0067E5BF /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/AppKit.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
A977BD221B67186B0067E5BF /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
|
A977BD221B67186B0067E5BF /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
A977BD231B67186B0067E5BF /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
A977BD231B67186B0067E5BF /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
A977BD251B67186B0067E5BF /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; };
|
A977BD251B67186B0067E5BF /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
A977BD261B67186B0067E5BF /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
|
A977BD261B67186B0067E5BF /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
A98703D61E9D33990066959C /* libzlibstatic.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzlibstatic.a; path = ../libs/assimp/ios/arm64/libzlibstatic.a; sourceTree = "<group>"; };
|
|
||||||
A98703D81E9D382A0066959C /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; name = data; path = ../data; sourceTree = "<group>"; };
|
A98703D81E9D382A0066959C /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; name = data; path = ../data; sourceTree = "<group>"; };
|
||||||
A9A222171B5D69F40050A5F9 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
|
A9A222171B5D69F40050A5F9 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
|
||||||
A9B5D09B1CF8830B00D7CBDD /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
A9B5D09B1CF8830B00D7CBDD /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
||||||
|
|
@ -117,10 +129,10 @@
|
||||||
A9B67B8A1C3AAEA200373FFD /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
A9B67B8A1C3AAEA200373FFD /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
|
||||||
A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = macOS.xcassets; sourceTree = "<group>"; };
|
A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = macOS.xcassets; sourceTree = "<group>"; };
|
||||||
A9B6B7641C0F795D00A9E33A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
|
A9B6B7641C0F795D00A9E33A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
|
||||||
|
A9BC9B1A1EE8421F00384233 /* MVKExample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MVKExample.cpp; sourceTree = "<group>"; };
|
||||||
|
A9BC9B1B1EE8421F00384233 /* MVKExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKExample.h; sourceTree = "<group>"; };
|
||||||
A9CDEA271B6A782C00F7B008 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
|
A9CDEA271B6A782C00F7B008 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
|
||||||
A9E264761B671B0A00FE691A /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libc++.dylib"; sourceTree = DEVELOPER_DIR; };
|
A9E264761B671B0A00FE691A /* libc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.dylib"; path = "Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libc++.dylib"; sourceTree = DEVELOPER_DIR; };
|
||||||
A9EFB8381E9D566000223542 /* libassimp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libassimp.a; path = ../libs/assimp/macos/libassimp.a; sourceTree = "<group>"; };
|
|
||||||
A9EFB8391E9D566000223542 /* libzlibstatic.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzlibstatic.a; path = ../libs/assimp/macos/libzlibstatic.a; sourceTree = "<group>"; };
|
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
|
@ -128,9 +140,9 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
A945BCFC1E9D4E8700BA3EE2 /* MoltenVK.framework in Frameworks */,
|
A9532B771EF9991A000A09E2 /* libMoltenVK.dylib in Frameworks */,
|
||||||
A98703D71E9D33990066959C /* libzlibstatic.a in Frameworks */,
|
A9581BA61EEB648800247309 /* libassimp.a in Frameworks */,
|
||||||
A951FF271E9C891A00FA9144 /* libassimp.a in Frameworks */,
|
A9581BA81EEB648C00247309 /* libzlibstatic.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|
@ -138,8 +150,8 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
A91227C41E9D5F8200108018 /* libMoltenVK.dylib in Frameworks */,
|
A9532B781EF99937000A09E2 /* libMoltenVK.dylib in Frameworks */,
|
||||||
A91227C81E9D601900108018 /* libassimp.dylib in Frameworks */,
|
A9581BAF1EEB651500247309 /* libassimp.3.3.1.dylib in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|
@ -159,6 +171,8 @@
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
A92F37071C7E1B2B008F8BC9 /* examples.h */,
|
A92F37071C7E1B2B008F8BC9 /* examples.h */,
|
||||||
|
A9BC9B1B1EE8421F00384233 /* MVKExample.h */,
|
||||||
|
A9BC9B1A1EE8421F00384233 /* MVKExample.cpp */,
|
||||||
A951FEFF1E9C349000FA9144 /* base */,
|
A951FEFF1E9C349000FA9144 /* base */,
|
||||||
A94C8D5D1EA047A300B3CE07 /* extras */,
|
A94C8D5D1EA047A300B3CE07 /* extras */,
|
||||||
A98703D81E9D382A0066959C /* data */,
|
A98703D81E9D382A0066959C /* data */,
|
||||||
|
|
@ -173,14 +187,11 @@
|
||||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
A91227C61E9D5FE500108018 /* libassimp.dylib */,
|
A9581BAD1EEB651100247309 /* libassimp.3.3.1.dylib */,
|
||||||
A91227C21E9D5F5100108018 /* libMoltenVK.dylib */,
|
A9581BAB1EEB64EC00247309 /* libMoltenVK.dylib */,
|
||||||
A9EFB8381E9D566000223542 /* libassimp.a */,
|
A9532B751EF99894000A09E2 /* libMoltenVK.dylib */,
|
||||||
A9EFB8391E9D566000223542 /* libzlibstatic.a */,
|
A9581BA71EEB648C00247309 /* libzlibstatic.a */,
|
||||||
A945BCFB1E9D4E8700BA3EE2 /* MoltenVK.framework */,
|
A9581BA51EEB648800247309 /* libassimp.a */,
|
||||||
A98703D61E9D33990066959C /* libzlibstatic.a */,
|
|
||||||
A951FF261E9C891A00FA9144 /* libassimp.a */,
|
|
||||||
A951FF241E9C7D2B00FA9144 /* libassimp.a */,
|
|
||||||
A9B5D09B1CF8830B00D7CBDD /* libc++.tbd */,
|
A9B5D09B1CF8830B00D7CBDD /* libc++.tbd */,
|
||||||
A9B6B7641C0F795D00A9E33A /* CoreAudio.framework */,
|
A9B6B7641C0F795D00A9E33A /* CoreAudio.framework */,
|
||||||
A9ADEC601B6EC2EB00DBA48C /* iOS */,
|
A9ADEC601B6EC2EB00DBA48C /* iOS */,
|
||||||
|
|
@ -312,6 +323,7 @@
|
||||||
1D60588D0D05DD3D006BFB54 /* Resources */,
|
1D60588D0D05DD3D006BFB54 /* Resources */,
|
||||||
1D60588E0D05DD3D006BFB54 /* Sources */,
|
1D60588E0D05DD3D006BFB54 /* Sources */,
|
||||||
1D60588F0D05DD3D006BFB54 /* Frameworks */,
|
1D60588F0D05DD3D006BFB54 /* Frameworks */,
|
||||||
|
A9532B741EF9987C000A09E2 /* CopyFiles */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
|
|
@ -407,6 +419,7 @@
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
A951FF171E9C349000FA9144 /* VulkanDebug.cpp in Sources */,
|
A951FF171E9C349000FA9144 /* VulkanDebug.cpp in Sources */,
|
||||||
|
A9BC9B1C1EE8421F00384233 /* MVKExample.cpp in Sources */,
|
||||||
A9B67B7A1C3AAE9800373FFD /* DemoViewController.mm in Sources */,
|
A9B67B7A1C3AAE9800373FFD /* DemoViewController.mm in Sources */,
|
||||||
A9B67B781C3AAE9800373FFD /* AppDelegate.m in Sources */,
|
A9B67B781C3AAE9800373FFD /* AppDelegate.m in Sources */,
|
||||||
A951FF1B1E9C349000FA9144 /* VulkanTools.cpp in Sources */,
|
A951FF1B1E9C349000FA9144 /* VulkanTools.cpp in Sources */,
|
||||||
|
|
@ -421,6 +434,7 @@
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
A951FF181E9C349000FA9144 /* VulkanDebug.cpp in Sources */,
|
A951FF181E9C349000FA9144 /* VulkanDebug.cpp in Sources */,
|
||||||
|
A9BC9B1D1EE8421F00384233 /* MVKExample.cpp in Sources */,
|
||||||
A9B67B8C1C3AAEA200373FFD /* AppDelegate.m in Sources */,
|
A9B67B8C1C3AAEA200373FFD /* AppDelegate.m in Sources */,
|
||||||
A9B67B8F1C3AAEA200373FFD /* main.m in Sources */,
|
A9B67B8F1C3AAEA200373FFD /* main.m in Sources */,
|
||||||
A951FF1C1E9C349000FA9144 /* VulkanTools.cpp in Sources */,
|
A951FF1C1E9C349000FA9144 /* VulkanTools.cpp in Sources */,
|
||||||
|
|
@ -438,7 +452,6 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
DEVELOPMENT_TEAM = VU3TCKU48B;
|
DEVELOPMENT_TEAM = VU3TCKU48B;
|
||||||
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/MoltenVK/iOS\"";
|
|
||||||
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
|
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
|
@ -449,7 +462,12 @@
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||||
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../libs/assimp/ios\"";
|
LD_RUNPATH_SEARCH_PATHS = "@executable_path";
|
||||||
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"\"$(SRCROOT)/MoltenVK/iOS\"",
|
||||||
|
"\"$(SRCROOT)/assimp/assimp-ios/lib/iOS/arm64\"",
|
||||||
|
"\"$(SRCROOT)/assimp/assimp-ios/lib\"",
|
||||||
|
);
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
VALID_ARCHS = arm64;
|
VALID_ARCHS = arm64;
|
||||||
|
|
@ -461,7 +479,6 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
DEVELOPMENT_TEAM = VU3TCKU48B;
|
DEVELOPMENT_TEAM = VU3TCKU48B;
|
||||||
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/MoltenVK/iOS\"";
|
|
||||||
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
|
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
|
@ -470,7 +487,12 @@
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
||||||
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||||
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../libs/assimp/ios\"";
|
LD_RUNPATH_SEARCH_PATHS = "@executable_path";
|
||||||
|
LIBRARY_SEARCH_PATHS = (
|
||||||
|
"\"$(SRCROOT)/MoltenVK/iOS\"",
|
||||||
|
"\"$(SRCROOT)/assimp/assimp-ios/lib/iOS/arm64\"",
|
||||||
|
"\"$(SRCROOT)/assimp/assimp-ios/lib\"",
|
||||||
|
);
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
VALID_ARCHS = arm64;
|
VALID_ARCHS = arm64;
|
||||||
|
|
@ -493,7 +515,8 @@
|
||||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path";
|
LD_RUNPATH_SEARCH_PATHS = "@executable_path";
|
||||||
LIBRARY_SEARCH_PATHS = (
|
LIBRARY_SEARCH_PATHS = (
|
||||||
"\"$(SRCROOT)/MoltenVK/macOS\"",
|
"\"$(SRCROOT)/MoltenVK/macOS\"",
|
||||||
"\"$(SRCROOT)/../libs/assimp/macos\"",
|
"\"$(SRCROOT)/assimp/assimp-macos/lib\"",
|
||||||
|
"$(PROJECT_DIR)/MoltenVK/macOS",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
|
|
@ -514,7 +537,8 @@
|
||||||
LD_RUNPATH_SEARCH_PATHS = "@executable_path";
|
LD_RUNPATH_SEARCH_PATHS = "@executable_path";
|
||||||
LIBRARY_SEARCH_PATHS = (
|
LIBRARY_SEARCH_PATHS = (
|
||||||
"\"$(SRCROOT)/MoltenVK/macOS\"",
|
"\"$(SRCROOT)/MoltenVK/macOS\"",
|
||||||
"\"$(SRCROOT)/../libs/assimp/macos\"",
|
"\"$(SRCROOT)/assimp/assimp-macos/lib\"",
|
||||||
|
"$(PROJECT_DIR)/MoltenVK/macOS",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
MACOSX_DEPLOYMENT_TARGET = 10.11;
|
||||||
SDKROOT = macosx;
|
SDKROOT = macosx;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
//
|
/*
|
||||||
// AppDelegate.h
|
* AppDelegate.h
|
||||||
//
|
*
|
||||||
// Created by Bill Hollings on 2015/06/03.
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
// Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
//
|
*/
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
//
|
/*
|
||||||
// AppDelegate.m
|
* AppDelegate.m
|
||||||
//
|
*
|
||||||
// Created by Bill Hollings on 2015/06/03.
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
// Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
//
|
*/
|
||||||
|
|
||||||
#import "AppDelegate.h"
|
#import "AppDelegate.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* DemoViewController.h
|
* DemoViewController.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
* http://www.brenwill.com
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
*
|
|
||||||
* Use of this document is governed by the Molten License Agreement, as included
|
|
||||||
* in the Molten distribution package. CAREFULLY READ THAT LICENSE AGREEMENT BEFORE
|
|
||||||
* READING AND USING THIS DOCUMENT. BY READING OR OTHERWISE USING THIS DOCUMENT,
|
|
||||||
* YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THAT LICENSE
|
|
||||||
* AGREEMENT. IF YOU DO NOT ACCEPT THE TERMS AND CONDITIONS OF THAT LICENSE AGREEMENT,
|
|
||||||
* DO NOT READ OR USE THIS DOCUMENT.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
/*
|
/*
|
||||||
* DemoViewController.mm
|
* DemoViewController.mm
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
* http://www.brenwill.com
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import "DemoViewController.h"
|
#import "DemoViewController.h"
|
||||||
|
|
||||||
#include "examples.h"
|
#include "MVKExample.h"
|
||||||
|
|
||||||
|
|
||||||
const std::string VulkanExampleBase::getAssetPath() {
|
const std::string VulkanExampleBase::getAssetPath() {
|
||||||
|
|
@ -19,7 +19,7 @@ const std::string VulkanExampleBase::getAssetPath() {
|
||||||
#pragma mark DemoViewController
|
#pragma mark DemoViewController
|
||||||
|
|
||||||
@implementation DemoViewController {
|
@implementation DemoViewController {
|
||||||
VulkanExample* _vulkanExample;
|
MVKExample* _mvkExample;
|
||||||
CADisplayLink* _displayLink;
|
CADisplayLink* _displayLink;
|
||||||
BOOL _viewHasAppeared;
|
BOOL _viewHasAppeared;
|
||||||
}
|
}
|
||||||
|
|
@ -30,11 +30,7 @@ const std::string VulkanExampleBase::getAssetPath() {
|
||||||
|
|
||||||
self.view.contentScaleFactor = UIScreen.mainScreen.nativeScale;
|
self.view.contentScaleFactor = UIScreen.mainScreen.nativeScale;
|
||||||
|
|
||||||
_vulkanExample = new VulkanExample();
|
_mvkExample = new MVKExample(self.view);
|
||||||
_vulkanExample->initVulkan();
|
|
||||||
_vulkanExample->setupWindow(self.view);
|
|
||||||
_vulkanExample->initSwapchain();
|
|
||||||
_vulkanExample->prepare();
|
|
||||||
|
|
||||||
uint32_t fps = 60;
|
uint32_t fps = 60;
|
||||||
_displayLink = [CADisplayLink displayLinkWithTarget: self selector: @selector(renderFrame)];
|
_displayLink = [CADisplayLink displayLinkWithTarget: self selector: @selector(renderFrame)];
|
||||||
|
|
@ -59,11 +55,11 @@ const std::string VulkanExampleBase::getAssetPath() {
|
||||||
-(BOOL) canBecomeFirstResponder { return _viewHasAppeared; }
|
-(BOOL) canBecomeFirstResponder { return _viewHasAppeared; }
|
||||||
|
|
||||||
-(void) renderFrame {
|
-(void) renderFrame {
|
||||||
_vulkanExample->renderFrame();
|
_mvkExample->renderFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void) dealloc {
|
-(void) dealloc {
|
||||||
delete(_vulkanExample);
|
delete _mvkExample;
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -85,7 +81,7 @@ const std::string VulkanExampleBase::getAssetPath() {
|
||||||
|
|
||||||
// Handle keyboard input
|
// Handle keyboard input
|
||||||
-(void) handleKeyboardInput: (unichar) keycode {
|
-(void) handleKeyboardInput: (unichar) keycode {
|
||||||
_vulkanExample->keyPressed(keycode);
|
_mvkExample->keyPressed(keycode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
//
|
/*
|
||||||
// AppDelegate.h
|
* AppDelegate.h
|
||||||
//
|
*
|
||||||
// Created by Bill Hollings on 2015/07/30.
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
// Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
//
|
*/
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
@interface AppDelegate : NSObject <NSApplicationDelegate>
|
@interface AppDelegate : NSObject <NSApplicationDelegate>
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
//
|
/*
|
||||||
// AppDelegate.m
|
* AppDelegate.m
|
||||||
//
|
*
|
||||||
// Created by Bill Hollings on 2015/07/30.
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
// Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
//
|
*/
|
||||||
|
|
||||||
#import "AppDelegate.h"
|
#import "AppDelegate.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,8 @@
|
||||||
/*
|
/*
|
||||||
* DemoViewController.h
|
* DemoViewController.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
* http://www.brenwill.com
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
*
|
|
||||||
* Use of this document is governed by the Molten License Agreement, as included
|
|
||||||
* in the Molten distribution package. CAREFULLY READ THAT LICENSE AGREEMENT BEFORE
|
|
||||||
* READING AND USING THIS DOCUMENT. BY READING OR OTHERWISE USING THIS DOCUMENT,
|
|
||||||
* YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS AND CONDITIONS OF THAT LICENSE
|
|
||||||
* AGREEMENT. IF YOU DO NOT ACCEPT THE TERMS AND CONDITIONS OF THAT LICENSE AGREEMENT,
|
|
||||||
* DO NOT READ OR USE THIS DOCUMENT.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import <AppKit/AppKit.h>
|
#import <AppKit/AppKit.h>
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,14 @@
|
||||||
/*
|
/*
|
||||||
* DemoViewController.mm
|
* DemoViewController.mm
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014-2017 The Brenwill Workshop Ltd. All rights reserved.
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
* http://www.brenwill.com
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import "DemoViewController.h"
|
#import "DemoViewController.h"
|
||||||
#import <QuartzCore/CAMetalLayer.h>
|
#import <QuartzCore/CAMetalLayer.h>
|
||||||
|
|
||||||
#include "examples.h"
|
#include "MVKExample.h"
|
||||||
|
|
||||||
|
|
||||||
const std::string VulkanExampleBase::getAssetPath() {
|
const std::string VulkanExampleBase::getAssetPath() {
|
||||||
|
|
@ -22,7 +22,7 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink,
|
||||||
CVOptionFlags flagsIn,
|
CVOptionFlags flagsIn,
|
||||||
CVOptionFlags* flagsOut,
|
CVOptionFlags* flagsOut,
|
||||||
void* target) {
|
void* target) {
|
||||||
((VulkanExample*)target)->renderFrame();
|
((MVKExample*)target)->renderFrame();
|
||||||
return kCVReturnSuccess;
|
return kCVReturnSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -31,7 +31,7 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink,
|
||||||
#pragma mark DemoViewController
|
#pragma mark DemoViewController
|
||||||
|
|
||||||
@implementation DemoViewController {
|
@implementation DemoViewController {
|
||||||
VulkanExample* _vulkanExample;
|
MVKExample* _mvkExample;
|
||||||
CVDisplayLinkRef _displayLink;
|
CVDisplayLinkRef _displayLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -41,26 +41,22 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink,
|
||||||
|
|
||||||
self.view.wantsLayer = YES; // Back the view with a layer created by the makeBackingLayer method.
|
self.view.wantsLayer = YES; // Back the view with a layer created by the makeBackingLayer method.
|
||||||
|
|
||||||
_vulkanExample = new VulkanExample();
|
_mvkExample = new MVKExample(self.view);
|
||||||
_vulkanExample->initVulkan();
|
|
||||||
_vulkanExample->setupWindow(self.view);
|
|
||||||
_vulkanExample->initSwapchain();
|
|
||||||
_vulkanExample->prepare();
|
|
||||||
|
|
||||||
CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink);
|
CVDisplayLinkCreateWithActiveCGDisplays(&_displayLink);
|
||||||
CVDisplayLinkSetOutputCallback(_displayLink, &DisplayLinkCallback, _vulkanExample);
|
CVDisplayLinkSetOutputCallback(_displayLink, &DisplayLinkCallback, _mvkExample);
|
||||||
CVDisplayLinkStart(_displayLink);
|
CVDisplayLinkStart(_displayLink);
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void) dealloc {
|
-(void) dealloc {
|
||||||
CVDisplayLinkRelease(_displayLink);
|
CVDisplayLinkRelease(_displayLink);
|
||||||
delete(_vulkanExample);
|
delete _mvkExample;
|
||||||
[super dealloc];
|
[super dealloc];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle keyboard input
|
// Handle keyboard input
|
||||||
-(void) keyDown:(NSEvent*) theEvent {
|
-(void) keyDown:(NSEvent*) theEvent {
|
||||||
_vulkanExample->keyPressed(theEvent.keyCode);
|
_mvkExample->keyPressed(theEvent.keyCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
<key>LSMinimumSystemVersion</key>
|
<key>LSMinimumSystemVersion</key>
|
||||||
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
|
||||||
<key>NSHumanReadableCopyright</key>
|
<key>NSHumanReadableCopyright</key>
|
||||||
<string>Copyright (c) 2015 The Brenwill Workshop Ltd. All rights reserved.</string>
|
<string>Copyright (c) 2016-2017 The Brenwill Workshop Ltd.</string>
|
||||||
<key>NSMainStoryboardFile</key>
|
<key>NSMainStoryboardFile</key>
|
||||||
<string>Main</string>
|
<string>Main</string>
|
||||||
<key>NSPrincipalClass</key>
|
<key>NSPrincipalClass</key>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
//
|
/*
|
||||||
// main.m
|
* main.m
|
||||||
//
|
*
|
||||||
// Created by Bill Hollings on 2015/07/30.
|
* Copyright (c) 2016-2017 The Brenwill Workshop Ltd.
|
||||||
// Copyright © 2015 The Brenwill Workshop Ltd. All rights reserved.
|
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
|
||||||
//
|
*/
|
||||||
|
|
||||||
#import <Cocoa/Cocoa.h>
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue