Shader Technical Terms
https://gyazo.com/bcc3c2661ac53ec65395b2baba9bf08b
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
レンダリング全般の話題を扱う術語集。
シェーダーに関する用語集。PBR、ライティング、モデリングなど。
Indices:
GPU makers
Shader Languages
Shader Hardware, Shader Stage
Primitives
Math - Matrices, coordinate system
Camera and Optics
Vectors around Lighting
Rendering Methods
HDR
Light and Color
Light, LI
Light, GI
Lighting Logic
Shadow Mapping
Math - Geometry
Mapping
PBR
Post Process
Noise, Rand
Color
Fractal
Raytracing, Raymarching
API
misc
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
GPU makers
GPU/graphics processing unit
計算機はCPUやメモリ、電源ユニットやキーボード・マウスといった入力デバイスで構成されている。GPUはグラフィックスを専門に受け持つ、計算機の部品のひとつ。
1999年のNVIDIA GeForce256でCPUと差別化するために使い始めたGPUという用語が定着した。
GPGPU
グラフィックス以外の用途にもGPUが有用であることが認められ、GPGPUという用語が見られるようになった。機械学習やマイニング等の文脈で使われる。
NVIDIA,AMD,Intel
半導体を扱う企業のうち、いくつかの会社はGPUで名前が知られるようになった。現在われわれが手に入れるGPUは、主にNVIDIA、AMD、Intelが販売しているものが多い。
GPU以前の歴史の話
CGA
EGA
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Shader Languages
IRIS GL
シリコングラフィックス社から生まれたシェーダー言語。
ARB
アセンブリによる低レベルシェーダー言語。
OpenGL
GPU向けのライブラリ。クロノスグループが策定した。ベースはIRIS GL。
GLSL
シェーダー言語。クロノスグループ。
Cg
シェーダー言語。NVIDIA。開発終了。
HLSL
シェーダー言語。Microsoft。
Vulkan
ローレベルグラフィックスAPI。クロノスグループ。
SPIR-V/Standard Portable Intermediate Representation-V
OpenCL向けに開発された並列計算とグラフィックスのための中間言語。クロノスグループ。
Metal
ローレベルグラフィックスAPI。Apple。
ShaderLAB
Unityにおけるシェーダー言語。エディタとの連携(パラメータをUnityエディタ側からシェーダー側に与える)、スニペットでのシェーダー開発(Cg/HLSL言語)、パスの管理などを実現する。
OSL/Open Shading Language
ソニーピクチャーズイメージワークスがアーノルド向けに開発したシェーダー言語。Blenderでも採用されている。OSLはCPUで動作するが、2020年現在ではGPUでのレイトレ対応を開発中。
セマンティクス/semantics
HLSL言語では入出力の変数に意味を付与するセマンティクスを記載する。セマンティクスはシェーダーステージ間で変数をやり取りするのに必要となる。
スウィズル/swizzle
ベクトル、座標、色などを保持する配列から、添え字を指定するかわりに(variable).xのようなアクセサを使う表記。color.rはcolor[0]と等しく、またposition.yはposition.[1]と等しい。(position).xyzw、(color).rgbaはそれぞれ配列の添え字0、1、2、3番目の内容を取り出し、サイズ4の配列として扱う。.stpqというスウィズルも存在する。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Shader Hardware, Shader Stage
シェーダー/shader/着色器/着色器语言(シェーダ言語)
シェーダーはGPUの中にある演算機。グラフィックスに関わる計算に特化している。単にシェーダーと言う時、シェーダープログラミングを省略した表現の場合もある。
並列処理の有用性からがグラフィクス以外の用途にも転用され、深層学習、ビットコインのマイニングでもGPUが利用されている。GPGPUと呼ばれる。
レンダリングパイプライン/rendering pipeline/渲染管线
CPUからモデルデータをGPUに渡し、各シェーダーステージを経てディスプレイ描画されるまでの流れ。
GPUの進化により近年はステージが増えており、従来と異なるパイプラインが提唱されたりもしている(AMD)。
DirectX 11でのステージは、頂点シェーダー、ハル、テッセレーション、ドメイン、ジオメトリ、ラスタライザ、ピクセルシェーダー(フラグメントシェーダー)、アウトプットマージというパイプラインになっている。
フォワードレンダリング/フォワードシェーディング/forward rendering/forward shading/前向渲染
デファードレンダリング/デファードシェーディング/deferred rendering/deferred shading/延迟渲染
フォワードのパイプラインでは、ライトの灯数分だけ計算が実行される。そのため、光源が多い場合に計算量が増大する。それに対する解決案がデファードで、Gバッファに各情報を積んでから最後に一回だけライトの計算を行う。
理論的にはデファードの方がフラグメントシェーダーの処理が軽い。Gバッファに大量に情報を蓄えるため、デファードの方がメモリが多く必要。
固定機能パイプライン
プログラミングできず、ハードウェアが持つ固定の機能を利用するパイプライン。過去のアーキテクチャであり、現在シェーダーと言えば頂点シェーダー、フラグメントシェーダーのプログラムを書けるのが当たり前になっている。
OpenGL ES2.0、Direct3D 10以降で固定機能シェーダーは廃止された。
プログラマブルシェーダー/programmable shader/可编程渲染管线
プログラムを書いてレンダリングパイプラインの各ステージの処理をカスタマイズできるもの。
単にシェーダーと言えば現在ではプログラマブルシェーダーを指し、固定機能パイプラインは過去のものとなっている。
頂点シェーダー/vertex shader/顶点着色器
頂点情報を受け取り、加工した頂点を返すシェーダーステージ。
テッセレーションシェーダー/tessellation shader/镶嵌评估着色器
LoDに相当する処理をシェーダーで実施できるよう追加されたシェーダーステージ。プリミティブの辺を分割し、複数のプリミティブに分ける処理を行う。
ジオメトリシェーダー/geometry shader/几何着色器
ポリゴン単位での処理をするシェーダーステージ。例えばポリゴンの中心座標を求めて、そこからの法線を算出する処理などを実装できる。
G-Buffer/G缓冲
テクスチャデータのバッファ。デファードシェーディングでG-Bufferパスはテクスチャを生成する。
フラグメントシェーダー/fragment shader/ピクセルシェーダー/pixel shader/什么是片段着色器
ピクセルに色をつけるシェーダーステージ。OpenGLではフラグメントシェーダーと呼び、DirectXではピクセルシェーダーという名前になっている。
dFdx,dFdy (GLSL), ddx,ddy (HLSL)
フラグメントシェーダーでは同時に2x2ピクセルずつ処理を行う。GLSLではdFdx、dFdy、HLSLではddx、ddyといった関数が利用できる。これらの関数では隣接ピクセルとの勾配を返却する。この機能があるためmipmapが利用でき、またfwidth関数が利用できる。
アルファブレンディング
VTF/Vertex Texture Fetch
頂点テクスチャフェッチ。頂点シェーダーでテクスチャを読み取ること。テクスチャはフラグメントシェーダーから色情報を参照するだけではなく、それ以外の情報を格納して利用することもできる。データ精度は8bit。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Primitives
プリミティブ/primitive
ここでは単純のため、プリミティブとはポリゴンのことと説明する。ツールによっては、複雑なメッシュ、モデルオブジェクトを指してプリミティブと呼ぶものもある。
ポリゴン/polygon
ポリゴンは多角形を指す。単にポリゴンと呼ぶ時には三角形を指す場合が多い。
カリング/culling
3つの頂点を時計回り/反時計回りの順で繋いでポリゴンとする。この時、時計回りなのか反時計回りなのかによって裏表をあらわし、カリング時の判断に使う。3Dツールでは裏面のカリング、表面のカリング、カリングなし(両面からポリゴンが見える)といった設定ができる。
NURBS/Non-Uniform Rational B-Spline(非一様有理Bスプライン)
曲線を扱う数理モデル。複数の曲面を滑らかに接続できる。B-スプライン曲線を一般化したもの。
スプライン曲線/Spline curve
複数の制御点に対して多項式で補完する曲線描画アルゴリズム。ゼネラルモーターズのド・ボーアによるアルゴリズム。CGの世界ではB-スプライン曲線が利用される。
ベジェ曲線/Bezier curve
複数の制御点に対して多項式で補完する曲線描画アルゴリズム。ルノーのベジェによる論文による。ベジェ曲線は数学的にはB-スプラインの一種。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Math - Matrices, coordinate system
度数法/Degrees
角度をあらわす単位。0°~360°であらわす。
弧度法/ラジアン/Radians
角度をあらわす単位。0~2πであらわす。学校の数学では度数法が馴染み深いが、プログラミングの世界では弧度法を使う局面が多い。
スカラー/Scalar
数。ベクトルと対比して使われる。
ベクトル/Vector
向きと大きさ/長さを持つ数。
単位ベクトル/Unit vector
大きさが1のベクトル。ベクトルをその大きさで割ると求められる。3Dプログラムではnormalize関数が使える。
ベクトルの大きさは平方根を使って求められる。
行列/Matrix
縦と横にM x N個の数字を並べたもの。グラフィックスでは3次元の座標などを扱うのに便利なため、行列を利用する。
ユークリッド空間/Euclidean space
3次元ユークリッド空間。空間の座標がどこなのかを定義する。
1点を通り与えられた直線に平行な直線はただひとつ存在するというユークリッド幾何の公理が成り立つ有限次元空間。
直交座標系/デカルト座標系/Cartesian coordinate system/Rectangular coordinate system
直角に交わった軸で空間の座標を定義する。2次元ではxの横軸とyの縦軸を使う。3次元では奥行きのz軸が加わる。空間の基準となる一点を原点とし、(0,0)、(0, 0, 0)であらわす。
極座標系/Polar coordinate system
2次元の場合、直交座標でのxyのかわりに半径rと角度aを使う。3次元の場合は球面座標系とも呼ぶ。
球面座標系/Spherical coordinate system
半径rとふたつの角度θ、φを使って座標を定義する。θ、φは右手座標系なのか左手座標系なのかで定義が異なる。
球面調和関数/Spherical harmonics
r、θ、φを使って表現した関数。2回微分可能。3D CGではディフューズの計算に利用される(AO、GI)。
右手座標系(OpenGL、Blender、Maya、Houdini、Oculus SDK、Tango、OpenCV)
下記参照。
左手座標系(DirectX、Unity、UE、ZBrush、C4D、LightWave)
3次元の空間座標をあらわすのに親指、人差し指、中指のそれぞれにxyz軸を割り当てる考え方。モデリングソフトやゲームエンジンによってこれが右手、左手のどちらに相当するかが異なる。また、どちらが上なのか(Y-up、Z-up)によってさらにバリエーションがある。
https://gyazo.com/bf92361bf64bb400b64c3fbc10eb5075
ローカル座標
家具やキャラクターといった個別のオブジェクトの中で管理される座標をローカル座標と呼ぶ。
ワールド座標/世界坐标系
複数オブジェクトを含めるシーン全体の座標をワールド座標と呼ぶ。
モデル変換(GL)/ワールド変換(DirectX)
ローカル座標とワールド座標を変換することをモデル変換、またはワールド変換と呼ぶ。座標変換にはMVP行列で掛け算すれば良い。
MVP行列/MVP matrices
モデル-ビュー-プロジェクション行列。モデルデータは自身の「ローカルな」座標で表現されるが、複数のモデルデータが配置されたワールド座標に配置し、それをカメラから見た座標に変換し、さらにパース(遠くのものが小さく見える)ように変換するために用いるのがMVP行列。頂点シェーダーでの座標変換に用いられる。
モデル行列:モデルとトランスフォームをあらわす行列。拡大・縮小、回転、平行移動。
ビュー行列:カメラをあらわす行列。カメラ位置、カメラ注視点、カメラの上方向。
プロジェクション行列:2次元の平面に投影する行列。スクリーンのアスペクト比、画角、前後のクリップ距離。
ビュー変換
カメラから見た場合の座標に変換する。
プロジェクション変換
パースのついた座標に変換する。
カメラから見た場合、手前の範囲は狭く、奥の範囲を広くとらえられる。この台形状の範囲を視錐体と呼ぶ。近くのものが大きく見え、遠くのものが小さく見えるよう、行列の掛け算で変換される。
アフィン射影
平行投影変換。
同次座標
2次元の座標を3つの値で、3次元の座標を4つの値でというように、ひとつ要素を増やして表現する手法。拡大・縮小、平行移動、回転をひとつの変換行列で扱う場合は、それぞれ3x3行列、4x4行列を用いる。
クォータニオン/四元数
回転は大きくオイラー角、クォータニオンで扱うことができる。オイラー角では回転する軸の順序を変えると結果が変わり、また回転ではジンバルロックという問題が発生し得るが、クォータニオンで扱うと回避できる。
オイラーの公式
https://gyazo.com/bf4f59f15a1d1db7376d9b85969420c1
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Camera implementation
被写界深度/DOF/Depth of Field
カメラレンズでピントがあっているように見える範囲。
透視投影/Perspective
パースのついた絵をつくるための投影方式。カメラ位置から遠くに対し、視錐台という形状の台形状の範囲を2次元画面に映す。この視錐台を歪ませて平面の画面に変換することで、遠くのものが小さく見えるパースのついた絵になる。
正射影投影/平行投影/Orthographic
カメラからの距離に関わらず大きさが変わらずに見える投影方式。2Dゲーム、UIの描画などで利用する。
視錐台/Viewing Frustum
カメラに映す範囲を定義す台形状の立体の形。カメラに近い場所のnear clipと、カメラに映る一番遠い場所のfar clipの距離を設定して、パースペクティブのカメラが映す範囲を決める。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Vectors around Lighting
視線ベクトル
カメラ座標 - 頂点座標。
ライトベクトル
ライト座標 - 頂点座標。
ハーフベクトル/Halfway Vector
視線ベクトル + ライトベクトル。
古典的なライティングでは各ベクトルの内積で計算を行う。
ディフューズのライティングであるランバートでは、ライトベクトルとマテリアル表面の法線ベクトルで内積を計算する。
スペキュラーのライティングであるフォン/ブリンフォンでは、ハーフベクトルとマテリアル表面の法線ベクトルで内積を計算する。ハーフベクトルの計算は反射ベクトルを求めるよりも軽量なので、近似的にスペキュラーを求めるのに利用される。Blinn-Phongの鏡面反射モデル。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Rendering Methods
物理ベースレンダリング/PBR/Physically based rendering
現実世界での光の物理法則を、資源に制限のある計算機でシミュレートできるようにモデル化し近似的に表現できるようにした手法。
物理ベースシェーディング/PBS/Physically based shading
物理法則を基としたシェーディング手法。ディズニーのBRDF論文、BSDF論文が有名。
非写実的レンダリング/NPR/Non photorealistic rendering
リアル寄りではないレンダリング手法。マンガ、カートゥーン、アニメのような表現が代表的なNPR。
トゥーンルック
いわゆるアニメ絵的なライティング・シェーディング。3D CGに関わる人たちが長い年月をかけてさまざまなチートを発明してきた成果。
ギルティギアで採用した技術が大きく取り上げられた。GDC2015では3D CGっぽさを消すためにリミテッドアニメーション的な作りを意識したと発表された。
非写実的レンダリング/NPR/Non-Photorealistic Rendering
セルルック
セルアニメ調。グラデーションせず色の領域の境目がはっきりするのが特徴。
ハードシェーディング
照明と影の領域を2つに分ける2諧調アプローチ
ポスタリゼーション
内積の値を閾値で扱って量子化する手法
アウトライン
G-Buffer TODO ここに説明を記載する
イメージ処理によるエッジ検出
Sobel Edge Detection
ボダランで採用された。
ガウス差分
異なるガウスフィルタで処理して引き算を行う。
リアリティ(本物らしさ)とビリーバビリティ(それらしさ)は区別して扱われる。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
HDR
HDR/High Dynamic Range
SDR(Standard Dynamic Range)よりも広い明るさを表示できる技術。
色の表現はSDRでは0.0-1.0のレンジだが、HDRでは例えばポスプロで1.1の値を与えてとても明るくすることができる。
トーンマッピング/tone mapping
LDR環境でHDRのようなルックを実現する近似計算方法。
ACES Film
code:AcesFilm.GLSL
vec3 acesFilm(const vec3 x) {
const float a = 2.51;
const float b = 0.03;
const float c = 2.43;
const float d = 0.59;
const float e = 0.14;
return clamp((x * (a * x + b)) / (x * (c * x + d ) + e), 0.0, 1.0);
}
Reinhard
Duiker
Frostbite
電気光伝達関数/EOTF/Electro-Optical Transfer Function
対数平均シーン輝度
Reinhardによる露出計算の方法。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Light and Color
放射測定/radiometry
ある場所で発生した電磁波が空間を伝達し、他の場所に到達した時の輸送されるエネルギー、時間的割合、面積密度、立体角密度などを測定する。
放射エネルギー、ジュール
放射束/Φ
ワット。単位記号W。
放射照度
ワット毎平方メートル。W・m^-2
放射強度
ワット毎ステラジアン。W・sr^-1
放射輝度
ワット毎ステラジアン毎平方メートル。W・sr^-1・m^-2
国際照明委員会/CIE
CIE1931色空間
スティーブンス効果
ハント効果
バートルソン-ブレナマン効果
基礎からはじめる物理ベースレンダリング
ライティング/Lighting
光源の配置とライトの調整を行い、ライトを計算してシーンを描画すること。
スペキュラー/specular/镜面反射
日差しの強い日に前の前を横に通り過ぎる車が、ある位置ではハイライトが見えるものを指す。これはマテリアル表面に対して、光源からの入射角と自分の目への出射角が法線を境に等しくなった場合に起こる。自分の頭(3Dシーンであればカメラ)を動かした時にハイライトが動くのであれば、その光はスペキュラー。
光がマテリアル表面で反射する時に、光源ベクトルからの入射角と、自分の眼に向かってくる出射角があわさった時に起こる。
ライトを計算した場合に3Dキャラクターが髪の毛に天使の輪を作っていたら、それはスペキュラー。
ディフューズ/dissuse/扩散
あちこちの壁や床や物体に何回も反射して、光が減衰しきったあとにオブジェクトをうっすらと明るくするもの。これがディフューズ。
光が肌に潜り込み、血管や脂肪に乱反射して入ってきた場所とまったく違う場所から出てくる光もディフューズ。これは特にSSSと呼ばれる。
アンビエント/ambient
環境光。
光源/モチベーション/motivation
光源。
作為/cheating
キャラクターの感情をライトによって顔に表現することや、場面の雰囲気を部屋や地形に反映させること、またルックを向上させるために現実にはありえない光源の配置や調整を行う行為。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Light, LI
局所照明/ローカルイルミネーション/LI/Local Illumination
反射光、間接光を扱わないライティング。
環境マッピング
IBL/Imaged Base Lighting
まわりの風景の色を元に、対象のオブジェクトへのライティングを計算する。
カラーブリーディング/color bleeding
光の反射によって、近くにあるものの色がつくこと。
緯度-経度マッピング
1976年にBlinn、Newellが開発した環境マッピングアルゴリズム。
ρ=acos(rz), Φ=atan2(ry,rx)
球マッピング/ライトプローブ。
Williamsが述べ、MillerとHoffmanが開発した。
n=(rx,ry,rz+1)/m, m=sqrt(rx^2+ry^2+(rz+1)^2)。uv範囲[0,1)へのアクセスは2で割って0.5を足す。u=rx/2m+0.5, v=ry/2m+0.5
キューブマッピング
1986年にGreeneが紹介した手法。
8面体マッピング/octahedron mapping
スペキュラーイメージベースライティング
放射照度環境マッピング
ゾーン調和
リンギング
信号処理の用語。入力値が急に変化した際に発生するアーティファクト。
ウインドウイング
半球ライティング
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Light, GI
大域照明/グローバルイルミネーション/GI/Global Illumination
シーンに配置されたオブジェクトに対して、直接光、間接光の相互作用を計算したライティング。
主に映像向けのプリレンダーと、ゲームやVRコンテンツ向けのリアルタイムの2種類に大きく分けられる。現時点でのハードウェア性能では、リアルタイムレンダリングを行うコンテンツでもGIのライトは事前にベイクする手法と組み合わせるケースが多い。
レイトレーシングの手法で光が計算される。
スクリーンスペースグローバルイルミネーション/SSGI
レンダリングされた絵に対して、追加でカメラ側からレイトレーシングする手法。
アンビエントオクルージョン/AO/Ambient Occlusion
2000年代のはじめに映画パールハーバーでCGの飛行機のために開発された環境ライティング。
事前計算AO
AOのベイク。
放射照度マップ/ライトマップ
環境マップから得られる明るさをベイクしたテクスチャ。
スクリーンスペースアンビエントオクルージョン/SSAO/Screen-Space Ambient Occlusion
SSGIにおいて狭まった場所への光の入り具合を計算する。
オフスクリーンのモチベーションは考慮されないので、カメラの向きを変えて光源が画面外に移動するとディフューズが消失する。
スケーラブルアンビエントオブスキュランス
McGuireによるSSAO。
ボリュームアンビエントオクルージョン
Szirmay-Kalosら。
地平線基準のAO/HBAO
Bavoilら。
グラウンドトゥルースアンビエントオクルージョン/GTAO
Jimenezら。
NNAO
Neural Network Ambient Occlusion。
Ambient Aperture Lighting
All-Frequency Rendering of Dynamic, Spatially-Varying Reflectance
球面SDF
Enlighten
Geomerics社によるリアルタイムGIミドルウェア。ラジオシティ法。
Progressive
Unity社と Imagination Technologies社によって開発されたGIミドルウェア。モンテカルロ法。
Light Probe(Unity)
仮想点光源/VPL
反射性シャドウマップ/RSM
ライトオブジェクト/Light objects
たいていの3Dツールでは、ライトの種類としてディレクショナルライト、ポイントライト、スポットライトといった種類を用意している。
処理の重さとしてはポイントライト、ディレクショナルライトの順に重く、スポットライトは比較的軽い。
パンクチュアルライト/Punctual Light
光に方向を持ち、無限に小さな点光源として実装されるライト。ディレクショナルライト、ポイントライト、スポットライトを指す。
ディレクショナルライト/Directional Light
太陽光をシミュレートする光源。ライトオブジェクトの座標に意味はなく、角度のパラメータのみが有効。シーンに対して非常に遠い場所にある光源として動作し、シーン全体を一様な強さのインテンシティで照らす。
超遠方にある光源なので、窓際と部屋の奥程度の距離ではインテンシティの減衰はなく、また窓枠の影は平行になりパースはつかない。
ポイントライト/Point Light
360度全方向を照らす光源。
スポットライト/Spot Light
円錐状に照らす光源。円錐の角度と、光の届く距離のパラメータで設定する。
エリアライト/Area Light
四角形の形状で明るさを発する光源。計算量が多く、3Dツールでは主にベイク用途で利用される。リアルタイム用途での利用をサポートするツールも存在する。
インテンシティ/Intensity
光の強さ。単位はLUX、Lumenなどを使う。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Lighting Logic
ランバート/lambert
ライトベクトルLとマテリアルの法線ベクトルNに対して、dot(L, N)を元にライトが当たった明るさを計算する。ライトと法線が向き合っていれば内積が1.0になり、ライトが真横から照らす状態では0.0になるので、この値をライトの明るさに掛け算するとマテリアル表面の色が計算できる。裏側からライトが照らす場合はマイナスの数字になるが、ゼロとみなせば暗く描画できる。
max(0.0, dot(L, N))
ハーフランバート/halfway lambert
dotの計算値の範囲を0.0から1.0に置き換える手法。0.5 + 0.5 * dot(L, N)。Valveがチームフォートレスで採用した。物理的に正しくないが、人の目から見ると自然で柔らかなライティングになる。
フェイクSSS/SSS Wrap Lighting
ハーフランバートを一般化した式。SSSとして活用できる。dot(N,L)<=0.0の部分を明るくし、全体を光で包んだようなルックとなることから名づけられた。
max(0.0, (wrap + dot(L, N)) / (1.0 + wrap)) ※ハーフランバートはwrap == 1.0のケース
オーレン・ネイヤー反射モデル/Oren–Nayar reflectance model
物体表面のマイクロファセットを考慮に入れた反射モデル。ランバートと違って、ラフネスのパラメータを計算することができる。
フォンシェーディング/Phong shading
ピクセル間で色を補完する手法。高精細になるがグーローシェーディングと比較すると処理が重い。スペキュラー、ディフューズ、アンビエントから色を求める。
ブリンフォン鏡面反射/Blinn-Phong
ハーフベクトルを使ってスペキュラーを求めることで反射ベクトルの計算よりも低いコストにする。
ハーフベクトル
3Dシーンには大きくカメラ(視線)ベクトル、ライトベクトル、オブジェクト表面の法線ベクトルの3種類がある。カメラとライトのベクトルの中間のベクトルをハーフベクトルと呼ぶ。Blinn-Phongの反射を計算するのに使われる。スペキュラーの項も参照。
フラットシェーディング/flat shading
法線を元にポリゴンの面単位でシェーディングを行う。今よりも計算機資源が貧弱だった古の時代の技。
グーローシェーディング/gouraud shading
頂点間で色を補完する手法。頂点数が少ないと境界でジャギが出やすい。今よりも計算機資源が貧弱だった古の時代の技。
PRT/Precomputed Radiance Transfer
リアルタイム用途で、動かない背景などで事前に光の計算を行っておく手法。
ビルボード/Billboard
スクリーン平行ビルボード、ワールド指向ビルボード、ソフトパーティクル、軸ビルボード:ある軸のまわりで回転し、可能な限り前を向く、インポスター、ビルボードクラウド
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Shadow Mapping
シャドウマッピング/shadow mapping
ライト方向の深度をテクスチャで持ち、シーンの影を描画する方法。事前にテクスチャをベイクして用意しておくと、リアルタイムレンダリング時の負荷を軽減できる。
シャドウアクネ/shadow acne
シャドウマッピングを行う際には光源からマテリアルまでの距離を記録することで実現する。ここで数値計算上の誤差から、明るくレンダリングする箇所にまだら模様の影が入り込むことがある。解消するには誤差の分を打ち消すバイアスの値を設定する。
ライトをベイクした時に出力するシャドウマップテクスチャは、マテリアル表面への距離情報を格納する。この値の微細な誤差で明るい箇所と暗い箇所の判断の境界部分になった場合、チラついた縞状の影が描画される場合がある。
ピーターパニング現象/Peter panning
オブジェクト近傍の影が表示されない現象。
シャドウパンケーキ
シャドウアクネを避けるための技術。視錐体の外にある陰を出すオブジェクトを除いて、ニアクリップを最適化する。これにより、シャドウマップをライトの方向に沿ってレンダリングする際のライト空間の範囲を減らし、シャドウマップの精度を上げてアクネを減らすことができる。
バイアス/bias
シャドウマップに対して、バイアス値の分だけ追加で影を判断する距離を「押し込む」ことで、影の部分に光が入り込まないように調整する。
シャドウアクネの解消にはバイアス値を上げ、ピーターパニングを防ぐにはバイアス値を下げる。
3Dツールではライトオブジェクトのパラメータや、ライティングの設定値でバイアスを指定できる。
dueling frusta
ライトとカメラが相対し、ライトがカメラを照らす状況ではパースペクティブシャドウマップは機能しない。
deer in the headlights
上と同じ意味。車のヘッドライトに照らされた鹿。混乱したことをあらわす形容詞。シャドウマップを説明する文脈では、この鹿はカメラのことを指しているように思う。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Math - Geometry
三角関数
sin,cos,tan,atan,atan2,…
正弦波/sine wave
サイン波。円周を移動する点に対して原点からのx軸との角度に応じて-1から+1までの範囲で値が変わる。この角度と値を2軸にプロットしたものは周期性のある波に見える。
余弦波/cosine wave
正弦波と周期がπ/2だけずれている波。形状は同じ。cos(x) == sin(x + π/2)。
内積/dot product
一方のベクトルから垂直にもう一方のベクトルへ補助線を引いてできた影。影というのは文字通りの意味で、例えばキャラクターの顔に光と影を描くには、ランバートを使ってライトベクトルと肌表面からの法線ベクトルで内積を計算した値を利用することができる。
もし、VR内にいる自分とキャラクターの目と目があったかどうかを判定したいなら、内積を使うと良い。
外積/ベクトル積/vector product/クロス積/cross product
斜めに掛けて、斜めに掛けて、そして引き算をする。すると、直交するベクトルが出てくる。外積は3次元でのクロス積。
法線と接線から従接線を求めるにはクロス積を使う。テクスチャを処理する計算で利用できる。
外積の値は、2つのベクトルから作られるひし形の面積と等しい。
指数/ネイピア数/e
数学定数。eであらわし、対数(log)の計算で自然対数の底として定義される。値は2.71828182846。
GLSLでは底をeで扱うexp関数と、2で扱うexp2関数がわかれている。
ヤコビ行列/Jacobian determinant
https://gyazo.com/ae531d0bce7e46110f15b415bce3fe83
エルミート補完/Hermite Interpolation
3次関数の値を使った補完。GLSLのSmoothstep実装として利用される。また、パーリンノイズの計算式中でもエルミート補完が使われている。
code:SmoothstepHermite.GLSL
t = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);
return t * t * (3.0 - 2.0 * t);
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Mapping
テクスチャ/texture
オブジェクトの表面で形や色を表現するためにハンドドローや写真加工で作り出す画像ファイル。計算式で作り出すプロシージャルテクスチャの手法も存在する。
テクスチャマップ、セカンダリーテクスチャといった、法線、バンプマップなどの、PBR向けに利用するテクスチャもある。
CC0のライセンスで利用できるテクスチャも存在する。
ノーマル/法線/normal
面から垂直に伸びるベクトル。頂点からの法線はvertex normal。
テクスチャにベイクした法線はノーマルマップ。z成分の大きさを画像ファイルの形で保持しているので、青い画像に見える(RGBにXYZが対応している)。
タンジェント/接線/tangent
接線、接面。肌の頂点に直交する面。
バイタンジェント/bitangent
法線と接線からのクロス積で求める、ふたつそれぞれのベクトルに直交するベクトル。
ノーマル、タンジェント、バイタンジェントの3つの軸から成る空間をタンジェントスペースと呼ぶ。
バンプマッピング/Bump Mapping
ハイトマップに高さ情報を持たせ、マテリアル表面に凹凸の加工を行う。
法線マッピング/ノーマルマッピング/Normal Mapping
バンプマッピングの一種。マテリアル表面に対応する法線をテクスチャで用意し、RGBに対応するxyz方向を法線とみなす。光の反射(散乱)をこの法線によって計算することで、テクスチャ表面の凹凸を表現する。高ポリモデルを用意するかわりに、低ポリモデルと法線マッピングを組み合わせて利用することで計算負荷の低減を実現する。
視差マッピング/パララックスマッピング/Parallux Mapping
ハイトマップのテクスチャを用意し、カメラ位置からマテリアル表面に向かうベクトルと、マテリアル表面の法線ベクトルの角度に応じて高さをずらすレンダリングを行う。ディスプレイスメントマッピングよりも負荷が低い。
ベントノーマルマッピング/Bent Normal Mapping
https://gyazo.com/d06dbda379fd16af2239f9935a685806
ディスプレイスメントマッピング/Displacement Mapping
テクスチャマップ、またはハイトマップを使って、サーフェス上の点をずらす方式。
パララックスオクルージョンマッピング/Parallax Occulusion Mapping
オブジェクトを凹ませるようなハイトマップを用意する。カメラベクトルからオブジェクトにレイを進め、衝突したオブジェクトからさらに先にレイを進める。ハイトマップでずらした座標に到達したら、そこを基準に法線でライティングを計算する。遮蔽を求めるため、そこからさらに光源方向にレイを飛ばす。遮蔽物がある場合にはソフトシャドウを落とし、オクルージョンを実現する。
ラジオシティ法線マッピング/Radiosity Normal mapping
ValveがHL2でライトマップのルクセルを拡張した手法。ライトマップでのルクセルはひとつの色を持つが、ラジオシティ法線マップではノーマル、タンジェント、バイタンジェントで3つの色を持つ。ラジオシティ法線マッピングは、特に薄暗いシーンで威力を発揮する。
フォトンマッピング/Photon mapping
GIの1種。Progressive Photon Mappingが代表的。
放射照度キャッシング/Irradiance caching
デカール/decal
金属表面のサビや油汚れといったものをテクスチャを乗せることで表現する。シェーディングの一種。
キャラクターのルックでは頬のチーク、瞳のハイライトなどをデカールで近似表現することができる。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
PBR/PBS
物理ベースレンダリング/PBR/Physically Based Rendering
光や物質の特性から、物理的な挙動のモデルに従ったレンダリングを行う手法。
PBR/PBSのパラメータ
アルベド/albedo
入射光に対する反射光の比
メタリック/metallic
反射率、スペキュラーとも呼ぶ。0は非金属、0.5は陶器、1は金属。
グロッシネス/glossiness
ざらつき。
ラフネス/roughness
表面の荒さ。BRDFで表現される。マテリアル表面のラフネスが0に近ければ鏡面反射になり、1に近ければ反射されるものがぼやけていく。
グロッシネスの逆数。
微細表面/マイクロファセット/microfacet
マテリアル表面の微細な粗さ。完全につるつるだと鏡面反射になり、ざらざらであれば鈍い映り込みになる。
双方向反射率分布関数/BRDF/Bi-directional Reflectance Distribution Function
ある領域に入射してくる光(放射照度)が,ある方向に出射する光(放射輝度)を割合として表す関数。拡散BRDF。 ヘルムホルツの相反性とエネルギー保存則。入射と出射の方向が逆になっても放射輝度が同じ。
BRDF, BTDF, BSDF
https://gyazo.com/3b396191ca91eeeb2218b0ac47cb7042
異方性ライティング/Anisotropic Lighting
異方性ライティング、異方性反射。光の入射方向に対する接線が影響するライティング。髪にできる天使の輪のような光や、つや消しされた金属での反射などで使用される。
SSS/SubSurface Scattering
表面下散乱。個人的にはライティングとシェーダーの分野で最重要ワード。光は物体に潜り込み、内部で乱反射して入ってきたのとは別の場所から出てくる。
質感を表現するのにSSSは重要。SSSを実装すると、フォトリアルなルックを実現できる。
トゥーンルックではSSSではなくMatCapやスフィアマップを適用する作例が見られる。
SSSSS/Screen Space SubSurface Scattering/或屏幕空间次表面散射
ポストプロセスでのSSS。
アンビエントオクルージョン/Ambient Occlusion
マテリアル表面の一点から半球/hemisphere方向にレイトレーシングを行い、遮蔽物が近くにあるかを判断する。レイが衝突しなければライティング結果のままレンダリングし、衝突したものがある場合は暗くするエフェクトを追加する。
イリデッセンス/Iridescence
遊色効果。虹色、玉虫色、アスファルト上のガソリンのような色の表現。
イリデッセンスという用語はPhysically Based Shading at Disneyに登場した。UnityのHDRPではイリデッセンスをサポートしている。
反射/Reflection
面に対して入射してきた光は、面法線に対して同じ角度で出射する。
面に割り当てられたSmoothnessによって、反射する光の強さが0%から100%に調整される。
屈折/Refraction
水やガラス球に入射してきた光は、物質の特性に応じて物質に入り込む光の角度が変わる。
フレネル係数
物質に当たった光は、物質の特性に応じて反射したり透過したりする。遠くの水面を見ると景色が映り込み、足元の水面を見ると水の底が見える。
入射光の法線に対する角度によって、反射光と物質に入り込む屈折光の割合が変わる。
スネルの法則
入射光と屈折光の速度比は、法線に対する角度のsin値の比率に等しいという法則。
ニュートンのプリズム実験
光はプリズムを通して周波数の違う色ごとにわかれ、またそれをあわせると白い色の光に合成できる。
Kajiya-Kayモデル
髪の毛をレンダリングする異方性BRDFモデル。
Marschner Hair
法線分布関数/NDF
ナノジオメトリー
波動光学
光を波動として扱う研究。光を光線として扱いその経路を研究する幾何光学とは別。光を光子として扱うのが量子光学。
ホイヘンスの原理
波面上のすべての点が二次波を出すため、次の時間での波面は二次波の波面の包絡面となる。この原理から光の反射、屈折の現象が説明された。
ホイヘンス-フレネルの原理
ホイヘンスの原理にフレネルの干渉を加えて回析を説明したもの。
クック・トランスの反射モデル/Cook-Torranceの鏡面反射
鏡面反射モデル。
ランベルト-ベールの法則/Beer–Lambert law
光が物質に吸収される法則。
コースティクス/caustics
水面の波間に見える光のきらめき。
屈折
reflection, refraction
参考
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Post Process
ポストプロセッシング/ポストエフェクト/Post Processing
レンダリング処理を行い画面出力する手前のタイミングで画像全体を処理すること。
ポストプロセッシングの代表的なエフェクトは、本来はカメラで綺麗な撮影を目指していたがレンズやシャッターの物理的な特性のため、余計なノイズが写り込んでしまったもの。
レンズフレア
太陽がカメラレンズを通して作り出す円形のアーティファクト。レンズの絞り形状と同様の形になる場合がある。
平滑化フィルタ
ブルーム
ぼかしを行い、明るい箇所の周辺で明るさを増やす処理。n×nのカーネルで周辺ピクセルに重みをかける手法、ループで処理する川瀬のブルームフィルタといったアルゴリズムがある。
ブラー/ボケ/blur/bokeh/模糊
ボケ。カメラ用語のボケはそのまま英語になっていて、海外でもbokehで通じる。ガウシアンフィルタを使う実装が一般的。
焦点距離の調整によってカメラから近い場所、または遠い場所をボケさせる。3Dツールでも物理カメラと同じようにボケを生じさせる設定をサポートしている。
モーションブラー/Motion Blur
高速で移動する車などで残像のように見えるエフェクト。一方向にブラー処理を行うと実現できる。
ガウシアンフィルタ/Gaussian filter
ピクセルからの距離によるガウス関数で重みづけをし、平滑化する処理。
バイラテラルフィルタリング
ガウシアンフィルタの改良版。輪郭のボヤけに対策している。正規分布の重み付きガウシアンフィルタ。
カラーグレーディング
ACES
HDRにある項目を参照
AA
FXAA/Fast approXimate Anti Aliasing
FXAA。輪郭の検出と周囲ピクセルのブレンドを行うAA手法。ピクセルシェーダーでのポストプロセス。
SMAA/enhanced Sub pixel Morphological Anti Aliasing
2012年。
再投影/TAA/Temporal Anti Aliasing
TAA。フレーム間で補完する。補完する時間方向によって順再投影、逆再投影にわかれる。
VRで時間内にレンダリングできない場合に、酔い対策として使うことができる。
キャッシュミス
時刻tでレンダする時にt-1もあわせて計算した上で補完する逆再投影において、t-1の時に遮蔽されていたために利用可能なシェーディング済のピクセルがない状態。
移動平均フィルタ
古い値を徐々に破棄する手法。空間AA、ソフトシャドウ、GIに使う。
Buffering
ピンポンバッファー/ダブルバッファリング/ping pong buffer/double buffering
バッファを2つにわけ、切り替えて交互に利用する方式。
ソースバッファと蓄積バッファ/Accumulation bufferの2つのバッファを用意する。はじめにオフスクリーンバッファとしてソースバッファにレンダリングする。この内容はテクスチャにバインドされ、次の処理の入力となる。処理された結果は蓄積バッファに出力され、その次に処理するエフェクトがある場合はソースバッファと蓄積バッファを切り替える。すべてのエフェクトを処理し終えたら、ソースバッファの内容を画面に表示する。
レンダリストのためのカメラ光学理論とポストエフェクト(CEDEC 2007)
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Noise, Rand
乱数/random
ある分布を持つ母集団から無作為に抽出された数列。確率現象のシミュレーション、モンテカルロ法などで用いる。 [0,1]上の一様分布に従う一様乱数を用いるのが基本。
乱数の生成方法
1.乱数表を用いる。関数表、円周率など。
2.物理乱数。原子核の崩壊に伴う放射線や電気的なホワイトノイズなどを利用する。
3.算術乱数。擬似乱数。
例;合同式法
整数型乱数Xk+1=aXk+c(mod m)
xk=Xk/mから[0,1]上の一様乱数を得る。
ノイズ/noise
乱数、ノイズを生成するアルゴリズムは昔から重宝されていて、マジックナンバー(289)でmodを計算したり三角関数やハッシュを利用したりパーリンノイズを使ったりする。
人の目から見た時に「自然なノイズ」に感じられるいくつかのノイズが考案されている。
プロシージャルに地形の隆起を生成するためにノイズが利用される。fBMは地形の浸食過程に似ている。
ホワイトノイズ/White noise
白色雑音。
バリューノイズ/Value noise
平面を複数の正方形グリッドで分割し、それぞれの四角ごとにランダムな値を出したものどうしを線形補完する。
パーリンノイズ/Perlin noise
ケン・パーリンがアカデミー賞を取ったノイズ。バリューノイズの進化版。グラディエントノイズ。
シンプレックスノイズ/Simplex noise
パーリンノイズの進化版。
パーリンフローノイズ/Perlin flow noise
Houdiniで利用できるノイズのひとつ。
ボロノイノイズ/ボロノイセルラーノイズ/Voronoi noise/Voronoi cellular noise
セルラーノイズ。
ワーリーノイズ/ワーリーセルラーノイズ/Worley noise/Worley cellular noise
1996年にSteven Worleyによって発表されたノイズ。空間を複数のセルに分割する。
ガボールノイズ/Gabor noise
スパースコンボリューションとガボールカーネルを利用したノイズ生成アルゴリズム。2Dガボールフィルターは 正弦波の平面波で変調されたガウスカーネル関数。
フェーザノイズ/Phasor noise
ウェーブレットノイズ/Wavelet noise
Pixarアニメーションスタジオによって発表されたノイズ。パーリンノイズのエリアシングでディテールが失われることを解決する手法。
カールノイズ/Curl noise
パーティクルに利用されるノイズ。アトラクターでパーティクルを集めるルールを決める。
アリゲーターノイズ/Alligator noise
ワニ模様のノイズ。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Color
RGB
赤/R、緑/G、青/Bで色を定義する。
HSV
HSV色空間。色相/Hue、彩度/Saturation/Chroma、明度/Valueの値を元に色を決定する。
HUE
色相。0-360°の範囲で色を表す。
マンセル表色系
顕色の表色系。色を混ぜると白に近づく。HSVのこと。
オストワルト表色系
混色の表色系。色を混ぜると黒に近づく。
YUV/YCbCr/YPbPr
輝度信号Yと、2つの色差信号を使って表現される色空間。
sRGB
色空間を扱う国際規格。sRGBの画像データはガンマ補正されている。
ガンマ/gamma
明るさの数値の大きさに対して、人の目が感じる明るさは異なる。
ブラウン管のテレビでは1/2.2=0.454545..という数字を使うガンマ変換の必要性が生まれた。この変換は現在でも利用され、レンダリングしたCGや映像を最終的に出力する時に実施される。
リニア/linear
リニアカラー、リニアRGB。明るさを線形な値で表現する。
法線テクスチャなどは必ずリニアで扱う。誤ってガンマ変換してしまうと法線が歪んでしまう。
リニアワークフロー/linear workflow
画像のコンポジット作業までデータをリニアで扱う作業手順。リニアワークフローを意識しないと、テクスチャやライトでガンマ補正が余計に行われ、画面に見える色合いが不自然になったり白飛びしたりする。
色温度
黒体の温度をケルビンであらわしたもの。
黒体放射
あらゆる電磁放射線を吸収する物体を仮定したもの。ケルビンの測定単位ではこの理想的な物体の黒体放射を用いる。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Fractal
フラクタル/fractal/分数
マンデルブロによる幾何学。部分と全体が相似する。
反復関数系/Iterated function system/IFS
フラクタルの一種。自分自身を縮小コピーして無限に反復描画される。
非整数ブラウン運動/fractional Brownian Motion/fBM
自己相似性と長期依存の特徴を持つガウス過程。
空隙性/lacunarity
くうげきせい。幾何学においてフラクタルがどのくらい空間を満たしているかを表す指標。
マンデルブロ/Mandelbrot/曼德尔布罗
ブノワ・マンデルブロ。ポーランド出身の数学者、経済学者。フラクタル幾何で有名。
マンデルブロ集合
充填ジュリア集合に対する指標。
https://gyazo.com/ca9a3f8379f1be97223fc9e658b3c094またはhttps://gyazo.com/9249d8f3db25d6ee97e4c7bd15907502
lim(n→∞)が無限大に発散しないもの
ボロノイ/voronoi/沃罗诺伊
空間に複数の点をプロットし、それらの中間点で領域を分割する図形。
立方体を1/3で分割する操作を繰り返した3次元の図形。
シェルピンスキーのカーペット/Sierpinski carpet
平面を1/3で分割する操作を繰り返した2次元の図形。
ドラゴン曲線/Dragon curve
マンデルボックス/Mandelbox
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
Raytracing, Raymarching
レイトレーシング/Ray Tracing/光线跟踪
カメラからレイを飛ばして光と影の計算を行う手法。光源からの光をたどるのと比較すると、画面領域のピクセル分だけの計算量で済む。
レイマーチング/Raymarching/光线步进
レイトレーシング手法の一種。カメラからレイを飛ばし、衝突判定を繰り返しながら前に進めることで、立体形状のモデリングを行う。レイを飛ばすアルゴリズムによって、スフィアトレーシング、固定長、コーンなどのバリエーションがある。
ラジオシティ
光源からの光をエネルギー保存則のモデルでトレースするGI手法。
Radiosity and Realistic Image Synthesis
フォトンマップ
光源とカメラの双方からトレースして結合する。コースティクスをレンダリングできる。
ボリュームレンダリング/Volume Rendering/立体渲染之
モンテカルロレイトレーシング
重要度サンプリング/重点サンプリング/Importance Sampling
モンテカルロ法
マンハッタンプロジェクトで物理実験用に開発された。
コーントレーシング/Cone Tracing
ボクセルコーントレーシング/Voxel Cone Tracing
局所環境マップ
Unityではリフレクションプローブ。
SSR/Screen Space Reflection
Efficient GPU Screen-Space Ray Tracing
BVH/Bounding Volume Hierarchy
ポリゴンをバウンディングボックスでグループ分けし、ツリー構造にしたデータ構造。全ポリゴンに交差判定を行うと計算量が爆発するが、階層データを対象にして計算量をおさえる。
UnityのGIでEnlightenはラジオシティ、Progressiveはモンテカルロ。
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
API
DirectX
3Dとマルチメディアを扱うAPI。Microsoft。
ゲームエンジン
ゲームエンジンは3D処理、レンダリング、物理エンジンなどを統合的に扱える開発環境。主にゲーム開発用途で利用されるが、映像・アニメ制作、建築、車といった業界でも導入されている。
Unity
Unity Technology社のゲームエンジン。
UE4/Unreal Engine 4
Epic Games社のゲームエンジン。
Frostbite
EA DICEのゲームエンジン。
3DCGソフトウェア
モデリング、ライティング、レンダリング、物理エンジンなどを搭載したツール。
3Dソフトウェア
Blender, Cinema 4D, Houdini, LightWave, Maya, Softimage, 3ds MAXなど
レンダラー
Arnold, mental ray, RenderMan, V-rayなど
Marmoset Toolbag
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
misc
カリング
背面カリング、視錐台カリング、ポータルカリング、詳細カリング、オクルージョンカリング、階層zバッファリング
詳細カリング/画面サイズカリング
ピクセルとピクセルのあいだに落ち込んだ三角形を間引くカリング手法。
any(round(min)==round(max))
オクルージョンカリング
ポッピング
LODで急にモデルが切り替わって生まれる違和感
離散ジオメトリーLOD
複数のモデルを持つLOD
ブレンドLOD
線形補完するLOD
アルファLOD
距離が離れるのに応じてアルファ値が増える
アルファLODでディゾルブに使うノイズがGPU Gems2のtowards photorealism in virtual botanyで紹介されている
連続LOD/CLOD/Continuous LOD
LOD = FOV * resolution / distance
Motion Graphics
イージング処理/easing function
線形の数値変化ではなく、はじめはゆっくりした増加で時間経過で急に増加するといった、アニメーションなどでの動きに表情をつける計算式。
自然現象、法則
レイリー散乱
大気中の微細な粒子に光が衝突した時、波長の短い青は反射して色が見える。遠景の距離が遠いほど、青味が増して見える。夕方の空が赤いのもレイリー散乱によるもの。
ミー散乱
霧のように空気中をただよう水分のサイズが大きいと、衝突した光はどの色の波長でも短いため特定の色のみが見えることはなく、白、灰に見える。
チンダル散乱
空気中の微細なホコリなどに光が当たって散乱し、横や斜めからでも光の通り道が可視化されること。
フラウンホーファー線
太陽からの光が大気中の原子や分子に吸収されるため、太陽スペクトル中に見られる暗線。
彩雲/Iridescent Clouds
太陽光が雲に当たり、虹のようにカラフルなパステルカラーが見られる現象。色が混じって真珠のように見えるケースもある。
暈/かさ/Halo
太陽光が大気中の氷の結晶に当たり、太陽のまわりで円形の光の輪が見られる現象。
雲
積乱雲、巻積雲、巻層雲、巻雲、ひつじ雲、おぼろ雲、積雲、層積雲、層雲、乱層雲
精神物理学
精神物理学現象
逆二乗の法則/逆二乗則/Inverse-square law
光の強さは光源から距離が離れるほど減衰していく。この減衰は距離の二乗に反比例することから、逆二乗の法則と呼ぶ。音の減衰、万有引力の法則、またクーロンの法則も逆二乗の法則に従う。
ヴェーバー・フェヒナーの法則/Weber–Fechner law
ヒトの感覚器での変化の感じ方は、刺激量の対数におおよそ比例する。
心理物理量
値が同じ255だとしても、RとGでは人が感じる明るさが違う。刺激に対して物理量を感覚量の関係を数値であらわしたもの。
ビデオ信号処理
NTSC系加重平均法
モノクロテレビの時代に実装されていたグレースケール化。経験的に決められたパラメータらしく、根拠はないという論争がある。
dot(color, vec3(0.298912, 0.586611, 0.114478)) TODO: BT601?
ルミナンス変換
dot(color, float3(0.2126729, 0.7151522, 0.072175)) TODO: BT...?
クロマサブサンプリング
ルミナンスと色差の情報を保持し、色差の情報量を削減することでRGBに比べてデータ量を減らすことができる手法。ビデオストリームで用いられる。
Particles Simulation
パーティクルシミュレーション
流体シミュレーション
フーリエ不透明度マッピング/FOM
パーティクルでセルフシャドウを実現するテクニック。
深度フォグ
カメラからのZ距離に応じたアルファブレンディング。fci+(1-f)cf。
Geometry
https://gyazo.com/6c4e53bb3465d9ddf45ab1bf696385f2.png
あとで書き足して
整理がおいつかない。
アーティファクト/歪み/Artifact
突き抜けたレイなどから発生する、レンダリングされた形状の崩れ、モワれ。
ピクセルピーピング/Pixel peeping
ピクセルが見えるほどに目を画像に近づけて良く見ること(あらを探すこと)?カメラ用語?
ポイントスプライト/point sprite
NURBSサーフェス
Reyesレンダラー
Polynomial texture mapping
fxc.exe
fxc.exeはDirectXに同梱されている実行ファイル。HLSLシェーダーのコンパイルを行う。
https://gyazo.com/63306a2cb427544c1ebd65668441af8f
NVIDIA ShaderPerf
コマンドラインでのシェーダープロファイラー。