「Metal」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
20行目: | 20行目: | ||
[[シェーディング言語]]は独自の[[Metal Shading Language]](通称:MSL)を採用している。 | [[シェーディング言語]]は独自の[[Metal Shading Language]](通称:MSL)を採用している。 | ||
+ | <source> | ||
+ | fragment half4 frag(VertexOut input [[stage_in]], constant Uniforms &uniforms [[buufer(0)]]) { | ||
+ | return half4(1.0); | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | 何シェーダーなのかは関数の頭に「fragment」や「kernel」などと付けて宣言する。 | ||
+ | [[GLSL]]の何シェーダーなのか意味不明すぎる「void main()」よりわかりやすいな。 | ||
+ | |||
+ | 引数名の後ろには「どこから来た」「なにに使う」かなどを指定するセマンティクスが付く。 | ||
+ | [[HLSL]]に似ているな。 | ||
+ | ただ中括弧が2個ワンセットとか[[LISP]]ほどではないがカッコがうぜぇ。 | ||
+ | |||
+ | [[定数バッファ]]([[ユニフォーム変数]])は引数として参照渡しされている。 | ||
+ | ここはちょっと独特だな。 | ||
+ | |||
+ | [[戻り値]]は[[HLSL]]と同じく「return」だ。 | ||
+ | [[GLSL]]の意味不明な「gl_FragColor」だ「gl_FragData」だより遥かにわかりやすいな。 | ||
+ | |||
+ | === 備考 === | ||
[[OpenGL]]と[[GLSL]]からの移植だと[[GLSL]]を[[SPIR-V]]に[[コンパイル]]して[[Vulkan]]([[MoltenVK]])で動かした方が楽かもしれない。ここだけの話、[[HLSL]]や[[GLSL]]で書いて[[SPIRV-Cross]]を使ってMSLを生成した方が捗るよ。 | [[OpenGL]]と[[GLSL]]からの移植だと[[GLSL]]を[[SPIR-V]]に[[コンパイル]]して[[Vulkan]]([[MoltenVK]])で動かした方が楽かもしれない。ここだけの話、[[HLSL]]や[[GLSL]]で書いて[[SPIRV-Cross]]を使ってMSLを生成した方が捗るよ。 | ||