mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-05-29 01:49:11 +12:00
compile the copy shader
This commit is contained in:
parent
3d32d7a292
commit
82e436199c
2 changed files with 27 additions and 13 deletions
|
@ -419,26 +419,36 @@ if(ENABLE_METAL AND APPLE)
|
||||||
src/core/renderer_mtl/mtl_etc1.cpp
|
src/core/renderer_mtl/mtl_etc1.cpp
|
||||||
src/core/renderer_mtl/objc_helper.mm
|
src/core/renderer_mtl/objc_helper.mm
|
||||||
src/host_shaders/metal_shaders.metal
|
src/host_shaders/metal_shaders.metal
|
||||||
|
src/host_shaders/metal_copy_to_lut_texture.metal
|
||||||
)
|
)
|
||||||
|
|
||||||
set(HEADER_FILES ${HEADER_FILES} ${RENDERER_MTL_INCLUDE_FILES})
|
set(HEADER_FILES ${HEADER_FILES} ${RENDERER_MTL_INCLUDE_FILES})
|
||||||
source_group("Source Files\\Core\\Metal Renderer" FILES ${RENDERER_MTL_SOURCE_FILES})
|
source_group("Source Files\\Core\\Metal Renderer" FILES ${RENDERER_MTL_SOURCE_FILES})
|
||||||
|
|
||||||
|
set(RENDERER_MTL_HOST_SHADERS_SOURCES)
|
||||||
|
function (add_metal_shader SHADER)
|
||||||
|
set(SHADER_SOURCE "${CMAKE_SOURCE_DIR}/src/host_shaders/${SHADER}.metal")
|
||||||
|
set(SHADER_IR "${CMAKE_SOURCE_DIR}/src/host_shaders/${SHADER}.ir")
|
||||||
|
set(SHADER_METALLIB "${CMAKE_SOURCE_DIR}/src/host_shaders/${SHADER}.metallib")
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${CMAKE_SOURCE_DIR}/src/host_shaders/metal_shaders.ir
|
OUTPUT ${SHADER_IR}
|
||||||
COMMAND xcrun -sdk macosx metal -o ${CMAKE_SOURCE_DIR}/src/host_shaders/metal_shaders.ir -c ${CMAKE_SOURCE_DIR}/src/host_shaders/metal_shaders.metal
|
COMMAND xcrun -sdk macosx metal -o ${SHADER_IR} -c ${SHADER_SOURCE}
|
||||||
DEPENDS ${CMAKE_SOURCE_DIR}/src/host_shaders/metal_shaders.metal
|
DEPENDS ${SHADER_SOURCE}
|
||||||
VERBATIM)
|
VERBATIM)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${SHADER_METALLIB}
|
||||||
|
COMMAND xcrun -sdk macosx metallib -o ${SHADER_METALLIB} ${SHADER_IR}
|
||||||
|
DEPENDS ${SHADER_IR}
|
||||||
|
VERBATIM)
|
||||||
|
set(RENDERER_MTL_HOST_SHADERS_SOURCES ${RENDERER_MTL_HOST_SHADERS_SOURCES} ${SHADER_METALLIB})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
add_custom_command(
|
add_metal_shader(metal_shaders)
|
||||||
OUTPUT ${CMAKE_SOURCE_DIR}/src/host_shaders/metal_shaders.metallib
|
add_metal_shader(metal_copy_to_lut_texture)
|
||||||
COMMAND xcrun -sdk macosx metallib -o ${CMAKE_SOURCE_DIR}/src/host_shaders/metal_shaders.metallib ${CMAKE_SOURCE_DIR}/src/host_shaders/metal_shaders.ir
|
|
||||||
DEPENDS ${CMAKE_SOURCE_DIR}/src/host_shaders/metal_shaders.ir
|
|
||||||
VERBATIM)
|
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(
|
||||||
compile_msl_shader
|
compile_msl_shaders
|
||||||
DEPENDS src/host_shaders/metal_shaders.metallib
|
DEPENDS ${RENDERER_MTL_HOST_SHADERS_SOURCES}
|
||||||
)
|
)
|
||||||
|
|
||||||
cmrc_add_resource_library(
|
cmrc_add_resource_library(
|
||||||
|
@ -446,8 +456,9 @@ if(ENABLE_METAL AND APPLE)
|
||||||
NAMESPACE RendererMTL
|
NAMESPACE RendererMTL
|
||||||
WHENCE "src/host_shaders/"
|
WHENCE "src/host_shaders/"
|
||||||
"src/host_shaders/metal_shaders.metallib"
|
"src/host_shaders/metal_shaders.metallib"
|
||||||
|
"src/host_shaders/metal_copy_to_lut_texture.metallib"
|
||||||
)
|
)
|
||||||
add_dependencies(resources_renderer_mtl compile_msl_shader)
|
add_dependencies(resources_renderer_mtl compile_msl_shaders)
|
||||||
|
|
||||||
target_sources(AlberCore PRIVATE ${RENDERER_MTL_SOURCE_FILES})
|
target_sources(AlberCore PRIVATE ${RENDERER_MTL_SOURCE_FILES})
|
||||||
target_compile_definitions(AlberCore PUBLIC "PANDA3DS_ENABLE_METAL=1")
|
target_compile_definitions(AlberCore PUBLIC "PANDA3DS_ENABLE_METAL=1")
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
#include <metal_stdlib>
|
||||||
|
using namespace metal;
|
||||||
|
|
||||||
constant ushort lutTextureWidth [[function_constant(0)]];
|
constant ushort lutTextureWidth [[function_constant(0)]];
|
||||||
|
|
||||||
vertex void vertexCopyToLUTTexture(uint vid [[vertex_id]], constant ushort* data [[buffer(0)]], texture1d_array<ushort, access::write> out [[texture(0)]]) {
|
vertex void vertexCopyToLUTTexture(uint vid [[vertex_id]], constant ushort* data [[buffer(0)]], texture1d_array<ushort, access::write> out [[texture(0)]]) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue