実践ドット絵シェーダー

f:id:mizuooon:20180602191044p:plain:w200 f:id:mizuooon:20180602175242p:plain:w280

  • はじめに
  • 先行事例と課題
  • 陰影と色彩
  • シェーディングマップによる嘘陰影
  • 頂点シェーダアニメーション
  • ドット絵的なモデルとアニメーション
  • 結果
  • 問題点とか
  • その他テクニックとか
  • 今後

(追記:続いた)
実践ドット絵シェーダー その2 - チラつき抑制編 - 水鳥コンビナート

はじめに

自分はドット絵が好きだが、描くのはあまり好きではない。 正確に言うと、1,2 枚を描くのはよいがひとつのゲームに使用する大量のドット絵を全部自力で描くのは大変つらい。

例えばアクションゲームかなにかを作る場合を考えてみると、 キャラクターについてだけでも、必要なドット絵枚数は (登場キャラクター数) × (各キャラができるアクションの数) × (各アクションに必要な枚数) × (リテイクのコスト) で相当なものになるのがわかる。

そこでドット絵っぽいものをレンダリングできるシェーダを用いることで横着をしようというのが今回の目標である。 手描きと見紛うクオリティとまでは行かなくとも、 ドット絵っぽいものがヌルヌル大量の枚数で動くという高コストな表現をそこそこリーズナブルにできれば色々面白いことができるだろうと期待している。

続きを読む

Microfacet-based Normal Mapping for Robust Monte Carlo Path Tracing [Schüssler 2017]

f:id:mizuooon:20180127185756p:plain

SIGGRAPH ASIA 2017 の論文。 古典的なノーマルマッピングはジオメトリの形状を変えずに法線情報のみに変更を加えるため 物理的に正しくないモデルになっており、物理ベースのレイトレーシングを行った際には種々の問題を引き起こす。 例えば上図のように、 視線方向が法線の裏側になってしまったり 反射したレイの方向がジオメトリの内部に行ってしまったりしてエネルギーロスが起きてしまうなど。 この論文では以上のような問題の解決のため、 マイクロファセットをベースとして古典的なバンプマッピングを置き換えるモデルを提案している。

なお、この論文を読んで再現実装をしてみたものを自分の github リポジトリ上にアップしている。

GitHub - mizuooon/Xitils

続きを読む

Separable Subsurface Scattering [Jimenez 2015]

Separable Subsurface Scattering

vimeo.com

Computer Graphics Forum 2015 の論文。 サブサーフェススキャッタリング (SSS) を行う際、 表面下拡散のカーネルやら入射光やらが 軸ごとの関数に可分 (Separable) であるという仮定を置くと 高速に計算できてリアルタイムでも SSS できちゃうねという手法。 略称は SSSS でなんだかすごそうな感じがする。

続きを読む

『ボタン同時押し』実装を考える

たまにはゲーム制作っぽいのも書く。

横スクロールの格ゲーっぽいゲームを作る時を考える。 このとき、攻撃ボタンを押すとパンチが出て、下キーを押してしゃがみながら攻撃するとキックが出るようにしたいとする。 面倒なのでコマンド攻撃とか諸々は考えない。

この状態遷移図的なのを描くと以下のようになる。 今のフレームでの状態と押しているボタンによって、次フレームの遷移先状態が決まる。

f:id:mizuooon:20171019215019p:plain:w250

だが、実際作ってみるとわかるがこのまま愚直に実装すると恐ろしく手触りが悪くなる。 というのも、立っている状態からキックを出そうとすると結構な割合で出ないのである。 これはボタンの同時押しに対応した実装になっていないからである。 今回はこれを"いい感じ"にすることについて考える。

続きを読む

Importance Caching for Complex Illumination [Georgiev 2012]

https://graphics.cg.uni-saarland.de/2012/importance-caching-for-complex-illumination/

EUROGRAPHICS 2012 の論文。

ある点がシーン中全ての VPL から受ける寄与を計算する際に、 少ない数の VPL を確率的にサンプリングすることで効率的にその近似を行うとする。 このとき、 遮蔽の多いシーンでは特に重要なことだが、 寄与の大きい VPL を優先的にサンプリングする必要がある。 この論文は疎な点群で VPL に対する重要度を計算してキャッシュを作成し、 レンダリング時には周囲のキャッシュから補間を行うことで任意の点について VPL の重要度を計算するという方法を示している。

続きを読む

A Spherical Cap Preserving Parameterization for Spherical Distributions [Dupuy 2017]

A Spherical Cap Preserving Parameterization for Spherical Distributions – Unity Blog

www.youtube.com

早速ブログ放置しかけてたけどしれっと再開。

SIGGRAPH 2017 の論文。

球面上に定義された分布の表現方法として、 Spherical Pivot Transformed Distribution (SPTD) というものを提案している。 これは任意の spherical cap 上、またはそれを組み合わせた領域上での積分が便利に扱えちゃうよということらしい。

続きを読む