首页 > 其他分享 >实时渲染路径追踪概述

实时渲染路径追踪概述

时间:2023-02-25 12:23:49浏览次数:55  
标签:渲染 WebGPU 降噪 概述 光照 使用 BVH 管线 追踪

大家好,本文是对Real-Time Path Tracing and Beyond和它的视频:HPG 2022 Monday, Day 1 (enhanced)学习的总结,并结合我的理解进行了一些延伸

得益于下面的技术进步,使得通常应用于离线渲染技术中的路径追踪能够应用于实时渲染:

  • RTX显卡带来的硬件光追管线
    使用该管线可使射线与场景相交计算大幅提升;并且不再需要自己维护BVH加速结构,而是直接使用管线默认提供的加速结构来代替
  • 新的采样方法:ReSTIR
    该采样方法通过在渲染过程中减少采样的方差,带来了几十倍的速度提升;并且能够优化有大量光源的情况;并且支持更健壮的光源路径(比如光源隐藏在门后的情况)
  • 新的降噪技术
    主要代表为SVGF等结合时间和空间上的信息一起做Filter的降噪算法以及基于神经网络降噪技术

目录

渲染管线

实时渲染路径追踪的渲染管线如下图所示:
image

管线分为三个部分:
前端->光照传输->后处理

下面依次讨论:

前端

前端主要负责组织场景数据,包括构造和更新场景数据

有两个实现方案:

光照传输

光照传输使用路径追踪来实现直接光照和间接光照的计算。

不过对路径追踪进行了下面的改进:

  • 使用ReSTIR采样方法
  • 使用RTXDI计算直接光照
  • 使用ReSTIR GI计算间接光照

原文还对frameless render进行了讨论,不过我不是很了解

后处理

后处理包括降噪->DLSS->其它后处理(如tone map)

这里讨论降噪

原文使用了Nvdia的NRD Denoiser来降噪,它相当于SVGF的改进版

我其实更看好神经网络降噪,这也是最近的发展趋势

原文中也提到了一种神经网络降噪的方法:Neural Temporal Adaptive Sampling and Denoising

它还有改进的论文:
Interactive Monte Carlo Denoising using Affinity of Neural Features

通过参考下面的资料:

我确定了通过依次实现下面的论文,可以逐渐改进蒙特卡洛降噪器:

  • LBF
    A machine learning approach for filtering Monte Carlo noise
  • KPCN
    Kernel-predicting convolutional networks for denoising Monte Carlo renderings
  • KPAL
    Denoising with kernel prediction and asymmetric loss functions
  • Monte Carlo Denoising via Auxiliary Feature Guided Self-Attention
  • Self-Supervised Post-Correction for Monte Carlo Denoising

slang: 着色器语言中的Typescript

因为使用了统一的路径追踪算法,所以只需要一个shader

这个shader原文作者写了1万行,规模相当大,因此需要一种更容易维护、更模块化的shader语言

因此,原文作者使用了slang,它支持接口定义等语法,貌似可以进行单元测试,可以编译为GLSL、HLSL等着色器语言

slang相当于Typescript,也就是在原始的着色器语言之上增加了一层编译器

我构想的具体实现的方案

下面是我构想的具体实现的方案:

应用领域

Web3D

技术栈

  • WebGPU
    如果渲染器是运行在浏览器中的话,则使用WebGPU这个图形API。但是目前WebGPU只有计算管线而没有光追管线,所以我们就需要自己维护BVH
  • WebGPU Node
    如果渲染器是运行在Nodejs中的话,则可以使用WebGPU Node这个开源的Nodejs项目。它底层封装了Vulkan SDK,上层使用了dawn-ray-tracing项目,提供了WebGPU API,实现了在Nodejs环境中使用WebGPU API和光追管线来实现硬件加速的光线追踪。
    具体介绍可见WebGPU+光线追踪Ray Tracing 开发三个月总结

技术方案

我们应该会优先使用WebGPU Node,因为它支持光追管线

我们使用自主开发的神经网络降噪器来降噪

我们基于自主开发的Meta3D:开源Web3D低代码平台,通过实现多个独立且可组装的扩展来开发可维护、可扩展、可读的渲染器

初步的开发计划

1.实现基础的神经网络降噪器

需要重点实现:

需要使用我开发的深度学习库,并将其改为支持GPU端训练和推理

2.直接使用基础的路径追踪算法来渲染基本的场景,并用神经网络降噪器来降噪

3.使用slang来写着色器语言,编译为GLSL

4.实现动态场景

5.将渲染器拆成光照传输和降噪器两个部分,并重构为基于Meta3D的扩展

6.将光照传输改为使用RTXDI实现直接光照、使用ReSTIR实现间接光照

标签:渲染,WebGPU,降噪,概述,光照,使用,BVH,管线,追踪
From: https://www.cnblogs.com/chaogex/p/17154116.html

相关文章

  • 渲染器的实现(1)--《vue.js设计与实现》
    functionrenderer(domString,container){container.innerHTML=domString}letcount=ref(1)renderer(`<h1>${count.value}</h1>`,document.getElementById('......
  • redis_概述与redis_下载&安装
    redis_概述: redis是一款高性能的NOSQL系列的非关系型数据库 什么是NOSQLNoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系......
  • SkeyePlayer RTSP Windows播放器D3D,GDI的几种渲染方式的选择区别 (2)
    SkeyePlayerRTSPwindows播放器支持D3D和GDI两种渲染方式,其中D3D支持格式如下:DISPLAY_FORMAT_YV12DISPLAY_FORMAT_YUY2DISPLAY_FORMAT_UYVYDISPLAY_FORMAT_......
  • java TreeSet集合概述和特点
       ......
  • reids(2)概述与安装
    前言redis安装在Linux服务器上,系统为centos7,安装的版本为redis6.2.10 下载与安装下载地址:https://redis.io/download/#redis-downloads点击上面的链接就能进入redis......
  • 【Java数据结构和算法】002-数据结构和算法概述
    目录​​一、数据结构和算法的关系​​​​二、实际编程中遇到的问题​​​​1、一段Java代码​​​​代码:​​​​问题:​​​​2、一个五子棋程序​​​​图示:​​​​问题......
  • 873~874 redis概述,下载安装
    Redis:1、概述:redis是一款高性能的NOSQL系列的非关系型数据库;1-1:什么是NOSQLNoSQL(NoSQL=NotOnlySQL),意即“不仅仅是SQL”,是一项全新的数据......
  • 数组的概述
    用一段连续空间,存放相同类型的变量,这样的容器(结构)叫数组数组的下标是从0开始假如数组有n个元素下标范围:0~n-1元素范围:arr[0]~arr[n-1]......
  • 【ARM架构】armv8 系统安全概述
    ARMv8-A系统中的安全一个安全或可信的操作系统保护着系统中敏感的信息,例如,可以保护用户存储的密码,信用卡等认证信息免受攻击。安全由以下原则定义:保密性:保护设备上的......
  • 第一章 计算机网络概述
    一、因特网概述网络、互联网和因特网网络是由若干节点(Node)和连接节点的链路(Link)组成多个网络还可以通过路由器互连起来,构成范围更大的网络,即互联网因特网是世界上最大......