update MICRO for plumage render
							parent
							
								
									b2178a2ab6
								
							
						
					
					
						commit
						2c6eaa4dc9
					
				| 
						 | 
				
			
			@ -401,134 +401,134 @@ public:
 | 
			
		|||
// OS specific macros for the example main entry points
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
// Windows entry point
 | 
			
		||||
#define VULKAN_EXAMPLE_MAIN()																		\
 | 
			
		||||
VulkanExample *vulkanExample;																		\
 | 
			
		||||
#define PLUMAGE_RENDER_MAIN()																		\
 | 
			
		||||
PlumageRender *plumageRender;																		\
 | 
			
		||||
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));												\
 | 
			
		||||
}																									\
 | 
			
		||||
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)									\
 | 
			
		||||
{																									\
 | 
			
		||||
	for (int32_t i = 0; i < __argc; i++) { VulkanExample::args.push_back(__argv[i]); };  			\
 | 
			
		||||
	vulkanExample = new VulkanExample();															\
 | 
			
		||||
	vulkanExample->initVulkan();																	\
 | 
			
		||||
	vulkanExample->setupWindow(hInstance, WndProc);													\
 | 
			
		||||
	vulkanExample->prepare();																		\
 | 
			
		||||
	vulkanExample->renderLoop();																	\
 | 
			
		||||
	delete(vulkanExample);																			\
 | 
			
		||||
	for (int32_t i = 0; i < __argc; i++) { PlumageRender::args.push_back(__argv[i]); };  			\
 | 
			
		||||
	plumageRender = new PlumageRender();															\
 | 
			
		||||
	plumageRender->initVulkan();																	\
 | 
			
		||||
	plumageRender->setupWindow(hInstance, WndProc);													\
 | 
			
		||||
	plumageRender->prepare();																		\
 | 
			
		||||
	plumageRender->renderLoop();																	\
 | 
			
		||||
	delete(plumageRender);																			\
 | 
			
		||||
	return 0;																						\
 | 
			
		||||
}
 | 
			
		||||
#elif defined(VK_USE_PLATFORM_ANDROID_KHR)
 | 
			
		||||
// Android entry point
 | 
			
		||||
#define VULKAN_EXAMPLE_MAIN()																		\
 | 
			
		||||
VulkanExample *vulkanExample;																		\
 | 
			
		||||
#define PLUMAGE_RENDER_MAIN()																		\
 | 
			
		||||
PlumageRender *plumageRender;																		\
 | 
			
		||||
void android_main(android_app* state)																\
 | 
			
		||||
{																									\
 | 
			
		||||
	vulkanExample = new VulkanExample();															\
 | 
			
		||||
	state->userData = vulkanExample;																\
 | 
			
		||||
	state->onAppCmd = VulkanExample::handleAppCommand;												\
 | 
			
		||||
	state->onInputEvent = VulkanExample::handleAppInput;											\
 | 
			
		||||
	plumageRender = new PlumageRender();															\
 | 
			
		||||
	state->userData = plumageRender;																\
 | 
			
		||||
	state->onAppCmd = PlumageRender::handleAppCommand;												\
 | 
			
		||||
	state->onInputEvent = PlumageRender::handleAppInput;											\
 | 
			
		||||
	androidApp = state;																				\
 | 
			
		||||
	vks::android::getDeviceConfig();																\
 | 
			
		||||
	vulkanExample->renderLoop();																	\
 | 
			
		||||
	delete(vulkanExample);																			\
 | 
			
		||||
	plumageRender->renderLoop();																	\
 | 
			
		||||
	delete(plumageRender);																			\
 | 
			
		||||
}
 | 
			
		||||
#elif defined(_DIRECT2DISPLAY)
 | 
			
		||||
// Linux entry point with direct to display wsi
 | 
			
		||||
#define VULKAN_EXAMPLE_MAIN()																		\
 | 
			
		||||
VulkanExample *vulkanExample;																		\
 | 
			
		||||
