Skip to content

Commit b3007a9

Browse files
committed
Embedded Shaders
Signed-off-by: Isaac Marovitz <[email protected]>
1 parent cf89e03 commit b3007a9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+1058
-67
lines changed

UnleashedRecomp/CMakeLists.txt

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,10 @@ if (NOT ${CMAKE_BUILD_TYPE} MATCHES "Release")
274274
set(SHOW_GIT_INFO_AND_BUILD_TYPE 1)
275275
endif()
276276

277+
if (UNLEASHED_RECOMP_METAL)
278+
set(XCRUN_TOOL "/usr/bin/xcrun")
279+
endif()
280+
277281
GenerateVersionSources(
278282
OUTPUT_DIR ${PROJECT_SOURCE_DIR}
279283
VERSION_TXT ${VERSION_TXT}
@@ -374,6 +378,10 @@ if (UNLEASHED_RECOMP_D3D12)
374378
)
375379
endif()
376380

381+
if (UNLEASHED_RECOMP_METAL)
382+
target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_METAL)
383+
endif()
384+
377385
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
378386
target_compile_definitions(UnleashedRecomp PRIVATE SDL_VULKAN_ENABLED)
379387
endif()
@@ -441,22 +449,37 @@ endif()
441449
target_precompile_headers(UnleashedRecomp PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS})
442450

443451
function(compile_shader FILE_PATH TARGET_NAME)
444-
set(FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/${FILE_PATH}.hlsl)
445-
cmake_path(GET FILE_PATH STEM VARIABLE_NAME)
452+
set(HLSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/hlsl/${FILE_PATH}.hlsl)
453+
set(MSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/msl/${FILE_PATH}.metal)
454+
cmake_path(GET HLSL_FILE_PATH STEM HLSL_NAME)
455+
cmake_path(GET MSL_FILE_PATH STEM MSL_NAME)
456+
if (UNLEASHED_RECOMP_METAL)
457+
add_custom_command(
458+
OUTPUT ${MSL_FILE_PATH}.ir
459+
COMMAND ${XCRUN_TOOL} -sdk macosx metal -o ${MSL_FILE_PATH}.ir -c ${MSL_FILE_PATH} -D__air__ -frecord-sources -gline-tables-only
460+
DEPENDS ${MSL_FILE_PATH}
461+
)
462+
add_custom_command(
463+
OUTPUT ${MSL_FILE_PATH}.metallib
464+
COMMAND ${XCRUN_TOOL} -sdk macosx metallib -o ${MSL_FILE_PATH}.metallib ${MSL_FILE_PATH}.ir
465+
DEPENDS ${MSL_FILE_PATH}.ir
466+
)
467+
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${MSL_FILE_PATH}.metallib" DEST_FILE "${MSL_FILE_PATH}.metallib" ARRAY_NAME "g_${MSL_NAME}_air")
468+
endif()
446469
if (UNLEASHED_RECOMP_D3D12)
447470
add_custom_command(
448-
OUTPUT ${FILE_PATH}.dxil.h
449-
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -Fh ${FILE_PATH}.dxil.h ${FILE_PATH} -Vn g_${VARIABLE_NAME}_dxil
450-
DEPENDS ${FILE_PATH}
471+
OUTPUT ${HLSL_FILE_PATH}.dxil.h
472+
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -Fh ${HLSL_FILE_PATH}.dxil.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_dxil
473+
DEPENDS ${HLSL_FILE_PATH}
451474
)
452-
target_sources(UnleashedRecomp PRIVATE ${FILE_PATH}.dxil.h)
475+
target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.dxil.h)
453476
endif()
454477
add_custom_command(
455-
OUTPUT ${FILE_PATH}.spirv.h
456-
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -Fh ${FILE_PATH}.spirv.h ${FILE_PATH} -Vn g_${VARIABLE_NAME}_spirv
457-
DEPENDS ${FILE_PATH}
478+
OUTPUT ${HLSL_FILE_PATH}.spirv.h
479+
COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -Fh ${HLSL_FILE_PATH}.spirv.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_spirv
480+
DEPENDS ${HLSL_FILE_PATH}
458481
)
459-
target_sources(UnleashedRecomp PRIVATE ${FILE_PATH}.spirv.h)
482+
target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.spirv.h)
460483
endfunction()
461484

462485
function(compile_vertex_shader FILE_PATH)

UnleashedRecomp/gpu/imgui/imgui_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#define IMGUI_SHADER_MODIFIER_RECTANGLE_BEVEL 10
1414
#define IMGUI_SHADER_MODIFIER_LOW_QUALITY_TEXT 11
1515

16-
#ifdef __cplusplus
16+
#if defined(__cplusplus) && !defined(__air__)
1717

1818
enum class ImGuiCallback : int32_t
1919
{
File renamed without changes.

UnleashedRecomp/gpu/shader/blend_color_alpha_ps.hlsl renamed to UnleashedRecomp/gpu/shader/hlsl/blend_color_alpha_ps.hlsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h"
1+
#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h"
22

33
#ifdef __spirv__
44

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

UnleashedRecomp/gpu/shader/csd_filter_ps.hlsl renamed to UnleashedRecomp/gpu/shader/hlsl/csd_filter_ps.hlsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h"
1+
#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h"
22

33
#ifdef __spirv__
44

UnleashedRecomp/gpu/shader/csd_no_tex_vs.hlsl renamed to UnleashedRecomp/gpu/shader/hlsl/csd_no_tex_vs.hlsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h"
1+
#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h"
22

33
#ifdef __spirv__
44

0 commit comments

Comments
 (0)