plumageRender/base/renderConfig.h

175 lines
5.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include <filesystem>
#include <fstream>
#include <iostream>
#ifndef GLM_FORCE_RADIANS
#define GLM_FORCE_RADIANS
#endif
#ifndef GLM_FORCE_DEPTH_ZERO_TO_ONE
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#endif
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <toml/toml.hpp>
#include <vulkan/vulkan.h>
#include <VulkanTools.h>
namespace PlumageConfig
{
class PlumageConfiguration
{
public:
struct Settings {
bool validation = true; // У<><D0A3><EFBFBD><E3BFAA>
//bool fullscreen = false; // ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool vsync = false; // <20><>ֱͬ<D6B1><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool headless = false; // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
bool outputPNGimage = false;
bool debugMode = true;
bool cleanUpImageSequece = true; // ͼƬ<CDBC><C6AC><EFBFBD>п<EFBFBD><D0BF>أ<EFBFBD><D8A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ã<EFBFBD>
uint32_t width = 1280;
uint32_t height = 720;
bool multiSampling = false; // <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
VkSampleCountFlagBits sampleCount = VK_SAMPLE_COUNT_4_BIT; // <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool rotateModel = true; // ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
float modelRotateSpeed = 2.0f; // <20><><EFBFBD><EFBFBD>ת<EFBFBD>ٶ<EFBFBD>
uint32_t startFrameIndex = 1; // ͼƬ<CDBC><C6AC><EFBFBD>п<EFBFBD>ʼ֡
uint32_t endFrameIndex = 50; // ͼƬ<CDBC><C6AC><EFBFBD>н<EFBFBD><D0BD><EFBFBD>֡
uint32_t videoFrameRate = 25; // <20><>Ƶ֡<C6B5><D6A1>
uint32_t selectedPhysicalDeviceIndex = 7;
float fX = 565.5f;
float fY = 516.3f;
float fovX = 1.f;
float fovY = 1.f;
float cX = 328.2f;
float cY = 238.8f;
int calibrationWidth = 640.0f;
int calibrationHeight = 480.0f;
glm::vec3 bottomCenter = { 0.f,0.f,-6.f };
//std::vector<float> bottomCenter = { 0.f,0.f,-6.f };
glm::vec3 bottomNormal = { 0,1,0 };
glm::vec3 cameraFixation = { -0.5f,1.5f,1.79f };
std::vector<glm::vec3> cameraTracks = { {0.f,0.f,-6.f},{1.f,0.f,-3.f} };
std::vector<glm::mat3> cameraAngle = { {{0.f,0.f,0.f},{45.f,0.f,0.f},{0.f,0.f,0.f}},{{0.f,0.f,0.f},{45.f,0.f,0.f},{0.f,0.f,0.f}} };
}settings;
struct RenderSettings
{
uint32_t width = 1280;
uint32_t height = 720;
bool multiSampling = false; // <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
uint32_t sampleCount = VK_SAMPLE_COUNT_4_BIT; // <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool rotateModel = false; // ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
float modelRotateSpeed = 2.0f; // <20><><EFBFBD><EFBFBD>ת<EFBFBD>ٶ<EFBFBD>
uint32_t startFrameIndex = 1; // ͼƬ<CDBC><C6AC><EFBFBD>п<EFBFBD>ʼ֡
uint32_t endFrameIndex = 50; // ͼƬ<CDBC><C6AC><EFBFBD>н<EFBFBD><D0BD><EFBFBD>֡
uint32_t videoFrameRate = 25; // <20><>Ƶ֡<C6B5><D6A1>
uint32_t selectedPhysicalDeviceIndex = 7;
};
struct FilePath
{ //model path
std::string glTFModelFilePath = getAssetPath() + "models/classic_round_side_table.glb";
std::string modelVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.vert.spv";
std::string modelFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.frag.spv";
//ui
std::string uiVertShaderPath = getAssetPath() + "shaders/ui.vert.spv";
std::string uiFragShaderPath = getAssetPath() + "shaders/ui.frag.spv";
// skybox path
std::string skyboxModelFilePath = getAssetPath() + "models/cube.gltf";
std::string skyboxVertShaderPath = getAssetPath() + "shaders/skybox.vert.spv";
std::string skyboxFragShaderPath = getAssetPath() + "shaders/skybox.frag.spv";
//std::string iblTexturesFilePath = getAssetPath() + "textures/hdr/gcanyon_cube.ktx";
//tonemapping
std::string tonemappingVertShaderPath = getAssetPath() + "shaders/genbrdflut.vert.spv";
std::string tonemappingEnableFragShaderPath = getAssetPath() + "shaders/tonemapping_enable.frag.spv";
std::string tonemappingDisableFragShaderPath = getAssetPath() + "shaders/tonemapping_disable.frag.spv";
// cube map
std::string irradianceFragShaderPath = getAssetPath() + "shaders/irradiancecube.frag.spv";
std::string filterVertShaderPath = getAssetPath() + "shaders/filtercube.vert.spv";
std::string prefilterEnvmapFragShaderPath = getAssetPath() + "shaders/prefilterenvmap.frag.spv";
//brdf cube map
std::string brdfVertShaderPath = getAssetPath() + "shaders/genbrdflut.vert.spv";
std::string brdfFragShaderPath = getAssetPath() + "shaders/genbrdflut.frag.spv";
// environment map texture
std::string envMapFilePath = getAssetPath() + "environments/metro_noord_4k_hdr16f_cube.ktx";
std::string emptyEnvmapFilePath = getAssetPath() + "textures/empty.ktx";
// pbr shader
std::string pbrVertShaderPath = getAssetPath() + "shaders/pbr.vert.spv";
std::string pbrFragShaderPath = getAssetPath() + "shaders/pbr_khr.frag.spv";
//ttf file path
std::string ttfFilePath = getAssetPath() + "/data/Roboto-Medium.ttf";
// output file path
std::string imageOutputPath = getAssetPath() + "output/imageSequence";
std::string videoOutputPath = getAssetPath() + "output/video";
std::string totalImageOutputPath;
std::string deviceSpecFilePath;
// script file path
std::string image2videoBatFilePath = getAssetPath() + "script/image2video.bat";
std::string image2videoShFilePath = getAssetPath() + "script/image2video.sh";
std::string hdr2ktxBatFilePath = getAssetPath() + "script/hdr2ktxBatFilePath.bat";
std::string hdr2ktxShFilePath = getAssetPath() + "script/hdr2ktxShFilePath.sh";
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>󱣴<EFBFBD><F3B1A3B4><EFBFBD><EFBFBD><EFBFBD>
//std::string configFilePath = getAssetPath() + "config/guanzi.toml";
std::string configFilePath = getAssetPath() + "config/yukino_rotate_trans_matrix.toml";
} filePath;
void writrConfigurationToJson();
void readConfigurationFromToml(std::string configFilePath,Settings& settings);
void convertIntToVkSampleCount(uint32_t sampleCount);
glm::vec3 getTranslatedVector(glm::vec3 beforeVector, glm::vec3 afterVector);
glm::mat4 getVectorRotationMatrix(glm::vec3 vectorBefore, glm::vec3 vectorAfter);
PlumageConfiguration();
~PlumageConfiguration();
private:
};
}