#define PLUMAGE_RENDER_MAIN()																		\
 | 
			
		||||
PlumageRender *plumageRender;																		\
 | 
			
		||||
static void handleEvent()                                											\
 | 
			
		||||
{																									\
 | 
			
		||||
}																									\
 | 
			
		||||
int main(const int argc, const char *argv[])													    \
 | 
			
		||||
{																									\
 | 
			
		||||
	for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); };  				\
 | 
			
		||||
	vulkanExample = new VulkanExample();															\
 | 
			
		||||
	vulkanExample->initVulkan();																	\
 | 
			
		||||
	vulkanExample->prepare();																		\
 | 
			
		||||
	vulkanExample->renderLoop();																	\
 | 
			
		||||
	delete(vulkanExample);																			\
 | 
			
		||||
	for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); };  				\
 | 
			
		||||
	plumageRender = new PlumageRender();															\
 | 
			
		||||
	plumageRender->initVulkan();																	\
 | 
			
		||||
	plumageRender->prepare();																		\
 | 
			
		||||
	plumageRender->renderLoop();																	\
 | 
			
		||||
	delete(plumageRender);																			\
 | 
			
		||||
	return 0;																						\
 | 
			
		||||
}
 | 
			
		||||
#elif defined(VK_USE_PLATFORM_DIRECTFB_EXT)
 | 
			
		||||
#define VULKAN_EXAMPLE_MAIN()																		\
 | 
			
		||||
VulkanExample *vulkanExample;																		\
 | 
			
		||||
#define PLUMAGE_RENDER_MAIN()																		\
 | 
			
		||||
PlumageRender *plumageRender;																		\
 | 
			
		||||
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[])													    \
 | 
			
		||||
{																									\
 | 
			
		||||
	for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); };  				\
 | 
			
		||||
	vulkanExample = new VulkanExample();															\
 | 
			
		||||
	vulkanExample->initVulkan();																	\
 | 
			
		||||
	vulkanExample->setupWindow();					 												\
 | 
			
		||||
	vulkanExample->prepare();																		\
 | 
			
		||||
	vulkanExample->renderLoop();																	\
 | 
			
		||||
	delete(vulkanExample);																			\
 | 
			
		||||
	for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); };  				\
 | 
			
		||||
	plumageRender = new PlumageRender();															\
 | 
			
		||||
	plumageRender->initVulkan();																	\
 | 
			
		||||
	plumageRender->setupWindow();					 												\
 | 
			
		||||
	plumageRender->prepare();																		\
 | 
			
		||||
	plumageRender->renderLoop();																	\
 | 
			
		||||
	delete(plumageRender);																			\
 | 
			
		||||
	return 0;																						\
 | 
			
		||||
}
 | 
			
		||||
#elif (defined(VK_USE_PLATFORM_WAYLAND_KHR) || defined(VK_USE_PLATFORM_HEADLESS_EXT))
 | 
			
		||||
#define VULKAN_EXAMPLE_MAIN()																		\
 | 
			
		||||
VulkanExample *vulkanExample;																		\
 | 
			
		||||
#define PLUMAGE_RENDER_MAIN()																		\
 | 
			
		||||
PlumageRender *plumageRender;																		\
 | 
			
		||||
int main(const int argc, const char *argv[])													    \
 | 
			
		||||
{																									\
 | 
			
		||||
	for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); };  				\
 | 
			
		||||
	vulkanExample = new VulkanExample();															\
 | 
			
		||||
	vulkanExample->initVulkan();																	\
 | 
			
		||||
	vulkanExample->setupWindow();					 												\
 | 
			
		||||
	vulkanExample->prepare();																		\
 | 
			
		||||
	vulkanExample->renderLoop();																	\
 | 
			
		||||
	delete(vulkanExample);																			\
 | 
			
		||||
	for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); };  				\
 | 
			
		||||
	plumageRender = new PlumageRender();															\
 | 
			
		||||
	plumageRender->initVulkan();																	\
 | 
			
		||||
	plumageRender->setupWindow();					 												\
 | 
			
		||||
	plumageRender->prepare();																		\
 | 
			
		||||
	plumageRender->renderLoop();																	\
 | 
			
		||||
	delete(plumageRender);																			\
 | 
			
		||||
	return 0;																						\
 | 
			
		||||
}
 | 
			
		||||
