「MSL (Metal Shading Language)」の版間の差分

Administrator がページ「Metal Shading Language」をリダイレクトの「MSL (Metal Shading Language)」に移動しました
編集の要約なし
 
(同じ利用者による、間の4版が非表示)
1行目: 1行目:
'''Metal Shading Language'''とは、[[Metal]]で利用する[[プログラマブルシェーダー]]を記述するための[[プログラミング言語]]である。
'''MSL''' (Metal Shading Language)とは、[[Metal]]で利用する[[プログラマブルシェーダー]]を記述するための[[プログラミング言語]]である。


== 概要 ==
== 概要 ==
[[C++]]に似ているが完全に別言語である。
アップルは「[[C++14]]がベースだ」と主張しているが完全に別言語である。


[[ソースコード]]の拡張子は「.metal」であり、それを[[ビルド]]した[[バイナリ]]の拡張子は「.metallib」となっている。
[[ソースコード]]の拡張子は「.metal」であり、それを[[ビルド]]した[[バイナリ]]の拡張子は「.metallib」となっている。
9行目: 9行目:


== 最小限 ==
== 最小限 ==
<source>
<source lang="c">
fragment half4 frag(VertexOut input [[stage_in]], constant Uniforms &uniforms [[buufer(0)]]) {
fragment half4 frag(VertexOut input [[stage_in]], constant Uniforms &uniforms [[buufer(0)]])
{
     return half4(1.0);
     return half4(1.0);
}
}
18行目: 19行目:


[[引数]]名の後ろには「どこから来た」「なにに使う」かなどを指定するセマンティクスが付く。
[[引数]]名の後ろには「どこから来た」「なにに使う」かなどを指定するセマンティクスが付く。
[[HLSL]]と似ているな。ただ「中括弧が2個ワンセット」とか[[LISP]]ほどではないがカッコがうぜぇ。
[[HLSL]]と似ているな。ただ「中括弧が2個ワンセット」と[[LISP]]ほどではないがカッコがうぜぇ。


[[定数バッファ]]([[ユニフォーム変数]])は[[引数]]として[[参照渡し]]されている。
[[定数バッファ]]([[ユニフォーム変数]])は[[引数]]として[[参照渡し]]されている。
24行目: 25行目:


[[戻り値]]は[[HLSL]]と同じく「return」だ。
[[戻り値]]は[[HLSL]]と同じく「return」だ。
[[GLSL]]の意味不明な「gl_FragColor」だ「gl_FragData」だより遥かにわかりやすいな。
[[GLSL]]の「gl_FragColor」だ「gl_FragData」だといった[[グローバル変数]]に格納する意味不明な方式より遥かにわかりやすいな。


== Xamarinからの利用 ==
== 詳細 ==
「メインバンドル(アプリに含まれるリソース)に含まれるmetallib」はCreateDefaultLibraryメソッドで手軽に読み込める。とくに難しく考える必要性はない。
* [[MetalとC++の違い]]
<source>
* [[Xamarin.iOSでMetalを利用する]]
var library = _device.CreateDefaultLibrary();
</source>


== 関連項目 ==
== 関連項目 ==