こんにちわ、Pocolです。
今日は,
[Burns 2013] Christopher A. Burns, Warren A. Hunt, “The Visibility Buffer: A Cache-Friendly Approach to Deferred Shading”, Journal of Compute Graphics Techniques, Vol.2, No.2, 2013
を読んでみることにします。
いつもながら,誤字・誤訳があるかと思いますので,ご指摘していただける場合は正しい翻訳例と共に指摘していただけるとありがたいです。
カテゴリー: Program
Program関係のお話
超雑訳 Masked Software Occlusion Culling
こんにちわ、Pocolです。
今日は,High Performance Graphics 2016で発表された…
[Hasselgren 2016] J.Hasselgren, M. Andersson, T. Akenine-Möller, “Masked Software Occlusion Culling”, High Performance Graphics 2016
を読んでみようと思います。
いつもながら,誤字・誤訳が多々あるかと思いますので,ご指摘いただける場合は正しい翻訳例と共に指摘していただけるとありがたいです。
超雑訳 Approximate Reflectance Profiles for Efficient Subsurface Scattering
こんばんぐんぐん。
Pocolです。
今日は,
[Christensen and Burley 2015] Per H. Christensen, Brent Burley, “Approximate Reflectance Profiles for Efficient Subsurface Scattering”, Pixar Technical Memo #15-04, July, 2015.
を読んでみようと思います。
いつもながら誤字・誤訳等があるかと思いますので,指摘していただける場合は正しい翻訳例と共に指摘していただけると幸いです。
超雑訳 Separable Subsurface Scattering: Expanded Technical Report
こんにちわ、Pocolです。
今日は…
- [Jimenez 2020] Jorge Jimenez, Karoly Zsolnai, Adrian Jarabo, Christian Freude, Thomas Auzinger, Xian-Chun Wu, Javier von der Pahlen, Michael Wimmer, Diego Gutierrez, “Separable Subsurface Scattering: Expanded Technical Report”, Activision Research Techical Report, Mar 09, 2020, https://research.activision.com/tech-reports/2020-03/separable-subsurface-scattering-expanded-technical-report.
を読んでみようと思います。
いつもながら誤字・誤訳があるかと思いますので,指摘していただける場合は正しい翻訳例とともに指摘していただけるとありがたいです。
超雑訳 Adaptive Shadow Maps
こんにちわ、Pocolです。
今日は,Randima Fernando, Sebastian Fernandez, Kavita Bala, Donald P.Greenbergらによる”Adaptive Shadow Maps”を読んでみます。
いつもの通りに,誤字・誤訳があるかと思いますので,ご指摘いただける場合は正しい翻訳例と共に指摘していただけると有難いです。
キューブマップからスフィアマップへの変換
おはござ!Pocolです。
前回の記事では,スフィアマップのサンプルについて紹介しましたが,今回はキューブマップをスフィアマップ形式で展開して表示する方法について紹介します。
キューブマップからの変換については,Paul Bourke氏の“Converting to/from cubemaps”にまとまった説明があります。
この記事に書かれているキューブマップから正距円筒方式への変換処理は次のような感じになります。
// スフィアマップ形式で表示するためのキューブマップ参照方向を求めます. float3 ToCubeMapCoord(float2 texcoord) { // [-1, 1]に変更. float2 uv = texcoord * float2(2.0f, -2.0f) - float2(1.0f, -1.0f); float theta = uv.x * F_PI; float phi = uv.y * F_PI * 0.5f; float3 dir; dir.x = cos(phi) * cos(theta); dir.y = sin(phi); dir.z = cos(phi) * sin(theta); return dir; }
この変換の使いどころですが,ImGuiでキューブマップを表示するのが面倒なので,上記の関数をかまして2Dマップとして表示するのに自分は使用しています。
…というわけで,展開して表示する方法について紹介しました。
スフィアマップのサンプリング
こんばんわ。Pocolです。
スフィアマップのサンプリングについて,忘れないようにメモしておこうと思います。
スフィアマップのサンプリング方法について,Jaume Sanchez Elias氏が“Creating a Spherical Reflection/Environment Mapping shader”という記事を書いています。
この記事では,反射ベクトルからテクスチャ座標を以下の式で算出できることが紹介されています。
\begin{eqnarray}
s = \frac{r_x}{2 \sqrt{{r_x}^2 + {r_y}^2 + (r_z + 1)^2}} + \frac{1}{2} \tag{1} \\
t = \frac{r_y}{2 \sqrt{{r_x}^2 + {r_y}^2 + (r_z + 1)^2}} + \frac{1}{2} \tag{2}
\end{eqnarray}
OpenGL 2.0の仕様書, “2.11.4 Generating Texture Coordinates”の項目に式の記載があるので,この式(1)と(2)は正しいものの様です(下図参照)。
興味深いのはこの記事のコメント欄にあるPierre Lepers氏のコメントです。
上記の式(1)と(2)はさらに単純化することができます。
まず式の分母部分を\(m\)と置きます。わかりやすいように\(r_x\)を\(x\)のように添え字部分で表現することにします。
\begin{eqnarray}
m &=& 2 \sqrt{x^2 + y^2 + (z + 1)^2} \\
&=& 2 \sqrt{x^2 + y^2 + z^2 + 2z + 1 } \\
\end{eqnarray}
ここで両辺の2乗をとります。
\begin{eqnarray}
m^2 = 4 (x^2 + y^2 + z^2 + 2z + 1) \tag{3}
\end{eqnarray}
ところで,\(x\), \(y\), \(z\)は反射方向を表す単位ベクトルの各成分であるので,
\begin{eqnarray}
\sqrt{x^2 + y^2 + z^2} = 1 \tag{4}
\end{eqnarray}
が成立します。
式(4)の両辺の2乗し,式(3)に代入します。
\begin{eqnarray}
m^2 &=& 4( 1 + 2z + 1) \\
&=& 4( 2 + 2z) \\
&=& 8( 1 + z) \tag{5}
\end{eqnarray}
式(5)について両辺に対して平方根を取ります。
\begin{eqnarray}
m &=& \sqrt{ 8 ( 1 + z) } \\
&=& \sqrt{8} \sqrt{1 + z} \tag{6}
\end{eqnarray}
\(\sqrt{8}\)は変数が無く定数扱いにできるので,事前に計算しておくことができます。
あとは,これをシェーダコードに落とせばよいです。コードに落とし込むと次のような感じになります。
// 方向ベクトルからスフィアマップのテクスチャ座標を求めます. float2 ToSphereMapCoord(float3 dir) { const float kSqrt8 = 2.82842712474619f; float s = 1.0f / (kSqrt8 * sqrt(1.0f + dir.z)); return dir.xy * s + 0.5f; }
dir.zは[-1, 1]なので,平方根内は[0, 2]の間で変化するのでマイナスになることは基本的にはありませんが,もしかしたらコンパイル警告とかは出るかもしれません。
…というわけで,スフィアマップのサンプリングについて紹介しました。
超雑訳 A Multiple-Scattering Microfacet Model for Real-Time Image-based Lighting
わしゃがな!Pocolです。
今回は,Carmelo J. Fdez-Agüeraによる,”A Multiple-Scattering Microfacet Model for Real-Time Image-based Lighting”を読んでみようと思います。
論文は,http://jcgt.org/published/0008/01/03/からダウンロードできます。
いつもながら,誤字・誤訳があると思うので、ご指摘いただける場合は正しい翻訳例と共に指摘していただけるとありがたいです。
超雑訳 Material Advances in Call of Duty: WWⅡ
わしゃがな!Pocolです。
今回は,SIGGRAPH 2018: Advances in Real-Time Renderingで発表された,Danny Channによる”Material Advances in Call of Duty: WWⅡ”のコースノートを読んでみようと思います。
いつもながら,誤字・誤訳等があるかと思いますので,ご指摘いただける場合は正しい翻訳例と共に指摘いただけるとありがたいです。
あと先に言っておくと,「マジックアワー」は撮影用語のようです(Wikipedia参照)。
超雑訳 Practical Realtime Strategies for Accurate Indirect Occlusion (1)
おはござ!Pocolです。
今日は,
[Jimenez 2016] Jorge Jimenez, Xian-Chun Wu, Angel Pescec, Adrian Jarabo,
“Practical Realtime Strategies for Accurate Indirect Occlusion”,
SIGGRAPH 2016 Courses: Physically Based Shading in Theory and Practice, https://blog.selfshadow.com/publications/s2016-shading-course/, 2016.
を読んでみることにします。いつもながら,誤字・誤訳があると思うので、ご指摘いただける場合は正しい翻訳例と共に指摘していただけるとありがたいです。