問題タブ [shaderlab]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unity3d - XNA シェーダーのパス、ブレンド、カリング モードを Unity シェーダーラボに移植する
XNA シェーダーを Unity のシェーダーに移植する必要があり、これが正しく行われたことを確認したいと考えています。
のPass1
ようなアルファブレンディングを使用しSrcBlend
、DestBlend
カリングをなしに設定するセクションは、私が正しいことを確認したい唯一の場所です。
これは XNA シェーダーのバージョンです。
これは、私が作成した Unity Shaderlab ポートです。
Unity では問題なく動作しているようですが、これは Unity のパス設定とまったく同じですか? そうでない場合は、正確な同等性を得るためにどのような変更が必要ですか。
c# - Unity ゲームからファイルにリソースをダンプする
Unity ゲームのすべてのリソース データをファイルにダンプする関数を作成しようとしていますが、現在読み込まれているシーンから画面上のビデオ、オーディオ、スクリプト名、および画像をダンプすることができました。
テクスチャやマトリックス、ベクトル、int 値、float などのシェーダー データに対して同じことをしようとすると、行き詰まります。関数を使用してこれらの形成を取得できることを知っていMaterial.GetXXX
ます。
たとえば、現在、次のようなTexture
名前のテクスチャ タイプ プロパティを持つ標準シェーダーからメインを取得できます_MainTex
。
問題は、実行時にプロパティの値を取得する前に、プロパティの名前と、Texture、Matrix、Float、Color などのタイプを知る必要があることです。
サード パーティ ソースからの多くのシェーダーがプロジェクトに含まれていると予想されます。データを取得できるように、各シェーダーを手動で調べて、プロパティ名とタイプをコピーするのは複雑です。
関数で値を取得するために必要なシェーダー プロパティと型を取得する方法はありMaterial.GetXXX
ますか? これが不可能な場合、シェーダー データを個別にダンプする方法はありますか?
注:
これは保存機能ではなく、ゲームの状態を保存およびロードする方法を探していません。Unity ゲームの分析とトラブルシューティングに使用されるプラグインです。
unity3d - 頂点データを乗算すると輪郭が不均一になる (shaderlab unity3d)
Unity3D のシェーダー ラボで 2 つのパスを使用して単純なアウトライン シェーダーを作成しました。問題は、アウトライン パスのコードにあります。
_OutlineWidth
と_OutlineColor
は、それぞれ Range 型と Color 型です。このシェーダーを、プログラムで作成された「テトロミノのような」メッシュに適用しました。結果はこれです(リンクをクリックしてください):
ご覧のとおり、輪郭が作成されますが、輪郭はオブジェクトの外縁に沿って均一な幅ではありません。面の 1 つに沿って輪郭が大きくなり、形状の中心から最も遠い面に沿って輪郭が大きくなります。また、凸でない形状では問題が拡大します。アウトラインがシェイプをまったく包含していない場合もあります。
これは、頂点の位置が形状の中心に相対的であるためであり、線v.vertex.xyz *= _OutlineWidth
はこの位置に一定量を掛けるだけであることを理解しています (オブジェクトの中心からさらに離します)。アウトライン ピクセルが形状の中心とは無関係に計算され、オブジェクトの真のアウトラインと完全に一致するように、コードを変更するにはどうすればよいですか?