Git Product home page Git Product logo

hatchingshader's Introduction

Hatching Shader(ハッチングシェーダー)

ハッチングを表現したシェーダーです。このシェーダーにはTAM(Tonal Art Map)が必要です。サンプルとしてトーン風と鉛筆風のTAMを用意しておきました。
Unity5.6.3p1(64bit)の環境で作成しました。

各シェーダーの使用用途

  • HatchingShader……キャラクターなどでの使用を想定して調整しています。

  • HatchingShaderLerpTes/HatchingShaderTes……背景のオブジェクトなどで使うことを想定し、上記のシェーダーに機能を追加したものです。機能に差はありませんが、二つのシェーダーで若干見た目に差があります。


インスペクターのパラメーターについて

  • Hatch0~5……作成したTAM(Tonal Art Map)を貼り付けてください。

  • Outline Mask Texture……削除する任意のアウトラインを指定します。黒背景を用意し、消したい箇所を白く塗りつぶしてください。
    ※アウトラインを設定した状態でビルボードをオンにするとバグります。ビルボードを使用する場合はアウトラインの設定をオフにしてください。

  • Outline Color……アウトラインの色を設定します。初期は下記のRim Power/Rim Amplitudeの影響を受けるように設定されています。

  • Outline Width……アウトラインの幅を設定します。

  • Toggle Billboard……オブジェクトをビルボード化します。(未調整なのでおいおい対応します)

  • Threshold……ワールドライトの光の色による影響を閾値で制限します。
    解説:ワールドライトの色によってはオブジェクトが黒塗りになってしまう場合があります。これを防ぐためにライトの色RGBのスカラーを算出し、閾値よりも小さい場合ViewBasedに切り替えるようにコードを書いています。

  • Angle……オブジェクトをY軸まわりで回転させます。

  • _[X/Y/Z]comp……該当軸方向に圧縮します。

  • Rim Power/Rim Amplitude……視線ベクトルで色が変異します。通常のRim効果と同じ感覚で設定すればいいです。(ただのおまけ)

  • NdotL or NdotV……0に近いほどワールドのライトベクトルの影響を受けやすく、1に近いほど視線ベクトルの影響を受けやすいです。

  • Density……影の濃淡を調整できます。

  • Roughness……影の粗さを調整できます。

  • Toggle Gray Scale……色をグレースケールにします。

  • Cull Mode……Cullの設定ができます

[HatchingShaderLerpTes/HatchingShaderTes]で追加されたパラメーターについて

  • Noise Texture……テクスチャの色情報に沿って形が変形します。

  • [Min/Max] Distance……テッセレーション(ポリゴンをGPUで増やす処理)によるポリゴンの増減をプレイヤーの距離によって制御します。
    ※テッセレーションによってポリゴンを増やしすぎると、GPUの負荷が急激に上がります。それを軽減するために、[Min/Max] Distanceによって増やすポリゴンを段階的に制御します。

  • Tessellation……オブジェクトのポリゴンを増やします。

  • Noise Speed……Noise Textureを回転させる速度を設定します。

  • Noise Power……Noise Textureによって頂点が押し出される度合いを設定します。

  • Noise Factor……全体的な頂点の押し出しの度合いを調整します。
    ※Noise Textureをセットしていない場合、Noise Powerは機能しません。しかし、Noise SpeedおよびNoise Factorに関しては機能します。

最後に。

コード自体の最適化、効率化は一切おこなっていない上に、参考にした論文通りにテクスチャを二枚にパックすることもしていません。コードの冗長さには目をつむってください。数列とかアルゴリズム考えるのめんどくさかった(´・_・`)

hatchingshader's People

Contributors

nkihrk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.