重心座標
- HLSLでは、対応していれば
SV_Barycentricsでシステムから重心座標を取れる- 詳細はhttps://github.com/microsoft/DirectXShaderCompiler/wiki/SV_Barycentrics
- 既定ではperspective-correctな(投影前の値に適用できる)値が取れる
- 頂点の順番が入れ替わることもあるので、もとの配置に戻す必要がある
- 頂点座標とピクセル位置から計算でも求められる
- 投影後で補間するには、重心座標を用いる
-
- 頂点の位置:
- ピクセルの位置:
- の関係から導かれる
-
- 投影前で補間するには、補正した重心座標を用いる
-
- 補間された属性の補正値:
- 頂点座標の補正値:
- から導かれる
-
- 投影後で補間するには、重心座標を用いる
- 補間した値はで求める
偏微分
- 通常のレンダリングでは
ddxとddyで計算できる - 頂点座標とピクセル位置から計算でも求められる
-
- 重心座標の補間がにおいて線形であることを理由に変形した式から導かれる
- 補正を含める場合はで割る:
-
参考文献
- https://github.com/microsoft/DirectXShaderCompiler/wiki/SV_Barycentrics
- https://gpuopen.com/learn/stable-barycentric-coordinates/
- https://cg.ivd.kit.edu/publications/2015/dais/DAIS.pdf
- https://shikihuiku.wordpress.com/2017/05/23/barycentric-coordinates%E3%81%AE%E8%A8%88%E7%AE%97%E3%81%A8perspective-correction-partial-derivative%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/