両方のグラフィックスAPI(OpenGLおよびDirectX)は、いくつかのステージがプログラム可能な、明確に定義されたパイプラインを考案します。これらのプログラム可能なステージは、固定された最小量のデータを取得する必要があり、データに対して適切に定義された範囲の操作を行い、定義された最小出力を出力するため、データを次のステージに正しく渡すことができます。これらのパイプラインは、限られた量のジオメトリデータのみで動作するように設計されているように見えます。D3DとOGLの両方の場合、頂点データとテクスチャ座標です。
しかし、作成しようとしているアプリケーションが幾何学的データを表すために頂点(またはボクセルさえ)を使用せず、変換や投影、ラスタライズ、補間、またはそのような何かを正確に行わない場合、APIのそのような制限またはパイプラインが物事を困難にします。
では、グラフィックスパイプラインを変更して、各ステージがデータに対して行う機能と各ステージで出力されるデータのタイプの機能を変更する方法はありますか?そうでない場合、「生の」API関数を使用して独自のパイプラインを構築する方法はありますか?そうでない場合は、それが不可能な理由を説明してください。
編集:私のアプリケーションは、密度関数を使用してジオメトリを表現します。この関数は、空間の各ポイントに値を持っています。カメラの錐台を3Dグリッドに分割し、各ブロックをピクセルとして投影できます。各ブロックで、密度関数を統合し、その値が必要な値を超えているかどうかを確認します。はいの場合、そのブロックに何かが存在し、そのブロックに対応するピクセルがレンダリングされると想定されます。だから、今私のレンダラーでは、頂点バッファーの頂点データの代わりに、関数(文字列で表す)をグラフィックスハードウェアに渡したいと思います。これは、頂点シェーダーに同種のクリップスペースに変換する頂点がなく、フラグメントシェーダーがピクセル情報を取得しないことも意味します。代わりに、ほとんどの検索と評価はピクセルごとに行われます。