Automatically install demo apps.

Add LunarG demo app repository as a submodule.
Add LunarG demo config to makeAll script.
Rename Demos/README_MoltenVK_Demos.md to Demos/README.md.
Do not copy Demos folder to MoltenVK runtime distribution.
Do not copy ThirdPartyConfig.md to MoltenVK runtime distribution.
Add cmake as a dependency in README.md.
This commit is contained in:
Bill Hollings 2018-03-06 14:07:06 -05:00
parent 3f9e8bc2ba
commit d31aaad3bf
42 changed files with 326 additions and 1324 deletions

6
.gitmodules vendored
View File

@ -16,6 +16,12 @@
[submodule "External/SPIRV-Cross"]
path = External/SPIRV-Cross
url = https://github.com/KhronosGroup/SPIRV-Cross.git
ignore = dirty
[submodule "External/Vulkan-LoaderAndValidationLayers"]
path = External/Vulkan-LoaderAndValidationLayers
url = https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers
ignore = dirty
[submodule "External/VulkanSamples"]
path = External/VulkanSamples
url = https://github.com/brenwill/VulkanSamples.git
ignore = dirty

View File

@ -2,7 +2,7 @@
<Workspace
version = "1.0">
<FileRef
location = "group:README_MoltenVK_Demos.md">
location = "group:/Users/bill/Documents/Dev/iOSProjects/Molten/MoltenVK-bh/Demos/README.md">
</FileRef>
<Group
location = "container:"
@ -17,11 +17,4 @@
location = "group:LunarG-VulkanSamples/Hologram/Hologram.xcodeproj">
</FileRef>
</Group>
<Group
location = "container:"
name = "Khronos-Vulkan-Samples">
<FileRef
location = "group:Khronos-Vulkan-Samples/AsynchronousTimeWarp/AsynchronousTimeWarp.xcodeproj">
</FileRef>
</Group>
</Workspace>

View File

@ -1,532 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 48;
objects = {
/* Begin PBXBuildFile section */
A9096E4D1F7EF0E200DFBEA6 /* IOSurface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A9096E4C1F7EF0E200DFBEA6 /* IOSurface.framework */; };
A944E5E61D1CA976000777C7 /* macOS.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A944E5E51D1CA976000777C7 /* macOS.xcassets */; };
A944E5EE1D1CA9E0000777C7 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A944E5EA1D1CA9E0000777C7 /* Default-568h@2x.png */; };
A944E5EF1D1CA9E0000777C7 /* Default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = A944E5EB1D1CA9E0000777C7 /* Default~ipad.png */; };
A944E5F01D1CA9E0000777C7 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A944E5EC1D1CA9E0000777C7 /* Icon.png */; };
A947FD781CF91202007A3232 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A947FD771CF91202007A3232 /* libc++.tbd */; };
A947FD7A1CF91217007A3232 /* MoltenVK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A947FD791CF91217007A3232 /* MoltenVK.framework */; };
A95419011D11A1F0000901F0 /* MoltenVK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A95419001D11A1F0000901F0 /* MoltenVK.framework */; };
A9A7447F1D1198A400ADB0E9 /* atw_vulkan.c in Sources */ = {isa = PBXBuildFile; fileRef = A9A980211CF92ADC00A9CCE1 /* atw_vulkan.c */; };
A9A744841D1198A400ADB0E9 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = A947FD771CF91202007A3232 /* libc++.tbd */; };
A9A980641CF92B0400A9CCE1 /* atw_vulkan.c in Sources */ = {isa = PBXBuildFile; fileRef = A9A980211CF92ADC00A9CCE1 /* atw_vulkan.c */; };
A9A980651CF92B5200A9CCE1 /* atw_opengl.c in Sources */ = {isa = PBXBuildFile; fileRef = A9A980201CF92ADC00A9CCE1 /* atw_opengl.c */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
A9096E4C1F7EF0E200DFBEA6 /* IOSurface.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOSurface.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk/System/Library/Frameworks/IOSurface.framework; sourceTree = DEVELOPER_DIR; };
A944E5E51D1CA976000777C7 /* macOS.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = macOS.xcassets; sourceTree = "<group>"; };
A944E5EA1D1CA9E0000777C7 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
A944E5EB1D1CA9E0000777C7 /* Default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default~ipad.png"; sourceTree = "<group>"; };
A944E5EC1D1CA9E0000777C7 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
A947FD771CF91202007A3232 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
A947FD791CF91217007A3232 /* MoltenVK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MoltenVK.framework; path = ../../../../Package/Latest/MoltenVK/macOS/MoltenVK.framework; sourceTree = "<group>"; };
A95419001D11A1F0000901F0 /* MoltenVK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MoltenVK.framework; path = ../../../../Package/Latest/MoltenVK/iOS/MoltenVK.framework; sourceTree = "<group>"; };
A95816661C03BC4D00792CBF /* AsynchronousTimeWarp-OGL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AsynchronousTimeWarp-OGL.app"; sourceTree = BUILT_PRODUCTS_DIR; };
A95816741C03BC4D00792CBF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
A95816881C03D79500792CBF /* AsynchronousTimeWarp-VK.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AsynchronousTimeWarp-VK.app"; sourceTree = BUILT_PRODUCTS_DIR; };
A9A744881D1198A400ADB0E9 /* AsynchronousTimeWarp-VK.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "AsynchronousTimeWarp-VK.app"; sourceTree = BUILT_PRODUCTS_DIR; };
A9A980201CF92ADC00A9CCE1 /* atw_opengl.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; path = atw_opengl.c; sourceTree = "<group>"; usesTabs = 1; };
A9A980211CF92ADC00A9CCE1 /* atw_vulkan.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.objc; path = atw_vulkan.c; sourceTree = "<group>"; usesTabs = 1; };
A9A980231CF92ADC00A9CCE1 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
A9A980631CF92ADC00A9CCE1 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
A95816631C03BC4D00792CBF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
A95816811C03D79500792CBF /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
A947FD7A1CF91217007A3232 /* MoltenVK.framework in Frameworks */,
A947FD781CF91202007A3232 /* libc++.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A9A744821D1198A400ADB0E9 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
A95419011D11A1F0000901F0 /* MoltenVK.framework in Frameworks */,
A9096E4D1F7EF0E200DFBEA6 /* IOSurface.framework in Frameworks */,
A9A744841D1198A400ADB0E9 /* libc++.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
A93E22721C060C4A00206F85 /* Frameworks */ = {
isa = PBXGroup;
children = (
A9096E4C1F7EF0E200DFBEA6 /* IOSurface.framework */,
A95419001D11A1F0000901F0 /* MoltenVK.framework */,
A947FD791CF91217007A3232 /* MoltenVK.framework */,
A947FD771CF91202007A3232 /* libc++.tbd */,
);
name = Frameworks;
sourceTree = "<group>";
};
A944E5E41D1CA976000777C7 /* Resources */ = {
isa = PBXGroup;
children = (
A944E5E51D1CA976000777C7 /* macOS.xcassets */,
);
path = Resources;
sourceTree = "<group>";
};
A944E5E71D1CA9E0000777C7 /* iOS */ = {
isa = PBXGroup;
children = (
A944E5E91D1CA9E0000777C7 /* Resources */,
);
path = iOS;
sourceTree = "<group>";
};
A944E5E91D1CA9E0000777C7 /* Resources */ = {
isa = PBXGroup;
children = (
A944E5EA1D1CA9E0000777C7 /* Default-568h@2x.png */,
A944E5EB1D1CA9E0000777C7 /* Default~ipad.png */,
A944E5EC1D1CA9E0000777C7 /* Icon.png */,
);
path = Resources;
sourceTree = "<group>";
};
A958165D1C03BC4D00792CBF = {
isa = PBXGroup;
children = (
A9A9801E1CF92ADC00A9CCE1 /* atw */,
A944E5E71D1CA9E0000777C7 /* iOS */,
A95816681C03BC4D00792CBF /* macOS */,
A93E22721C060C4A00206F85 /* Frameworks */,
A95816671C03BC4D00792CBF /* Products */,
);
sourceTree = "<group>";
};
A95816671C03BC4D00792CBF /* Products */ = {
isa = PBXGroup;
children = (
A95816661C03BC4D00792CBF /* AsynchronousTimeWarp-OGL.app */,
A95816881C03D79500792CBF /* AsynchronousTimeWarp-VK.app */,
A9A744881D1198A400ADB0E9 /* AsynchronousTimeWarp-VK.app */,
);
name = Products;
sourceTree = "<group>";
};
A95816681C03BC4D00792CBF /* macOS */ = {
isa = PBXGroup;
children = (
A944E5E41D1CA976000777C7 /* Resources */,
A95816741C03BC4D00792CBF /* Info.plist */,
);
path = macOS;
sourceTree = "<group>";
};
A9A9801E1CF92ADC00A9CCE1 /* atw */ = {
isa = PBXGroup;
children = (
A9A980201CF92ADC00A9CCE1 /* atw_opengl.c */,
A9A980211CF92ADC00A9CCE1 /* atw_vulkan.c */,
A9A980231CF92ADC00A9CCE1 /* LICENSE */,
A9A980631CF92ADC00A9CCE1 /* README.md */,
);
path = atw;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
A95816651C03BC4D00792CBF /* AsynchronousTimeWarp-OGL-macOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = A95816771C03BC4D00792CBF /* Build configuration list for PBXNativeTarget "AsynchronousTimeWarp-OGL-macOS" */;
buildPhases = (
A95816621C03BC4D00792CBF /* Sources */,
A95816641C03BC4D00792CBF /* Resources */,
A95816631C03BC4D00792CBF /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "AsynchronousTimeWarp-OGL-macOS";
productName = AsynchronousTimeWarp;
productReference = A95816661C03BC4D00792CBF /* AsynchronousTimeWarp-OGL.app */;
productType = "com.apple.product-type.application";
};
A958167E1C03D79500792CBF /* AsynchronousTimeWarp-VK-macOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = A95816851C03D79500792CBF /* Build configuration list for PBXNativeTarget "AsynchronousTimeWarp-VK-macOS" */;
buildPhases = (
A958167F1C03D79500792CBF /* Sources */,
A95816821C03D79500792CBF /* Resources */,
A95816811C03D79500792CBF /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "AsynchronousTimeWarp-VK-macOS";
productName = AsynchronousTimeWarp;
productReference = A95816881C03D79500792CBF /* AsynchronousTimeWarp-VK.app */;
productType = "com.apple.product-type.application";
};
A9A7447D1D1198A400ADB0E9 /* AsynchronousTimeWarp-VK-iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = A9A744851D1198A400ADB0E9 /* Build configuration list for PBXNativeTarget "AsynchronousTimeWarp-VK-iOS" */;
buildPhases = (
A9A7447E1D1198A400ADB0E9 /* Sources */,
A9A744801D1198A400ADB0E9 /* Resources */,
A9A744821D1198A400ADB0E9 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "AsynchronousTimeWarp-VK-iOS";
productName = AsynchronousTimeWarp;
productReference = A9A744881D1198A400ADB0E9 /* AsynchronousTimeWarp-VK.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
A958165E1C03BC4D00792CBF /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = "The Brenwill Workshop Ltd.";
TargetAttributes = {
A95816651C03BC4D00792CBF = {
CreatedOnToolsVersion = 7.1.1;
DevelopmentTeam = VU3TCKU48B;
};
A958167E1C03D79500792CBF = {
DevelopmentTeam = VU3TCKU48B;
};
};
};
buildConfigurationList = A95816611C03BC4D00792CBF /* Build configuration list for PBXProject "AsynchronousTimeWarp" */;
compatibilityVersion = "Xcode 8.0";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = A958165D1C03BC4D00792CBF;
productRefGroup = A95816671C03BC4D00792CBF /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
A9A7447D1D1198A400ADB0E9 /* AsynchronousTimeWarp-VK-iOS */,
A958167E1C03D79500792CBF /* AsynchronousTimeWarp-VK-macOS */,
A95816651C03BC4D00792CBF /* AsynchronousTimeWarp-OGL-macOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
A95816641C03BC4D00792CBF /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
A95816821C03D79500792CBF /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A944E5E61D1CA976000777C7 /* macOS.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A9A744801D1198A400ADB0E9 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A944E5F01D1CA9E0000777C7 /* Icon.png in Resources */,
A944E5EF1D1CA9E0000777C7 /* Default~ipad.png in Resources */,
A944E5EE1D1CA9E0000777C7 /* Default-568h@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
A95816621C03BC4D00792CBF /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A9A980651CF92B5200A9CCE1 /* atw_opengl.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A958167F1C03D79500792CBF /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A9A980641CF92B0400A9CCE1 /* atw_vulkan.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A9A7447E1D1198A400ADB0E9 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A9A7447F1D1198A400ADB0E9 /* atw_vulkan.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
A95816751C03BC4D00792CBF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = NO;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
"\"$(SRCROOT)/../../../MoltenVK/include\"",
"\"$(SRCROOT)/../Vulkan-Samples/external/include\"",
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "-ObjC";
SDKROOT = macosx;
};
name = Debug;
};
A95816761C03BC4D00792CBF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = NO;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
ENABLE_BITCODE = NO;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
"\"$(SRCROOT)/../../../MoltenVK/include\"",
"\"$(SRCROOT)/../Vulkan-Samples/external/include\"",
);
MTL_ENABLE_DEBUG_INFO = NO;
OTHER_LDFLAGS = "-ObjC";
SDKROOT = macosx;
};
name = Release;
};
A95816781C03BC4D00792CBF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = macOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.moltenvk.AsynchronousTimeWarp;
PRODUCT_NAME = "AsynchronousTimeWarp-OGL";
};
name = Debug;
};
A95816791C03BC4D00792CBF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
COMBINE_HIDPI_IMAGES = YES;
INFOPLIST_FILE = macOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.moltenvk.AsynchronousTimeWarp;
PRODUCT_NAME = "AsynchronousTimeWarp-OGL";
};
name = Release;
};
A95816861C03D79500792CBF /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../../../MoltenVK/macOS\"";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
VK_USE_PLATFORM_MACOS_MVK,
);
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_BUNDLE_IDENTIFIER = com.moltenvk.AsynchronousTimeWarp;
PRODUCT_NAME = "AsynchronousTimeWarp-VK";
};
name = Debug;
};
A95816871C03D79500792CBF /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../../../MoltenVK/macOS\"";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
VK_USE_PLATFORM_MACOS_MVK,
);
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.11;
PRODUCT_BUNDLE_IDENTIFIER = com.moltenvk.AsynchronousTimeWarp;
PRODUCT_NAME = "AsynchronousTimeWarp-VK";
};
name = Release;
};
A9A744861D1198A400ADB0E9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../../../MoltenVK/iOS\"";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
VK_USE_PLATFORM_IOS_MVK,
);
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.moltenvk.AsynchronousTimeWarp;
PRODUCT_NAME = "AsynchronousTimeWarp-VK";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = arm64;
};
name = Debug;
};
A9A744871D1198A400ADB0E9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = "\"$(SRCROOT)/../../../MoltenVK/iOS\"";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
VK_USE_PLATFORM_IOS_MVK,
);
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.moltenvk.AsynchronousTimeWarp;
PRODUCT_NAME = "AsynchronousTimeWarp-VK";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = arm64;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
A95816611C03BC4D00792CBF /* Build configuration list for PBXProject "AsynchronousTimeWarp" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A95816751C03BC4D00792CBF /* Debug */,
A95816761C03BC4D00792CBF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
A95816771C03BC4D00792CBF /* Build configuration list for PBXNativeTarget "AsynchronousTimeWarp-OGL-macOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A95816781C03BC4D00792CBF /* Debug */,
A95816791C03BC4D00792CBF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
A95816851C03D79500792CBF /* Build configuration list for PBXNativeTarget "AsynchronousTimeWarp-VK-macOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A95816861C03D79500792CBF /* Debug */,
A95816871C03D79500792CBF /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
A9A744851D1198A400ADB0E9 /* Build configuration list for PBXNativeTarget "AsynchronousTimeWarp-VK-iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A9A744861D1198A400ADB0E9 /* Debug */,
A9A744871D1198A400ADB0E9 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = A958165E1C03BC4D00792CBF /* Project object */;
}

View File

@ -1,123 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "A9A7447D1D1198A400ADB0E9"
BuildableName = "AsynchronousTimeWarp-VK.app"
BlueprintName = "AsynchronousTimeWarp-VK-iOS"
ReferencedContainer = "container:AsynchronousTimeWarp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "A9A7447D1D1198A400ADB0E9"
BuildableName = "AsynchronousTimeWarp-VK.app"
BlueprintName = "AsynchronousTimeWarp-VK-iOS"
ReferencedContainer = "container:AsynchronousTimeWarp.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugXPCServices = "NO"
debugServiceExtension = "internal"
enableGPUFrameCaptureMode = "3"
enableGPUValidationMode = "1"
allowLocationSimulation = "NO"
queueDebuggingEnabled = "No">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "A9A7447D1D1198A400ADB0E9"
BuildableName = "AsynchronousTimeWarp-VK.app"
BlueprintName = "AsynchronousTimeWarp-VK-iOS"
ReferencedContainer = "container:AsynchronousTimeWarp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "-q"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "0"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "-w"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "0"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "-e"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "0"
isEnabled = "YES">
</CommandLineArgument>
</CommandLineArguments>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "A9A7447D1D1198A400ADB0E9"
BuildableName = "AsynchronousTimeWarp-VK.app"
BlueprintName = "AsynchronousTimeWarp-VK-iOS"
ReferencedContainer = "container:AsynchronousTimeWarp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,124 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "A958167E1C03D79500792CBF"
BuildableName = "AsynchronousTimeWarp-VK.app"
BlueprintName = "AsynchronousTimeWarp-VK-macOS"
ReferencedContainer = "container:AsynchronousTimeWarp.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "A958167E1C03D79500792CBF"
BuildableName = "AsynchronousTimeWarp-VK.app"
BlueprintName = "AsynchronousTimeWarp-VK-macOS"
ReferencedContainer = "container:AsynchronousTimeWarp.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = ""
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "NO"
debugXPCServices = "NO"
debugServiceExtension = "internal"
enableGPUFrameCaptureMode = "3"
enableGPUValidationMode = "1"
allowLocationSimulation = "NO"
viewDebuggingEnabled = "No"
queueDebuggingEnabled = "No">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "A958167E1C03D79500792CBF"
BuildableName = "AsynchronousTimeWarp-VK.app"
BlueprintName = "AsynchronousTimeWarp-VK-macOS"
ReferencedContainer = "container:AsynchronousTimeWarp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "-q"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "0"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "-w"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "0"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "-e"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
argument = "0"
isEnabled = "YES">
</CommandLineArgument>
</CommandLineArguments>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "A958167E1C03D79500792CBF"
BuildableName = "AsynchronousTimeWarp-VK.app"
BlueprintName = "AsynchronousTimeWarp-VK-macOS"
ReferencedContainer = "container:AsynchronousTimeWarp.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1 +0,0 @@
../Vulkan-Samples/samples/apps/atw

View File

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string>iOS/Resources/Icon.png</string>
<key>CFBundleIcons~ipad</key>
<dict/>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © The Brenwill Workshop Ltd. All rights reserved.</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>

View File

@ -1,63 +0,0 @@
{
"images" : [
{
"size" : "16x16",
"idiom" : "mac",
"filename" : "Icon-16.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "16x16",
"scale" : "2x"
},
{
"size" : "32x32",
"idiom" : "mac",
"filename" : "Icon-32.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "32x32",
"scale" : "2x"
},
{
"size" : "128x128",
"idiom" : "mac",
"filename" : "Icon-128.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "128x128",
"scale" : "2x"
},
{
"size" : "256x256",
"idiom" : "mac",
"filename" : "Icon-256.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "256x256",
"scale" : "2x"
},
{
"size" : "512x512",
"idiom" : "mac",
"filename" : "Icon-512.png",
"scale" : "1x"
},
{
"idiom" : "mac",
"size" : "512x512",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -1,6 +0,0 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -1 +0,0 @@
../../../../Khronos/Khronos-Vulkan-Samples/Vulkan-Samples

View File

@ -623,7 +623,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0920;
TargetAttributes = {
A977BCBD1B66BB010067E5BF = {
DevelopmentTeam = VU3TCKU48B;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0920"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0920"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -264,7 +264,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0920;
TargetAttributes = {
A9B53B0F1C3AC0BE00ABC6F6 = {
DevelopmentTeam = VU3TCKU48B;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0920"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0920"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -355,7 +355,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0900;
LastUpgradeCheck = 0920;
TargetAttributes = {
A977BCBD1B66BB010067E5BF = {
DevelopmentTeam = VU3TCKU48B;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0920"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0900"
LastUpgradeVersion = "0920"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"

View File

@ -1 +1 @@
../../../../Khronos/LunarG-VulkanSamples/VulkanSamples
../../External/VulkanSamples

199
Demos/README.md Executable file
View File

@ -0,0 +1,199 @@
<a class="site-logo" href="https://github.com/KhronosGroup/MoltenVK" title="MoltenVK">
<img src="../Docs/images/MoltenVK-Logo-Banner.png" alt="MoltenVK" style="width:256px;height:auto">
</a>
#MoltenVK Demo Projects
Copyright (c) 2014-2018 [The Brenwill Workshop Ltd.](http://www.brenwill.com)
*This document is written in [Markdown](http://en.wikipedia.org/wiki/Markdown) format.
For best results, use a Markdown reader.*
Table of Contents
-----------------
- [LunarG Vulkan Samples](#lunarg-vulkan-samples)
- [*Demos*](#lunarg-vulkan-samples-demos)
- [*API-Samples*](#lunarg-vulkan-samples-api)
- [*Hologram*](#lunarg-vulkan-samples-hologram)
- [Sascha Willems Vulkan Samples](#sascha-willems-vulkan-samples)
- [Installing the *Sascha Willems* Library](#sascha-willems-install)
- [Cinder Vulkan Samples](#cinder-vulkan-samples)
- [Installing the *Cinder* Library](#cinder-install)
- [*Fish Tornado*](#cinder-vulkan-samples-fish-tornado)
<a name="lunarg-vulkan-samples"></a>
LunarG Vulkan Samples
---------------------
[LunarG](https://lunarg.com), who have been involved in *Vulkan* development from the
beginning, and are one of the original developers of *Vulkan* tools and SDK's, provides
a suite of demo apps, that demonstrate a wide range of basic *Vulkan* features.
These demo apps are included in **MoltenVK**, and can be found in the `LunarG-VulkanSamples`
folder of this `Demos` folder, and in the `LunarG-VulkanSamples` group in the *Xcode Project Navigator*
in the `Demos.xcworkspace` *Xcode* workspace.
<a name="lunarg-vulkan-samples-demos"></a>
### *Demos*
A basic textured cube that spins in place.
The demo can be found in the `LunarG-VulkanSamples/Demos` folder, and in the
`LunarG-VulkanSamples/Demos` group in the *Xcode Project Navigator* in the
`Demos.xcworkspace` *Xcode* workspace.
To run this demo, run either the `Cube-iOS` or `Cube-macOS` *Scheme* from within *Xcode*.
This demo is a simple example of installing **MoltenVK** as a dynamic library, instead of as
a statically-linked framework. In this demo, the **MoltenVK** dynamic library is embedded in
the application, but it could have been installed as a system library instead.
<a name="lunarg-vulkan-samples-api"></a>
### *API-Samples*
This *Xcode* project actually contains a large number of modular demos, with each demo
demonstrating a particular *Vulkan* feature, or suite of calls.
This demo can be found in the `LunarG-VulkanSamples/API-Samples` folder, and in the
`LunarG-VulkanSamples/API-Samples` group in the *Xcode Project Navigator* in the
`Demos.xcworkspace` *Xcode* workspace.
To run this demo, run either the `API-Samples-iOS` or `API-Samples-macOS` *Scheme* from within *Xcode*.
To specify which of the many modular demos to run, open the `Samples.h` in the `API-Samples`
project in the *Xcode Project Navigator* in the `Demos.xcworkspace` *Xcode* workspace, and
follow the instructions in the comments within that file.
> **Note:** For simplicity, the `API-Samples` demos are bare-bones. Each of the `API-Samples`
> demos renders a single frame during app startup, and then leaves the rendered image static.
> There is no display loop or motion in any of these demos.
> **This is normal for these demos, and the demo has not "hung" or "crashed" when this occurs.**
To see descriptions and screenshots of each of the demos, open
[this summary document](LunarG-VulkanSamples/VulkanSamples/samples_index.html#AdditionalVulkan).
<a name="lunarg-vulkan-samples-hologram"></a>
### *Hologram*
> **Note:** In order to build the `Hologram` demo, you must have *Python3* installed
> on your build computer.
This is a sophisticated particle demo that populates command buffers from multiple threads.
This demo can be found in the `LunarG-VulkanSamples/Hologram` folder, and in the
`LunarG-VulkanSamples/Hologram` group in the *Xcode Project Navigator* in the
`Demos.xcworkspace` *Xcode* workspace.
To run this demo, run either the `Hologram-iOS` or `Hologram-macOS` *Scheme* from within *Xcode*.
On *macOS*, once the demo is open, you can use the *Up-arrow* and *Down-arrow* keys on the
keyboard to zoom the camera in and out of the scene. Zooming out will show more items on screen.
The demo allows some customization, by modifying the arguments passed to the demo at startup.
To customize, modify the arguments created in the `DemoViewController viewDidLoad` method
found in the `iOS/DemoViewController.mm` or `macOS/DemoViewController.mm` file.
This demo illustrates the use of the **MoltenVK** API `vkGetMoltenVKDeviceConfigurationMVK()`
and `vkSetMoltenVKDeviceConfigurationMVK()` functions to enable **MoltenVK** debugging, including
logging the conversion of shaders from *SPIR-V* to *Metal Shading Language*. See the use of these
functions in the `Hologram/Hologram.cpp` file. To see the effect, modify the `Hologram-iOS` or
`Hologram-macOS` *Scheme* from within *Xcode* to use the **Debug** *Build Configuration* setting.
<a name="sascha-willems-vulkan-samples"></a>
Sascha Willems Vulkan Samples
-----------------------------
[*Sascha Willems*](https://github.com/brenwill/Vulkan) provides an open-source library containing
a large number of sophisticated *Vulkan* samples. The library contains support for running these
examples on *iOS* and *macOS* in *Xcode*, using **MoltenVK**.
<a name="sascha-willems-install"></a>
### Installing the *Sascha Willems* Library
To install the *Sascha Willems Vulkan* samples, open a *Terminal* session and perform
the following command-line steps:
1. In the parent directory of this `MoltenVK` repository, clone the modified *Sascha Willems* `Vulkan` repo:
git clone https://github.com/brenwill/Vulkan.git
2. By default, the *Sascha Willems Vulkan* samples expect **MoltenVK** to be installed in a directory
beside the `Cinder` repository:
Vulkan/
MoltenVK/
If you have installed **MoltenVK** somewhere else, create a symlink to your **MoltenVK** installation:
ln -sfn path-to-MoltenVK/MoltenVK
2. Follow the instructions in the `Vulkan\xcode\README_MoltenVK_Examples.md` document
within the *Sascha Willems* `Vulkan` repository.
<a name="cinder-vulkan-samples"></a>
Cinder Vulkan Samples
---------------------
[*Cinder*](https://libcinder.org) is a cross-platform 3D graphics engine built in C++.
*Cinder* supports *Vulkan*, and includes several *Vulkan* demos.
These demo apps are included as part of the *Cinder* code repository.
These **MoltenVK** demos use a modified version of *Cinder*, that allows *Vulkan* to run under
*iOS* and *macOS*. To download the modified version of *Cinder*, and link it to **MoltenVK**,
follow the instructions in the [Installing the *Cinder* Library](#cinder-install)
section next.
<a name="cinder-install"></a>
### Installing the *Cinder* Library
To install the modified *Cinder* library, and link it to **MoltenVK**,
open a *Terminal* session and perform the following command-line steps:
1. In the parent directory of this `MoltenVK` repository, clone the modified `Cinder` repo,
including required submodules:
git clone --recursive https://github.com/brenwill/Cinder.git
2. Build the core *Cinder* library:
Cinder/xcode/fullbuild.sh
3. By default, the *Cinder Vulkan* samples expect **MoltenVK** to be installed in a directory
beside the `Cinder` repository:
Cinder/
MoltenVK/
If you have installed **MoltenVK** somewhere else, create a symlink to your **MoltenVK** installation:
ln -sfn path-to-MoltenVK/MoltenVK
<a name="cinder-vulkan-samples-fish-tornado"></a>
### *Fish Tornado*
This is a sophisticated simulation of a *Fish Tornado*, a swirling school of thousands of fish.
This demo can be found in the `samples/_vulkan_explicit/FishTornado` folder of the *Cinder* repository.
To build and run this demo for either *iOS* or *macOS*, open the `xcode-ios/FishTornado.xcodeproj`
or `xcode/FishTornado.xcodeproj` *Xcode* project, respectively.

View File

@ -1,322 +0,0 @@
<a class="site-logo" href="https://github.com/KhronosGroup/MoltenVK" title="MoltenVK">
<img src="../Docs/images/MoltenVK-Logo-Banner.png" alt="MoltenVK" style="width:256px;height:auto">
</a>
#MoltenVK Demo Projects
Copyright (c) 2014-2018 [The Brenwill Workshop Ltd.](http://www.brenwill.com)
*This document is written in [Markdown](http://en.wikipedia.org/wiki/Markdown) format.
For best results, use a Markdown reader.*
Table of Contents
-----------------
- [Introduction](#intro)
- [LunarG Vulkan Samples](#lunarg-vulkan-samples)
- [Installing the LunarG `VulkanSamples` Library](#lunarg-vulkan-samples-install)
- [*Demos*](#lunarg-vulkan-samples-demos)
- [*API-Samples*](#lunarg-vulkan-samples-api)
- [*Hologram*](#lunarg-vulkan-samples-hologram)
- [Khronos Vulkan Samples](#khronos-vulkan-samples)
- [Installing the Khronos `Vulkan-Samples` Library](#khronos-vulkan-samples-install)
- [*AsynchronousTimeWarp*](#khronos-vulkan-samples-atw)
- [Sascha Willems Vulkan Samples](#sascha-willems-vulkan-samples)
- [Installing the *Sascha Willems* Library](#sascha-willems-install)
- [Cinder Vulkan Samples](#cinder-vulkan-samples)
- [Installing the *Cinder* Library](#cinder-install)
- [*Fish Tornado*](#cinder-vulkan-samples-fish-tornado)
<a name="intro"></a>
Introduction
------------
The *Xcode* projects in this folder are a set of demo applications that demonstrate
how to integrate *Vulkan* into an *Xcode* project, and demonstrate the features and
capabilities of *Vulkan* when using using **MoltenVK** on the *iOS* and *macOS* platforms.
Although the demo projects are provided with this `MoltenVK` distribution,
the source code and resources for the demo applications come from publicly-available
open-source repositories. Follow the instructions for each section below to learn
how to download the demo application source code and resources for each set of
demo applications.
To review and run all of the available demo apps, open the `Demos.xcworkspace`
*Xcode* workspace in *Xcode*.
<a name="lunarg-vulkan-samples"></a>
LunarG Vulkan Samples
---------------------
[LunarG](https://lunarg.com), who have been involved in *Vulkan* development from the
beginning, and are one of the original developers of *Vulkan* tools and SDK's, provides
a suite of demo apps, that demonstrate a wide range of basic *Vulkan* features.
These demo apps can be found in the `LunarG-VulkanSamples` folder of this `Demos`
folder, and in the `LunarG-VulkanSamples` group in the *Xcode Project Navigator*
in the `Demos.xcworkspace` *Xcode* workspace.
These **MoltenVK** demos use a modified version of the *LunarG Vulkan Samples*, that allows
the demo apps to run under *iOS* and *macOS*. To download these modified *LunarG Vulkan Samples*,
and link them to the demo *Xcode* projects in this `MoltenVK` distribution, follow the instructions
in the [Installing the LunarG `VulkanSamples` Library](#lunarg-vulkan-samples-install) section next.
<a name="lunarg-vulkan-samples-install"></a>
###Installing the LunarG *VulkanSamples* Library
To run the *LunarG Vulkan Samples* demo apps, **MoltenVK** uses a modified version of the
*LunarG* `VulkanSamples` library. To install this modified *LunarG* `VulkanSamples` library,
open a *Terminal* session and perform the following command-line steps:
1. In a folder outside this `MoltenVK` distribution, clone the modified `VulkanSamples` repo:
git clone https://github.com/brenwill/VulkanSamples.git
2. In the `MoltenVK/Demos/LunarG-VulkanSamples` folder, replace the `VulkanSamples` symlink as follows:
ln -sfn path-to-VulkanSamples-repo-folder VulkanSamples
3. Run the `MoltenVKShaderConverter` tool to convert the *GLSL* shaders in the `VulkanSamples`
library to *SPIR-V*:
cd path-to-MoltenVK-package
MoltenVKShaderConverter/Tools/MoltenVKShaderConverter -gi -so -xs "-" -d Demos/LunarG-VulkanSamples/VulkanSamples/demos
<a name="lunarg-vulkan-samples-demos"></a>
###LunarG Vulkan Samples: *Demos*
This demo is a simple renderings that originally were included in the *Vulkan* SDK.
The demo can be found in the `MoltenVK/Demos/LunarG-VulkanSamples/Demos` folder,
and in the `LunarG-VulkanSamples/Demos` group in the *Xcode Project Navigator*
in the `Demos.xcworkspace` *Xcode* workspace.
####Cube
A basic textured cube that spins in place.
To run this demo, run either the `Cube-iOS` or `Cube-macOS` *Scheme* from within *Xcode*.
This demo is a simple example of installing **MoltenVK** as a dynamic library, instead of as
a statically-linked framework. In this demo, the **MoltenVK** dynamic library is embedded in
the application, but it could have been installed as a system library instead.
<a name="lunarg-vulkan-samples-api"></a>
###LunarG Vulkan Samples: *API-Samples*
This *Xcode* project actually contains a large number of modular demos, with each demo
demonstrating a particular *Vulkan* feature, or suite of calls.
> **Note:** For simplicity, the `API-Samples` demos are bare-bones. Each of the `API-Samples`
> demos renders a single frame during app startup, and then leaves the rendered image static.
> There is no display loop or motion in any of these demos.
> **This is normal for these demos, and the demo has not "hung" or "crashed" when this occurs.**
This demo can be found in the `MoltenVK/Demos/LunarG-VulkanSamples/API-Samples` folder,
and in the `LunarG-VulkanSamples/API-Samples` group in the *Xcode Project Navigator* in
the `Demos.xcworkspace` *Xcode* workspace.
To run this demo, run either the `API-Samples-iOS` or `API-Samples-macOS` *Scheme* from within *Xcode*.
To specify which of the many modular demos to run, open the `Samples.h` in the `API-Samples`
project in the *Xcode Project Navigator* in the `Demos.xcworkspace` *Xcode* workspace, and
follow the instructions in the comments within that file.
To see descriptions and screenshots of each of the demos, open
[this summary document](LunarG-VulkanSamples/VulkanSamples/samples_index.html#AdditionalVulkan),
after you have [installed](#lunarg-vulkan-samples-install) the `LunarG Vulkan Samples` repository.
<a name="lunarg-vulkan-samples-hologram"></a>
###LunarG Vulkan Samples: *Hologram*
> **Note:** In order to build the `Hologram` demo, you must have *Python3* installed
> on your build computer.
This is a sophisticated particle demo that populates command buffers from multiple threads.
This demo can be found in the `MoltenVK/Demos/LunarG-VulkanSamples/Hologram` folder, and in the
`LunarG-VulkanSamples/Hologram` group in the *Xcode Project Navigator* in the `Demos.xcworkspace`
*Xcode* workspace.
To run this demo, run either the `Hologram-iOS` or `Hologram-macOS` *Scheme* from within *Xcode*.
On *macOS*, once the demo is open, you can use the *Up-arrow* and *Down-arrow* keys on the
keyboard to zoom the camera in and out of the scene. Zooming out will show more items on screen.
The demo allows some customization, by modifying the arguments passed to the demo at startup.
To customize, modify the arguments created in the `DemoViewController viewDidLoad` method
found in the `iOS/DemoViewController.mm` or `macOS/DemoViewController.mm` file.
This demo illustrates the use of the **MoltenVK** API `vkGetMoltenVKDeviceConfigurationMVK()`
and `vkSetMoltenVKDeviceConfigurationMVK()` functions to enable **MoltenVK** debugging, including
logging the conversion of shaders from *SPIR-V* to *Metal Shading Language*. See the use of these
functions in the `Hologram/Hologram.cpp` file. To see the effect, modify the `Hologram-iOS` or
`Hologram-macOS` *Scheme* from within *Xcode* to use the **Debug** *Build Configuration* setting.
<a name="khronos-vulkan-samples"></a>
Khronos Vulkan Samples
----------------------
[Khronos](https://khronos.org), the standards organization that developed *Vulkan* provides
a suite of demo apps, that demonstrate a range of sophisticated *Vulkan* features.
These demo apps can be found in the `Khronos-Vulkan-Samples` folder of this `Demos`
folder, and in the `Khronos-Vulkan-Samples` group in the *Xcode Project Navigator*
in the `Demos.xcworkspace` *Xcode* workspace.
These **MoltenVK** demos use a modified version of the *Khronos Vulkan Samples*, that allows
the demo apps to run under *iOS* and *macOS*. To download these modified *Khronos Vulkan Samples*,
and link them to the demo *Xcode* projects in this `MoltenVK` distribution, follow the instructions
in the [Installing the Khronos `Vulkan-Samples` Library](#khronos-vulkan-samples-install) section next.
<a name="khronos-vulkan-samples-install"></a>
###Installing the Khronos `Vulkan-Samples` Library
To run the *Khronos Vulkan Samples* demo apps, **MoltenVK** uses a modified version of the
*Khronos* `Vulkan-Samples` library. To install this modified *Khronos* `Vulkan-Samples` library,
open a *Terminal* session and perform the following command-line steps:
1. In a folder outside this `MoltenVK` distribution, clone the modified `Vulkan-Samples` repo:
git clone https://github.com/brenwill/Vulkan-Samples.git
2. In the `MoltenVK/Demos/Khronos-Vulkan-Samples` folder, replace the `Vulkan-Samples` symlink as follows:
ln -sfn path-to-Vulkan-Samples-repo-folder Vulkan-Samples
<a name="khronos-vulkan-samples-atw"></a>
###Khronos Vulkan Samples: *AsynchronousTimeWarp*
This demo was contributed by *Oculus VR, LLC*, and demonstrates a variety of critical tests for
evaluating accurate synchronization between the two scene images in a virtual reality headset.
This demo can be found in the `MoltenVK/Demos/Khronos-Vulkan-Samples/AsynchronousTimeWarp` folder,
and in the `Khronos-Vulkan-Samples/AsynchronousTimeWarp` group in the *Xcode Project Navigator*
in the `Demos.xcworkspace` *Xcode* workspace.
You can make a large number of configuration changes to this demo, to increase or decrease the
rendering and computational load of the scene. You can set these configuration values by passing
command-line arguments to the demo at start-up. You pass these command-line arguments by setting
them in the `Arguments` tab of the `AsynchronousTimeWarp-VK-iOS` or `AsynchronousTimeWarp-VK-macOS`
*Xcode* schemes.
For example, the following command-line arguments can be used to set the scene complexity:
- `-q [0-3]` : controls whether a minimal, small, medium, or large quantity of objects
will be rendered.
- `-w [0-3]` : controls whether each object will be rendered with a minimal, small,
medium, or large quantity of triangles.
- `-e [0-3]` : controls whether a minimal, small, medium, or large number of lights
will be used to illuminate the scene.
On *macOS*, once the demo is open, you can also tap the `Q`, `W`, or `E` keys on the keyboard
to cycle each of these same configuration parameters through their range of possible values.
For the full instructions for this demo, including a list and explanation of all of
the configuration options, read the notes at the top of the `atw/atw_vulkan.c` file.
This demo illustrates the use of the **MoltenVK** API `vkGetMoltenVKDeviceConfigurationMVK()`
and `vkSetMoltenVKDeviceConfigurationMVK()` functions to enable performance tracking and logging,
and to enable **MoltenVK** debugging, including logging the conversion of shaders from *SPIR-V*
to *Metal Shading Language*. See the use of these functions in the `atw/atw_vulkan.c` file.
To see the effect of shader conversion logging, modify the `AsynchronousTimeWarp-VK-iOS` or
`AsynchronousTimeWarp-VK-macOS` *Scheme* from within *Xcode* to use the
**Debug** *Build Configuration* setting.
<a name="sascha-willems-vulkan-samples"></a>
Sascha Willems Vulkan Samples
-----------------------------
[*Sascha Willems*](https://github.com/brenwill/Vulkan) provides an open-source library containing
a large number of sophisticated *Vulkan* examples. The library contains support for running these
examples on *iOS* and *macOS* in *Xcode*, using **MoltenVK**.
<a name="sascha-willems-install"></a>
###Installing the *Sascha Willems* Library
To install the *Sascha Willems Vulkan* samples, open a *Terminal* session and perform
the following command-line steps:
1. In a folder outside this `MoltenVK` distribution, clone the modified *Sascha Willems* `Vulkan` repo:
git clone https://github.com/brenwill/Vulkan.git
2. Follow the instructions in the `Vulkan\xcode\README_MoltenVK_Examples.md` document
within the *Sascha Willems* `Vulkan` repository.
<a name="cinder-vulkan-samples"></a>
Cinder Vulkan Samples
---------------------
[*Cinder*](https://libcinder.org) is a cross-platform 3D graphics engine built in C++.
*Cinder* supports *Vulkan*, and includes several *Vulkan* demos.
These demo apps are included as part of the *Cinder* code repository.
These **MoltenVK** demos use a modified version of *Cinder*, that allows *Vulkan* to run under
*iOS* and *macOS*. To download the modified version of *Cinder*, and link it to **MoltenVK**,
follow the instructions in the [Installing the `Cinder` Library](#cinder-vulkan-samples-install)
section next.
<a name="cinder-install"></a>
###Installing the *Cinder* Library
To run the *Cinder Vulkan Samples* demo apps, **MoltenVK** uses a modified version of the
*Cinder* library. To install this modified *Cinder* library, and link it to **MoltenVK**,
open a *Terminal* session and perform the following command-line steps:
1. In a folder outside this `MoltenVK` distribution, clone the modified `Cinder` repo,
including required submodules:
git clone --recursive https://github.com/brenwill/Cinder.git
2. Build the core *Cinder* library:
Cinder/xcode/fullbuild.sh
3. By default, the *Cinder Vulkan* samples expect **MoltenVK** to be installed in a directory
beside the `Cinder` repository:
Cinder/
MoltenVK/
If you have installed **MoltenVK** somewhere else, you can redirect the *Cinder Vulkan*
samples to the location of your **MoltenVK** installation as follows:
cd Cinder/samples/_vulkan_explicit
ln -sfn path-to-the-MoltenVK-distribution/MoltenVK
<a name="cinder-vulkan-samples-fish-tornado"></a>
###Cinder Vulkan Samples: *Fish Tornado*
This is a sophisticated simulation of a *Fish Tornado*, a swirling school of thousands of fish.
This demo can be found in the `samples/_vulkan_explicit/FishTornado` folder of the *Cinder* repository.
To build and run this demo for either *iOS* or *macOS*, open the `xcode-ios/FishTornado.xcodeproj`
or `xcode/FishTornado.xcodeproj` *Xcode* project, respectively.

View File

@ -19,7 +19,6 @@ Table of Contents
- [About This Document](#about_this)
- [About **MoltenVK**](#about_moltenvk)
- [Running the **MoltenVK** Demo Applications](#demos)
- [Installing **MoltenVK** in Your *Vulkan* Application](#install)
- [Build and Runtime Requirements](#requirements)
- [Install as Static Library Framework](#install_static_lib)
@ -34,7 +33,6 @@ Table of Contents
- [Xcode Configuration](#xcode_config)
- [Metal System Trace Tool](#trace_tool)
- [Known **MoltenVK** Limitations](#limitations)
- [Third-Party Credits](#credits)
@ -46,7 +44,7 @@ This document describes how to integrate the **MoltenVK** runtime distribution p
or application, once **MoltenVK** has been built into a framework or library for *iOS* or *macOS*.
To learn how to use the **MoltenVK** open-source repository to build a **MoltenVK** runtime
distribution package, see the main [**README**](../README.md) document in the `MoltenVK` repository.
distribution package, see the main [`README.md`](../README.md) document in the `MoltenVK` repository.
@ -70,28 +68,6 @@ using the **Runtime Shader Conversion** feature of **MoltenVK**, or at developme
package.
<a name="demos"></a>
Running the **MoltenVK** Demo Applications
------------------------------------------
You can explore how **MoltenVK** provides *Vulkan* support on *iOS* and *macOS* by investigating
and running the demo applications that are supported with this **MoltenVK** distribution package.
The **MoltenVK** demo apps are located in the `Demos` folder within the **MoltenVK**
distribution package. Each demo app is available as an *Xcode* project.
To review and run many of the available demo apps, open the `Demos/Demos.xcworkspace` workspace
in *Xcode*.
Please read the [Demos/README_MoltenVK_Demos.md](Demos/README_MoltenVK_Demos.md) document for a
description of each demo app, and instructions on downloading and running the demo apps.
Many of the **MoltenVK** demos make use of third-party demo examples, which must be downloaded
from an external repository. Several of the demo apps allow you to explore a variety of *Vulkan*
features by modifying *Xcode* build settings. All of this is explained in the
[README_MoltenVK_Demos.md](Demos/README_MoltenVK_Demos.md) document.
<a name="install"></a>
Installing **MoltenVK** in Your *Vulkan* Application
----------------------------------------------------
@ -481,22 +457,3 @@ The following *Vulkan* features have not been implemented in this version of **M
- `VK_FORMAT_R8_UNORM`: `VkComponentMapping.r` = `VK_COMPONENT_SWIZZLE_R`
- `VK_FORMAT_R8G8B8A8_UNORM` <-> `VK_FORMAT_B8G8R8A8_UNORM`
- `VK_FORMAT_R8G8B8A8_SRGB` <-> `VK_FORMAT_B8G8R8A8_SRGB`
<a name="credits"></a>
Third-Party Credits
-------------------
**MoltenVK** uses technology from the following open-source frameworks:
- [*Vulkan-Hpp*](https://github.com/KhronosGroup/Vulkan-Hpp)
- [*Vulkan-Docs*](https://github.com/KhronosGroup/Vulkan-Docs)
- [*tinyxml2*](https://github.com/leethomason/tinyxml2)
**MoltenVKShaderConverter** uses technology from the following open-source frameworks:
- [*SPIRV-Cross*](https://github.com/KhronosGroup/SPIRV-Cross)
- [*SPIRV-Tools*](https://github.com/KhronosGroup/SPIRV-Tools)
- [*glslang*](https://github.com/KhronosGroup/glslang)

View File

@ -19,6 +19,10 @@ Table of Contents
- [Using the *Vulkan-LoaderAndValidationLayers* Repository with **MoltenVK**](#install_vulkan_lvl)
- [Updating the *Vulkan-LoaderAndValidationLayers* library version](#update_vulkan_lvl)
- *VulkanSamples*
- [Using the *VulkanSamples* Repository with **MoltenVK**](#install_vulkan_samples)
- [Updating the *VulkanSamples* library version](#update_vulkan_samples)
- *SPIRV-Cross*
- [Using the *SPIRV-Cross* library with **MoltenVKShaderConverter**](#install_spirv-cross)
- [Updating the *SPIRV-Cross* library version](#update_spirv-cross)
@ -35,6 +39,7 @@ Table of Contents
- [Adding the *glslang* library to a new *Xcode* project](#add_glslang)
<a name="install_vulkan_spec"></a>
Using the *Vulkan-Hpp* Spec Repository with *MoltenVK*
------------------------------------------------------
@ -111,6 +116,46 @@ The updated version will then be "locked in" the next time the `MoltenVK` reposi
<a name="install_vulkan_samples"></a>
Using the *VulkanSamples* Repository with *MoltenVK*
----------------------------------------------------
**MoltenVK** includes several simple demo apps from *LunarG*. These are sourced from
a modified fork of the *VulkanSamples* repository.
To add the *VulkanSamples* repository to **MoltenVK**, open a *Terminal* session and
perform the following command-line steps:
1. If you used the `--recursive` option when cloning the `MoltenVK` repository, you should already
have the `VulkanSamples` submodule, and you can skip to *Step 2* below. If you did **_not_**
use the `--recursive` option when cloning the `MoltenVK` repository, retrieve the `VulkanSamples`
submodule into the `External` directory as follows, from within the `MoltenVK` repository directory:
git submodule update --init External/VulkanSamples
2. In the `Externals` folder within the `MoltenVK` repository, build the spec and header files
as follows from the main directory of this `MoltenVK` repository:
cd External
./makeVulkanSamples
<a name="update_vulkan_samples"></a>
Updating the *VulkanSamples* library version
--------------------------------------------
If you are developing enhancements to **MoltenVK**, you can update the version of `VulkanSamples`
used by **MoltenVK** to the latest version available by re-cloning and re-building the
`VulkanSamples` submodule using the `getLatestVulkanSamples` script:
cd External
./getLatestVulkanSamples
The updated version will then be "locked in" the next time the `MoltenVK` repository is committed to `git`.
<a name="install_spirv-cross"></a>
Using the *SPIRV-Cross* library with *MoltenVKShaderConverter*
--------------------------------------------------------------

1
External/VulkanSamples vendored Submodule

@ -0,0 +1 @@
Subproject commit d435e00dc9f614155621cdadd2f00fbd0585cda6

View File

@ -9,6 +9,8 @@
# getLatestSPIRVTools
# getLatestglslang
# getLatestSPIRVCross
# getLatestVulkanLVL
# getLatestVulkanSamples
#
# macOS usage: ./getLatestAll
@ -17,3 +19,4 @@
./getLatestglslang
./getLatestSPIRVCross
./getLatestVulkanLVL
./getLatestVulkanSamples

12
External/getLatestVulkanSamples vendored Executable file
View File

@ -0,0 +1,12 @@
#!/usr/bin/env bash
#
# Copyright (c) 2016-2018 The Brenwill Workshop Ltd.
#
# getLatestVulkanSamples - Updates to the latest version of VulkanSamples submodule.
#
# macOS usage: ./getLatestVulkanSamples
rm -rf VulkanSamples
git clone https://github.com/brenwill/VulkanSamples.git
./makeVulkanSamples

5
External/makeAll vendored
View File

@ -6,9 +6,12 @@
# makeVulkanSpec
# makeSPIRVTools
# makeglslang
#
# makeVulkanSamples
#
# macOS usage: ./makeAll
./makeVulkanSpec
./makeSPIRVTools
./makeglslang
./makeVulkanSamples

View File

@ -6,8 +6,6 @@
#
# macOS usage: ./makeSPIRVTools
# Build SPIRV-Tools
echo
echo MoltenVK building SPIRV-Tools
echo

11
External/makeVulkanSamples vendored Executable file
View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
#
# Copyright (c) 2016-2018 The Brenwill Workshop Ltd.
#
# makeVulkanSamples - Configures VulkanSamples for use in demos.
#
# macOS usage: ./makeVulkanSpec
../Package/Latest/MoltenVKShaderConverter/Tools/MoltenVKShaderConverter -gi -so -xs "-" -d ./VulkanSamples/demos

View File

@ -6,8 +6,6 @@
#
# macOS usage: ./makeglslang
# Build glslang
echo
echo MoltenVK building glslang
echo

View File

@ -149,6 +149,8 @@
A9B732A51FC9C588006721CB /* getLatestSPIRVCross */ = {isa = PBXFileReference; lastKnownFileType = text; path = getLatestSPIRVCross; sourceTree = "<group>"; };
A9B732A61FC9C588006721CB /* getLatestVulkanSpec */ = {isa = PBXFileReference; lastKnownFileType = text; path = getLatestVulkanSpec; sourceTree = "<group>"; };
A9B732A71FCA1D71006721CB /* getLatestAll */ = {isa = PBXFileReference; lastKnownFileType = text; path = getLatestAll; sourceTree = "<group>"; };
A9CE6DAA204DF916005250D7 /* makeVulkanSamples */ = {isa = PBXFileReference; lastKnownFileType = text; path = makeVulkanSamples; sourceTree = "<group>"; };
A9CE6DAB204DF924005250D7 /* getLatestVulkanSamples */ = {isa = PBXFileReference; lastKnownFileType = text; path = getLatestVulkanSamples; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXGroup section */
@ -189,12 +191,14 @@
A939A6FC1F547A12006ACA0C /* makeAll */,
A939A6FD1F547A12006ACA0C /* makeglslang */,
A939A6FE1F547A12006ACA0C /* makeSPIRVTools */,
A9CE6DAA204DF916005250D7 /* makeVulkanSamples */,
A939A6FF1F547A12006ACA0C /* makeVulkanSpec */,
A9B732A71FCA1D71006721CB /* getLatestAll */,
A9B732A31FC9C588006721CB /* getLatestglslang */,
A9B732A51FC9C588006721CB /* getLatestSPIRVCross */,
A9B732A41FC9C588006721CB /* getLatestSPIRVTools */,
A94545691FEB1C23000C2CB2 /* getLatestVulkanLVL */,
A9CE6DAB204DF924005250D7 /* getLatestVulkanSamples */,
A9B732A61FC9C588006721CB /* getLatestVulkanSpec */,
);
path = External;
@ -316,7 +320,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "set -e\n\n# Package folder\nexport MVK_WKSPC_PATH=\"${PROJECT_DIR}\"\nexport MVK_PKG_LOCN=\"${MVK_WKSPC_PATH}/Package\"\nexport MVK_PKG_CONFIG_PATH=\"${MVK_PKG_LOCN}/${CONFIGURATION}\"\n\n# Copy the docs. Allow silent fail if a symlinked doc is not built.\ncp -a \"${MVK_WKSPC_PATH}/LICENSE\" \"${MVK_PKG_CONFIG_PATH}\"\ncp -pRLf \"${MVK_WKSPC_PATH}/Docs\" \"${MVK_PKG_CONFIG_PATH}\" 2> /dev/null || true\n\n";
shellScript = "set -e\n\n# Package folder\nexport MVK_WKSPC_PATH=\"${PROJECT_DIR}\"\nexport MVK_PKG_LOCN=\"${MVK_WKSPC_PATH}/Package\"\nexport MVK_PKG_CONFIG_PATH=\"${MVK_PKG_LOCN}/${CONFIGURATION}\"\n\n# Copy the docs. Allow silent fail if a symlinked doc is not built.\ncp -a \"${MVK_WKSPC_PATH}/LICENSE\" \"${MVK_PKG_CONFIG_PATH}\"\ncp -pRLf \"${MVK_WKSPC_PATH}/Docs\" \"${MVK_PKG_CONFIG_PATH}\" 2> /dev/null || true\nrm \"${MVK_PKG_CONFIG_PATH}/Docs/ThirdPartyConfig.md\"\n\n";
};
A9FEADD61F3517480010240E /* Package MoltenVK */ = {
isa = PBXShellScriptBuildPhase;
@ -330,7 +334,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "set -e\n\n# Package folder\nexport MVK_PROD_NAME=\"MoltenVK\"\nexport MVK_DYLIB_NAME=\"lib${MVK_PROD_NAME}.dylib\"\nexport MVK_ICD_NAME=\"${MVK_PROD_NAME}_icd.json\"\nexport MVK_WKSPC_PATH=\"${PROJECT_DIR}\"\nexport MVK_PROD_PROJ_PATH=\"${MVK_WKSPC_PATH}/${MVK_PROD_NAME}\"\nexport MVK_PKG_LOCN=\"${MVK_WKSPC_PATH}/Package\"\nexport MVK_PKG_CONFIG_PATH=\"${MVK_PKG_LOCN}/${CONFIGURATION}\"\nexport MVK_PKG_PROD_PATH=\"${MVK_PKG_CONFIG_PATH}/${MVK_PROD_NAME}\"\n\n# Remove the product folder\nrm -rf \"${MVK_PKG_PROD_PATH}\"\n\n# Remove and replace the existing macOS framework folder and copy framework into it\nexport MVK_OS_PROD_PATH=\"${MVK_PKG_PROD_PATH}/macOS\"\nexport MVK_BUILT_PROD_PATH=\"${BUILT_PRODUCTS_DIR}\"\nrm -rf \"${MVK_OS_PROD_PATH}\"\nmkdir -p \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_BUILT_PROD_PATH}/${MVK_PROD_NAME}.framework\" \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_BUILT_PROD_PATH}/${MVK_DYLIB_NAME}\" \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_PROD_PROJ_PATH}/icd/${MVK_ICD_NAME}\" \"${MVK_OS_PROD_PATH}\"\n\n# Remove and replace the existing iOS framework folder and copy framework into it\nexport MVK_OS_PROD_PATH=\"${MVK_PKG_PROD_PATH}/iOS\"\nexport MVK_BUILT_PROD_PATH=\"${BUILT_PRODUCTS_DIR}/../${CONFIGURATION}-iphoneos\"\nrm -rf \"${MVK_BUILT_PROD_PATH}/${MVK_PROD_NAME}.framework/_CodeSignature\"\nrm -rf \"${MVK_OS_PROD_PATH}\"\nmkdir -p \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_BUILT_PROD_PATH}/${MVK_PROD_NAME}.framework\" \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_BUILT_PROD_PATH}/${MVK_DYLIB_NAME}\" \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_PROD_PROJ_PATH}/icd/${MVK_ICD_NAME}\" \"${MVK_OS_PROD_PATH}\"\n\n# Remove and replace header include folder\nrm -rf \"${MVK_PKG_PROD_PATH}/include\"\ncp -pRL \"${MVK_PROD_PROJ_PATH}/include\" \"${MVK_PKG_PROD_PATH}\"\n\n# Copy the demo apps to the Configuration package folder\nrm -rf \"${MVK_PKG_CONFIG_PATH}/Demos\"\ncp -af \"${MVK_WKSPC_PATH}/Demos\" \"${MVK_PKG_CONFIG_PATH}\"\n\n# Remove developer user info from demo projects\nexport MVK_PKG_DEMOS_PATH=\"${MVK_PKG_CONFIG_PATH}/Demos\"\nexport MVK_PKG_DEMO_PROJ_PATH=\"${MVK_PKG_DEMOS_PATH}/Demos.xcworkspace\"\nrm -rf \"${MVK_PKG_DEMO_PROJ_PATH}/xcuserdata\"\n\nexport MVK_DEMO_NAME=\"API-Samples\"\nexport MVK_PKG_DEMO_PROJ_PATH=\"${MVK_PKG_DEMOS_PATH}/LunarG-VulkanSamples/${MVK_DEMO_NAME}/${MVK_DEMO_NAME}.xcodeproj\"\nrm -rf \"${MVK_PKG_DEMO_PROJ_PATH}/xcuserdata\"\nrm -rf \"${MVK_PKG_DEMO_PROJ_PATH}/project.xcworkspace\"\n\nexport MVK_DEMO_NAME=\"Demos\"\nexport MVK_PKG_DEMO_PROJ_PATH=\"${MVK_PKG_DEMOS_PATH}/LunarG-VulkanSamples/${MVK_DEMO_NAME}/${MVK_DEMO_NAME}.xcodeproj\"\nrm -rf \"${MVK_PKG_DEMO_PROJ_PATH}/xcuserdata\"\nrm -rf \"${MVK_PKG_DEMO_PROJ_PATH}/project.xcworkspace\"\n\nexport MVK_DEMO_NAME=\"Hologram\"\nexport MVK_PKG_DEMO_PROJ_PATH=\"${MVK_PKG_DEMOS_PATH}/LunarG-VulkanSamples/${MVK_DEMO_NAME}/${MVK_DEMO_NAME}.xcodeproj\"\nrm -rf \"${MVK_PKG_DEMO_PROJ_PATH}/xcuserdata\"\nrm -rf \"${MVK_PKG_DEMO_PROJ_PATH}/project.xcworkspace\"\n\nexport MVK_DEMO_NAME=\"AsynchronousTimeWarp\"\nexport MVK_PKG_DEMO_PROJ_PATH=\"${MVK_PKG_DEMOS_PATH}/Khronos-Vulkan-Samples/${MVK_DEMO_NAME}/${MVK_DEMO_NAME}.xcodeproj\"\nrm -rf \"${MVK_PKG_DEMO_PROJ_PATH}/xcuserdata\"\nrm -rf \"${MVK_PKG_DEMO_PROJ_PATH}/project.xcworkspace\"\n";
shellScript = "set -e\n\n# Package folder\nexport MVK_PROD_NAME=\"MoltenVK\"\nexport MVK_DYLIB_NAME=\"lib${MVK_PROD_NAME}.dylib\"\nexport MVK_ICD_NAME=\"${MVK_PROD_NAME}_icd.json\"\nexport MVK_WKSPC_PATH=\"${PROJECT_DIR}\"\nexport MVK_PROD_PROJ_PATH=\"${MVK_WKSPC_PATH}/${MVK_PROD_NAME}\"\nexport MVK_PKG_LOCN=\"${MVK_WKSPC_PATH}/Package\"\nexport MVK_PKG_CONFIG_PATH=\"${MVK_PKG_LOCN}/${CONFIGURATION}\"\nexport MVK_PKG_PROD_PATH=\"${MVK_PKG_CONFIG_PATH}/${MVK_PROD_NAME}\"\n\n# Remove the product folder\nrm -rf \"${MVK_PKG_PROD_PATH}\"\n\n# Remove and replace the existing macOS framework folder and copy framework into it\nexport MVK_OS_PROD_PATH=\"${MVK_PKG_PROD_PATH}/macOS\"\nexport MVK_BUILT_PROD_PATH=\"${BUILT_PRODUCTS_DIR}\"\nrm -rf \"${MVK_OS_PROD_PATH}\"\nmkdir -p \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_BUILT_PROD_PATH}/${MVK_PROD_NAME}.framework\" \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_BUILT_PROD_PATH}/${MVK_DYLIB_NAME}\" \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_PROD_PROJ_PATH}/icd/${MVK_ICD_NAME}\" \"${MVK_OS_PROD_PATH}\"\n\n# Remove and replace the existing iOS framework folder and copy framework into it\nexport MVK_OS_PROD_PATH=\"${MVK_PKG_PROD_PATH}/iOS\"\nexport MVK_BUILT_PROD_PATH=\"${BUILT_PRODUCTS_DIR}/../${CONFIGURATION}-iphoneos\"\nrm -rf \"${MVK_BUILT_PROD_PATH}/${MVK_PROD_NAME}.framework/_CodeSignature\"\nrm -rf \"${MVK_OS_PROD_PATH}\"\nmkdir -p \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_BUILT_PROD_PATH}/${MVK_PROD_NAME}.framework\" \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_BUILT_PROD_PATH}/${MVK_DYLIB_NAME}\" \"${MVK_OS_PROD_PATH}\"\ncp -a \"${MVK_PROD_PROJ_PATH}/icd/${MVK_ICD_NAME}\" \"${MVK_OS_PROD_PATH}\"\n\n# Remove and replace header include folder\nrm -rf \"${MVK_PKG_PROD_PATH}/include\"\ncp -pRL \"${MVK_PROD_PROJ_PATH}/include\" \"${MVK_PKG_PROD_PATH}\"";
};
A9FEADD71F3517480010240E /* Package MoltenVKShaderConverter */ = {
isa = PBXShellScriptBuildPhase;

View File

@ -23,6 +23,7 @@ Table of Contents
- [Third-Party Libraries](#third-party)
- [Updating the Third-Party Library Versions](#update_third-party)
- [Building **MoltenVK**](#building)
- [Running the **MoltenVK** Demo Applications](#demos)
- [Using **MoltenVK** in Your Application](#using)
- [Third-Party Credits](#credits)
@ -68,8 +69,9 @@ Installing **MoltenVK**
this `MoltenVK` repository, and then run the `External/makeAll` script to create necessary
components within the third-party libraries.
1. Ensure you have `python3` installed:
1. Ensure you have `cmake` and `python3` installed:
brew install cmake
brew install python3
2. **_Optional:_** If you want to generate a Vulkan specification document for inclusion
@ -182,15 +184,33 @@ included in the **MoltenVK** runtime distribution package, and you can use it to
<a name="demos"></a>
Running the **MoltenVK** Demo Applications
------------------------------------------
Once you have compiled and built the **MoltenVK** runtime distribution package from this **MoltenVK** repository,
as described in the [Building **MoltenVK**](#building) section, you can explore how **MoltenVK** provides *Vulkan*
support on *iOS* and *macOS* by investigating and running the demo applications that are included in **MoltenVK**.
The **MoltenVK** demo apps are located in the `Demos` folder. Each demo app is available as an *Xcode* project.
To review and run the included demo apps, open the `Demos/Demos.xcworkspace` workspace in *Xcode*.
Please read the [`Demos/README.md`](Demos/README.md) document for a description of each demo app, and instructions
on running the demo apps. Several of the demo apps allow you to explore a variety of *Vulkan* features by modifying
*Xcode* build settings. Additional demos can be downloaded and built from external repositories, as described in the
[`Demos/README.md`](Demos/README.md) document
<a name="using"></a>
Using **MoltenVK** in Your Application
--------------------------------------
Once you have compiled and built the **MoltenVK** runtime distribution package from this **MoltenVK**
repository, as described in the [previous section](#building), follow the instructions in the installation
section of the [**MoltenVK Runtime User Guide**](Docs/MoltenVK_Runtime_UserGuide.md#install) document in the
Once you have compiled and built the **MoltenVK** runtime distribution package from this **MoltenVK** repository,
as described in the [Building **MoltenVK**](#building) section, follow the instructions in the Installation
section of the [`MoltenVK_Runtime_UserGuide.md`](Docs/MoltenVK_Runtime_UserGuide.md#install) document in the
`Docs` directory of the **MoltenVK** runtime distribution package found in the `Package/Latest` directory,
to link the **MoltenVK** frameworks and libraries in the `Package/Latest` directory to your application.
to link the **MoltenVK** frameworks and libraries to your application.
The runtime distribution package in the `Package/Latest` directory is a stand-alone package, and you can copy
the contents of that directory out of this **MoltenVK** repository into your own application building environment.
@ -206,10 +226,8 @@ Third-Party Credits
- [*Vulkan-Hpp*](https://github.com/KhronosGroup/Vulkan-Hpp)
- [*Vulkan-Docs*](https://github.com/KhronosGroup/Vulkan-Docs)
- [*Vulkan-LoaderAndValidationLayers*](https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers)
- [*tinyxml2*](https://github.com/leethomason/tinyxml2)
**MoltenVKShaderConverter** uses technology from the following open-source frameworks:
- [*VulkanSamples*](https://github.com/brenwill/VulkanSamples)
- [*SPIRV-Cross*](https://github.com/KhronosGroup/SPIRV-Cross)
- [*SPIRV-Tools*](https://github.com/KhronosGroup/SPIRV-Tools)
- [*glslang*](https://github.com/KhronosGroup/glslang)
- [*tinyxml2*](https://github.com/leethomason/tinyxml2)