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

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

Avatar for kenjihanada kenjihanada
February 22, 2019

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

by hayatohishiya

Avatar for kenjihanada

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 + ブルーム + カラグレ コントラスト トーンマッピング ※全部独自実装です