コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
SPIR-VからGLSLを生成する
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
2019年11月6日 (水) 00:41時点における
Administrator
(
トーク
|
投稿記録
)
による版
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
[[SPIR-V]]から様々な[[シェーディング言語]]に[[逆コンパイル]]できると色々捗ると思われる。 [[SPIR-V]]は[[HLSL]]と[[GLSL]]から生成できるので相互変換もできることになる。 [[夢が広がりんぐ]]。 ==準備== [[Vulkan]] [[SDK]]に[[SPIR-V]]から[[GLSL]]を生成する[[逆コンパイラ]]が含まれている。 まずは[[ダウンロード]]だ。今回は[[macOS]]版をダウンロードしてきた。 *https://vulkan.lunarg.com/sdk/home Vulkan SDKを展開すると以下に逆コンパイラがある(mac版の場合)。 ./macOS/bin/spirv-cross [[SPIR-V]]ファイルは「[[DirectX Shader CompilerでSPIR-Vを出力する]]」で生成したものを使った。[[GLSL]]ではなく[[HLSL]]から生成した[[SPIR-V]]ファイルだ。 ==GLSL 4.60 (OpenGL 4.6) == まずは最新のGLSL 4.60形式で出力してみる。 ちなみにオプションを一切指定しない場合はGLSL 4.50となるようだ(2019年11月時点)。 <syntaxhighlight lang="bash"> ./spirv-cross --version 460 light_vs.spv </syntaxhighlight> ちゃんと出た。 <syntaxhighlight lang="glsl"> #version 460 layout(binding = 0, std140) uniform type_Globals { layout(row_major) mat4 WorldViewProjection; } _Globals; layout(location = 0) in vec4 in_var_POSITION0; layout(location = 1) in vec4 in_var_COLOR0; layout(location = 0) out vec4 out_var_COLOR0; void main() { gl_Position = _Globals.WorldViewProjection * in_var_POSITION0; out_var_COLOR0 = in_var_COLOR0; } </syntaxhighlight> ==GLSL ES 3.00 (OpenGL ES 3.0) == OpenGL ES 3.0向けのオプションを指定して試してみる。 <syntaxhighlight lang="bash"> ./spirv-cross --version 300 --es light_vs.spv </syntaxhighlight> こちらもちゃんと出た。GLSL4.60指定時と比べるとout部分が異なる。 <syntaxhighlight lang="glsl"> #version 300 es layout(std140) uniform type_Globals { layout(row_major) mat4 WorldViewProjection; } _Globals; layout(location = 0) in vec4 in_var_POSITION0; layout(location = 1) in vec4 in_var_COLOR0; out vec4 out_var_COLOR0; void main() { gl_Position = _Globals.WorldViewProjection * in_var_POSITION0; out_var_COLOR0 = in_var_COLOR0; } </syntaxhighlight> ==GLSL ES 1.00 (OpenGL ES 2.0 / WebGL 1.0) == 次にOpenGL ES 2.0と[[WebGL]] 1.0向けのオプションも試してみる。 <syntaxhighlight lang="bash"> ./spirv-cross --version 100 --es light_vs.spv </syntaxhighlight> 昔ながらのattributeとvaryingを使った形式になった。 <syntaxhighlight lang="glsl"> #version 100 struct type_Globals { mat4 WorldViewProjection; }; uniform type_Globals _Globals; attribute vec4 in_var_POSITION0; attribute vec4 in_var_COLOR0; varying vec4 out_var_COLOR0; void main() { gl_Position = in_var_POSITION0 * _Globals.WorldViewProjection; out_var_COLOR0 = in_var_COLOR0; } </syntaxhighlight> ==関連項目== *[[SPIR-VからHLSLを生成する]] *[[GLSLのversionディレクティブ一覧]] *[[DirectX Shader CompilerでSPIR-Vを出力する]] *[[MacでDirectX Shader Compilerをビルドする]] *[[MacにMoltenVKを入れてVulkanを使ってみる]] [[category: SPIR-V]] [[category: GLSL]] [[category: HLSL]] [[category: Vulkan]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
本文の横幅制限を有効化/無効化