diff --git a/CMakeLists.txt b/CMakeLists.txt index 562ba81..f1b8fe3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,19 +1,59 @@ cmake_minimum_required(VERSION 3.20) +set(CMAKE_CXX_COMPILER icpx) +set(CMAKE_C_COMPILER icx) + project(polypartiCL LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -find_package(IntelSYCL REQUIRED) +add_compile_options(-fsycl -fsycl-targets=spir64) +add_link_options(-fsycl -fsycl-targets=spir64) -file(GLOB_RECURSE PROJECT_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_LIST_DIR}/*.cpp") -set(PROJECT_INCLUDE "${CMAKE_CURRENT_LIST_DIR/include/}") +find_package(raylib 5.5 QUIET) +if (NOT raylib FOUND) + include(FetchContent) + FetchContent_Declare( + raylib + GIT_REPOSITORY https://github.com/raysan5/raylib.git + GIT_TAG 5.5 + ) + set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) + set(BUILD_GAMES OFF CACHE BOOL "" FORCE) + FetchContent_MakeAvailable(raylib) +endif() -add_executable(${PROJECT_NAME}) -target_sources(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCES}) -target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_INCLUDE}) -add_sycl_to_target(TARGET ${PROJECT_NAME} SOURCES polypartiCL.hpp) -target_link_libraries(${PROJECT_NAME} PRIVATE raylib) +include(FetchContent) +FetchContent_Declare( + raylib_cpp + https://github.com/RobLoach/raylib-cpp.git + GIT_TAG master +) + +FetchContent_MakeAvailable(raylib_cpp) + +add_executable(${PROJECT_NAME} + src/main.cpp + src/polypartiCL.cpp +) + +target_include_directories(${PROJECT_NAME} PRIVATE + ${raylib_cpp_SOURCE_DIR}/include + ${CMAKE_SOURCE_DIR}/src +) + +target_link_libraries(polyparti PRIVATE raylib) + +#find_package(IntelSYCL REQUIRED) + +#file(GLOB_RECURSE PROJECT_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_LIST_DIR}/*.cpp") +#set(PROJECT_INCLUDE "${CMAKE_CURRENT_LIST_DIR/include/}") + +#add_executable(${PROJECT_NAME}) +#target_sources(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCES}) +#target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_INCLUDE}) +#add_sycl_to_target(TARGET ${PROJECT_NAME} SOURCES polypartiCL.hpp) +#target_link_libraries(${PROJECT_NAME} PRIVATE raylib) diff --git a/shaders/rotate.fs b/shaders/rotate.fs new file mode 100644 index 0000000..a99d5c6 --- /dev/null +++ b/shaders/rotate.fs @@ -0,0 +1,29 @@ +#version 330 + +in vec2 fragTexCoord; + +uniform sampler2D texture0; +uniform vec2 resolution; +uniform float angle; + +out vec4 rotOut; + +void main() +{ + vec2 uv_space = fragTexCoord - 0.5; + uv_space.x *= resolution.x / resolution.y; + + float i = cos(-angle); + float j = sin(-angle); + + vec2 rot = vec2((uv_space.x * i) - (uv_space.y * j), (uv_space.x * j) + (uv_space.y * i)); + + rot.x /= resolution.x / resolution.y; + rot += 0.5; + + if (rot.x < 0.0 || rot.x > 1.0 || rot.y < 0.0 || rot.y > 1.0) { + rotOut = vec4(0.0, 0.0, 0.0, 1.0); + } else { + rotOut = texture(texture0, rot); + } +} diff --git a/main.cpp b/src/main.cpp similarity index 98% rename from main.cpp rename to src/main.cpp index 365c74c..e898cf1 100644 --- a/main.cpp +++ b/src/main.cpp @@ -49,6 +49,7 @@ int main(int argc, char* argv[]) { raylib::RenderTexture2D renderTarget(screenWidth, screenHeight); raylib::RenderTexture2D blur(screenWidth, screenHeight); raylib::Shader blurShader("", "shaders/blur2.fs"); + raylib::Shader rotShader("", "shaders/rotate.fs"); raylib::Vector2 mouse_i, mouse_f, mouse_d; raylib::Vector2 midpoint(screenWidth * 0.5, screenHeight * 0.5); diff --git a/polypartiCL.cpp b/src/polypartiCL.cpp similarity index 100% rename from polypartiCL.cpp rename to src/polypartiCL.cpp diff --git a/polypartiCL.hpp b/src/polypartiCL.hpp similarity index 100% rename from polypartiCL.hpp rename to src/polypartiCL.hpp