私はUnityでワイヤフレーム頂点/フラグメントシェーダを作成しようとしています。 this paperによると思われます。一般的なアイデアは、頂点シェーダで計算された距離ベクトルをフラグメントシェーダの各フラグメントに渡し、ポリゴン内の位置に基づいてワイヤフレームラインを描くためにどのような輝度を決定するのに使用できるかのようです。頂点シェーダ内のポリゴン内のすべての頂点にアクセスできますか?
私が読んだこと以外は、頂点シェーダの単一の頂点にしかアクセスできないと思われます。私はecah頂点のためにポリゴン内の隣接する頂点のすべてにアクセスする必要があります。この論文はジオメトリシェーダが必要ないことを暗示しているようですが、これはUnityがそれらをまだサポートしていないためです。
私には何が欠けていますか?頂点シェーダの隣接する頂点にアクセスすることはできませんか?私がしようとしていることはジオメトリシェーダなしでは不可能なのでしょうか?
ご協力いただきありがとうございます。これらの制約がUnityエンジン内で克服できるものかどうかは分かりますか? Unityが使うようなCgシェーダでこの余分な情報を渡すことは可能ですか?その通過はどこから行なわれますか? – aardvarkk
@aardvarkkこれらの制約は、基本的なハードウェア/インタフェースの制約であり、エンジンやシェーディング言語ではないため、克服することはできません。頂点シェーダは単一の頂点にしかアクセスできず、他の2つをこの頂点の属性として与える必要があります。ユニティの経験はありませんが、もちろんCgには頂点ごとの属性があります。Unityには、モデルの頂点のカスタム属性を与える手段があると確信しています。 –
@aardvarkk元の質問についてさらに質問がありますか(VSの隣人にアクセスでき、GSなしであなたの目標が不可能な場合)?頂点シェーダーとジオメトリシェーダーを理解している人とは全く異なる答えは得られません。 Unityは、基本的なグラフィックスハードウェアの限界を魔法の克服することはできないので、それと関係はありません。 –