SlabHash 1 源码分析使用到的warp操作: unsigned __ballot_sync(unsigned mask, predicate)mask中的bit为1 表示对相应id的线程执行warp操作,该线程的predicate非0将返回值对应位置为1 int __ffs (int x) 返回最低非0有效位的位置。x为0,则返回0 T __shfl_sync(unsigned mask, T var, 2023-10-20 Rendering Blogs > GPGPU
DACHash A Dynamic, Cache-Aware and Concurrent Hash Table on GPUs 1 Summary对于GPU的高并发以及SIMT(Single Instruction Multiple Threads)执行模型而言,cache命中率对性能的影响很大。作者提出reorder算法提高对hash table数据访问的局部性,这也是该方向的首次研究与尝试。 2 Basic Design and Implementation本章节介绍了DACHash的基础设计与实现,包括数据结构、ha 2023-10-15 Paper Notes > GPGPU
Compute Shader 基础 基础概念1. GPU 中的概念1.1 处理器核心的层级概念GPU 具有非常多的处理器核心,在 Nvidia 中称为 Streaming Multiprocessor(SM),AMD 称为 Compute Unit(CU),以下使用 SM。在 SM 内部包含最基本的处理单元 lane,lane 可以近似理解为一个线程。SM 进行调度执行任务时,最小单位并不是 lane,而是 Warp(Nvidia 2023-09-20 Vulkan Basics
Compute Shader 实现 Pyramid Algorithm 使用 compute shader 生成 mipmap本文是参考 https://github.com/nvpro-samples/vk_compute_mipmaps 的算法复现。 将输入层级记为 $L$,将 $L$ 的 2x2 样本区域生成一个样本则得到 $L+1$ 层级。下面介绍从 $L$ 到 $L+M$ 层级的生成算法,$M\in[1,6]$,算法输入为 $L$ 层级的大小为 $2^M\t 2023-09-20 Vulkan Basics
Reblur解析 1 概要2 调用逻辑文件 Reblur_DiffuseSpecular.hpp,在 nrd::InstanceImpl::Add_ReblurDiffuseSpecular 里创建好所有 render pass 每个 pass 的名字使用宏 PushPass("PostFix") 设置,最后得到 pass name = DENOISER_NAME - PostFix 2023-09-20 Rendering Blogs > Graphics Alogrithm
Screen Space Ray Reflection 1 Summary本文介绍屏幕空间反射中最重要的一步——基于 hierarchy depth buffer(HZB) 的 ray march算法,主要参考了 [1] 中的实现。 ray march算法的目的是为了根据屏幕空间深度得到光线在屏幕上的交点,相比于世界空间的光追,这是一种开销很低但仅局限于屏幕空间的做法,也就是若光线交于相机看不到的表面,那么屏幕空间ray march则无法得到求交结果。 2023-09-20 Rendering Blogs > Graphics Alogrithm
Scene Graph and Draw Call Grouping Strategy Summary本文介绍了表示场景的 Scene Graph ,以及场景加载过程。基于 Scene Graph 组织 draw call 的策略。 Scene GraphScene Graph 表示场景中物体的层级结构,是场景物体的组织形式。在本渲染器中,Scene Graph 主要由表示层级结构的基类UltraNode与组织场景物体的基类SceneObject组成。 1. 场景层级结构UltraN 2023-09-20 Render Engine
Vulkan Render Design Summary本文介绍了本渲染器的 Vulkan 管线管理策略以及 Shader 管理策略。 Vulkan 管线管理策略Vulkan 包含三种管线 graphics、compute、raytracing,管线只是一种状态描述,描述了整个工作流中涉及的状态。人们经常提 OpenGL 是个状态机,OpenGL 的状态是由根据使用者的 API 调用来进行切换的,属于 high-level 的 API 设 2023-09-20 Render Engine
Real-Time Global Illumination using Precomputed Light Field Probes 1 Summary这篇论文提出了一种基于light probe的全局光照方法,其中包括预计算过程中probe数据的生成方式、基于probe数据的光线追踪算法以及实时渲染中的着色过程。 在预计算过程中,对场景的每个离散采样点生成以该位置为中心的probe数据,每个probe包含了球面分布的两组数据:probe中心收到每一方向上最近点的radiance、该最近点的法线以及该最近距离(radial di 2023-09-20 Paper Notes > GI > Light Probe