タグ

ブックマーク / unityshader.hatenablog.com (5)

  • 第5回.(上級)法線転写による滑らかなシェーディング - UnityShader 入門

    はじめに 今回は、頂点の法線を球体(Sphere)の法線に変形させることで、細部の陰影を弱め、顔に不要な陰が出ないようにするテクニックを紹介します。 記事で解説される新要素 VertexModifier関数でオブジェクト空間での法線を修正する 法線を編集する意味 法線を編集して陰影を弱めるというのは、一体どういうことでしょうか。以下のコードを見てください。 float diffuse = saturate(dot(s.Normal, gi.light.dir)); これは拡散反射光であるdiffuseを求めている式です。計算式についてはランバート反射 - Wikipediaでも見てもらうとして、一言でいえば"法線(面の向き)とライトの向きの間の角度で、面の明るさが決まる"ということです。 法線とライトベクトルのなす角が0度の場合、つまり光が面に真正面から当たっている場合はCos(0度)=

    第5回.(上級)法線転写による滑らかなシェーディング - UnityShader 入門
    edo_m18
    edo_m18 2017/04/20
    だいぶシンプルな実装。
  • 頂点空間表面下散乱(VSSS:Vertex Space Subsurface Scattering) - UnityShader 入門

    最近色々忙しくて全然更新できていませんでしたが、 ちょうどいいネタを思いついたのと、アドカレが期限超過で1枠空いてたので代わりに投下します。 実装に丸1日、記事書くのに1日くらいかかりました。 目次 表面下散乱(Subsurface Scattering)とは? SSSで出来ること 実装に際しての考え方 実装方法:ランバート反射 実装方法:ハーフランバート 実装方法:曲率を考慮したシェーダ 実装方法:テクスチャ空間での拡散(Texture Space Diffusion:TSD) 実装方法:スクリーン空間での拡散(Screen Space Subsurface Scattering:SSSS) 実装方法:Translucent Shadow Maps:TSM 頂点空間表面下散乱(VSSS:Vertex Space Subsurface Scattering) 実装手順 結果 まとめ 参考

    頂点空間表面下散乱(VSSS:Vertex Space Subsurface Scattering) - UnityShader 入門
  • Unityシェーダ入門 #005 Multiple Render Target - UnityShader 入門

    以下はUnity4.3.0f4、DX11で行っています。 1回のレンダリングで複数の値を出力するMRT(MultipleRenderTarget)をやってみます。 手順は 1.複数の値を出力するシェーダを作成する(SurfaceShaderではなく、展開されたシェーダじゃなきゃ駄目っぽい。やり方が今のところわかりません。) 2.メインカメラとは別のカメラを作成し、MRTレンダリングを行うスクリプトをくっつける。 (複数出力する専用シェーダが必要になるため、メインカメラの通常レンダリングにバッファを追加して……ってのは無理みたい) です。 まずは複数の値を出力するシェーダから見てみます。 これはUnityでシェーダを新規作成し、#pragma debugで展開されたシェーダからコピペしてきて作ったものです。 Shader "Custom/TestShader" { Properties {

    Unityシェーダ入門 #005 Multiple Render Target - UnityShader 入門
  • Unityシェーダ入門 #004 Replaced Shader - UnityShader 入門

    通常ユーザが編集するSurface Shaderは、画面上に見える部分の色や形を変えることが出来ます。しかし、シェーダが使われるのは直接画面に見える部分だけではありません。 1.シャドウマップレンダリング用シェーダ(影を落とすためのシェーダ) 2.影かどうか判断するためのシェーダ(影を受けるためのシェーダ) 3.ディファードレンダリングやイメージエフェクトで使われる深度、法線を描画するためのシェーダ などです。 なお、これらのシェーダは深度や法線など、出力が固定的です。 (色に比べ、深度や法線をカスタマイズすることは稀だからです) そのため、シェーダのジャンルごとに一つにまとめられています。 上記1のシェーダではシャドウマップに描きこむための深度を出力しますが、例えば Diffuseシェーダのオブジェクトと、BumpedDiffuseシェーダのオブジェクトは色が違うだけで形は同じなので、同

    Unityシェーダ入門 #004 Replaced Shader - UnityShader 入門
  • UnityShader 入門

    更新情報 (2017/04/20)トップページを整理しました (2017/04/23)Blender×Unityワークフロー:ミラーモディファイアとシェイプキーを共存させる(+左右に分離) - UnityShader 入門 (2017/04/30)Mosketchメモ、ショートカット一覧を投稿しました 入門コンテンツ スザンヌで学ぶUnityのTransform 1から始めるUnityShader(全6回) アニメ調レンダリングで学ぶUnityShader 実用コンテンツ Blender×Unityワークフロー Mosketchメモ 厳選リンク集 SurfaceShadeの記述 https://docs.unity3d.com/ja/current/Manual/SL-SurfaceShaders.html ビルトインシェーダ変数 https://docs.unity3d.com/ja/c

    UnityShader 入門
  • 1