yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
0b87355f9
master
1function ( example dir ) 2cmake_parse_arguments ( ARG "WIN32_EXECUTABLE" "" "" ${ ARGN }) 3 4set ( debug_dir ${ CMAKE_CURRENT_BINARY_DIR } / ${ dir }) 5 6file ( 7GLOB asset_files 8CONFIGURE_DEPENDS 9" ${ dir } /*.slang" 10" ${ dir } /*.jpg" 11" ${ dir } /*.obj" 12" ${ dir } /*.mtl" 13" ${ dir } /*.h" 14) 15 16list ( LENGTH asset_files asset_files_length ) 17if ( asset_files_lengthGREATER 0 ) 18set ( copy_assets_target " ${ dir } -copy-assets" ) 19 20add_custom_target ( 21${ copy_assets_target } 22COMMAND ${ CMAKE_COMMAND } -E make_directory ${ debug_dir } 23COMMAND 24${ CMAKE_COMMAND } -E copy_if_different ${ asset_files } 25${ debug_dir } 26COMMENT "Copy example assets to ${ debug_dir } " 27) 28 29set_target_properties ( 30${ copy_assets_target } 31PROPERTIES FOLDER "examples/copy_assets" 32) 33endif () 34 35# Libraries providing a main function that prints stack traces on exceptions 36if ( CMAKE_SYSTEM_NAMEMATCHES "Windows" ) 37# On Windows we have two different versions: main for "console applications" and 38# WinMain for normal Windows applications. 39if (${ ARG_WIN32_EXECUTABLE }) 40set ( main_wrapper_libraries example-winmain ) 41else () 42set ( main_wrapper_libraries example-main ) 43endif () 44# Add stack printing support 45set ( main_wrapper_libraries ${ main_wrapper_libraries } stacktrace-windows ) 46set ( main_wrapper_libraries ${ main_wrapper_libraries } dbghelp.lib ) 47else () 48set ( main_wrapper_libraries example-main ) 49endif () 50 51slang_add_target ( 52${ dir } 53EXECUTABLE 54USE_FEWER_WARNINGS 55LINK_WITH_PRIVATE 56core 57example-base 58slang-rhi 59slang 60platform 61$ < $ <BOOL: ${ SLANG_ENABLE_CUDA } >:CUDA::cuda_driver> 62${ main_wrapper_libraries } 63INCLUDE_DIRECTORIES_PUBLIC ${ slang_SOURCE_DIR } 64EXTRA_COMPILE_DEFINITIONS_PRIVATE 65SLANG_EXAMPLE_NAME= ${ dir } 66$ < $ <BOOL: ${ SLANG_ENABLE_XLIB } >:SLANG_ENABLE_XLIB> 67REQUIRED_BY all-examples 68OPTIONAL_REQUIRES ${ copy_assets_target } copy-prebuilt-binaries 69FOLDER examples 70DEBUG_DIR ${ debug_dir } 71${ ARGN } 72) 73endfunction () 74 75if ( SLANG_ENABLE_EXAMPLESAND SLANG_ENABLE_SLANG_RHI) 76# 77# Examples 78# 79slang_add_target ( 80example-base 81STATIC 82LINK_WITH_PRIVATE 83core 84slang-rhi 85slang 86platform 87stb 88$ < $ <BOOL: ${ SLANG_ENABLE_CUDA } >:CUDA::cuda_driver> 89FOLDER examples 90) 91slang_add_target ( example-main STATIC FOLDER examples ) 92slang_add_target ( example-winmain STATIC FOLDER examples EXCLUDE_FROM_ALL ) 93slang_add_target ( stacktrace-windows STATIC FOLDER examples EXCLUDE_FROM_ALL ) 94 95add_custom_target ( 96all-examples 97COMMENT "meta target which depends on all examples" 98) 99set_target_properties ( all-examples PROPERTIES FOLDER examples ) 100example ( autodiff-texture WIN32_EXECUTABLE ) 101example ( cpu-com-example ) 102example ( cpu-hello-world ) 103example ( gpu-printing ) 104example ( hello-world LINK_WITH_PRIVATE Vulkan-Headers ) 105example ( model-viewer WIN32_EXECUTABLE ) 106example ( platform-test WIN32_EXECUTABLE ) 107example ( ray-tracing WIN32_EXECUTABLE ) 108example ( ray-tracing-pipeline WIN32_EXECUTABLE ) 109example ( reflection-api ) 110example ( reflection-parameter-blocks LINK_WITH_PRIVATE Vulkan-Headers ) 111example ( shader-object ) 112example ( shader-toy WIN32_EXECUTABLE ) 113example ( triangle WIN32_EXECUTABLE ) 114if ( SLANG_ENABLE_AFTERMATH) 115example ( nv-aftermath-example WIN32_EXECUTABLE ) 116endif () 117 118if ( SLANG_ENABLE_SLANG_RHI) 119example ( mlp-training LINK_WITH_PRIVATE slang-rhi ) 120example ( mlp-training-coopvec LINK_WITH_PRIVATE slang-rhi ) 121endif () 122endif ()