diff --git a/xcode/examples.h b/xcode/examples.h index 975f6f87..59952668 100644 --- a/xcode/examples.h +++ b/xcode/examples.h @@ -31,6 +31,10 @@ // BASICS +#ifdef MVK_triangle +# include "../examples/triangle/triangle.cpp" +#endif + #ifdef MVK_pipelines # include "../examples/pipelines/pipelines.cpp" #endif @@ -39,26 +43,45 @@ # include "../examples/texture/texture.cpp" #endif -// Does not run. Metal does not support passing matrices between shader stages. Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 +#ifdef MVK_texture3d +# include "../examples/texture3d/texture3d.cpp" +#endif + +// Does not run. Metal does not support passing matrices between shader stages. +// Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 #ifdef MVK_texturecubemap # include "../examples/texturecubemap/texturecubemap.cpp" #endif +#ifdef MVK_texturecubemaparray +# include "../examples/texturecubemaparray/texturecubemaparray.cpp" +#endif + // Runs in Release mode. Does not run in Debug mode, as Metal validation will // assert that UBO buffer length is too short for UBO size declared in shader. +// Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 #ifdef MVK_texturearray # include "../examples/texturearray/texturearray.cpp" #endif -//#ifdef MVK_mesh -//# include "../examples/mesh/mesh.cpp" -//#endif - #ifdef MVK_dynamicuniformbuffer # include "../examples/dynamicuniformbuffer/dynamicuniformbuffer.cpp" #endif -// Does not run. Metal does not support passing arrays between shader stages. Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 +#ifdef MVK_inlineuniformblocks +# include "../examples/inlineuniformblocks/inlineuniformblocks.cpp" +#endif + +#ifdef MVK_inputattachments +# include "../examples/inputattachments/inputattachments.cpp" +#endif + +#ifdef MVK_negativeviewportheight +# include "../examples/negativeviewportheight/negativeviewportheight.cpp" +#endif + +// Does not run. Metal does not support passing arrays between shader stages. +// Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 #ifdef MVK_pushconstants # include "../examples/pushconstants/pushconstants.cpp" #endif @@ -71,6 +94,28 @@ # include "../examples/offscreen/offscreen.cpp" #endif +// Runs but nothing displays +#ifdef MVK_oit +# include "../examples/oit/oit.cpp" +#endif + +// Does not run - build issue. +#ifdef MVK_renderheadless +# include "../examples/renderheadless/renderheadless.cpp" +#endif + +#ifdef MVK_screenshot +# include "../examples/screenshot/screenshot.cpp" +#endif + +#ifdef MVK_stencilbuffer +# include "../examples/stencilbuffer/stencilbuffer.cpp" +#endif + +#ifdef MVK_subpasses +# include "../examples/subpasses/subpasses.cpp" +#endif + #ifdef MVK_radialblur # include "../examples/radialblur/radialblur.cpp" #endif @@ -90,8 +135,8 @@ # include "../examples/multithreading/multithreading.cpp" #endif -#ifdef MVK_gltfscenerendering -# include "../examples/gltfscenerendering/gltfscenerendering.cpp" +#ifdef MVK_multiview +# include "../examples/multiview/multiview.cpp" #endif #ifdef MVK_instancing @@ -102,7 +147,8 @@ # include "../examples/indirectdraw/indirectdraw.cpp" #endif -// Does not run. Metal does not support passing matrices between shader stages. Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 +// Does not run. Metal does not support passing matrices between shader stages. +// Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 #ifdef MVK_hdr # include "../examples/hdr/hdr.cpp" #endif @@ -111,63 +157,219 @@ # include "../examples/occlusionquery/occlusionquery.cpp" #endif -// Does not run. Sampler arrays require Metal 2. Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 +// Does not run. Sampler arrays require Metal 2. +// Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 #ifdef MVK_texturemipmapgen # include "../examples/texturemipmapgen/texturemipmapgen.cpp" #endif +// Does not run. Sparse binding not supported. +#ifdef MVK_texturesparseresidency +# include "../examples/texturesparseresidency/texturesparseresidency.cpp" +#endif + +// Runs but multisampling may not be working. #ifdef MVK_multisampling # include "../examples/multisampling/multisampling.cpp" #endif +// Runs but multisampling may not be working. +#ifdef MVK_deferredmultisampling +# include "../examples/deferredmultisampling/deferredmultisampling.cpp" +#endif + #ifdef MVK_shadowmapping # include "../examples/shadowmapping/shadowmapping.cpp" #endif +#ifdef MVK_shadowmappingcascade +# include "../examples/shadowmappingcascade/shadowmappingcascade.cpp" +#endif + #ifdef MVK_shadowmappingomni # include "../examples/shadowmappingomni/shadowmappingomni.cpp" #endif -//#ifdef MVK_skeletalanimation -//# include "../examples/skeletalanimation/skeletalanimation.cpp" -//#endif +#ifdef MVK_gltfloading +# include "../examples/gltfloading/gltfloading.cpp" +#endif + +#ifdef MVK_gltfskinning +# include "../examples/gltfskinning/gltfskinning.cpp" +#endif + +// Runs but cannot find input file. +#ifdef MVK_gltfscenerendering +# include "../examples/gltfscenerendering/gltfscenerendering.cpp" +#endif #ifdef MVK_bloom # include "../examples/bloom/bloom.cpp" #endif -// Runs in Release mode. Debug mode Metal validation will assert +// Runs in Release mode. Debug mode Metal validation will assert. // UBO buffer length is too short for UBO size declared in shader. +// Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 #ifdef MVK_deferred # include "../examples/deferred/deferred.cpp" #endif +// Runs in Release mode, but does not display content. +// Metal does not support the use of specialization constants to set array lengths. +// Update: runs on macOS Big Sur with Vulksn SDK 1.2.189.0 +#ifdef MVK_ssao +# include "../examples/ssao/ssao.cpp" +#endif + +#ifdef MVK_pbrbasic +# include "../examples/pbrbasic/pbrbasic.cpp" +#endif + +#ifdef MVK_pbribl +# include "../examples/pbribl/pbribl.cpp" +#endif + +#ifdef MVK_pbrtexture +# include "../examples/pbrtexture/pbrtexture.cpp" +#endif + + +// RAY TRACING - Currently unsupported by MoltenVK/Metal + +// Does not run. Missing Vulkan extensions for ray tracing +#ifdef MVK_rayquery +# include "../examples/rayquery/rayquery.cpp" +#endif + +// Does not run. Missing Vulkan extensions for ray tracing +#ifdef MVK_raytracingbasic +# include "../examples/raytracingbasic/raytracingbasic.cpp" +#endif + +// Does not run. Missing Vulkan extensions for ray tracing +#ifdef MVK_raytracingcallable +# include "../examples/raytracingcallable/raytracingcallable.cpp" +#endif + +// Does not run. Missing Vulkan extensions for ray tracing +#ifdef MVK_raytracingreflections +# include "../examples/raytracingreflections/raytracingreflections.cpp" +#endif + +// Does not run. Missing Vulkan extensions for ray tracing +#ifdef MVK_raytracingshadows +# include "../examples/raytracingshadows/raytracingshadows.cpp" +#endif + + +// COMPUTE + +#ifdef MVK_computecloth +# include "../examples/computecloth/computecloth.cpp" +#endif + +#ifdef MVK_computecullandlod +# include "../examples/computecullandlod/computecullandlod.cpp" +#endif + +// Does not run - build issue. +#ifdef MVK_computeheadless +# include "../examples/computeheadless/computeheadless.cpp" +#endif + +#ifdef MVK_computenbody +# include "../examples/computenbody/computenbody.cpp" +#endif + +#ifdef MVK_computeparticles +# include "../examples/computeparticles/computeparticles.cpp" +#endif + +#ifdef MVK_computeraytracing +# include "../examples/computeraytracing/computeraytracing.cpp" +#endif + +#ifdef MVK_computeshader +# include "../examples/computeshader/computeshader.cpp" +#endif + + +// TESSELLATION + +#ifdef MVK_displacement +# include "../examples/displacement/displacement.cpp" +#endif + +#ifdef MVK_tessellation +# include "../examples/tessellation/tessellation.cpp" +#endif + +#ifdef MVK_terraintessellation +# include "../examples/terraintessellation/terraintessellation.cpp" +#endif + + +// GEOMETRY SHADER - Unsupported by Metal + // Does not run. Metal does not support geometry shaders. #ifdef MVK_deferredshadows # include "../examples/deferredshadows/deferredshadows.cpp" #endif -// Runs in Release mode, but does not display content. -// Metal does not support the use of specialization constants to set array lengths, -#ifdef MVK_ssao -# include "../examples/ssao/ssao.cpp" +// Does not run. Metal does not support geometry shaders. +#ifdef MVK_geometryshader +# include "../examples/geometryshader/geometryshader.cpp" +#endif + +// Does not run. Metal does not support geometry shaders. +#ifdef MVK_viewportarray +# include "../examples/viewportarray/viewportarray.cpp" #endif -// COMPUTE - Currently unsupported by MoltenVK +// EXTENSIONS +// Does not run. MoltenVK does not support VK_EXT_conditional_rendering. +#ifdef MVK_conditionalrender +# include "../examples/conditionalrender/conditionalrender.cpp" +#endif -// TESSELLATION - Currently unsupported by MoltenVK +// Does not run. MoltenVK does not support VK_EXT_conservative_rasterization. +#ifdef MVK_conservativeraster +# include "../examples/conservativeraster/conservativeraster.cpp" +#endif +// Does not run. MoltenVK does not support VK_NV_shading_rate_image. +#ifdef MVK_variablerateshading +# include "../examples/variablerateshading/variablerateshading.cpp" +#endif -// GEOMETRY SHADER - Unsupported by Metal - - -// EXTENSIONS - Currently unsupported by MoltenVK +// Runs. MoltenVK supports VK_EXT_debug_marker. +#ifdef MVK_debugmarker +# include "../examples/debugmarker/debugmarker.cpp" +#endif // MISC +// Does not run. Metal/MoltenVK does not support pipeline statistics. +#ifdef MVK_pipelinestatistics +# include "../examples/pipelinestatistics/pipelinestatistics.cpp" +#endif + +// Does not run. +#ifdef MVK_descriptorindexing +# include "../examples/descriptorindexing/descriptorindexing.cpp" +#endif + +#ifdef MVK_descriptorsets +# include "../examples/descriptorsets/descriptorsets.cpp" +#endif + +#ifdef MVK_pushdescriptors +# include "../examples/pushdescriptors/pushdescriptors.cpp" +#endif + #ifdef MVK_parallaxmapping # include "../examples/parallaxmapping/parallaxmapping.cpp" #endif @@ -185,14 +387,11 @@ # include "../examples/distancefieldfonts/distancefieldfonts.cpp" #endif +// Runs but mouse interaction not working. +#ifdef MVK_imgui +# include "../examples/imgui/main.cpp" +#endif + #ifdef MVK_vulkanscene # include "../examples/vulkanscene/vulkanscene.cpp" #endif - -#ifdef MVK_gltfloading -# include "../examples/gltfloading/gltfloading.cpp" -#endif - -#ifdef MVK_gltfskinning -# include "../examples/gltfskinning/gltfskinning.cpp" -#endif