From f09192ad3ca55042d924323bc37bb29d27b4c0f8 Mon Sep 17 00:00:00 2001 From: Nanako <469449812@qq.com> Date: Wed, 31 Jan 2024 14:37:28 +0800 Subject: [PATCH] init --- .gitignore | 1 + .gitmodules | 3 ++ Arona/CMakeLists.txt | 10 ++++ Arona/entry/windows/main.cpp | 95 ++++++++++++++++++++++++++++++++++++ AronaCore | 1 + CMakeLists.txt | 8 +++ 6 files changed, 118 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Arona/CMakeLists.txt create mode 100644 Arona/entry/windows/main.cpp create mode 160000 AronaCore create mode 100644 CMakeLists.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/build diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..82abea6 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "AronaCore"] + path = AronaCore + url = http://192.168.1.219:3000/Nanako/AronaCore.git diff --git a/Arona/CMakeLists.txt b/Arona/CMakeLists.txt new file mode 100644 index 0000000..e8f4681 --- /dev/null +++ b/Arona/CMakeLists.txt @@ -0,0 +1,10 @@ +project(arona) +set(CMAKE_CXX_STANDARD 23) + +set(ALL_FILES "") +retrieve_files(ALL_FILES) + +add_executable(${PROJECT_NAME} ${ALL_FILES}) + +target_link_libraries(${PROJECT_NAME} arona_core) +target_include_directories(${PROJECT_NAME} PRIVATE arona_core) diff --git a/Arona/entry/windows/main.cpp b/Arona/entry/windows/main.cpp new file mode 100644 index 0000000..f3f86c7 --- /dev/null +++ b/Arona/entry/windows/main.cpp @@ -0,0 +1,95 @@ +#include "imgui.h" +#include "application/application.h" +#include "rhi/renderer.h" +#include "rhi/texture.h" + +#include "ShaderWriter/ShaderWriterPrerequisites.hpp" +#include "ShaderWriter/VertexWriter.hpp" +#include "ShaderWriter/CompositeTypes/MixedStructHelper.hpp" +#include "ShaderWriter/CompositeTypes/IOStructInstanceHelper.hpp" + +template< sdw::var::Flag FlagT > +using PosColStructT = sdw::IOStructInstanceHelperT + , sdw::IOStructFieldT< sdw::Vec4, "colour", 1u>>; + +template< sdw::var::Flag FlagT > +struct PosColT : public PosColStructT +{ + PosColT(sdw::ShaderWriter& writer, sdw::expr::ExprPtr expr, bool enabled = true) : PosColStructT{ writer, std::move(expr), enabled } + { + } + + auto position()const { return this->getMember<"position">(); } + auto colour()const { return this->getMember<"colour">(); } +}; + +class arona_application : public application +{ +public: + ~arona_application() override + { + delete texture_; + } + void draw_gui() override + { + ImGuiIO& io = ImGui::GetIO(); + { + static float f = 0.0f; + static int counter = 0; + + ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it. + + ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too) + ImGui::Checkbox("Another Window", &show_another_window_); + + ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f + + if (ImGui::Button("按钮")) // Buttons return true when clicked (most widgets return true when edited/activated) + counter++; + ImGui::SameLine(); + ImGui::Text("counter = %d", counter); + + ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); + texture_->draw(); + ImGui::End(); + } + } + void init_imgui(ImGuiContext* in_context) override + { + ImGui::SetCurrentContext(in_context); + } + + void post_init() + { + texture_ = load_texture(R"(\\192.168.1.104\nas\NanakoDisk\可爱二次元\61280855_p9_waifu2x_art_noise2_scale.png)"); + + using namespace sdw; + VertexWriter writer; + writer.implementMainT( [&](VertexInT in, VertexOutT out) + { + out.colour() = in.colour(); + out.position() = in.position(); + out.vtx.position = in.position(); + } ); + renderer_->compile_shader(&writer); + } +private: + bool show_another_window_ = true; + texture* texture_ = nullptr; +}; + +int main(int argc, char* argv[]) +{ + arona_application app; + window_params params = {}; + params.title = "Hello World"; + params.width = 1280; + params.height = 720; + params.hi_dpi = true; + params.resizable = true; + app.init(params, argc, argv); + app.post_init(); + return app.run(); +} diff --git a/AronaCore b/AronaCore new file mode 160000 index 0000000..5b26fa3 --- /dev/null +++ b/AronaCore @@ -0,0 +1 @@ +Subproject commit 5b26fa38f2d5dc7f1ad4cdef6c76d977c7b8a15a diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4d7dc3d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,8 @@ +cmake_minimum_required(VERSION 3.27) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +add_subdirectory(AronaCore) +add_subdirectory(Arona)