「SL Sharp」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Mono Book
imported>Mono Book
6行目: 6行目:
 
この変換エンジンは、SL#に同梱されるクラスライブラリを使用(継承)して作られた[[シェーダー]]を[[CIL]]の中から自動抽出し、対象となる[[シェーディング言語]]の[[ソースコード]]に変換する。これにより[[HLSL]]([[DirectX]])と[[GLSL]]([[OpenGL]])の非互換の垣根を超えることができ、[[Windows]]上で開発した[[プログラム]]を[[Linux]]や[[Mac OS X]]上の[[Mono]]で動かす際に桁違いに捗ることを意味する。
 
この変換エンジンは、SL#に同梱されるクラスライブラリを使用(継承)して作られた[[シェーダー]]を[[CIL]]の中から自動抽出し、対象となる[[シェーディング言語]]の[[ソースコード]]に変換する。これにより[[HLSL]]([[DirectX]])と[[GLSL]]([[OpenGL]])の非互換の垣根を超えることができ、[[Windows]]上で開発した[[プログラム]]を[[Linux]]や[[Mac OS X]]上の[[Mono]]で動かす際に桁違いに捗ることを意味する。
  
また、[[プログラマー]]は[[Visual Studio]]や[[MonoDevelop]]、[[SharpDevelop]]といった使い慣れた[[統合開発環境]]を使用でき、[[コード補完]]や[[構文チェック]]などの恩恵を受けることができる。さらに[[シェーダー]]は[[C Sharp|C#]]の[[コンパイラ]]で事前に検証されるため[[実行時エラー]]を最小限に抑えることができ[[デバッグ]]が捗るという利点もある。
+
また、[[プログラマー]]は[[Visual Studio]]や[[Xamarin Studio]]、[[MonoDevelop]]、[[SharpDevelop]]といった使い慣れた[[統合開発環境]]を使用でき、それらが持つ[[コード補完]]や[[構文チェック]]などの恩恵を受けることができる。
 +
 
 +
一般的な[[シェーダー]]は[[アプリケーション]]に[[ソースコード]]が内包された状態で配布され、[[プログラム]]の実行時に[[GPU]]の[[デバイスドライバー]]に同梱される[[コンパイラ]]で[[コンパイル]]される。一方、SL#では[[C Sharp|C#]]の[[コンパイラ]]で事前に検証されるため[[実行時エラー]]を最小限に抑えることができ[[デバッグ]]が捗るという利点もある。
  
 
== 備考 ==
 
== 備考 ==

2014年9月27日 (土) 00:36時点における版

SL#(読み:えすえるしゃーぷ)とは、超高級言語であるC#を使い、 GPUで実行されるプログラマブルシェーダーを書けてしまうという夢のようなオープンソースフレームワークである。ライセンスMITライセンスとなっている。

概要

SL#の一番の核となる機能は、.NET Frameworkの世界で使われている中間コード形式である共通中間言語(CIL)を、DirectXで使われるHLSLOpenGLで使われるGLSLなどの各種高級シェーディング言語に変換するエンジンにある。

この変換エンジンは、SL#に同梱されるクラスライブラリを使用(継承)して作られたシェーダーCILの中から自動抽出し、対象となるシェーディング言語ソースコードに変換する。これによりHLSL(DirectX)とGLSL(OpenGL)の非互換の垣根を超えることができ、Windows上で開発したプログラムLinuxMac OS X上のMonoで動かす際に桁違いに捗ることを意味する。

また、プログラマーVisual StudioXamarin StudioMonoDevelopSharpDevelopといった使い慣れた統合開発環境を使用でき、それらが持つコード補完構文チェックなどの恩恵を受けることができる。

一般的なシェーダーアプリケーションソースコードが内包された状態で配布され、プログラムの実行時にGPUデバイスドライバーに同梱されるコンパイラコンパイルされる。一方、SL#ではC#コンパイラで事前に検証されるため実行時エラーを最小限に抑えることができデバッグが捗るという利点もある。

備考

SL#はまだ実験的なライブラリであり、将来的に構文が変わる可能性などもあるので注意する必要がある。

SL#に関する不具合などについては可能な限りGitHub上の同プロジェクト宛てに報告してほしいとしている。

現段階ではジオメトリシェーダーはサポートされておらず、またC#以外のプログラミング言語F#Boo言語Phalangerなど)については完成度が高まってからのサポートとなる予定であるとしている。

関連ライブラリ

SL#は下記のライブラリを使用している。

実のところ、巷で話題のゲームエンジンUnity」がCILからFlashを生成するなどのマルチプラットフォーム対応を実現するために使っているライブラリ群とほぼ同一である。

関連項目

外部リンク