#elif defined(VK_USE_PLATFORM_XCB_KHR)
 | 
			
		||||
#define VULKAN_EXAMPLE_MAIN()																		\
 | 
			
		||||
VulkanExample *vulkanExample;																		\
 | 
			
		||||
#define PLUMAGE_RENDER_MAIN()																		\
 | 
			
		||||
PlumageRender *plumageRender;																		\
 | 
			
		||||
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[])													    \
 | 
			
		||||
{																									\
 | 
			
		||||
	for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); };  				\
 | 
			
		||||
	vulkanExample = new VulkanExample();															\
 | 
			
		||||
	vulkanExample->initVulkan();																	\
 | 
			
		||||
	vulkanExample->setupWindow();					 												\
 | 
			
		||||
	vulkanExample->prepare();																		\
 | 
			
		||||
	vulkanExample->renderLoop();																	\
 | 
			
		||||
	delete(vulkanExample);																			\
 | 
			
		||||
	for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); };  				\
 | 
			
		||||
	plumageRender = new VulkanExample();															\
 | 
			
		||||
	plumageRender->initVulkan();																	\
 | 
			
		||||
	plumageRender->setupWindow();					 												\
 | 
			
		||||
	plumageRender->prepare();																		\
 | 
			
		||||
	plumageRender->renderLoop();																	\
 | 
			
		||||
	delete(plumageRender);																			\
 | 
			
		||||
	return 0;																						\
 | 
			
		||||
}
 | 
			
		||||
#elif (defined(VK_USE_PLATFORM_IOS_MVK) || defined(VK_USE_PLATFORM_MACOS_MVK))
 | 
			
		||||
#if defined(VK_EXAMPLE_XCODE_GENERATED)
 | 
			
		||||
#define VULKAN_EXAMPLE_MAIN()																		\
 | 
			
		||||
VulkanExample *vulkanExample;																		\
 | 
			
		||||
#define PLUMAGE_RENDER_MAIN()																		\
 | 
			
		||||
PlumageRender *plumageRender;																		\
 | 
			
		||||
int main(const int argc, const char *argv[])														\
 | 
			
		||||
{																									\
 | 
			
		||||
	@autoreleasepool																				\
 | 
			
		||||
	{																								\
 | 
			
		||||
		for (size_t i = 0; i < argc; i++) { VulkanExample::args.push_back(argv[i]); };				\
 | 
			
		||||
		vulkanExample = new VulkanExample();														\
 | 
			
		||||
		vulkanExample->initVulkan();																\
 | 
			
		||||
		vulkanExample->setupWindow(nullptr);														\
 | 
			
		||||
		vulkanExample->prepare();																	\
 | 
			
		||||
		vulkanExample->renderLoop();																\
 | 
			
		||||
		delete(vulkanExample);																		\
 | 
			
		||||
		for (size_t i = 0; i < argc; i++) { PlumageRender::args.push_back(argv[i]); };				\
 | 
			
		||||
		plumageRender = new PlumageRender();														\
 | 
			
		||||
		plumageRender->initVulkan();																\
 | 
			
		||||
		plumageRender->setupWindow(nullptr);														\
 | 
			
		||||
		plumageRender->prepare();																	\
 | 
			
		||||
		plumageRender->renderLoop();																\
 | 
			
		||||
		delete(plumageRender);																		\
 | 
			
		||||
	}																								\
 | 
			
		||||
	return 0;																						\
 | 
			
		||||
}
 | 
			
		||||
#else
 | 
			
		||||
#define VULKAN_EXAMPLE_MAIN()
 | 
			
		||||
