KrShaderSystemLの仕組みに関する小話
Added 2019-10-04 12:53:03 +0000 UTCちょっとこまごまとした話になります。 ●まず最初に各RTでのfxファイルの割り当ての維持について。 KrShaderSystemLノーマルやマテリアルなどマップを生成します。これはMainSystem.fxと関連しています。気づいている方もいると思いますが、 『MainSystem.xを入れ替えない限り、MainSystemD.x系をいくら入れ替えようが、割り当ては維持される』 ●想定した使い方と仕組み(想定外の使い方を推奨しないわけではない) KrShaderSystemLは、ほかのシェーダーを利用した材質とある程度同居可能な、不透明材質の描画とPostSimpleBで行う処理のためのマップ出力を一元化する仕組みです。 KrShaderSystemLでは MainSystem.fxでまず準備をし MainSystemD.fx系で描画し それをShader_simple.fxを使用した材質に適用する という仕組みになっています ではShader_Alpha系は何なのかというと、MainSystemD.fxを簡易的に模倣するものです。透明材質を扱いたいときのためのもので、屈折系を除いてMainSystemD.fxとは関係がありません。 仕組み的にはKrShaderSystemLのほぼ外部に位置するエフェクトで、おまけのようなものです。そのため代わりにKrShaderSystemLと関係ないエフェクトを使う方がいい場合もあります。例外は屈折系ですが、それらもKrSDhaderSystemLの本体部分とは距離を置く存在です。 ※書いていて気づきましたが影の挙動もアップデートしていないためAlpha系は不具合があります。普段使っていなかったため今気づきました。近いうちに直します。 ゲームグラフィックでは不透明をディファードレンダリングで、半透明をフォワードレンダリングで行うことが多いかと思われます。 このディファードレンダリングにあたるのがKrShaderSystemLのMainSystem系で、それを反映するのがShader_simple.fx、フォワードレンダリングの部分はShader_Alpha系や外部シェーダーで行うことになります。 見える材質すべてにShader_simple.fxを使っていてパーティクルなども表示していない場合の使い方として、Shader_simple.fxを使っているスカイドーム以外をMainタブで非表示にするというものがあります。上記のやり方でもすべての材質がKrShaderSystemLを利用する形で表示されると思います。 『Shader_simple.fxを使用した材質が見えているところがMainSystemD系で描画した結果に置き換わる』 それが現行の仕組みです。 追記 記述にある影の不具合についてはVer1.142で対応しました。
Comments
説明感謝です 助かりました
RAIRAItabsa
2019-10-04 12:57:47 +0000 UTC