HoudiniでGLSLシェーダを作る / 3.エフェクト用フラグメントシェーダの整理
※今回は[HoudiniLab]の[Labs Flowmap Shader]をほぼそのまま使ってきているので
出せる情報かなり浅いです、申し訳ありません・・・。
目的はライトを見てしまっているシェーダなのでライトを見なくするシェーダに変更しつつ、
シェーダの中の情報整理を行う事です。
デフォルトのコードは結構な量のコードになっていてウワァーとなってしまいますが
コードを見て上からざっくりとした内容として、
------------------------------------------------------------------------------------
・頂点シェーダからの値の引き取り
・パラメータの取得_Houdini自動ユニフォーム
・いくつかのビルドイン関数
・メイン処理
------------------------------------------------------------------------------------
こんな感じです。
今回はフラグメントシェーダのメイン処理の部分をエフェクト用にスッキリさせようと言う話です。
具体的な作業は、If文と一部のデフォルト値を変更していらない情報を整理。
それではやっていきます。
diffuseのIf文
↓
▲テクスチャを使うならこっち
こんな感じで他もガンガン削っていき、パラメータ参照してた物は値に変えていく。
opacityのIf文
↓
emissionのIf文
↓
oclusionとmetallicのIf文(テクスチャが32枚を超えた場合実行)
はテクスチャそんな使わないので削除。
nN,rough,diff_roughのコード
はそのまま使う。
glH_LightingEnabledのIf文
※ライティングが有効なら1、無効なら0の整数が返される、その結果。
から下に降って
赤線までがほぼ一つのイフ文になっている模様
勉強不足ですが条件コンパイル的な物が使われているらしい...
自分には複雑なコードだったが、ライティングオンじゃない時の表示について記述されているのは
最後のelseの部分だけのようなのでそれをほぼそのまま使う
アルファだけ頂点アルファ(fsIn.Color.a)とテクスチャアルファ(tex.a)の乗算に変更。
wireのコード
最後のこれはそのまま使う。(ワイヤフレームの表示に関わる値です。)
これでunlitなシェーダが作れたはず・・・!