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