update MICRO for plumage render
parent
b2178a2ab6
commit
2c6eaa4dc9
|
@ -401,134 +401,134 @@ public:
|
||||||
// OS specific macros for the example main entry points
|
// OS specific macros for the example main entry points
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
// Windows entry point
|
// Windows entry point
|
||||||
#define VULKAN_EXAMPLE_MAIN() \
|
#define PLUMAGE_RENDER_MAIN() \
|
||||||
VulkanExample *vulkanExample; \
|
PlumageRender *plumageRender; \
|
||||||
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) \
|
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) \
|
||||||
{ \
|
{ \
|
||||||
if (vulkanExample != NULL) \
|
if (plumageRender != NULL) \
|
||||||
{ \
|
{ \
|
||||||
vulkanExample->handleMessages(hWnd, uMsg, wParam, lParam); \
|
plumageRender->handleMessages(hWnd, uMsg, wParam, lParam); \
|
||||||
} \
|
} \
|
||||||
return (DefWindowProc(hWnd, uMsg, wParam, lParam)); \
|
return (DefWindowProc(hWnd, uMsg, wParam, lParam)); \
|
||||||
} \
|
} \
|
||||||
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) \
|
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) \
|
||||||
{ \
|
{ \
|
||||||
for (int32_t i = 0; i < __argc; i++) { VulkanExample::args.push_back(__argv[i]); }; \
|
for (int32_t i = 0; i < __argc; i++) { PlumageRender::args.push_back(__argv[i]); }; \
|
||||||
vulkanExample = new VulkanExample(); \
|
plumageRender = new PlumageRender(); \
|
||||||
vulkanExample->initVulkan(); \
|
plumageRender->initVulkan(); \
|
||||||
vulkanExample->setupWindow(hInstance, WndProc); \
|
plumageRender->setupWindow(hInstance, WndProc); \
|
||||||
vulkanExample->prepare(); \
|
plumageRender->prepare(); \
|
||||||
vulkanExample->renderLoop(); \
|
plumageRender->renderLoop(); \
|
||||||
delete(vulkanExample); \
|
delete(plumageRender); \
|
||||||
return 0; \
|
return 0; \
|
||||||
}
|
}
|
||||||
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
|
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
|
||||||
// Android entry point
|
// Android entry point
|
||||||
#define VULKAN_EXAMPLE_MAIN() \
|
#define PLUMAGE_RENDER_MAIN() \
|
||||||
VulkanExample *vulkanExample; \
|
PlumageRender *plumageRender; \
|
||||||
void android_main(android_app* state) \
|
void android_main(android_app* state) \
|
||||||
{ \
|
{ \
|
||||||
vulkanExample = new VulkanExample(); \
|
plumageRender = new PlumageRender(); \
|
||||||
state->userData = vulkanExample; \
|
state->userData = plumageRender; \
|
||||||
state->onAppCmd = VulkanExample::handleAppCommand; \
|
state->onAppCmd = PlumageRender::handleAppCommand; \
|
||||||
state->onInputEvent = VulkanExample::handleAppInput; \
|
state->onInputEvent = PlumageRender::handleAppInput; \
|
||||||
androidApp = state; \
|
androidApp = state; \
|
||||||
vks::android::getDeviceConfig(); \
|
vks::android::getDeviceConfig(); \
|
||||||
vulkanExample->renderLoop(); \
|
plumageRender->renderLoop(); \
|
||||||
delete(vulkanExample); \
|
delete(plumageRender); \
|
||||||
}
|
}
|
||||||
#elif defined(_DIRECT2DISPLAY)
|
#elif defined(_DIRECT2DISPLAY)
|
||||||
// Linux entry point with direct to display wsi
|
// Linux entry point with direct to display wsi
|
||||||
#define VULKAN_EXAMPLE_MAIN() \
|
#define PLUMAGE_RENDER_MAIN() \
|
||||||
VulkanExample *vulkanExample; \
|
PlumageRender *plumageRender; \
|
||||||
static void handleEvent() \
|
static void handleEvent() \
|
||||||
{ \
|
{ \
|
||||||
} \
|
} \
|
||||||
int main(const int argc, const char *argv[]) \
|
int main(const int argc, const char *argv[]) \
|
||||||
{ \
|
{ \
|
||||||
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
|
for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); }; \
|
||||||
vulkanExample = new VulkanExample(); \
|
plumageRender = new PlumageRender(); \
|
||||||
vulkanExample->initVulkan(); \
|
plumageRender->initVulkan(); \
|
||||||
vulkanExample->prepare(); \
|
plumageRender->prepare(); \
|
||||||
vulkanExample->renderLoop(); \
|
plumageRender->renderLoop(); \
|
||||||
delete(vulkanExample); \
|
delete(plumageRender); \
|
||||||
return 0; \
|
return 0; \
|
||||||
}
|
}
|
||||||
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
|
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
|
||||||
#define VULKAN_EXAMPLE_MAIN() \
|
#define PLUMAGE_RENDER_MAIN() \
|
||||||
VulkanExample *vulkanExample; \
|
PlumageRender *plumageRender; \
|
||||||
static void handleEvent(const DFBWindowEvent *event) \
|
static void handleEvent(const DFBWindowEvent *event) \
|
||||||
{ \
|
{ \
|
||||||
if (vulkanExample != NULL) \
|
if (plumageRender != NULL) \
|
||||||
{ \
|
{ \
|
||||||
vulkanExample->handleEvent(event); \
|
plumageRender->handleEvent(event); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
int main(const int argc, const char *argv[]) \
|
int main(const int argc, const char *argv[]) \
|
||||||
{ \
|
{ \
|
||||||
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
|
for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); }; \
|
||||||
vulkanExample = new VulkanExample(); \
|
plumageRender = new PlumageRender(); \
|
||||||
vulkanExample->initVulkan(); \
|
plumageRender->initVulkan(); \
|
||||||
vulkanExample->setupWindow(); \
|
plumageRender->setupWindow(); \
|
||||||
vulkanExample->prepare(); \
|
plumageRender->prepare(); \
|
||||||
vulkanExample->renderLoop(); \
|
plumageRender->renderLoop(); \
|
||||||
delete(vulkanExample); \
|
delete(plumageRender); \
|
||||||
return 0; \
|
return 0; \
|
||||||
}
|
}
|
||||||
#elif (defined(VK_USE_PLATFORM_WAYLAND_KHR) || defined(VK_USE_PLATFORM_HEADLESS_EXT))
|
#elif (defined(VK_USE_PLATFORM_WAYLAND_KHR) || defined(VK_USE_PLATFORM_HEADLESS_EXT))
|
||||||
#define VULKAN_EXAMPLE_MAIN() \
|
#define PLUMAGE_RENDER_MAIN() \
|
||||||
VulkanExample *vulkanExample; \
|
PlumageRender *plumageRender; \
|
||||||
int main(const int argc, const char *argv[]) \
|
int main(const int argc, const char *argv[]) \
|
||||||
{ \
|
{ \
|
||||||
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
|
for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); }; \
|
||||||
vulkanExample = new VulkanExample(); \
|
plumageRender = new PlumageRender(); \
|
||||||
vulkanExample->initVulkan(); \
|
plumageRender->initVulkan(); \
|
||||||
vulkanExample->setupWindow(); \
|
plumageRender->setupWindow(); \
|
||||||
vulkanExample->prepare(); \
|
plumageRender->prepare(); \
|
||||||
vulkanExample->renderLoop(); \
|
plumageRender->renderLoop(); \
|
||||||
delete(vulkanExample); \
|
delete(plumageRender); \
|
||||||
return 0; \
|
return 0; \
|
||||||
}
|
}
|
||||||
#elif defined(VK_USE_PLATFORM_XCB_KHR)
|
#elif defined(VK_USE_PLATFORM_XCB_KHR)
|
||||||
#define VULKAN_EXAMPLE_MAIN() \
|
#define PLUMAGE_RENDER_MAIN() \
|
||||||
VulkanExample *vulkanExample; \
|
PlumageRender *plumageRender; \
|
||||||
static void handleEvent(const xcb_generic_event_t *event) \
|
static void handleEvent(const xcb_generic_event_t *event) \
|
||||||
{ \
|
{ \
|
||||||
if (vulkanExample != NULL) \
|
if (plumageRender != NULL) \
|
||||||
{ \
|
{ \
|
||||||
vulkanExample->handleEvent(event); \
|
plumageRender->handleEvent(event); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
int main(const int argc, const char *argv[]) \
|
int main(const int argc, const char *argv[]) \
|
||||||
{ \
|
{ \
|
||||||
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
|
for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); }; \
|
||||||
vulkanExample = new VulkanExample(); \
|
plumageRender = new VulkanExample(); \
|
||||||
vulkanExample->initVulkan(); \
|
plumageRender->initVulkan(); \
|
||||||
vulkanExample->setupWindow(); \
|
plumageRender->setupWindow(); \
|
||||||
vulkanExample->prepare(); \
|
plumageRender->prepare(); \
|
||||||
vulkanExample->renderLoop(); \
|
plumageRender->renderLoop(); \
|
||||||
delete(vulkanExample); \
|
delete(plumageRender); \
|
||||||
return 0; \
|
return 0; \
|
||||||
}
|
}
|
||||||
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
|
||||||
#if defined(VK_EXAMPLE_XCODE_GENERATED)
|
#if defined(VK_EXAMPLE_XCODE_GENERATED)
|
||||||
#define VULKAN_EXAMPLE_MAIN() \
|
#define PLUMAGE_RENDER_MAIN() \
|
||||||
VulkanExample *vulkanExample; \
|
PlumageRender *plumageRender; \
|
||||||
int main(const int argc, const char *argv[]) \
|
int main(const int argc, const char *argv[]) \
|
||||||
{ \
|
{ \
|
||||||
@autoreleasepool \
|
@autoreleasepool \
|
||||||
{ \
|
{ \
|
||||||
for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); }; \
|
for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); }; \
|
||||||
vulkanExample = new VulkanExample(); \
|
plumageRender = new PlumageRender(); \
|
||||||
vulkanExample->initVulkan(); \
|
plumageRender->initVulkan(); \
|
||||||
vulkanExample->setupWindow(nullptr); \
|
plumageRender->setupWindow(nullptr); \
|
||||||
vulkanExample->prepare(); \
|
plumageRender->prepare(); \
|
||||||
vulkanExample->renderLoop(); \
|
plumageRender->renderLoop(); \
|
||||||
delete(vulkanExample); \
|
delete(plumageRender); \
|
||||||
} \
|
} \
|
||||||
return 0; \
|
return 0; \
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#define VULKAN_EXAMPLE_MAIN()
|
#define PLUMAGE_RENDER_MAIN()
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -24,7 +24,8 @@ std::string GUIFunction::openFileFolderDialog()
|
||||||
|
|
||||||
COMDLG_FILTERSPEC fileType[] =
|
COMDLG_FILTERSPEC fileType[] =
|
||||||
{
|
{
|
||||||
{L"compled shader",L"*.spv*"},
|
{L"all files",L"*.*"},
|
||||||
|
{L"compiled shader",L"*.spv*"},
|
||||||
{L"gltf model files",L"*.gltf*"},
|
{L"gltf model files",L"*.gltf*"},
|
||||||
{L"gltf model files",L"*.GLTF*"},
|
{L"gltf model files",L"*.GLTF*"},
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VulkanExample::VulkanExample():
|
PlumageRender::PlumageRender():
|
||||||
VulkanExampleBase(ENABLE_VALIDATION)
|
VulkanExampleBase(ENABLE_VALIDATION)
|
||||||
{
|
{
|
||||||
title = "render";
|
title = "render";
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
camera.setPerspective(60.0f, (float)width / (float)height, 0.1f, 256.0f);
|
camera.setPerspective(60.0f, (float)width / (float)height, 0.1f, 256.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::getEnabledFeatures()
|
void PlumageRender::getEnabledFeatures()
|
||||||
{
|
{
|
||||||
// Fill mode non solid is required for wireframe display
|
// Fill mode non solid is required for wireframe display
|
||||||
if (deviceFeatures.fillModeNonSolid) {
|
if (deviceFeatures.fillModeNonSolid) {
|
||||||
|
@ -53,7 +53,7 @@
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::setupFrameBuffer()
|
void PlumageRender::setupFrameBuffer()
|
||||||
{
|
{
|
||||||
VulkanExampleBase::setupFrameBuffer();
|
VulkanExampleBase::setupFrameBuffer();
|
||||||
if (pbrFrameBuffer.bCreate && (pbrFrameBuffer.fbo.width != width || pbrFrameBuffer.fbo.height != height))
|
if (pbrFrameBuffer.bCreate && (pbrFrameBuffer.fbo.width != width || pbrFrameBuffer.fbo.height != height))
|
||||||
|
@ -165,7 +165,7 @@
|
||||||
pbrFrameBuffer.bCreate = true;
|
pbrFrameBuffer.bCreate = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::buildCommandBuffers()
|
void PlumageRender::buildCommandBuffers()
|
||||||
{
|
{
|
||||||
VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBufferBeginInfo();
|
VkCommandBufferBeginInfo cmdBufInfo = vks::initializers::commandBufferBeginInfo();
|
||||||
|
|
||||||
|
@ -222,7 +222,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::loadglTFFile(std::string filename, VulkanglTFModel& model, bool bSkyboxFlag = false)
|
void PlumageRender::loadglTFFile(std::string filename, VulkanglTFModel& model, bool bSkyboxFlag = false)
|
||||||
{
|
{
|
||||||
tinygltf::Model glTFInput;
|
tinygltf::Model glTFInput;
|
||||||
tinygltf::TinyGLTF gltfContext;
|
tinygltf::TinyGLTF gltfContext;
|
||||||
|
@ -334,14 +334,14 @@
|
||||||
vkFreeMemory(device, indexStaging.memory, nullptr);
|
vkFreeMemory(device, indexStaging.memory, nullptr);
|
||||||
}
|
}
|
||||||
// TO DO:reconstruct with getting file path through struct
|
// TO DO:reconstruct with getting file path through struct
|
||||||
void VulkanExample::loadAssets()
|
void PlumageRender::loadAssets()
|
||||||
{
|
{
|
||||||
loadglTFFile(filePath.glTFModelFilePath, glTFModel);
|
loadglTFFile(filePath.glTFModelFilePath, glTFModel);
|
||||||
loadglTFFile(filePath.skyboxModleFilePath, skyboxModel, true);
|
loadglTFFile(filePath.skyboxModleFilePath, skyboxModel, true);
|
||||||
ibltextures.skyboxCube.loadFromFile(filePath.iblTexturesFilePath, VK_FORMAT_R16G16B16A16_SFLOAT, vulkanDevice, queue);
|
ibltextures.skyboxCube.loadFromFile(filePath.iblTexturesFilePath, VK_FORMAT_R16G16B16A16_SFLOAT, vulkanDevice, queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::setupDescriptors()
|
void PlumageRender::setupDescriptors()
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
This sample uses separate descriptor sets (and layouts) for the matrices and materials (textures)
|
This sample uses separate descriptor sets (and layouts) for the matrices and materials (textures)
|
||||||
|
@ -448,7 +448,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::preparePipelines()
|
void PlumageRender::preparePipelines()
|
||||||
{
|
{
|
||||||
VkPipelineInputAssemblyStateCreateInfo inputAssemblyStateCI = vks::initializers::pipelineInputAssemblyStateCreateInfo(VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, 0, VK_FALSE);
|
VkPipelineInputAssemblyStateCreateInfo inputAssemblyStateCI = vks::initializers::pipelineInputAssemblyStateCreateInfo(VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, 0, VK_FALSE);
|
||||||
VkPipelineRasterizationStateCreateInfo rasterizationStateCI = vks::initializers::pipelineRasterizationStateCreateInfo(VK_POLYGON_MODE_FILL, VK_CULL_MODE_BACK_BIT, VK_FRONT_FACE_COUNTER_CLOCKWISE, 0);
|
VkPipelineRasterizationStateCreateInfo rasterizationStateCI = vks::initializers::pipelineRasterizationStateCreateInfo(VK_POLYGON_MODE_FILL, VK_CULL_MODE_BACK_BIT, VK_FRONT_FACE_COUNTER_CLOCKWISE, 0);
|
||||||
|
@ -506,7 +506,7 @@
|
||||||
CreateToneMappingPipeline();
|
CreateToneMappingPipeline();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::CreateToneMappingPipeline()
|
void PlumageRender::CreateToneMappingPipeline()
|
||||||
{
|
{
|
||||||
if (pipelines.toneMapping != VK_NULL_HANDLE)
|
if (pipelines.toneMapping != VK_NULL_HANDLE)
|
||||||
{
|
{
|
||||||
|
@ -549,7 +549,7 @@
|
||||||
|
|
||||||
//----------------------------Prepare precompute Lighting or BRDF LUT-----------------------------------------------//
|
//----------------------------Prepare precompute Lighting or BRDF LUT-----------------------------------------------//
|
||||||
//Irradiance map for diffuse lighting
|
//Irradiance map for diffuse lighting
|
||||||
void VulkanExample::GenerateIrradianceCubemap()
|
void PlumageRender::GenerateIrradianceCubemap()
|
||||||
{
|
{
|
||||||
auto tStart = std::chrono::high_resolution_clock::now();
|
auto tStart = std::chrono::high_resolution_clock::now();
|
||||||
|
|
||||||
|
@ -905,7 +905,7 @@
|
||||||
std::cout << "Generating irradiance cube with " << numMips << " mip levels took " << tDiff << " ms" << std::endl;
|
std::cout << "Generating irradiance cube with " << numMips << " mip levels took " << tDiff << " ms" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::GeneratePrefilteredCubemap()
|
void PlumageRender::GeneratePrefilteredCubemap()
|
||||||
{
|
{
|
||||||
auto tStart = std::chrono::high_resolution_clock::now();
|
auto tStart = std::chrono::high_resolution_clock::now();
|
||||||
|
|
||||||
|
@ -1290,7 +1290,7 @@
|
||||||
std::cout << "Generating pre-filtered environment cube with " << numMips << " mip levels took " << tDiff << " ms" << std::endl;
|
std::cout << "Generating pre-filtered environment cube with " << numMips << " mip levels took " << tDiff << " ms" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::GenerateBRDFLUT()
|
void PlumageRender::GenerateBRDFLUT()
|
||||||
{
|
{
|
||||||
auto tStart = std::chrono::high_resolution_clock::now();
|
auto tStart = std::chrono::high_resolution_clock::now();
|
||||||
|
|
||||||
|
@ -1497,7 +1497,7 @@
|
||||||
//----------------------------End Precompute brick------------------------------------------------------------------//
|
//----------------------------End Precompute brick------------------------------------------------------------------//
|
||||||
#pragma region pbr render pass setting
|
#pragma region pbr render pass setting
|
||||||
|
|
||||||
void VulkanExample::createAttachment(
|
void PlumageRender::createAttachment(
|
||||||
VkFormat format,
|
VkFormat format,
|
||||||
VkImageUsageFlagBits usage,
|
VkImageUsageFlagBits usage,
|
||||||
FrameBufferAttachment* attachment,
|
FrameBufferAttachment* attachment,
|
||||||
|
@ -1558,7 +1558,7 @@
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
// Prepare and initialize uniform buffer containing shader uniforms
|
// Prepare and initialize uniform buffer containing shader uniforms
|
||||||
void VulkanExample::prepareUniformBuffers()
|
void PlumageRender::prepareUniformBuffers()
|
||||||
{
|
{
|
||||||
// Vertex shader uniform buffer block
|
// Vertex shader uniform buffer block
|
||||||
VK_CHECK_RESULT(vulkanDevice->createBuffer(
|
VK_CHECK_RESULT(vulkanDevice->createBuffer(
|
||||||
|
@ -1590,7 +1590,7 @@
|
||||||
updateUniformBuffers();
|
updateUniformBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::updateUniformBuffers()
|
void PlumageRender::updateUniformBuffers()
|
||||||
{
|
{
|
||||||
shaderData.values.projection = camera.matrices.perspective;
|
shaderData.values.projection = camera.matrices.perspective;
|
||||||
shaderData.values.model = camera.matrices.view;
|
shaderData.values.model = camera.matrices.view;
|
||||||
|
@ -1600,7 +1600,7 @@
|
||||||
memcpy(shaderData.buffer.mapped, &shaderData.values, sizeof(shaderData.values));
|
memcpy(shaderData.buffer.mapped, &shaderData.values, sizeof(shaderData.values));
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::prepare()
|
void PlumageRender::prepare()
|
||||||
{
|
{
|
||||||
VulkanExampleBase::prepare();
|
VulkanExampleBase::prepare();
|
||||||
loadAssets();
|
loadAssets();
|
||||||
|
@ -1614,7 +1614,7 @@
|
||||||
prepared = true;
|
prepared = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::render()
|
void PlumageRender::render()
|
||||||
{
|
{
|
||||||
renderFrame();
|
renderFrame();
|
||||||
if (camera.updated) {
|
if (camera.updated) {
|
||||||
|
@ -1627,12 +1627,12 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::viewChanged()
|
void PlumageRender::viewChanged()
|
||||||
{
|
{
|
||||||
updateUniformBuffers();
|
updateUniformBuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanExample::OnUpdateUIOverlay(vks::UIOverlay *overlay)
|
void PlumageRender::OnUpdateUIOverlay(vks::UIOverlay *overlay)
|
||||||
{
|
{
|
||||||
GUIFunction guiFunc{};
|
GUIFunction guiFunc{};
|
||||||
if (overlay->header("Settings")) {
|
if (overlay->header("Settings")) {
|
||||||
|
@ -1664,7 +1664,7 @@
|
||||||
std::string strModelFilePath;
|
std::string strModelFilePath;
|
||||||
strModelFilePath = guiFunc.openFileFolderDialog();
|
strModelFilePath = guiFunc.openFileFolderDialog();
|
||||||
filePath.glTFModelFilePath = strModelFilePath;
|
filePath.glTFModelFilePath = strModelFilePath;
|
||||||
loadAssets();
|
PlumageRender::prepare();
|
||||||
|
|
||||||
}
|
}
|
||||||
if(overlay->button("select vertexShader"))
|
if(overlay->button("select vertexShader"))
|
||||||
|
@ -1680,4 +1680,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VULKAN_EXAMPLE_MAIN()
|
PlumageRender* plumageRender; LRESULT __stdcall WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
|
||||||
|
if (plumageRender != 0) {
|
||||||
|
plumageRender->handleMessages(hWnd, uMsg, wParam, lParam);
|
||||||
|
} return (DefWindowProcA(hWnd, uMsg, wParam, lParam));
|
||||||
|
} int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int) {
|
||||||
|
for (int32_t i = 0; i < (*__p___argc()); i++) {
|
||||||
|
PlumageRender::args.push_back((*__p___argv())[i]);
|
||||||
|
}; plumageRender = new PlumageRender(); plumageRender->initVulkan(); plumageRender->setupWindow(hInstance, WndProc); plumageRender->prepare(); plumageRender->renderLoop(); delete(plumageRender); return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VulkanExample : public VulkanExampleBase
|
class PlumageRender : public VulkanExampleBase
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool wireframe = false;
|
bool wireframe = false;
|
||||||
|
@ -156,8 +156,8 @@ public:
|
||||||
|
|
||||||
VulkanglTFModel skyboxModel;
|
VulkanglTFModel skyboxModel;
|
||||||
|
|
||||||
VulkanExample();
|
PlumageRender();
|
||||||
~VulkanExample()
|
~PlumageRender()
|
||||||
{
|
{
|
||||||
// Clean up used Vulkan resources
|
// Clean up used Vulkan resources
|
||||||
// Note : Inherited destructor cleans up resources stored in base class
|
// Note : Inherited destructor cleans up resources stored in base class
|
||||||
|
|
Loading…
Reference in New Issue