こんにちはtatsyです。 今回の記事は レイトレ合宿5 アドベントカレンダー の第8回の記事になります。 今回の記事では、Microfacetモデルに用いられる法線分布関数の代表例であるBeckmann分布とGGX分布について、重点サンプリングに用いる公式を導出し、それをsmallpt ベースのレンダラーに組み込むところまでをご紹介しようと思っています。今回の記事の内容は主に以下の2つの論文の内容をまとめた ...
こんにちはtatsyです。 本日の研究室での会話です。 後輩: 重点サンプリングをするときの提案分布はどうして被積分関数に近い方が良いのですか? 私: 定性的には、被積分関数の値が大きい部分により多くのサンプルを配する方が全体の誤差が抑えれるからかな… (ん、定量的にはどうなんだっけ?) となりまして、定量的にはどうなるのかが気になったので、調べてこちらにまとめておきます。 重点サンプリング 関数$ \chi $ 全体での積分 ...
こんにちはtatsyです。 今回はOpenGLのTesselation control shaderとTesselation evaluation shaderを使ってDisplacement mappingをしてみたいと思います。 例のごとく、Displacement mappingの説明から始めますが、結果のみをご覧になりたい方は、お手数ですが下までスクロールをお願いいたします。 Displacement mappingとは? Displacement mappingは端的に言うと、テクス ...
こんにちはtatsyです。 最近、いろいろな場所でVRやARに関係する技術が盛んに発表されていて、自分も少しは勉強せねばと思っている今日この頃です。 そんなこともあり、最近VRなどで使われるFoveated renderingという技術について調べておりました。そうすると、これらの技術はいかに情報がいらないところのシェーディングを低負荷に行うか、という部分に注力しているようでした。 このような考え方はMu ...
こんにちはtatsyです。 今回は年末年始に時間があったので、MacでVulkanを使う方法をまとめてみたいと思います。 Vulkanとその他のGraphics API VulkanはOpenGLと同じKhronos groupという団体が提唱するGraphics APIの仕様です。 OpenGLは仕様が少し古く、複数のGPUへの対応であったり、描画命令のオーバーヘッドの多さであったりが問題視されるようになってきま ...
こんにちはtatsyです。 先週末、八丈島で行われたレイトレ合宿4!?に参加してきました。 レイトレ合宿は合宿前に各参加者が実装したレイトレーシング等のレンダリングプログラムを実行し、それで得られた画像のクオリティを競うというのがメインイベントになっている合宿で、私は昨年から参加をさせていただいております。 ちなみに昨年私が出した画像は次のような画像です。 今年の実装方針 合宿用のレンダラを実装するにあたり ...
こんにちはtatsyです。 今回の記事はレイトレ合宿4!?のアドベントカレンダー第8週目の記事です。そのほかの記事につきましても、レイトレ合宿4!?のページからご覧いただけますので、ご興味のある方はぜひぜひ読んでみてください。 さて、今回の記事の内容についてですが、レンダリングにおける半透明物体の扱い方について、dipoleモデルとその発展系を中心として、いくつかの手法をご紹介したいと思います。 レンダ ...
こんにちはtatsyです。 本日はシャドウ・マッピングのQt5で実装する方法を紹介したいと思います。 シャドウ・マッピング自体の詳しい説明は省きますので、詳しく知りたい方は 床井研究室 – 第27回 シャドウ・マッピング Tutorial 16 : Shadow mapping | opengl-tutorial.org などをご覧いただけると助かります。 シャドウ・マッピングとは? 最初にシャドウ・マッピングを簡単に解説したいと思います(本当にざっくりです)。 シャドウ・マッピングとは物体が別の物体に ...