「SL Sharp」の版間の差分
(ページの作成:「'''SL#'''(えすえるしゃーぷ)とは、GPUで実行されるプログラマブルシェーダーを、超高級言語であるC#で書け...」) |
Administrator (トーク | 投稿記録) |
||
(5人の利用者による、間の8版が非表示) | |||
1行目: | 1行目: | ||
− | '''SL#''' | + | '''SL#'''(読み:えすえるしゃーぷ)とは、超高級言語である[[C Sharp|C#]]を使い、 [[GPU]]で実行される[[プログラマブルシェーダー]]を書けてしまうという夢のような[[オープンソース]]の[[フレームワーク]]である。[[ライセンス]]は[[MITライセンス]]となっている。 |
== 概要 == | == 概要 == | ||
SL#の一番の核となる機能は、[[.NET Framework]]の世界で使われている[[中間コード]]形式である[[共通中間言語]]([[CIL]])を、[[DirectX]]で使われる[[HLSL]]や[[OpenGL]]で使われる[[GLSL]]などの各種高級[[シェーディング言語]]に変換するエンジンにある。 | SL#の一番の核となる機能は、[[.NET Framework]]の世界で使われている[[中間コード]]形式である[[共通中間言語]]([[CIL]])を、[[DirectX]]で使われる[[HLSL]]や[[OpenGL]]で使われる[[GLSL]]などの各種高級[[シェーディング言語]]に変換するエンジンにある。 | ||
− | + | この変換エンジンは、SL#に同梱されるクラスライブラリを使用(継承)して作られた[[シェーダー]]を[[CIL]]の中から自動抽出し、対象となる[[シェーディング言語]]の[[ソースコード]]に変換する。これにより[[HLSL]]([[DirectX]])と[[GLSL]]([[OpenGL]])の非互換の垣根を超えることができ、[[Windows]]上で開発した[[プログラム]]を[[Linux]]や[[Mac OS X]]上の[[Mono]]で動かす際に桁違いに捗ることを意味する。 | |
− | + | また、[[プログラマー]]は[[Visual Studio]]や[[Xamarin Studio]]、[[MonoDevelop]]、[[SharpDevelop]]といった使い慣れた[[統合開発環境]]を使用でき、それらが持つ[[コード補完]]や[[構文チェック]]などの恩恵を受けることができる。 | |
− | + | 一般的な[[シェーダー]]は[[アプリケーション]]に[[ソースコード]]が内包された状態で配布され、[[プログラム]]の実行時に[[GPU]]の[[デバイスドライバー]]に同梱される[[コンパイラ]]で[[コンパイル]]される。一方、SL#では[[C Sharp|C#]]の[[コンパイラ]]で事前に検証されるため[[実行時エラー]]を最小限に抑えることができ[[デバッグ]]が捗るという利点もある。 | |
== 備考 == | == 備考 == | ||
15行目: | 15行目: | ||
SL#に関する[[不具合]]などについては可能な限り[[GitHub]]上の同プロジェクト宛てに報告してほしいとしている。 | SL#に関する[[不具合]]などについては可能な限り[[GitHub]]上の同プロジェクト宛てに報告してほしいとしている。 | ||
− | 現段階では[[ジオメトリシェーダー]]はサポートされておらず、また[[C Sharp|C#]]以外の[[プログラミング言語]]([[F | + | 現段階では[[ジオメトリシェーダー]]はサポートされておらず、また[[C Sharp|C#]]以外の[[プログラミング言語]]([[F Sharp|F#]]や[[Boo言語]]、[[Phalanger]]など)については完成度が高まってからのサポートとなる予定であるとしている。 |
== 関連ライブラリ == | == 関連ライブラリ == | ||
SL#は下記のライブラリを使用している。 | SL#は下記のライブラリを使用している。 | ||
− | * [[Mono.Cecil]] | + | * [[Mono.Cecil]] - [[CIL]]の[[バイナリ]]をごにょごにょいじくり回せるライブラリ |
* [[ICSharpCode.NRefactory]] | * [[ICSharpCode.NRefactory]] | ||
* [[ICSharpCode.Decompiler]] | * [[ICSharpCode.Decompiler]] | ||
+ | |||
+ | 実のところ、巷で話題の[[ゲームエンジン]]「[[Unity]]」が[[CIL]]から[[Flash]]を生成するなどの[[マルチプラットフォーム]]対応を実現するために使っているライブラリ群とほぼ同一である。 | ||
== 関連項目 == | == 関連項目 == | ||
31行目: | 33行目: | ||
* https://github.com/IgniteInteractiveStudio/SLSharp | * https://github.com/IgniteInteractiveStudio/SLSharp | ||
− | + | [[category: 3DCG]] | |
+ | [[category: シェーディング言語]] |
2020年5月19日 (火) 02:07時点における最新版
SL#(読み:えすえるしゃーぷ)とは、超高級言語であるC#を使い、 GPUで実行されるプログラマブルシェーダーを書けてしまうという夢のようなオープンソースのフレームワークである。ライセンスはMITライセンスとなっている。
概要[編集 | ソースを編集]
SL#の一番の核となる機能は、.NET Frameworkの世界で使われている中間コード形式である共通中間言語(CIL)を、DirectXで使われるHLSLやOpenGLで使われるGLSLなどの各種高級シェーディング言語に変換するエンジンにある。
この変換エンジンは、SL#に同梱されるクラスライブラリを使用(継承)して作られたシェーダーをCILの中から自動抽出し、対象となるシェーディング言語のソースコードに変換する。これによりHLSL(DirectX)とGLSL(OpenGL)の非互換の垣根を超えることができ、Windows上で開発したプログラムをLinuxやMac OS X上のMonoで動かす際に桁違いに捗ることを意味する。
また、プログラマーはVisual StudioやXamarin Studio、MonoDevelop、SharpDevelopといった使い慣れた統合開発環境を使用でき、それらが持つコード補完や構文チェックなどの恩恵を受けることができる。
一般的なシェーダーはアプリケーションにソースコードが内包された状態で配布され、プログラムの実行時にGPUのデバイスドライバーに同梱されるコンパイラでコンパイルされる。一方、SL#ではC#のコンパイラで事前に検証されるため実行時エラーを最小限に抑えることができデバッグが捗るという利点もある。
備考[編集 | ソースを編集]
SL#はまだ実験的なライブラリであり、将来的に構文が変わる可能性などもあるので注意する必要がある。
SL#に関する不具合などについては可能な限りGitHub上の同プロジェクト宛てに報告してほしいとしている。
現段階ではジオメトリシェーダーはサポートされておらず、またC#以外のプログラミング言語(F#やBoo言語、Phalangerなど)については完成度が高まってからのサポートとなる予定であるとしている。
関連ライブラリ[編集 | ソースを編集]
SL#は下記のライブラリを使用している。
- Mono.Cecil - CILのバイナリをごにょごにょいじくり回せるライブラリ
- ICSharpCode.NRefactory
- ICSharpCode.Decompiler
実のところ、巷で話題のゲームエンジン「Unity」がCILからFlashを生成するなどのマルチプラットフォーム対応を実現するために使っているライブラリ群とほぼ同一である。