# SDFRT Implicit surface rendering via ray tracing ## Introduction 采用Ray Tracing(其实本质上是Ray Marching)解决隐式曲面的渲染问题,Backend为Vulkan,引入Nvidia的```NVVK```来简化各种资源的申请和初始化,输出可视实时渲染结果。目前仅支持硬编码隐式函数的渲染 ## Dependencies + cmake >= 3.15 + VulkanSDK >= 1.3 + Nvpro_cores ## Project + ```implicit_surface_ray_tracing```:主项目,输出带GUI的隐式曲面实时渲染程序 + ```Sphere_Tracing_CPU_Test```:在CPU上对```Sphere Tracing```的测试和同```Adaptive Marching Points```的对比(因为调试```Compute Shader```过于困难) ## Build 经测试在Win10 + MSVC下构建顺利,按照```Nvpro_cores```库的说明应该在Linux下也能正常构建,但没有测试 构建完成后需要```install```来移动资源,从而实现```Spirv```格式的Shader Module的加载 ## Performance 以下测试中步进步数和其余项目是分开测试的,因为测试步进步数需要```Atomic Operation```,对实时性能影响较大 > 实际上用```glslc```对Shader做了控制,只有在```Debug```构建时才会测试步进步数 ## Screenshot ![](./screenshot/capture.png) ## Known issues + 目前```Release```模式构建出来无法正常渲染,推测是目前暴力将Output image直接Blit到Swapchain Framebuffer上的操作水土不服 + 现在```Adaptive Step Size Relaxation```渲染模式还在施工,估计会比```Sphere Tracing```还要快一些