We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Instancing 有効、NormalMap 有効、など、構成の組み合わせがかなり増えてきているので、自動的に作りたい。
開発中のタイトル HC4 では背景モデルに対してシェーダを適用したいが、対象は NormalMap 有無など複数の構成を書かなければならず、シェーダ開発が非効率になっている。
現状の構成は次の通り。
PS の出力方法 (Phase)
VS の種類
Phase が Default のときの PS 種類 (ShadingModel)
PS のオプション
方針:VSMain, PSMain は直接書くことにして、オプションの変更はマクロなどで対応する。 Unity のサーフェスシェーダみたいなのを作ることになるとシェーダコンパイラに手を入れる必要があり、かなり重い作業になるため。
struct MyVSOutput { LN_VS_OUTPUT_DATA; // float3 Pos : SV_POSITION; など float4 MyData : TEXCOORD0; }; struct MyPSInput { LN_PS_INPUT_DATA; float4 MyData : TEXCOORD0; }; MyVSOutput VSMain(LN_VSInput input) { MyVSOutput output; LN_ProcessVertex(input, output); // マクロ。output.Pos などへ代入。スキニングやモーフィングもここで計算する。 output.MyData = /* ユーザー定義データの構築 */; return output; } float4 PSMain(MyPSInput input) : SV_TARGET0 { //LN_Surface surface = LN_InitSurface(); // 初期化するだけ LN_Surface surface = LN_ProcessSurface(input); // input.TexUV 等を使って、Albedo など各要素をデフォルト構築する。 surface.Albedo = /* ユーザー定義で模様を付けたりする。デフォルトシェーダでは何もしない。 */; // surface は Unity の SurfaceShader の Output 相当。 // LN_ProcessPixel は UE4 の Output ノード相当。 // LN_ProcessPixel の中で ShadingModel に応じて PBR の計算をしたり、環境光, Fog の適用などが行われる。 return LN_ProcessPixel(surface); } technique Default { pass Pass1 { VertexShader = VSMain; // VS はほどんと定型になるので、LN_VSDefault とかを用意してもいいかも。 PixelShader = PSMain; } }
4パターンくらいならまだ手打ちでもなんとかなるので、まずは上記サンプルの形に、ビルトインシェーダを全部直す。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Motivation
Instancing 有効、NormalMap 有効、など、構成の組み合わせがかなり増えてきているので、自動的に作りたい。
開発中のタイトル HC4 では背景モデルに対してシェーダを適用したいが、対象は NormalMap 有無など複数の構成を書かなければならず、シェーダ開発が非効率になっている。
Proposal
現状の構成は次の通り。
PS の出力方法 (Phase)
VS の種類
Phase が Default のときの PS 種類 (ShadingModel)
PS のオプション
ユーザーカスタマイズを考慮した基本的なシェーダサンプル
方針:VSMain, PSMain は直接書くことにして、オプションの変更はマクロなどで対応する。
Unity のサーフェスシェーダみたいなのを作ることになるとシェーダコンパイラに手を入れる必要があり、かなり重い作業になるため。
自動生成の方針
Note
4パターンくらいならまだ手打ちでもなんとかなるので、まずは上記サンプルの形に、ビルトインシェーダを全部直す。
The text was updated successfully, but these errors were encountered: