Skip to content

Commit 59522d1

Browse files
committed
MetalImageFilters: Version 1.0, 2016-09-13
First release This sample demonstrates how to use a selection of MPSKernel classes to filter an image on the GPU. The image is processed as a MTLTexture object, obtained from either a bundled file or a real-time video stream. The filters demonstrated range from a single-pass Sobel filter to a multi-pass histogram specification.
1 parent 4ed3e00 commit 59522d1

File tree

15 files changed

+1557
-0
lines changed

15 files changed

+1557
-0
lines changed

MetalImageFilters/LICENSE.txt

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
Sample code project: Metal Image Filters: Using the image filters provided by the Metal Performance Shaders framework.
2+
Version: 1.0
3+
4+
IMPORTANT: This Apple software is supplied to you by Apple
5+
Inc. ("Apple") in consideration of your agreement to the following
6+
terms, and your use, installation, modification or redistribution of
7+
this Apple software constitutes acceptance of these terms. If you do
8+
not agree with these terms, please do not use, install, modify or
9+
redistribute this Apple software.
10+
11+
In consideration of your agreement to abide by the following terms, and
12+
subject to these terms, Apple grants you a personal, non-exclusive
13+
license, under Apple's copyrights in this original Apple software (the
14+
"Apple Software"), to use, reproduce, modify and redistribute the Apple
15+
Software, with or without modifications, in source and/or binary forms;
16+
provided that if you redistribute the Apple Software in its entirety and
17+
without modifications, you must retain this notice and the following
18+
text and disclaimers in all such redistributions of the Apple Software.
19+
Neither the name, trademarks, service marks or logos of Apple Inc. may
20+
be used to endorse or promote products derived from the Apple Software
21+
without specific prior written permission from Apple. Except as
22+
expressly stated in this notice, no other rights or licenses, express or
23+
implied, are granted by Apple herein, including but not limited to any
24+
patent rights that may be infringed by your derivative works or by other
25+
works in which the Apple Software may be incorporated.
26+
27+
The Apple Software is provided by Apple on an "AS IS" basis. APPLE
28+
MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
29+
THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
30+
FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
31+
OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
32+
33+
IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
34+
OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
35+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
36+
INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
37+
MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
38+
AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
39+
STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
40+
POSSIBILITY OF SUCH DAMAGE.
41+
42+
Copyright (C) 2016 Apple Inc. All Rights Reserved.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,349 @@
1+
// !$*UTF8*$!
2+
{
3+
archiveVersion = 1;
4+
classes = {
5+
};
6+
objectVersion = 46;
7+
objects = {
8+
9+
/* Begin PBXBuildFile section */
10+
3E4369CB1D26BC66000A490E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4369CA1D26BC66000A490E /* AppDelegate.swift */; };
11+
3E4369CD1D26BC66000A490E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E4369CC1D26BC66000A490E /* ViewController.swift */; };
12+
3E4369D01D26BC66000A490E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3E4369CE1D26BC66000A490E /* Main.storyboard */; };
13+
3E4369D21D26BC66000A490E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3E4369D11D26BC66000A490E /* Assets.xcassets */; };
14+
3E4369D51D26BC66000A490E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3E4369D31D26BC66000A490E /* LaunchScreen.storyboard */; };
15+
3E6FAFC31D2A1B3800D83910 /* ImageFilters.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E6FAFC21D2A1B3800D83910 /* ImageFilters.swift */; };
16+
3E8F321C1D3CA98F000DECF0 /* VideoImageTextureProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E8F321B1D3CA98F000DECF0 /* VideoImageTextureProvider.swift */; };
17+
3EABC9721D447E5500C3EDC3 /* StillImageTextureProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EABC9711D447E5500C3EDC3 /* StillImageTextureProvider.swift */; };
18+
3EB84EBE1D5C7969001E545D /* final0.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3EB84EBD1D5C7969001E545D /* final0.jpg */; };
19+
63FA007C1D5E6E45009DEF93 /* final2.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 63FA007A1D5E6E45009DEF93 /* final2.jpg */; };
20+
/* End PBXBuildFile section */
21+
22+
/* Begin PBXFileReference section */
23+
3E4369C71D26BC66000A490E /* MetalImageFilters.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MetalImageFilters.app; sourceTree = BUILT_PRODUCTS_DIR; };
24+
3E4369CA1D26BC66000A490E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
25+
3E4369CC1D26BC66000A490E /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
26+
3E4369CF1D26BC66000A490E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
27+
3E4369D11D26BC66000A490E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
28+
3E4369D41D26BC66000A490E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
29+
3E4369D61D26BC66000A490E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
30+
3E6FAFC21D2A1B3800D83910 /* ImageFilters.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageFilters.swift; sourceTree = "<group>"; };
31+
3E8F321B1D3CA98F000DECF0 /* VideoImageTextureProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoImageTextureProvider.swift; sourceTree = "<group>"; };
32+
3EABC9711D447E5500C3EDC3 /* StillImageTextureProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StillImageTextureProvider.swift; sourceTree = "<group>"; };
33+
3EB84EBD1D5C7969001E545D /* final0.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = final0.jpg; path = Images/final0.jpg; sourceTree = "<group>"; };
34+
63FA007A1D5E6E45009DEF93 /* final2.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = final2.jpg; path = Images/final2.jpg; sourceTree = "<group>"; };
35+
B5DA4CD31D88980200D4C7AA /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
36+
/* End PBXFileReference section */
37+
38+
/* Begin PBXFrameworksBuildPhase section */
39+
3E4369C41D26BC66000A490E /* Frameworks */ = {
40+
isa = PBXFrameworksBuildPhase;
41+
buildActionMask = 2147483647;
42+
files = (
43+
);
44+
runOnlyForDeploymentPostprocessing = 0;
45+
};
46+
/* End PBXFrameworksBuildPhase section */
47+
48+
/* Begin PBXGroup section */
49+
3E4369BE1D26BC66000A490E = {
50+
isa = PBXGroup;
51+
children = (
52+
B5DA4CD31D88980200D4C7AA /* README.md */,
53+
3E4369C91D26BC66000A490E /* MetalImageFilters */,
54+
3E4369C81D26BC66000A490E /* Products */,
55+
);
56+
sourceTree = "<group>";
57+
};
58+
3E4369C81D26BC66000A490E /* Products */ = {
59+
isa = PBXGroup;
60+
children = (
61+
3E4369C71D26BC66000A490E /* MetalImageFilters.app */,
62+
);
63+
name = Products;
64+
sourceTree = "<group>";
65+
};
66+
3E4369C91D26BC66000A490E /* MetalImageFilters */ = {
67+
isa = PBXGroup;
68+
children = (
69+
6390FBBD1D53C5D3004FB90B /* Images */,
70+
3E8F32181D3CA854000DECF0 /* ImageTextureProviders */,
71+
3E4369CA1D26BC66000A490E /* AppDelegate.swift */,
72+
3E4369CC1D26BC66000A490E /* ViewController.swift */,
73+
3E6FAFC21D2A1B3800D83910 /* ImageFilters.swift */,
74+
3E4369CE1D26BC66000A490E /* Main.storyboard */,
75+
3E4369D11D26BC66000A490E /* Assets.xcassets */,
76+
3E4369D31D26BC66000A490E /* LaunchScreen.storyboard */,
77+
3E4369D61D26BC66000A490E /* Info.plist */,
78+
);
79+
path = MetalImageFilters;
80+
sourceTree = "<group>";
81+
};
82+
3E8F32181D3CA854000DECF0 /* ImageTextureProviders */ = {
83+
isa = PBXGroup;
84+
children = (
85+
3E8F321B1D3CA98F000DECF0 /* VideoImageTextureProvider.swift */,
86+
3EABC9711D447E5500C3EDC3 /* StillImageTextureProvider.swift */,
87+
);
88+
path = ImageTextureProviders;
89+
sourceTree = "<group>";
90+
};
91+
6390FBBD1D53C5D3004FB90B /* Images */ = {
92+
isa = PBXGroup;
93+
children = (
94+
3EB84EBD1D5C7969001E545D /* final0.jpg */,
95+
63FA007A1D5E6E45009DEF93 /* final2.jpg */,
96+
);
97+
name = Images;
98+
sourceTree = "<group>";
99+
};
100+
/* End PBXGroup section */
101+
102+
/* Begin PBXNativeTarget section */
103+
3E4369C61D26BC66000A490E /* MetalImageFilters */ = {
104+
isa = PBXNativeTarget;
105+
buildConfigurationList = 3E4369D91D26BC66000A490E /* Build configuration list for PBXNativeTarget "MetalImageFilters" */;
106+
buildPhases = (
107+
3E4369C31D26BC66000A490E /* Sources */,
108+
3E4369C41D26BC66000A490E /* Frameworks */,
109+
3E4369C51D26BC66000A490E /* Resources */,
110+
);
111+
buildRules = (
112+
);
113+
dependencies = (
114+
);
115+
name = MetalImageFilters;
116+
productName = MetaPerformanceShaderShowcase;
117+
productReference = 3E4369C71D26BC66000A490E /* MetalImageFilters.app */;
118+
productType = "com.apple.product-type.application";
119+
};
120+
/* End PBXNativeTarget section */
121+
122+
/* Begin PBXProject section */
123+
3E4369BF1D26BC66000A490E /* Project object */ = {
124+
isa = PBXProject;
125+
attributes = {
126+
LastSwiftUpdateCheck = 0800;
127+
LastUpgradeCheck = 0800;
128+
ORGANIZATIONNAME = "";
129+
TargetAttributes = {
130+
3E4369C61D26BC66000A490E = {
131+
CreatedOnToolsVersion = 8.0;
132+
ProvisioningStyle = Automatic;
133+
};
134+
};
135+
};
136+
buildConfigurationList = 3E4369C21D26BC66000A490E /* Build configuration list for PBXProject "MetalImageFilters" */;
137+
compatibilityVersion = "Xcode 3.2";
138+
developmentRegion = English;
139+
hasScannedForEncodings = 0;
140+
knownRegions = (
141+
en,
142+
Base,
143+
);
144+
mainGroup = 3E4369BE1D26BC66000A490E;
145+
productRefGroup = 3E4369C81D26BC66000A490E /* Products */;
146+
projectDirPath = "";
147+
projectRoot = "";
148+
targets = (
149+
3E4369C61D26BC66000A490E /* MetalImageFilters */,
150+
);
151+
};
152+
/* End PBXProject section */
153+
154+
/* Begin PBXResourcesBuildPhase section */
155+
3E4369C51D26BC66000A490E /* Resources */ = {
156+
isa = PBXResourcesBuildPhase;
157+
buildActionMask = 2147483647;
158+
files = (
159+
3E4369D51D26BC66000A490E /* LaunchScreen.storyboard in Resources */,
160+
3E4369D21D26BC66000A490E /* Assets.xcassets in Resources */,
161+
3E4369D01D26BC66000A490E /* Main.storyboard in Resources */,
162+
3EB84EBE1D5C7969001E545D /* final0.jpg in Resources */,
163+
63FA007C1D5E6E45009DEF93 /* final2.jpg in Resources */,
164+
);
165+
runOnlyForDeploymentPostprocessing = 0;
166+
};
167+
/* End PBXResourcesBuildPhase section */
168+
169+
/* Begin PBXSourcesBuildPhase section */
170+
3E4369C31D26BC66000A490E /* Sources */ = {
171+
isa = PBXSourcesBuildPhase;
172+
buildActionMask = 2147483647;
173+
files = (
174+
3E8F321C1D3CA98F000DECF0 /* VideoImageTextureProvider.swift in Sources */,
175+
3E6FAFC31D2A1B3800D83910 /* ImageFilters.swift in Sources */,
176+
3E4369CD1D26BC66000A490E /* ViewController.swift in Sources */,
177+
3EABC9721D447E5500C3EDC3 /* StillImageTextureProvider.swift in Sources */,
178+
3E4369CB1D26BC66000A490E /* AppDelegate.swift in Sources */,
179+
);
180+
runOnlyForDeploymentPostprocessing = 0;
181+
};
182+
/* End PBXSourcesBuildPhase section */
183+
184+
/* Begin PBXVariantGroup section */
185+
3E4369CE1D26BC66000A490E /* Main.storyboard */ = {
186+
isa = PBXVariantGroup;
187+
children = (
188+
3E4369CF1D26BC66000A490E /* Base */,
189+
);
190+
name = Main.storyboard;
191+
sourceTree = "<group>";
192+
};
193+
3E4369D31D26BC66000A490E /* LaunchScreen.storyboard */ = {
194+
isa = PBXVariantGroup;
195+
children = (
196+
3E4369D41D26BC66000A490E /* Base */,
197+
);
198+
name = LaunchScreen.storyboard;
199+
sourceTree = "<group>";
200+
};
201+
/* End PBXVariantGroup section */
202+
203+
/* Begin XCBuildConfiguration section */
204+
3E4369D71D26BC66000A490E /* Debug */ = {
205+
isa = XCBuildConfiguration;
206+
buildSettings = {
207+
ALWAYS_SEARCH_USER_PATHS = NO;
208+
CLANG_ANALYZER_NONNULL = YES;
209+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
210+
CLANG_CXX_LIBRARY = "libc++";
211+
CLANG_ENABLE_MODULES = YES;
212+
CLANG_ENABLE_OBJC_ARC = YES;
213+
CLANG_WARN_BOOL_CONVERSION = YES;
214+
CLANG_WARN_CONSTANT_CONVERSION = YES;
215+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
216+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
217+
CLANG_WARN_EMPTY_BODY = YES;
218+
CLANG_WARN_ENUM_CONVERSION = YES;
219+
CLANG_WARN_INT_CONVERSION = YES;
220+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
221+
CLANG_WARN_UNREACHABLE_CODE = YES;
222+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
223+
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
224+
COPY_PHASE_STRIP = NO;
225+
DEBUG_INFORMATION_FORMAT = dwarf;
226+
ENABLE_STRICT_OBJC_MSGSEND = YES;
227+
ENABLE_TESTABILITY = YES;
228+
GCC_C_LANGUAGE_STANDARD = gnu99;
229+
GCC_DYNAMIC_NO_PIC = NO;
230+
GCC_NO_COMMON_BLOCKS = YES;
231+
GCC_OPTIMIZATION_LEVEL = 0;
232+
GCC_PREPROCESSOR_DEFINITIONS = (
233+
"DEBUG=1",
234+
"$(inherited)",
235+
);
236+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
237+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
238+
GCC_WARN_UNDECLARED_SELECTOR = YES;
239+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
240+
GCC_WARN_UNUSED_FUNCTION = YES;
241+
GCC_WARN_UNUSED_VARIABLE = YES;
242+
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
243+
MTL_ENABLE_DEBUG_INFO = YES;
244+
ONLY_ACTIVE_ARCH = YES;
245+
SDKROOT = iphoneos;
246+
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
247+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
248+
TARGETED_DEVICE_FAMILY = 2;
249+
};
250+
name = Debug;
251+
};
252+
3E4369D81D26BC66000A490E /* Release */ = {
253+
isa = XCBuildConfiguration;
254+
buildSettings = {
255+
ALWAYS_SEARCH_USER_PATHS = NO;
256+
CLANG_ANALYZER_NONNULL = YES;
257+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
258+
CLANG_CXX_LIBRARY = "libc++";
259+
CLANG_ENABLE_MODULES = YES;
260+
CLANG_ENABLE_OBJC_ARC = YES;
261+
CLANG_WARN_BOOL_CONVERSION = YES;
262+
CLANG_WARN_CONSTANT_CONVERSION = YES;
263+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
264+
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
265+
CLANG_WARN_EMPTY_BODY = YES;
266+
CLANG_WARN_ENUM_CONVERSION = YES;
267+
CLANG_WARN_INT_CONVERSION = YES;
268+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
269+
CLANG_WARN_UNREACHABLE_CODE = YES;
270+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
271+
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
272+
COPY_PHASE_STRIP = NO;
273+
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
274+
ENABLE_NS_ASSERTIONS = NO;
275+
ENABLE_STRICT_OBJC_MSGSEND = YES;
276+
GCC_C_LANGUAGE_STANDARD = gnu99;
277+
GCC_NO_COMMON_BLOCKS = YES;
278+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
279+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
280+
GCC_WARN_UNDECLARED_SELECTOR = YES;
281+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
282+
GCC_WARN_UNUSED_FUNCTION = YES;
283+
GCC_WARN_UNUSED_VARIABLE = YES;
284+
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
285+
MTL_ENABLE_DEBUG_INFO = NO;
286+
SDKROOT = iphoneos;
287+
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
288+
TARGETED_DEVICE_FAMILY = 2;
289+
VALIDATE_PRODUCT = YES;
290+
};
291+
name = Release;
292+
};
293+
3E4369DA1D26BC66000A490E /* Debug */ = {
294+
isa = XCBuildConfiguration;
295+
buildSettings = {
296+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
297+
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
298+
DEVELOPMENT_TEAM = "";
299+
INFOPLIST_FILE = "$(SRCROOT)/MetalImageFilters/Info.plist";
300+
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
301+
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
302+
PRODUCT_BUNDLE_IDENTIFIER = "com.example.apple-samplecode.MetalImageFilters";
303+
PRODUCT_NAME = "$(TARGET_NAME)";
304+
SWIFT_VERSION = 3.0;
305+
TARGETED_DEVICE_FAMILY = "1,2";
306+
};
307+
name = Debug;
308+
};
309+
3E4369DB1D26BC66000A490E /* Release */ = {
310+
isa = XCBuildConfiguration;
311+
buildSettings = {
312+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
313+
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
314+
DEVELOPMENT_TEAM = "";
315+
INFOPLIST_FILE = "$(SRCROOT)/MetalImageFilters/Info.plist";
316+
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
317+
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
318+
PRODUCT_BUNDLE_IDENTIFIER = "com.example.apple-samplecode.MetalImageFilters";
319+
PRODUCT_NAME = "$(TARGET_NAME)";
320+
SWIFT_VERSION = 3.0;
321+
TARGETED_DEVICE_FAMILY = "1,2";
322+
};
323+
name = Release;
324+
};
325+
/* End XCBuildConfiguration section */
326+
327+
/* Begin XCConfigurationList section */
328+
3E4369C21D26BC66000A490E /* Build configuration list for PBXProject "MetalImageFilters" */ = {
329+
isa = XCConfigurationList;
330+
buildConfigurations = (
331+
3E4369D71D26BC66000A490E /* Debug */,
332+
3E4369D81D26BC66000A490E /* Release */,
333+
);
334+
defaultConfigurationIsVisible = 0;
335+
defaultConfigurationName = Release;
336+
};
337+
3E4369D91D26BC66000A490E /* Build configuration list for PBXNativeTarget "MetalImageFilters" */ = {
338+
isa = XCConfigurationList;
339+
buildConfigurations = (
340+
3E4369DA1D26BC66000A490E /* Debug */,
341+
3E4369DB1D26BC66000A490E /* Release */,
342+
);
343+
defaultConfigurationIsVisible = 0;
344+
defaultConfigurationName = Release;
345+
};
346+
/* End XCConfigurationList section */
347+
};
348+
rootObject = 3E4369BF1D26BC66000A490E /* Project object */;
349+
}

0 commit comments

Comments
 (0)