フォト

Google AdSense

  • AdSense
無料ブログはココログ

« 日本に帰ってきて | トップページ | 今更だけどSurface Proサイズ比較 »

2013.04.06

HLSLCrossCompiler : オープンソースのHLSLからGLSLへの変換ツール

GDC 2013のNVIDIAとValveのセッション"Porting Source To Linux: Valve's Lessons Learned"では、WindowsからLinuxへの(主にグラフィックス部分の)ゲームの移植について解説されているのですが、その中で70ページあたりからDirectXのHLSLからOpenGLのGLSLへのシェーダの変換について書かれています。

スライド
https://developer.nvidia.com/sites/default/files/akamai/gamedev/docs/Porting%20Source%20to%20Linux.pdf

シェーダの変換については色々と書かれているのですが、その中でも今回の発表ではじめて知ったのがHLSLCrossCompilerというオープンソースのツール。

HLSLCrossCompiler
https://github.com/James-Jones/HLSLCrossCompiler

このツールでは、Direct3D10からのシェーダモデル4.0以降のHLSLをfxcの/Foオプションで出したオブジェクトファイルからGLSLを生成してくれるというものです(今だとVisual Studio 2012だとコンパイラの設定が自動的にやってくれるのでいいかも)。

対応するOpenGLのGLSLバージョンは、ざっと見たところ2.1〜4.3とOpenGL ESは2.0と3.0が対応のようで、hlsl2glslforkではトランスコードができないジオメトリシェーダ、ハルシェーダ、ドメインシェーダ、コンピュートシェーダのトランスコードも行けるみたいです(ジオメトリシェーダは試してみた)。

まだすべての命令が対応しているわけでは無いみたいで、対応していない命令は他の書き方(たとえば、シェーダアセンブラのuge命令はダメだった。for文の中で使ってるだけだったのでunrollで対応しましたが)をする必要があるみたいですが、なかなか便利そうです。

とりあえず、自分でOpenGL ESのコード書く際に使ってみよう。

« 日本に帰ってきて | トップページ | 今更だけどSurface Proサイズ比較 »

Programming」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« 日本に帰ってきて | トップページ | 今更だけどSurface Proサイズ比較 »