Realtime Raytracing 資料

■ DirectX Raytracing

Getting Started with Raytracing
http://forums.directxtech.com/index.php?topic=5860.0

GDC DirectX Raytracing
https://msdnshared.blob.core.windows.net/media/2018/03/GDC_DXR_deck.pdf

Announcing Microsoft DirectX Raytracing!
https://blogs.msdn.microsoft.com/directx/2018/03/19/announcing-microsoft-directx-raytracing/

■ Metal

Metal for Accelerating Ray Tracing
https://developer.apple.com/documentation/metalperformanceshaders/metal_for_accelerating_ray_tracing

Metal for Ray Tracing Acceleration
https://developer.apple.com/videos/play/wwdc2018/606/
https://devstreaming-cdn.apple.com/videos/wwdc/2018/606id8hzoex3kf/606/606_metal_for_ray_tracing_acceleration.pdf?dl=1

Metal の Raytracing は MPS として提供されています
https://developer.apple.com/documentation/metalperformanceshaders

使った事は無いので詳しくないですが、Metal Performance Shader は Metal の上位レイヤーとして提供されているライブラリー (framework) の事で、MPS を使うことで、各 iOS や Mac に最適化された機械学習やレイトレーシングの機能を利用出来るようになるみたいです。

GPU を使った機能なので shader という名前が付いています。恒例的に仕方ないのは分かるのですが、ニューラルネットワークの機能も提供しているフレームワークの名称が shader  って、何だかややこしいですね。

■ Vulkan

NVIDIA RTX: Enabling Ray Tracing in Vulkan
http://on-demand-gtc.gputechconf.com/gtcnew/on-demand-gtc.php?searchByKeyword=s8521&searchItems=&sessionTopic=&sessionEvent=&sessionYear=2018&sessionFormat=&submit=&select=
http://on-demand.gputechconf.com/gtc/2018/presentation/s8521-advanced-graphics-extensions-for-vulkan.pdf

Vegtation系に関するSSS表現のドキュメント

Arion Sub-Surface Scattering
http://support.randomcontrol.com/display/AF33/Sub-Surface+Scattering

#OpenLightBook Chapter 7
https://www.creativeshrimp.com/translucent-grass-lighting-tutorial-book-07.html

Best terrain & vegetation asset/shader
https://forum.unity.com/threads/best-terrain-vegetation-asset-shader.519660/

PORTRAYING LEAVES WITH V-RAY FOR 3DS MAX
https://www.chaosgroup.com/blog/portraying-leaves-with-vray-for-3ds-max

素晴らしい記事です。

DirectX12 学習リソース

Project ASURA – DirectX12予習
http://project-asura.com/blog/archives/1215

Direct3D 12 Programming Guide
https://docs.microsoft.com/en-us/windows/desktop/direct3d12/directx-12-programming-guide

Microsoft DirectX 12 and Graphics Education
https://www.youtube.com/channel/UCiaX2B8XiXR70jaN7NK-FpA/feed

Practical DirectX 12
https://developer.nvidia.com/sites/default/files/akamai/gameworks/blog/GDC16/GDC16_gthomas_adunn_Practical_DX12.pdf

BSSRDF 学習リソース

BSSRDF Explorer: A rendering framework for the BSSRDF
https://benedikt-bitterli.me/bachelor-thesis.pdf

A Practical Model for Subsurface Light Transport
https://graphics.stanford.edu/papers/bssrdf/bssrdf.pdf

超雑訳 Extending the Disney BRDF to a BSDF with Integrated Subsurface Scattering
http://project-asura.com/blog/archives/2175

半透明物体に対する表面下散乱モデルの当てはめ
http://omilab.naist.jp/~mukaigawa/papers/CVIM2008-BSSRDF.pdf

Full-Dimensional Sampling and Analysis of BSSRDF
http://omilab.naist.jp/~mukaigawa/papers/TCVA2013-BSSRDF.pdf

BSSRDF 設計のための表面下散乱シミュレーション
https://ir.lib.hiroshima-u.ac.jp/files/public/2/20408/20141016135155334350/p302_0903-6.pdf

