引入日志库(未完成),添加logger.h的todo说明
请注意当前分支下因logger重定义而无法正常编译
parent
fc4a073905
commit
28cb57e1db
|
@ -1,7 +1,7 @@
|
|||
|
||||
### Plumage mini render
|
||||
|
||||
基于vulkan API的迷你渲染器
|
||||
基于vulkan RHI的迷你渲染器
|
||||
|
||||
#### 当前特性
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
1. 引入spdlog日志库,细化日志(正在做)
|
||||
2. 重置CMakeLists.txt,添加Xmake 的lua脚本
|
||||
3. 二次封装vulkan API,提供统一的渲染接口
|
||||
3. 二次封装vulkan RHI,提供统一的渲染接口
|
||||
4. 更换imgui的分支,允许dock UI
|
||||
5. 添加启动UI,避免对默认模型的依赖
|
||||
6. 添加obj格式支持
|
||||
|
|
|
@ -10,7 +10,7 @@ set(KTX_SOURCES
|
|||
${KTX_DIR}/lib/memstream.c
|
||||
${KTX_DIR}/lib/filestream.c)
|
||||
|
||||
add_library(base STATIC ${BASE_SRC} ${KTX_SOURCES})
|
||||
add_library(base STATIC ${BASE_SRC} ${KTX_SOURCES} "logger.h")
|
||||
if(WIN32)
|
||||
target_link_libraries(base ${Vulkan_LIBRARY} ${WINLIBS})
|
||||
else(WIN32)
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
#pragma once
|
||||
#define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_INFO //控制记录日志的级别
|
||||
#include "spdlog/spdlog.h"
|
||||
#include "spdlog/sinks/rotating_file_sink.h"
|
||||
|
||||
//以下宏spdlog已经定义, 日志输出到控制台,包括打印文件名和行号
|
||||
//SPDLOG_DEBUG(...)
|
||||
//SPDLOG_INFO(...)
|
||||
//SPDLOG_WARN(...)
|
||||
//SPDLOG_ERROR(...)
|
||||
//SPDLOG_CRITICAL(...)
|
||||
|
||||
//以下宏新定义, 日志输出到滚动日志文件,包括打印文件名和行号
|
||||
|
||||
// TODO:
|
||||
// 重构以允许同一函数内多次调用
|
||||
// 预计全部重写
|
||||
// 解决目标:logger多次调用时重定义
|
||||
constexpr auto LOGGER_NAME = "rotating render log";
|
||||
constexpr auto LOGGER_SAVE_PATH = "logs/rotating.txt";
|
||||
//滚动日志:信息
|
||||
#define SPDLOG_INFO_FILE(...) \
|
||||
auto logger0 = spdlog::get(LOGGER_NAME); \
|
||||
if (nullptr == logger0) \
|
||||
{ \
|
||||
auto rotating_logger = spdlog::rotating_logger_mt(LOGGER_NAME, LOGGER_SAVE_PATH, 1048576 * 5, 3); \
|
||||
SPDLOG_LOGGER_INFO(rotating_logger, __VA_ARGS__);\
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
SPDLOG_LOGGER_INFO(logger0, __VA_ARGS__); \
|
||||
}
|
||||
//滚动日志:警告
|
||||
#define SPDLOG_WARN_FILE(...) \
|
||||
SPDLOG_WARN(__VA_ARGS__);\
|
||||
auto logger1 = spdlog::get(LOGGER_NAME); \
|
||||
if (nullptr == logger1) \
|
||||
{ \
|
||||
auto rotating_logger = spdlog::rotating_logger_mt(LOGGER_NAME, LOGGER_SAVE_PATH, 1048576 * 5, 3); \
|
||||
SPDLOG_LOGGER_WARN(rotating_logger, __VA_ARGS__);\
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
SPDLOG_LOGGER_WARN(logger1, __VA_ARGS__); \
|
||||
}
|
||||
//滚动日志:错误
|
||||
#define SPDLOG_ERROR_FILE(...) \
|
||||
SPDLOG_ERROR(__VA_ARGS__);\
|
||||
auto logger2 = spdlog::get(LOGGER_NAME); \
|
||||
if (nullptr == logger2) \
|
||||
{ \
|
||||
auto rotating_logger = spdlog::rotating_logger_mt(LOGGER_NAME, LOGGER_SAVE_PATH, 1048576 * 5, 3); \
|
||||
SPDLOG_LOGGER_ERROR(rotating_logger, __VA_ARGS__);\
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
SPDLOG_LOGGER_ERROR(logger2, __VA_ARGS__); \
|
||||
}
|
||||
|
||||
#define SPDLOG_CRITICAL_FILE(...) \
|
||||
SPDLOG_CRITICAL(__VA_ARGS__);\
|
||||
auto logger3 = spdlog::get(LOGGER_NAME); \
|
||||
if (nullptr == logger3) \
|
||||
{ \
|
||||
auto rotating_logger = spdlog::rotating_logger_mt(LOGGER_NAME, LOGGER_SAVE_PATH, 1048576 * 5, 3); \
|
||||
SPDLOG_LOGGER_CRITICAL(rotating_logger, __VA_ARGS__);\
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
SPDLOG_LOGGER_CRITICAL(logger3, __VA_ARGS__); \
|
||||
}
|
|
@ -33,7 +33,6 @@ function(buildHomework HOMEWORK_NAME)
|
|||
add_executable(${HOMEWORK_NAME} WIN32 ${MAIN_CPP} ${SOURCE} ${MAIN_HEADER} ${SHADERS_GLSL} ${SHADERS_HLSL} ${README_FILES}
|
||||
"render/glTFModel.h"
|
||||
"render/glTFModel.cpp"
|
||||
|
||||
)
|
||||
target_link_libraries(${HOMEWORK_NAME} base ${Vulkan_LIBRARY} ${WINLIBS})
|
||||
else(WIN32)
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
|
||||
#include "render.h"
|
||||
#include "logger.h"
|
||||
//#include "VulkanUtils.hpp"
|
||||
//#include "assetLoader.h"
|
||||
|
||||
|
@ -191,21 +192,27 @@ PlumageRender::PlumageRender()
|
|||
|
||||
void PlumageRender::loadScene(std::string filename)
|
||||
{
|
||||
std::cout << "Loading scene from " << filename << std::endl;
|
||||
std::string msg = "Loading scene from " + filename;
|
||||
SPDLOG_INFO_FILE(msg);
|
||||
//std::cout << "Loading scene from " << filename << std::endl;
|
||||
models.scene.destroy(device);
|
||||
animationIndex = 0;
|
||||
animationTimer = 0.0f;
|
||||
auto tStart = std::chrono::high_resolution_clock::now();
|
||||
models.scene.loadFromFile(filename, vulkanDevice, queue);
|
||||
auto tFileLoad = std::chrono::duration<double, std::milli>(std::chrono::high_resolution_clock::now() - tStart).count();
|
||||
std::cout << "Loading took " << tFileLoad << " ms" << std::endl;
|
||||
msg = "Loading took " + std::to_string(tFileLoad) + " ms";
|
||||
SPDLOG_INFO_FILE(msg);
|
||||
//std::cout << "Loading took " << tFileLoad << " ms" << std::endl;
|
||||
camera.setPosition({ 0.0f, 0.0f, -1.0f });
|
||||
camera.setRotation({ 0.0f, 0.0f, 0.0f });
|
||||
}
|
||||
|
||||
void PlumageRender::loadEnvironment(std::string filename)
|
||||
{
|
||||
std::cout << "Loading environment from " << filename << std::endl;
|
||||
//std::cout << "Loading environment from " << filename << std::endl;
|
||||
std::string msg = "Loading environment from " + filename;
|
||||
SPDLOG_INFO_FILE(msg);
|
||||
if (textures.environmentCube.image) {
|
||||
textures.environmentCube.destroy();
|
||||
textures.irradianceCube.destroy();
|
||||
|
@ -221,13 +228,15 @@ PlumageRender::PlumageRender()
|
|||
|
||||
if (_access(assetpath.c_str(),0) != 0) {
|
||||
std::string msg = "Could not locate asset path in \"" + assetpath + "\".\nMake sure binary is run from correct relative directory!";
|
||||
std::cerr << msg << std::endl;
|
||||
SPDLOG_ERROR_FILE(msg);
|
||||
system("pause");
|
||||
//exit(-1);
|
||||
}
|
||||
else {
|
||||
std::string msg = "asset path get " + assetpath;
|
||||
std::cout << msg << std::endl;
|
||||
//std::cout << msg << std::endl;
|
||||
SPDLOG_INFO_FILE(msg);
|
||||
|
||||
}
|
||||
|
||||
readDirectory(assetpath + "environments", "*.ktx", environments, false);
|
||||
|
@ -243,7 +252,9 @@ PlumageRender::PlumageRender()
|
|||
sceneFile = args[i];
|
||||
}
|
||||
else {
|
||||
std::cout << "could not load \"" << args[i] << "\"" << std::endl;
|
||||
std::string msg = "could not load \"" + std::string(args[i]) + "\"";
|
||||
SPDLOG_ERROR_FILE(msg);
|
||||
//std::cout << "could not load \"" << args[i] << "\"" << std::endl;
|
||||
}
|
||||
}
|
||||
if (std::string(args[i]).find(".ktx") != std::string::npos) {
|
||||
|
@ -252,7 +263,9 @@ PlumageRender::PlumageRender()
|
|||
envMapFile = args[i];
|
||||
}
|
||||
else {
|
||||
std::cout << "could not load \"" << args[i] << "\"" << std::endl;
|
||||
std::string msg = "could not load \"" + std::string(args[i]) + "\"";
|
||||
SPDLOG_ERROR_FILE(msg);
|
||||
//std::cout << "could not load \"" << args[i] << "\"" << std::endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -332,6 +345,7 @@ PlumageRender::PlumageRender()
|
|||
*/
|
||||
|
||||
// Scene (matrices and environment maps)
|
||||
|
||||
{
|
||||
std::vector<VkDescriptorSetLayoutBinding> setLayoutBindings = {
|
||||
{ 0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1, VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, nullptr },
|
||||
|
@ -1196,7 +1210,9 @@ PlumageRender::PlumageRender()
|
|||
|
||||
auto tEnd = std::chrono::high_resolution_clock::now();
|
||||
auto tDiff = std::chrono::duration<double, std::milli>(tEnd - tStart).count();
|
||||
std::cout << "Generating cube map with " << numMips << " mip levels took " << tDiff << " ms" << std::endl;
|
||||
std::string msg = "Generating cube map with " + std::to_string(numMips) + " mip levels took " + std::to_string(tDiff) + " ms";
|
||||
SPDLOG_INFO_FILE(msg);
|
||||
//std::cout << "Generating cube map with " << numMips << " mip levels took " << tDiff << " ms" << std::endl;
|
||||
}
|
||||
}
|
||||
// generate BRDF integration map for roughness/NdotV
|
||||
|
@ -1454,7 +1470,10 @@ PlumageRender::PlumageRender()
|
|||
|
||||
auto tEnd = std::chrono::high_resolution_clock::now();
|
||||
auto tDiff = std::chrono::duration<double, std::milli>(tEnd - tStart).count();
|
||||
std::cout << "Generating BRDF LUT took " << tDiff << " ms" << std::endl;
|
||||
|
||||
std::string msg = "Generating BRDF LUT took " + std::to_string(tDiff) + " ms";
|
||||
SPDLOG_INFO_FILE(msg);
|
||||
//std::cout << "Generating BRDF LUT took " << tDiff << " ms" << std::endl;
|
||||
}
|
||||
|
||||
// Prepare and initialize uniform buffer containing shader uniforms
|
||||
|
|
Loading…
Reference in New Issue