NVIDIAのRTX向けレイトレーシングのサンプル集

NVIDIAがGitHubでGettingStartedWithRTXRayTracingというRTXのサンプルを公開しています.

GettingStartedWithRTXRayTracing
https://github.com/NVIDIAGameWorks/GettingStartedWithRTXRayTracing

NVIDIAのレンダリングフレームワークのFalcor上で以下のようなサンプルやDXRのチュートリアル的サンプルがあります.

  • 01-OpenWindow
  • 02-SimpleRasterShader
  • 03-RasterGBuffer
  • 04-RayTracedGBuffer
  • 05-AmbientOcclusion
  • 06-TemporalAccumulation
  • 07-SimpleAntialiasing
  • 08-ThinLensCamera
  • 09-LambertianPlusShadows
  • 10-LightProbeEnvironmentMap
  • 11-OneShadowRayPerPixel
  • 12-DiffuseGlobalIllumination
  • 13-SimpleToneMapping
  • 14-GGXGlobalIllumination

DXRサンプルは2つです.Ray Tracing In One WeekendをDXRでやるサンプルもあります.

  • DXR-RayTracingInOneWeekend
  • DXR-Sphereflake Better

このサンプル自体はWindows 10 RS4を対象にしたもののようでRS5では動作しないようなのでそこは少し待つ必要がありそうです.


VulkanからRTXのレイトレーシングを行うNVIDIAの記事

NVIDIAの開発者向けサイトでIntroduction to Real-Time Ray Tracing with Vulkanという記事が公開されています.

Introduction to Real-Time Ray Tracing with Vulkan
https://devblogs.nvidia.com/vulkan-raytracing/

この記事ではVK_NVX_raytracing拡張からRTXを利用することが紹介されています(この記事執筆時点では公開されていない拡張です).

記事を読むとわかりますが,VK_NVX_raytracingによるレイトレーシングはOptiXやDXRと比較的近い構造になっています.シェーダはGLSLで記述をします.


TuringアーキテクチャのGPUの新機能のOpenGL/Vulkan拡張の記事

NVIDIAのCyril Crassin氏がTuringアーキテクチャのGPUの新機能のOpenGLとVulkan拡張をまとめた記事を書いています.

NVIDIA Turing Vulkan/OpenGL extensions
https://blog.icare3d.org/2018/09/nvidia-turing-vulkanopengl-extensions.html

今回OpenGLとVulkanの拡張として公開されているのは以下の機能です.以前の記事で公開された新機能以外のものも入っています.

  • Ray-Tracing Acceleration
  • Mesh Shading
  • Variable Rate Shading
  • Exclusive Scissor Test
  • Texture Access Footprint
  • Derivatives in Compute Shader
  • Barycentric Coordinates and manual attributes interpolation
  • Ptex Hardware Acceleration
  • Representative Fragment Test
  • Multi-View Rendering

NVIDIAのMesh Shaderの紹介記事

NVIDIAの開発者向けblogでTuringで加わる新機能の”Mesh Shader”の紹介記事が掲載されています.

Introduction to Turing Mesh Shaders
https://devblogs.nvidia.com/introduction-turing-mesh-shaders/

この機能は,OpenGL, Vulkan, Direct3D12からは拡張機能として使用できるようになるようですね.記事ではGLSL環境での使い方が解説されていますのでグラフィックスAPIでの標準化の前から使用できることになりそうですね.


NVIDIA TuringアーキテクチャのGPUの詳細記事やWhitepaper

NVIDIAの開発者向けサイトでGeForce RTXシリーズのTuringアーキテクチャのGPUの技術的な詳細を紹介した記事とWhitepaperが公開されています.

NVIDIA Turing Architecture In-Depth
https://devblogs.nvidia.com/nvidia-turing-architecture-in-depth/

Whitepaper
https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf

今回のアーキテクチャの刷新は新機軸が多いので読んでおくとよさそうですね.