Maxwell – Grass
http://support.nextlimit.com/display/maxwell4/Grass

凄い貴重な資料です。ちゃんと読みたい。

Visual Studio 2015 で Direct3D11 Sample ビルド時の LNK2019

dxerr.lib(dxerrw.obj) : error LNK2019: unresolved external symbol _vsnwprintf referenced in function “long __cdecl StringVPrintfWorkerW(unsigned short *,unsigned __int64,unsigned __int64 *,unsigned short const *,char *)” (?StringVPrintfWorkerW@@YAJPEAG_KPEA_KPEBGPEAD@Z)

Visual Studio 2015 以降で、DirectX Sample ビルド時に上記の LNK2019 エラーが発生した場合は、プロジェクトのリンカーの設定に「legacy_stdio_definitions.lib」を追加する必要があります。

https://social.msdn.microsoft.com/Forums/en-US/5150eeec-4427-440f-ab19-aecb26113d31/updated-to-vs-2015-and-now-get-unresolved-external-errors?forum=vcgeneral

このリンクエラーは Visual Studio 2015 から printf 系の関数の実装が inline 展開されるようになったのが原因で発生しているみたいです。関数が inline 展開されるため、呼び出し側はコンパイル時に命令列に置き換わることになるので、関数の呼び出し先そのものが存在しなくなります。(今回であれば printf 関数のアドレスが無くなります)

プロジェクトのソースコードに書かれている printf は、コンパイル時に命令列に展開されるので問題は起こらないのですが、既にコンパイル済の (古いソースコードの) lib は printf の関数のアドレスが未だにどこかに定義されていると信じてリンク時に探しに行くのですが、該当の関数は inline 展開されているため見つけることができずにエラーになります。

legacy_stdio_definitions.lib をリンクすることで、この lib の中に古い (legacyな)  printf の実態を持つバイナリが含まれているため、これにリンクできるのでビルドが通るようになります。

もしリンクエラーを起こしている lib のソースコードが手元にある場合は、Visual Studio 2015 で一度 lib を作り直した方が良いのですが、無い場合は上記の legacy lib をリンクしてしまうのが一番早い解決のようです。

https://msdn.microsoft.com/en-us/library/bb531344.aspx

Real-Time Rendering

Real-Time Rendering はゲームグラフィックスを学ぶ中で、目に通した方が良いサイトです。

Graphics Books Page
http://www.realtimerendering.com/books.html

Portal
http://www.realtimerendering.com/portal.html

Resources
http://www.realtimerendering.com/index.html

Real-time Rendering 4th edition

2018年8月2日 にリアルタイムレンダリング4版が出版されます。
http://www.realtimerendering.com/blog/real-time-rendering-4th-edition-available-in-august-2018/

Third edition の発売は2008年のようだったので、10年ぶりの改訂版ですね。
自分は second edition の日本語版しか持っていないので、新しいのが出たら買いたいです。

グラフィックエンジン制作

https://github.com/masukt/Andere
趣味でグラフィックスエンジンを作成してみたいと思いリポジトリを作ってみました。
リポジトリを作っただけで終わらないように気を付けます (笑)

最低限 Windows で D3D12 と Vulkan には対応させたい。

実装の過程などをまとめていき、上手く行ったら電子書籍などで出すことを目標としています。

C#/WPF の参考資料

Dark WPF Theme for Standard- and ExtendedWPFToolkit-Controls
https://github.com/steto-scope/Monotone
洗練された WPF テーマです。
AvalonDock も使用されており、WPF でアプリケーションを作る際にとても良いです。

WPF での図形と基本描画の概要
https://docs.microsoft.com/ja-jp/dotnet/framework/wpf/graphics-multimedia/shapes-and-basic-drawing-in-wpf-overview
図形の描画さえ出来れば、必要なコントローラの自作が出来ます。

WPF4.5入門
https://blog.okazuki.jp/entry/2014/12/27/200015
WPF を入門する上で大変参考になります。

C# Tutorial 19 WPF & XAML
https://www.youtube.com/watch?v=G-BRSwClK_4
Youtube のオンライン講座です。大変勉強になります。