Implicit surface rendering via ray tracing
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.8 KiB

2 years ago
# SDFRT
2 years ago
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
2 years ago
+ ```implicit_surface_ray_tracing```������Ŀ��������GUI����ʽ����ʵʱ��Ⱦ������֧��������Ⱦ����ΪHDR��PNG��BMP��ʽ
2 years ago
+ ```Sphere_Tracing_CPU_Test```����CPU�϶�```Sphere Tracing```�IJ��Ժ�ͬ```Adaptive Marching Points```�ĶԱȣ���Ϊ����```Compute Shader```�������ѣ�
## Build
��������Win10 + MSVC�¹���˳��������```Nvpro_cores```����˵��Ӧ����Linux��Ҳ��������������û�в���
�������ɺ���Ҫ```install```���ƶ���Դ���Ӷ�ʵ��```Spirv```��ʽ��Shader Module�ļ���
## Performance
���²����в���������������Ŀ�Ƿֿ����Եģ���Ϊ���Բ���������Ҫ```Atomic Operation```����ʵʱ����Ӱ���ϴ�
> ʵ������```glslc```��Shader���˿��ƣ�ֻ����```Debug```����ʱ�Ż����Բ�������
2 years ago
��```1024*1024```�ֱ��ʡ�ͬ����Ⱦ```200*200*50```�����ڵ�TPMSʱ��
| | Adaptive Marching Points | Sphere Tracing |
| :---: | :---: | :---: |
| frame time (ms) | 12+ | 0.6 ~ 0.7 |
| fraps per second | 80+ | around 1400 |
| rendering time per pixel (ns) | <= 11.5 | around 0.48 |
| ray steps per pixel (approx.) | 8 ~ 10 | 1.5 ~ 2.5 |
| ray steps range (approx.) | 10 ~ 400 | 0 ~ 240 |
> Ŀǰ��˵��������ʹ��```Sphere Tracing```Ҳֻ���ڱ���΢С�ṹ�ɱ�����10�������ֱ��ʣ�```10240*10240```���´ﵽ30fps���ң�����ʵʱ��Ⱦʱ�Ի����ֱ���Ԥ�����ɣ���Ҫ�����߷ֱ���ͼ��ʱ�ٵ��߷ֱ�������
2 years ago
## Screenshot
2 years ago
![](screenshot/capture.PNG)
2 years ago
## Known issues
+ Ŀǰ```Release```ģʽ���������޷�������Ⱦ���Ʋ���Ŀǰ������Output imageֱ��Blit��Swapchain Framebuffer�ϵIJ���ˮ������
+ ����```Adaptive Step Size Relaxation```��Ⱦģʽ����ʩ�������ƻ���```Sphere Tracing```��Ҫ��һЩ