ラスタライズ向けの新機能の4つですが,これらに関してはおいおい紹介していきます.

  • Mesh shading
  • Variable Rate Shading
  • Texture Space Shading
  • Multi-View Render

このうちMesh ShadingとVariable Rate Shading (VRS)にTwitterで取り上げられてますね.


無料で読めるレイトレーシングの電子書籍の話題

SIGGRAPH 2018はリアルタイムレイトレーシングが話題になりましたが,いくつかの電子書籍が無料で読めるようになっていますので紹介していきます.

Peter Shirley氏のレイトレーシング入門電子書籍がSIGGRAPH 2018やTuring発表のタイミングで無料公開されています.

公開されているのは以下の3冊平易な文章とC++で書けるようになっています.まずは1から書いてみたいという人には良いと思います.

  • Ray Tracing in One Weekend
  • Ray Tracing: the Next Week
  • Ray Tracing: The Rest Of Your Life

https://drive.google.com/drive/folders/14yayBb9XiL16lmuhbYhhvea8mKUUK77W

サンプルのリポジトリ
https://github.com/petershirley

もう1つは,Real-Time Rendering, Fourth Editionの中で収録が間に合わなかったため電子版で公開されるReal-Time Ray Tracingの章です.”Real-Time”がつくこともあり,こちらはGPUレイトレーシングで使わる手法や用語の解説がありますので,OptiXやDXRの使用者などがAPIの中で動いている理論を知るのによいと思います.

書籍全体の情報ページ
http://www.realtimerendering.com/

無料公開のReal-Time Ray Tracingの章
http://www.realtimerendering.com/Real-Time_Rendering_4th-Real-Time_Ray_Tracing.pdf


IntelのCheckerboardレンダリングの記事

IntelのサイトでCheckerboardレンダリングの記事とサンプルが公開されています.SIGGRAPHでもセッションがありました.

Checkerboard Rendering for Real-Time Upscaling on Intel Integrated Graphics, v. 12
https://software.intel.com/en-us/articles/checkerboard-rendering-for-real-time-upscaling-on-intel-integrated-graphics-v-12

サンプルリポジトリ
https://github.com/GameTechDev/DynamicCheckerboardRendering

Direct3D12向けの実装解説で,先行するSonyのPS4 Proで提案されている手法,Rainbow Six Siege,Decima engine,Frostbiteの手法などについても言及されておりPC上で実装が公開されたものとしてはまとまった資料になっていますので実装を学ぶには良いと思います.


Filament : Googleのオープンソースリアルタイムレンダリングエンジン

GoogleがFilamentというオープンソースのリアルタイムレンダリングエンジンを公開しています.

Filament
https://github.com/google/filament

このエンジンはC++とJava/JNIがあり,Android,Linux,macOS,Windowsをサポートします.

バックエンドとしてOpenGL 4.1, OpenGL ES 3.0(Android), Vulkanがあります.macOSはOpenGLかMoltenVkによるVulkanで動作させる形になるようです.

物理ベースのクラスターフォワードレンダリングを採用していますが,ライトの単位なども物理的な単位ベースのようです.

  • Clustered forward renderer
  • Cook-Torrance microfacet specular BRDF
  • Lambertian diffuse BRDF
  • HDR/linear lighting
  • Metallic workflow
  • Clear coat
  • Anisotropic lighting
  • Approximated translucent (subsurface) materials (direct and indirect lighting)
  • Cloth shading
  • Normal mapping & ambient occlusion mapping
  • Image-based lighting
  • Physically-based camera (shutter speed, sensitivity and aperture)
  • Physical light units
  • Point light, spot light and directional light
  • ACES-like tone-mapping
  • Temporal dithering
  • FXAA or MSAA
  • Dynamic resolution (on Android)

将来サポートしたい機能としては以下のような要素があるようです.

  • IES light profiles
  • Area lights
  • Fog
  • Color grading
  • Bloom
  • TAA
  • etc.