diff --git a/README.md b/README.md index e1bcdb12..0d9f9bc3 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,14 @@ sudo apt-get install curl unzip tar libxi-dev libxinerama-dev libxcursor-dev xor ./build_linux.sh ``` +Fedora Installation + +``` +sudo dnf install libXinerama-devel libXcursor-devel libX11-devel libXrandr-devel mesa-libGLU-devel pkgconfig ninja-build cmake gcc gcc-c++ vulkan-validation-layers-devel vulkan-headers vulkan-tools vulkan-loader-devel vulkan-loader glslang glslc +./vcpkg_linux.sh +./build_linux.sh +``` + ## Random Thoughts - I suspect the RTX 2000 series RT cores to implement ray-AABB collision detection using reduced float precision. Early in the development, when trying to get the sphere procedural rendering to work, reporting an intersection every time the `rint` shader is invoked allowed to visualise the AABB of each procedural instance. The rendering of the bounding volume had many artifacts around the boxes edges, typical of reduced precision. diff --git a/src/main.cpp b/src/main.cpp index d7599a56..971079bc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -234,24 +234,24 @@ namespace // We want a device that supports the ray tracing extension. const auto extensions = Vulkan::GetEnumerateVector(device, static_cast(nullptr), vkEnumerateDeviceExtensionProperties); - const auto hasRayTracing = std::find_if(extensions.begin(), extensions.end(), [](const VkExtensionProperties& extension) + const auto hasRayTracing = std::any_of(extensions.begin(), extensions.end(), [](const VkExtensionProperties& extension) { return strcmp(extension.extensionName, VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME) == 0; }); - if (hasRayTracing == extensions.end()) + if (!hasRayTracing) { return false; } // We want a device with a graphics queue. const auto queueFamilies = Vulkan::GetEnumerateVector(device, vkGetPhysicalDeviceQueueFamilyProperties); - const auto hasGraphicsQueue = std::find_if(queueFamilies.begin(), queueFamilies.end(), [](const VkQueueFamilyProperties& queueFamily) + const auto hasGraphicsQueue = std::any_of(queueFamilies.begin(), queueFamilies.end(), [](const VkQueueFamilyProperties& queueFamily) { return queueFamily.queueCount > 0 && queueFamily.queueFlags & VK_QUEUE_GRAPHICS_BIT; }); - return hasGraphicsQueue != queueFamilies.end(); + return hasGraphicsQueue; }); if (result == physicalDevices.end())