Skip to content

Commit 51fdae7

Browse files
committed
Embedded Shaders
Signed-off-by: Isaac Marovitz <[email protected]>
1 parent 9a80f41 commit 51fdae7

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
@@ -271,6 +271,10 @@ if (NOT ${CMAKE_BUILD_TYPE} MATCHES "Release")
271271
set(SHOW_GIT_INFO_AND_BUILD_TYPE 1)
272272
endif()
273273

274+
if (UNLEASHED_RECOMP_METAL)
275+
set(XCRUN_TOOL "/usr/bin/xcrun")
276+
endif()
277+
274278
GenerateVersionSources(
275279
OUTPUT_DIR ${PROJECT_SOURCE_DIR}
276280
VERSION_TXT ${VERSION_TXT}
@@ -367,6 +371,10 @@ if (UNLEASHED_RECOMP_D3D12)
367371
target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_D3D12)
368372
endif()
369373

374+
if (UNLEASHED_RECOMP_METAL)
375+
target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_METAL)
376+
endif()
377+
370378
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
371379
target_compile_definitions(UnleashedRecomp PRIVATE SDL_VULKAN_ENABLED)
372380
endif()
@@ -434,22 +442,37 @@ endif()
434442
target_precompile_headers(UnleashedRecomp PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS})
435443

436444
function(compile_shader FILE_PATH TARGET_NAME)
437-
set(FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/${FILE_PATH}.hlsl)
438-
cmake_path(GET FILE_PATH STEM VARIABLE_NAME)
445+
set(HLSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/hlsl/${FILE_PATH}.hlsl)
446+
set(MSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/msl/${FILE_PATH}.metal)
447+
cmake_path(GET HLSL_FILE_PATH STEM HLSL_NAME)
448+
cmake_path(GET MSL_FILE_PATH STEM MSL_NAME)
449+
if (UNLEASHED_RECOMP_METAL)
450+
add_custom_command(
451+
OUTPUT ${MSL_FILE_PATH}.ir
452+
COMMAND ${XCRUN_TOOL} -sdk macosx metal -o ${MSL_FILE_PATH}.ir -c ${MSL_FILE_PATH} -D__air__ -frecord-sources -gline-tables-only
453+
DEPENDS ${MSL_FILE_PATH}
454+
)
455+
add_custom_command(
456+
OUTPUT ${MSL_FILE_PATH}.metallib
457+
COMMAND ${XCRUN_TOOL} -sdk macosx metallib -o ${MSL_FILE_PATH}.metallib ${MSL_FILE_PATH}.ir
458+
DEPENDS ${MSL_FILE_PATH}.ir
459+
)
460+
BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${MSL_FILE_PATH}.metallib" DEST_FILE "${MSL_FILE_PATH}.metallib" ARRAY_NAME "g_${MSL_NAME}_air")
461+
endif()
439462
if (UNLEASHED_RECOMP_D3D12)
440463
add_custom_command(
441-
OUTPUT ${FILE_PATH}.dxil.h
442-
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
443-
DEPENDS ${FILE_PATH}
464+
OUTPUT ${HLSL_FILE_PATH}.dxil.h
465+
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
466+
DEPENDS ${HLSL_FILE_PATH}
444467
)
445-
target_sources(UnleashedRecomp PRIVATE ${FILE_PATH}.dxil.h)
468+
target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.dxil.h)
446469
endif()
447470
add_custom_command(
448-
OUTPUT ${FILE_PATH}.spirv.h
449-
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
450-
DEPENDS ${FILE_PATH}
471+
OUTPUT ${HLSL_FILE_PATH}.spirv.h
472+
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
473+
DEPENDS ${HLSL_FILE_PATH}
451474
)
452-
target_sources(UnleashedRecomp PRIVATE ${FILE_PATH}.spirv.h)
475+
target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.spirv.h)
453476
endfunction()
454477

455478
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)