Upgrade to Pro — share decks privately, control downloads, hide ads and more …

今風トゥーンシェーディング

kenjihanada
February 22, 2019

 今風トゥーンシェーディング

by hayatohishiya

kenjihanada

February 22, 2019
Tweet

More Decks by kenjihanada

Other Decks in Technology

Transcript

  1. 具体的にどんなことやってるの? ・陰(シェード) ① ベースカラー ② 1号陰   ③ 2号陰 ・アウトライン   色

    / 太さ / ブレンド ・ハイカラー   物理ベース / ベタ塗り ・ディフューズ   ハーフランバート ・頂点カラー アウトライン/陰の制御 ・リムライト 光源/反光源   ブレンド(テクスチャ/平行光色) ・SSS(SubSurfaceScattering)   皮膚   環境光影響 ・FeatherShade   グラデーションがかかった陰 ・EnvironmentMapping   SphereMapping/CubeMapping ・PolygonZOffset   眉毛/まつ毛を前髪よりも前へ などなど
  2. 具体的にどんなことやってるの? 今 回 は こ こ ・陰(シェード) ① ベースカラー ②

    1号陰   ③ 2号陰 ・アウトライン   色 / 太さ / ブレンド ・ハイカラー   物理ベース / ベタ塗り ・ディフューズ   ハーフランバート
  3. 具体的にどんなことやってるの? 陰(シェード) 法線とライトの向きの内積値で,どれくら い陰になる領域なのかを0~1に正規化し ます. float d = dot(N, -L)

    * 0.5 + 0.5; これにしきい値を設けてstepすると, 0 or 1となりトゥーン調の陰のようにパキッ と出力することができます. step(_Threshold, d); 最後に上記でlerpさせます. color = lerp(base, shade, step(...)); 同じことをすれば2号陰が出ます.
  4. 具体的にどんなことやってるの? ディフューズ ライトの向きとポリゴン法線の内積を陰の 強度としてレンダリングすればディフュー ズを得られます. float3 diff = max(0, dot(N,

    L)); ディフューズの値にカラーを掛け合わせる ことによって,ベタ塗りから少しだけ立体感 を演出させることができます(ハーフラン バートを用いて,黒くなりすぎないようにす ることがポイントです). float3 diff = max(0, dot(N, L) * 0.2 + 0.8); color = diff * color;          
  5. 具体的にどんなことやってるの? ちょっと本気出してみた トゥーン + 光源方向リムライト エミッション + ブレンドアウトライン + HDR対応

    ポストエフェクト + アンチエイリアス FXAA + ブルーム + カラグレ コントラスト トーンマッピング ※全部独自実装です
  6. 具体的にどんなことやってるの? ちょっと本気出してみた トゥーン + 光源方向リムライト エミッション + ブレンドアウトライン + HDR対応

    ポストエフェクト + アンチエイリアス FXAA + ブルーム + カラグレ コントラスト トーンマッピング ※全部独自実装です