#define PLUMAGE_RENDER_MAIN()
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,8 @@ std::string  GUIFunction::openFileFolderDialog()
 | 
			
		|||
 | 
			
		||||
        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*"},
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,7 +34,7 @@
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	VulkanExample::VulkanExample():
 | 
			
		||||
PlumageRender::PlumageRender():
 | 
			
		||||
		VulkanExampleBase(ENABLE_VALIDATION)
 | 
			
		||||
	{
 | 
			
		||||
		title = "render";
 | 
			
		||||
| 
						 | 
				
			
			@ -45,7 +45,7 @@
 | 
			
		|||
		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
 | 
			
		||||
		if (deviceFeatures.fillModeNonSolid) {
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +53,7 @@
 | 
			
		|||
		};
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	 void VulkanExample::setupFrameBuffer()
 | 
			
		||||
	 void PlumageRender::setupFrameBuffer()
 | 
			
		||||
	{
 | 
			
		||||
		VulkanExampleBase::setupFrameBuffer();
 | 
			
		||||
		if (pbrFrameBuffer.bCreate && (pbrFrameBuffer.fbo.width != width || pbrFrameBuffer.fbo.height != height))
 | 
			
		||||
| 
						 | 
				
			
			@ -165,7 +165,7 @@
 | 
			
		|||
		pbrFrameBuffer.bCreate = true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::buildCommandBuffers()
 | 
			
		||||
	void PlumageRender::buildCommandBuffers()
 | 
			
		||||
	{
 | 
			
		||||
		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::TinyGLTF gltfContext;
 | 
			
		||||
| 
						 | 
				
			
			@ -334,14 +334,14 @@
 | 
			
		|||
		vkFreeMemory(device, indexStaging.memory, nullptr);
 | 
			
		||||
	}
 | 
			
		||||
	// TO DO:reconstruct with getting file path through struct
 | 
			
		||||
	void VulkanExample::loadAssets()
 | 
			
		||||
	void PlumageRender::loadAssets()
 | 
			
		||||
	{
 | 
			
		||||
		loadglTFFile(filePath.glTFModelFilePath, glTFModel);
 | 
			
		||||
		loadglTFFile(filePath.skyboxModleFilePath, skyboxModel, true);
 | 
			
		||||
		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)
 | 
			
		||||
| 
						 | 
				
			
			@ -448,7 +448,7 @@
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::preparePipelines()
 | 
			
		||||
	void PlumageRender::preparePipelines()
 | 
			
		||||
	{
 | 
			
		||||
		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);
 | 
			
		||||
| 
						 | 
				
			
			@ -506,7 +506,7 @@
 | 
			
		|||
		CreateToneMappingPipeline();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::CreateToneMappingPipeline()
 | 
			
		||||
	void PlumageRender::CreateToneMappingPipeline()
 | 
			
		||||
	{
 | 
			
		||||
		if (pipelines.toneMapping != VK_NULL_HANDLE)
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			@ -549,7 +549,7 @@
 | 
			
		|||
 | 
			
		||||
	//----------------------------Prepare precompute Lighting or BRDF LUT-----------------------------------------------//
 | 
			
		||||
	//Irradiance map for diffuse lighting
 | 
			
		||||
	void VulkanExample::GenerateIrradianceCubemap()
 | 
			
		||||
	void PlumageRender::GenerateIrradianceCubemap()
 | 
			
		||||
	{
 | 
			
		||||
		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;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::GeneratePrefilteredCubemap()
 | 
			
		||||
	void PlumageRender::GeneratePrefilteredCubemap()
 | 
			
		||||
	{
 | 
			
		||||
		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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::GenerateBRDFLUT()
 | 
			
		||||
	void PlumageRender::GenerateBRDFLUT()
 | 
			
		||||
	{
 | 
			
		||||
		auto tStart = std::chrono::high_resolution_clock::now();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1497,7 +1497,7 @@
 | 
			
		|||
	//----------------------------End Precompute brick------------------------------------------------------------------//
 | 
			
		||||
#pragma region pbr render pass setting
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::createAttachment(
 | 
			
		||||
	void PlumageRender::createAttachment(
 | 
			
		||||
		VkFormat format,
 | 
			
		||||
		VkImageUsageFlagBits usage,
 | 
			
		||||
		FrameBufferAttachment* attachment,
 | 
			
		||||
| 
						 | 
				
			
			@ -1558,7 +1558,7 @@
 | 
			
		|||
 | 
			
		||||
#pragma endregion
 | 
			
		||||
	// Prepare and initialize uniform buffer containing shader uniforms
 | 
			
		||||
	void VulkanExample::prepareUniformBuffers()
 | 
			
		||||
	void PlumageRender::prepareUniformBuffers()
 | 
			
		||||
	{
 | 
			
		||||
		// Vertex shader uniform buffer block
 | 
			
		||||
		VK_CHECK_RESULT(vulkanDevice->createBuffer(
 | 
			
		||||
| 
						 | 
				
			
			@ -1590,7 +1590,7 @@
 | 
			
		|||
		updateUniformBuffers();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::updateUniformBuffers()
 | 
			
		||||
	void PlumageRender::updateUniformBuffers()
 | 
			
		||||
	{
 | 
			
		||||
		shaderData.values.projection = camera.matrices.perspective;
 | 
			
		||||
		shaderData.values.model = camera.matrices.view;
 | 
			
		||||
| 
						 | 
				
			
			@ -1600,7 +1600,7 @@
 | 
			
		|||
		memcpy(shaderData.buffer.mapped, &shaderData.values, sizeof(shaderData.values));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::prepare()
 | 
			
		||||
	void PlumageRender::prepare()
 | 
			
		||||
	{
 | 
			
		||||
		VulkanExampleBase::prepare();
 | 
			
		||||
		loadAssets();
 | 
			
		||||
| 
						 | 
				
			
			@ -1614,7 +1614,7 @@
 | 
			
		|||
		prepared = true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::render()
 | 
			
		||||
	void PlumageRender::render()
 | 
			
		||||
	{
 | 
			
		||||
		renderFrame();
 | 
			
		||||
		if (camera.updated) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1627,12 +1627,12 @@
 | 
			
		|||
			
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::viewChanged()
 | 
			
		||||
	void PlumageRender::viewChanged()
 | 
			
		||||
	{
 | 
			
		||||
		updateUniformBuffers();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void VulkanExample::OnUpdateUIOverlay(vks::UIOverlay *overlay)
 | 
			
		||||
	void PlumageRender::OnUpdateUIOverlay(vks::UIOverlay *overlay)
 | 
			
		||||
	{
 | 
			
		||||
		GUIFunction guiFunc{};
 | 
			
		||||
		if (overlay->header("Settings")) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1664,7 +1664,7 @@
 | 
			
		|||
				std::string strModelFilePath;
 | 
			
		||||
				strModelFilePath = guiFunc.openFileFolderDialog();
 | 
			
		||||
				filePath.glTFModelFilePath = strModelFilePath;
 | 
			
		||||
				loadAssets();
 | 
			
		||||
				PlumageRender::prepare();
 | 
			
		||||
				
 | 
			
		||||
			}
 | 
			
		||||
			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:
 | 
			
		||||
	bool wireframe = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -156,8 +156,8 @@ public:
 | 
			
		|||
 | 
			
		||||
	VulkanglTFModel skyboxModel;
 | 
			
		||||
 | 
			
		||||
	VulkanExample();
 | 
			
		||||
	~VulkanExample()
 | 
			
		||||
	PlumageRender();
 | 
			
		||||
	~PlumageRender()
 | 
			
		||||
	{
 | 
			
		||||
		// Clean up used Vulkan resources
 | 
			
		||||
		// Note : Inherited destructor cleans up resources stored in base class
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue