Vulkan
をテンプレートにして作成
ホーム
検索
最終更新
ヘルプ
Wiki書式ヘルプ(整形ルール)
開始行:
* Vulkan [#rce4106a]
Vulkan に関する個人的なメモを書くページです。自分用なので...
#contents
** 20-07-12 他ライブラリとの比較 [#ka4c63fd]
まとめてます。
https://github.com/hoboaki/engineplan/blob/main/master/Sc...
** 18-10-08 複数の Uniform を DescriptorSet に設定する方...
こちらのサイトをベースに。(紹介されているのは Uniform を...
https://sites.google.com/site/monshonosuana/vulkan/vulkan...
試してないけどおそらくこれ。
- DescriptorSetLayoutBinding を必要な Uniform の数分定義...
- DescriptorSetLayoutBinding に指定する binding の値は重...
- なので WriteDescriptorSet の dstBinding で書き換えたい ...
#code(c,){{
// 雑なサンプルコード
std::array<vk::WriteDescriptorSet, 2> descSetInfos;
// Uniform 0 番のバッファを指定
descSetInfos[0].dstSet = g_VkDescSets[0];
descSetInfos[0].descriptorCount = 1;
descSetInfos[0].descriptorType = vk::DescriptorType::eUni...
descSetInfos[0].dstBinding = 0;
descSetInfos[0].pBufferInfo = &g_VkUniformInfo0;
// Uniform 1 番のバッファを指定
descSetInfos[1].dstSet = g_VkDescSets[0];
descSetInfos[1].descriptorCount = 1;
descSetInfos[1].descriptorType = vk::DescriptorType::eUni...
descSetInfos[1].dstBinding = 1;
descSetInfos[1].pBufferInfo = &g_VkUniformInfo1;
// 更新を実行
g_VkDevice.updateDescriptorSets(...);
}}
あれ、vertexシェーダとfragmentシェーダでUniformバインディ...
** 17-02-19 シェーダーのステージ間最適化する方法を探し中 ...
#code(c,){{
// vert
#version 330
#extension GL_ARB_separate_shader_objects : enable
out gl_PerVertex {
vec4 gl_Position;
};
layout(location = 0) out vec3 fragColor;
vec2 positions[3] = vec2[](
vec2(0.0, -0.5),
vec2(0.5, 0.5),
vec2(-0.5, 0.5)
);
vec3 colors[3] = vec3[](
vec3(1.0, 0.0, 0.0),
vec3(0.0, 1.0, 0.0),
vec3(0.0, 0.0, 1.0)
);
void main() {
gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1....
fragColor = colors[gl_VertexIndex];
}
// frag
#version 330
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) out vec4 outColor;
layout(location = 0) in vec3 fragColor;
void main() {
outColor = vec4(1.0, 0.0, 0.0, 1.0);
//outColor = vec4(fragColor, 1.0);
}
}}
こんなシェーダーがあったときに、vertステージでのfragColor...
ステージ毎にコンパイルすると残ってしまうのですが、ステー...
VulkanSDKに付属する glslangValidator.exe ではどうも残って...
** 17-02-19 インスタンシング描画 [#j68257a5]
OpenGL なら gl_InstanceID を使いますが、Vulkan の GLSL は...
gl_InstanceID だと途中からリクエストしても0番から始まる仕...
参考:
http://stackoverflow.com/questions/35638512/instanced-gls...
** 17-02-12 Descriptor 周りの単位を考えてみる [#z986d4b6]
DescriptorPool は DesciptorSet が持つエントリー数分の des...
DescriptorSetLayout は DescriptorSet がどういう構成なのか...
DescriptorSet は DescritorSetLayout の定義を使い Descript...
それを踏まえまして。
例えば1つのモデルを1フレーム中にシャドウマップ用、本番描...
モデルリソース、モデルインスタンス、描画パスの3つの単位...
リソース単位で済むのは DescriptorSetLayout。複数のモデル...
インスタンス単位で必須なのは DescriptorSet なのかな。
いやー、描画パス単位で変えるのが例えばカメラ(Uniform)情...
だとすると、DescriptorSet はインスタンスあたり描画パス数...
DescriptorSet はどのタイミングで書き換えて良いのか。
公式の [[13.2.5項>https://www.khronos.org/registry/vulkan...
> The descriptor set contents bound by a call to vkCmdBin...
コマンドが走っている間は書き換えちゃダメだよーとのことで...
ダブルバッファリングするなら2フレーム分で2倍になります。
そして DescriptorPool は管理しやすい方法で良さそうです。
モデル単位で持たせたければそれで作ればいいですし、シーン...
** 17-02-12 あらゆるところで RenderPass [#ca2fb0fd]
Pipeline 作るときになぜ RenderPass を指定せんといかんの。
vkCmdBeginRenderPass してから vkCmdBindPipeline をするの...
RenderPass を Pipeline で指定することになると相互参照にな...
そういえば Framebuffer も RenderPass 知ってるけどそれも変...
なんでみんな RenderPass を知りたがるのか。
相互参照になっているから RenderPass を作り直すと Pipeline...
RenderPass のサブパスを増やしたり減らしたりは動的に切り替...
それをしたかったら毎回 RenderPass とそれを見ているものを...
なにかメリットがあってこういう形をとってるはずなんですけ...
** 17-02-12 細々と気になるところ [#ve93ef1a]
Query ってなんですの。
https://www.khronos.org/registry/vulkan/specs/1.0/html/vk...
最初の1節に全部書いてあった。解決。
Sparse Resources ってなんですの。
https://www.khronos.org/registry/vulkan/specs/1.0/html/vk...
連続した1つのメモリブロック片に設置しないといけない、と...
pfnInternalAllocation ってなんですの。
https://www.khronos.org/registry/vulkan/specs/1.0/html/vk...
vkInternalAllocationNotification の型をみるに通知だけっぽ...
「This is a purely informational callback.」って書いてあ...
** 17-02-12 Buffer BufferView Image ImageView [#i2c6c26f]
使い分けがイメージできないモヤっとを取り除いてみよう。
BufferとBufferViewの関係はぱっと想像できるんです。
大きなバッファ作って部分ごとに使い分けたいとか。
ImageとImageView。こちらがモヤっとしています。
同じメモリ領域を別の使い方をしたいときにViewを量産するん...
%%例えば、MSAA用に大きいメモリ領域をImageに割り当てるが、...
違うか、その場合は同じメモリ領域を別のImageにバインドする...
あ!例えばキューブマップの1面ずつをオフスクリーンレンダす...
そんで、6面描画しおわったら、CUBEなViewをサンプラーとして...
CUBEマップを指定する場合のImageとViewの設定がこちらに載っ...
https://www.khronos.org/registry/vulkan/specs/1.0/html/vk...
View を作る際に指定する VkImageSubresourceRange に baseAr...
CUBEのときは各面が0〜5 に対応しているんですね。View の役...
** 17-02-12 Fence Semaphore Event の違い [#q567df32]
分かりやすく解説されてました。ありがたい。
https://www.reddit.com/r/vulkan/comments/47tc3s/differenc...
** 17-02-12 クイックリファレンス [#r12ea657]
クイックなんだけど、ページ数すごいですね。ココに出てくる...
https://www.khronos.org/files/vulkan10-reference-guide.pdf
** 17-02-08 だいたいハテナがとれたので [#td80489e]
CrossFrameworkにモジュールを作ってみよう。
その前に名前空間整理をやってしまおう。
** 17-02-07 SPIR-V から名前などの一覧はとれるのか [#hceae...
デモのシェーダーを少し書き換えてSPVにしてみました。
#pre(){{
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 1
; Bound: 20
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %uFragC...
OpExecutionMode %main OriginUpperLeft
OpSource GLSL 400
OpSourceExtension "GL_ARB_separate_shader_...
OpSourceExtension "GL_ARB_shading_language...
OpName %main "main"
OpName %uFragColor "uFragColor"
OpName %tex "tex"
OpName %texcoord "texcoord"
OpDecorate %uFragColor Location 0
OpDecorate %tex DescriptorSet 0
OpDecorate %tex Binding 0
OpDecorate %texcoord Location 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%uFragColor = OpVariable %_ptr_Output_v4float Output
%10 = OpTypeImage %float 2D 0 0 0 1 Unknown
%11 = OpTypeSampledImage %10
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant ...
%tex = OpVariable %_ptr_UniformConstant_11 Unifor...
%v2float = OpTypeVector %float 2
%_ptr_Input_v2float = OpTypePointer Input %v2float
%texcoord = OpVariable %_ptr_Input_v2float Input
%main = OpFunction %void None %3
%5 = OpLabel
%14 = OpLoad %11 %tex
%18 = OpLoad %v2float %texcoord
%19 = OpImageSampleImplicitLod %v4float %14 %18
OpStore %uFragColor %19
OpReturn
OpFunctionEnd
}}
Uniformやサンプラーの名前はSPVから取得できるのかの件です...
C++での解析ライブラリは見つけたのですがC#のはあるのかな?
そしたらバイナリコンバータで手軽に好きな形で情報をつっこ...
** 17-02-06 Uniform と DescriptorSet [#r2af655e]
頭がこんがらがってきた。けどめげない。
Uniform まわりをすっきりさせよう。
日本語解説ページにお世話になります。ありがとうございます。
https://sites.google.com/site/monshonosuana/vulkan/vulkan...
DescriptorSetLayoutBinding::descriptorCount は何に使うの...
https://vulkan.lunarg.com/doc/view/1.0.33.0/linux/vkspec....
シェーダのユニフォーム値や頂点属性名はシェーダーバイナリ(...
次調べます。
** 17-02-05 Pipeline [#i35d7bf6]
レンダーパスと同じくなんじゃこりゃと思ったパイプライン。
コードを見る限り、マテリアルに関するRenderStateを集めたモ...
Blend、DepthStencilTest、Vertex&Fragmentシェーダの設定な...
頻繁に変える項目は DynamicState で指定できるようにするこ...
また、 uniform やリードするテクスチャは vkCmdBindDescript...
これはまた別で調べましょう。
** 17-02-05 テクスチャフォーマットで調べたこと [#b1edd176]
:USCALED SSCALED|
公式ドキュメントに書いてありました。
#pre(){{
USCALED
The components are unsigned integer values that get conve...
SSCALED
The components are signed integer values that get convert...
}}
floatに変換されますというだけなのかな?どういう使い方をす...
:E, X, S|
指数部(RGB共通にかかる指数)、未使用、ステンシルを示すも...
:linearTiling、optimalTiling、bufferFeatures|
公式ドキュメントより。
#pre(){{
linearTilingFeatures describes the features supported...
optimalTilingFeatures describes the features supporte...
bufferFeatures describes the features supported by bu...
}}
タイリングはピクセルの並びのことです。
LINEARは1行ごとに(おそらく左端から右端の順で)ピクセル...
OPTIMALはGPUが処理しやすい並びの順でピクセルデータが並ん...
LINEARで使える用途、OPTIMALで使える用途、あとバッファ系で...
OPTIMALな並びはGPU依存ですけど、よく使うBCシリーズはその...
ひとまずそれは置いておいて、先にチュートリアルページを読...
** 17-02-05 ROデータのVRAMへの転送 [#mf268782]
RO = リードオンリーのこと。
昨日の VulkanInfo の結果を見たら DeviceLocal なメモリが明...
これをいわゆるVRAM(GPUしかアクセスできないメモリで通常の...
アセットとしてロードしたテクスチャや頂点属性は基本不変で...
通常メモリからVRAMへコピーする方法はあるのかと思って検索...
https://vulkan-tutorial.com/Vertex_buffers/Staging_buffer
不変なものは基本VRAMへ。変更回数が少ないものも基本VRAMに...
ハードによっては通常メモリが超遅いものもあるので、もしか...
スマートデバイス系はVRAMがなく共有メモリで済ませているの...
参考:Android 機の VulkanInfo
http://dench.flatlib.jp/vulkan/vulkaninfo
※いつも参考にさせていただいております&ありがとうございま...
** 17-02-05 RenderPass [#g148ba15]
解説ページを見ながらお勉強。ありがとうございます。
http://qiita.com/Pctg-x8/items/2b3d5c8a861f42aa533f
Subpass、Attachment、Dependencyの言葉が何を指すのかが分か...
GPUを少しでも暇させないための仕組みなんですね。すっきり!
** 17-02-05 VulkanInfo を見てぱっと分からなかったもの [#m...
FORMAT_R8_USCALED にある USCALED や SCALED ってどういうタ...
linearTiling、optimalTiling、bufferFeaturesとは。(想像通...
VK_FORMAT_FEATURE_ 各種定数の意味は。
フォーマットのE,S,X,は何なのか。(Sはステンシル・・・?)
レンダーパス調べた後ぐらいに調べよう。
** 17-02-04 GTX680 で Vulkan [#n598825b]
GTX680が届いたので早速MacProさんに装着。Metalも動き、Molt...
BootcampのWin10でもVulkanInfoサンプルが動きました。
&attachref(./vulkaninfo-gtx680.txt);
昨日のメモリの話関連になりますが、↑を見るとビデオカードの...
** 17-02-03 メモリあれこれ [#u14bbfbc]
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT と VK_MEMORY_PROPERTY...
VkPhysicalDeviceMemoryProperties の公式の説明を読むと「パ...
つまり、 HOST_VISIBLE_BIT だけで良い場合は HOST_COHERENT_...
続いてHeap。
VkMemoryHeap.size はMoltenVk では 0 が格納されていました。
おそらく Metal からはその情報がとれないのか、もしくは未対...
Apple系OS環境も考慮するならばサイズみてほにゃららするとい...
最後にメモリアロケーションは少ない方がいいのかどうか。
[[NVIDIAさんの解説>https://developer.nvidia.com/vulkan-me...
ということはメモリブロックも少ないにこしたことはないとい...
CPUからRead or Write するようなタイプのものは全部1つの V...
もちろんその場合、もちろんヒープ管理をこちらでする必要が...
** 17-02-02 コードの解説 [#t31c9dd7]
http://qiita.com/Pctg-x8/items/6fd3ef76b58d98f26634
丁寧に書かれていて入門編としてとてもありがたかった。
レンダーパスとパイプライン、ぼんやりとしかまだ分かってな...
** 17-02-01 オーバービューを読む [#g1448939]
https://vulkan-tutorial.com/Overview
わかりやすーい!だいたいイメージできた。
Render pass と Graphics pipeline は初めて見る概念な気がす...
そしてまだよく理解できてないので後で改めて読み直してみよ...
** 17-02-01 実行環境どうしようかな [#rc3e1c28]
Macで確認するならMetalをラップした MoltenVK を使用する必...
MacBook 環境ではサンプルが動いた。
タワー型 MacPro は基本Metalをノンサポートのため動かない。
近日グラボを変えるのでそれで動くことを期待。(動いて欲し...
試用は Windows 上のほうが安定してそうなので対応グラボをさ...
終了行:
* Vulkan [#rce4106a]
Vulkan に関する個人的なメモを書くページです。自分用なので...
#contents
** 20-07-12 他ライブラリとの比較 [#ka4c63fd]
まとめてます。
https://github.com/hoboaki/engineplan/blob/main/master/Sc...
** 18-10-08 複数の Uniform を DescriptorSet に設定する方...
こちらのサイトをベースに。(紹介されているのは Uniform を...
https://sites.google.com/site/monshonosuana/vulkan/vulkan...
試してないけどおそらくこれ。
- DescriptorSetLayoutBinding を必要な Uniform の数分定義...
- DescriptorSetLayoutBinding に指定する binding の値は重...
- なので WriteDescriptorSet の dstBinding で書き換えたい ...
#code(c,){{
// 雑なサンプルコード
std::array<vk::WriteDescriptorSet, 2> descSetInfos;
// Uniform 0 番のバッファを指定
descSetInfos[0].dstSet = g_VkDescSets[0];
descSetInfos[0].descriptorCount = 1;
descSetInfos[0].descriptorType = vk::DescriptorType::eUni...
descSetInfos[0].dstBinding = 0;
descSetInfos[0].pBufferInfo = &g_VkUniformInfo0;
// Uniform 1 番のバッファを指定
descSetInfos[1].dstSet = g_VkDescSets[0];
descSetInfos[1].descriptorCount = 1;
descSetInfos[1].descriptorType = vk::DescriptorType::eUni...
descSetInfos[1].dstBinding = 1;
descSetInfos[1].pBufferInfo = &g_VkUniformInfo1;
// 更新を実行
g_VkDevice.updateDescriptorSets(...);
}}
あれ、vertexシェーダとfragmentシェーダでUniformバインディ...
** 17-02-19 シェーダーのステージ間最適化する方法を探し中 ...
#code(c,){{
// vert
#version 330
#extension GL_ARB_separate_shader_objects : enable
out gl_PerVertex {
vec4 gl_Position;
};
layout(location = 0) out vec3 fragColor;
vec2 positions[3] = vec2[](
vec2(0.0, -0.5),
vec2(0.5, 0.5),
vec2(-0.5, 0.5)
);
vec3 colors[3] = vec3[](
vec3(1.0, 0.0, 0.0),
vec3(0.0, 1.0, 0.0),
vec3(0.0, 0.0, 1.0)
);
void main() {
gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1....
fragColor = colors[gl_VertexIndex];
}
// frag
#version 330
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) out vec4 outColor;
layout(location = 0) in vec3 fragColor;
void main() {
outColor = vec4(1.0, 0.0, 0.0, 1.0);
//outColor = vec4(fragColor, 1.0);
}
}}
こんなシェーダーがあったときに、vertステージでのfragColor...
ステージ毎にコンパイルすると残ってしまうのですが、ステー...
VulkanSDKに付属する glslangValidator.exe ではどうも残って...
** 17-02-19 インスタンシング描画 [#j68257a5]
OpenGL なら gl_InstanceID を使いますが、Vulkan の GLSL は...
gl_InstanceID だと途中からリクエストしても0番から始まる仕...
参考:
http://stackoverflow.com/questions/35638512/instanced-gls...
** 17-02-12 Descriptor 周りの単位を考えてみる [#z986d4b6]
DescriptorPool は DesciptorSet が持つエントリー数分の des...
DescriptorSetLayout は DescriptorSet がどういう構成なのか...
DescriptorSet は DescritorSetLayout の定義を使い Descript...
それを踏まえまして。
例えば1つのモデルを1フレーム中にシャドウマップ用、本番描...
モデルリソース、モデルインスタンス、描画パスの3つの単位...
リソース単位で済むのは DescriptorSetLayout。複数のモデル...
インスタンス単位で必須なのは DescriptorSet なのかな。
いやー、描画パス単位で変えるのが例えばカメラ(Uniform)情...
だとすると、DescriptorSet はインスタンスあたり描画パス数...
DescriptorSet はどのタイミングで書き換えて良いのか。
公式の [[13.2.5項>https://www.khronos.org/registry/vulkan...
> The descriptor set contents bound by a call to vkCmdBin...
コマンドが走っている間は書き換えちゃダメだよーとのことで...
ダブルバッファリングするなら2フレーム分で2倍になります。
そして DescriptorPool は管理しやすい方法で良さそうです。
モデル単位で持たせたければそれで作ればいいですし、シーン...
** 17-02-12 あらゆるところで RenderPass [#ca2fb0fd]
Pipeline 作るときになぜ RenderPass を指定せんといかんの。
vkCmdBeginRenderPass してから vkCmdBindPipeline をするの...
RenderPass を Pipeline で指定することになると相互参照にな...
そういえば Framebuffer も RenderPass 知ってるけどそれも変...
なんでみんな RenderPass を知りたがるのか。
相互参照になっているから RenderPass を作り直すと Pipeline...
RenderPass のサブパスを増やしたり減らしたりは動的に切り替...
それをしたかったら毎回 RenderPass とそれを見ているものを...
なにかメリットがあってこういう形をとってるはずなんですけ...
** 17-02-12 細々と気になるところ [#ve93ef1a]
Query ってなんですの。
https://www.khronos.org/registry/vulkan/specs/1.0/html/vk...
最初の1節に全部書いてあった。解決。
Sparse Resources ってなんですの。
https://www.khronos.org/registry/vulkan/specs/1.0/html/vk...
連続した1つのメモリブロック片に設置しないといけない、と...
pfnInternalAllocation ってなんですの。
https://www.khronos.org/registry/vulkan/specs/1.0/html/vk...
vkInternalAllocationNotification の型をみるに通知だけっぽ...
「This is a purely informational callback.」って書いてあ...
** 17-02-12 Buffer BufferView Image ImageView [#i2c6c26f]
使い分けがイメージできないモヤっとを取り除いてみよう。
BufferとBufferViewの関係はぱっと想像できるんです。
大きなバッファ作って部分ごとに使い分けたいとか。
ImageとImageView。こちらがモヤっとしています。
同じメモリ領域を別の使い方をしたいときにViewを量産するん...
%%例えば、MSAA用に大きいメモリ領域をImageに割り当てるが、...
違うか、その場合は同じメモリ領域を別のImageにバインドする...
あ!例えばキューブマップの1面ずつをオフスクリーンレンダす...
そんで、6面描画しおわったら、CUBEなViewをサンプラーとして...
CUBEマップを指定する場合のImageとViewの設定がこちらに載っ...
https://www.khronos.org/registry/vulkan/specs/1.0/html/vk...
View を作る際に指定する VkImageSubresourceRange に baseAr...
CUBEのときは各面が0〜5 に対応しているんですね。View の役...
** 17-02-12 Fence Semaphore Event の違い [#q567df32]
分かりやすく解説されてました。ありがたい。
https://www.reddit.com/r/vulkan/comments/47tc3s/differenc...
** 17-02-12 クイックリファレンス [#r12ea657]
クイックなんだけど、ページ数すごいですね。ココに出てくる...
https://www.khronos.org/files/vulkan10-reference-guide.pdf
** 17-02-08 だいたいハテナがとれたので [#td80489e]
CrossFrameworkにモジュールを作ってみよう。
その前に名前空間整理をやってしまおう。
** 17-02-07 SPIR-V から名前などの一覧はとれるのか [#hceae...
デモのシェーダーを少し書き換えてSPVにしてみました。
#pre(){{
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 1
; Bound: 20
; Schema: 0
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %uFragC...
OpExecutionMode %main OriginUpperLeft
OpSource GLSL 400
OpSourceExtension "GL_ARB_separate_shader_...
OpSourceExtension "GL_ARB_shading_language...
OpName %main "main"
OpName %uFragColor "uFragColor"
OpName %tex "tex"
OpName %texcoord "texcoord"
OpDecorate %uFragColor Location 0
OpDecorate %tex DescriptorSet 0
OpDecorate %tex Binding 0
OpDecorate %texcoord Location 0
%void = OpTypeVoid
%3 = OpTypeFunction %void
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%uFragColor = OpVariable %_ptr_Output_v4float Output
%10 = OpTypeImage %float 2D 0 0 0 1 Unknown
%11 = OpTypeSampledImage %10
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant ...
%tex = OpVariable %_ptr_UniformConstant_11 Unifor...
%v2float = OpTypeVector %float 2
%_ptr_Input_v2float = OpTypePointer Input %v2float
%texcoord = OpVariable %_ptr_Input_v2float Input
%main = OpFunction %void None %3
%5 = OpLabel
%14 = OpLoad %11 %tex
%18 = OpLoad %v2float %texcoord
%19 = OpImageSampleImplicitLod %v4float %14 %18
OpStore %uFragColor %19
OpReturn
OpFunctionEnd
}}
Uniformやサンプラーの名前はSPVから取得できるのかの件です...
C++での解析ライブラリは見つけたのですがC#のはあるのかな?
そしたらバイナリコンバータで手軽に好きな形で情報をつっこ...
** 17-02-06 Uniform と DescriptorSet [#r2af655e]
頭がこんがらがってきた。けどめげない。
Uniform まわりをすっきりさせよう。
日本語解説ページにお世話になります。ありがとうございます。
https://sites.google.com/site/monshonosuana/vulkan/vulkan...
DescriptorSetLayoutBinding::descriptorCount は何に使うの...
https://vulkan.lunarg.com/doc/view/1.0.33.0/linux/vkspec....
シェーダのユニフォーム値や頂点属性名はシェーダーバイナリ(...
次調べます。
** 17-02-05 Pipeline [#i35d7bf6]
レンダーパスと同じくなんじゃこりゃと思ったパイプライン。
コードを見る限り、マテリアルに関するRenderStateを集めたモ...
Blend、DepthStencilTest、Vertex&Fragmentシェーダの設定な...
頻繁に変える項目は DynamicState で指定できるようにするこ...
また、 uniform やリードするテクスチャは vkCmdBindDescript...
これはまた別で調べましょう。
** 17-02-05 テクスチャフォーマットで調べたこと [#b1edd176]
:USCALED SSCALED|
公式ドキュメントに書いてありました。
#pre(){{
USCALED
The components are unsigned integer values that get conve...
SSCALED
The components are signed integer values that get convert...
}}
floatに変換されますというだけなのかな?どういう使い方をす...
:E, X, S|
指数部(RGB共通にかかる指数)、未使用、ステンシルを示すも...
:linearTiling、optimalTiling、bufferFeatures|
公式ドキュメントより。
#pre(){{
linearTilingFeatures describes the features supported...
optimalTilingFeatures describes the features supporte...
bufferFeatures describes the features supported by bu...
}}
タイリングはピクセルの並びのことです。
LINEARは1行ごとに(おそらく左端から右端の順で)ピクセル...
OPTIMALはGPUが処理しやすい並びの順でピクセルデータが並ん...
LINEARで使える用途、OPTIMALで使える用途、あとバッファ系で...
OPTIMALな並びはGPU依存ですけど、よく使うBCシリーズはその...
ひとまずそれは置いておいて、先にチュートリアルページを読...
** 17-02-05 ROデータのVRAMへの転送 [#mf268782]
RO = リードオンリーのこと。
昨日の VulkanInfo の結果を見たら DeviceLocal なメモリが明...
これをいわゆるVRAM(GPUしかアクセスできないメモリで通常の...
アセットとしてロードしたテクスチャや頂点属性は基本不変で...
通常メモリからVRAMへコピーする方法はあるのかと思って検索...
https://vulkan-tutorial.com/Vertex_buffers/Staging_buffer
不変なものは基本VRAMへ。変更回数が少ないものも基本VRAMに...
ハードによっては通常メモリが超遅いものもあるので、もしか...
スマートデバイス系はVRAMがなく共有メモリで済ませているの...
参考:Android 機の VulkanInfo
http://dench.flatlib.jp/vulkan/vulkaninfo
※いつも参考にさせていただいております&ありがとうございま...
** 17-02-05 RenderPass [#g148ba15]
解説ページを見ながらお勉強。ありがとうございます。
http://qiita.com/Pctg-x8/items/2b3d5c8a861f42aa533f
Subpass、Attachment、Dependencyの言葉が何を指すのかが分か...
GPUを少しでも暇させないための仕組みなんですね。すっきり!
** 17-02-05 VulkanInfo を見てぱっと分からなかったもの [#m...
FORMAT_R8_USCALED にある USCALED や SCALED ってどういうタ...
linearTiling、optimalTiling、bufferFeaturesとは。(想像通...
VK_FORMAT_FEATURE_ 各種定数の意味は。
フォーマットのE,S,X,は何なのか。(Sはステンシル・・・?)
レンダーパス調べた後ぐらいに調べよう。
** 17-02-04 GTX680 で Vulkan [#n598825b]
GTX680が届いたので早速MacProさんに装着。Metalも動き、Molt...
BootcampのWin10でもVulkanInfoサンプルが動きました。
&attachref(./vulkaninfo-gtx680.txt);
昨日のメモリの話関連になりますが、↑を見るとビデオカードの...
** 17-02-03 メモリあれこれ [#u14bbfbc]
VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT と VK_MEMORY_PROPERTY...
VkPhysicalDeviceMemoryProperties の公式の説明を読むと「パ...
つまり、 HOST_VISIBLE_BIT だけで良い場合は HOST_COHERENT_...
続いてHeap。
VkMemoryHeap.size はMoltenVk では 0 が格納されていました。
おそらく Metal からはその情報がとれないのか、もしくは未対...
Apple系OS環境も考慮するならばサイズみてほにゃららするとい...
最後にメモリアロケーションは少ない方がいいのかどうか。
[[NVIDIAさんの解説>https://developer.nvidia.com/vulkan-me...
ということはメモリブロックも少ないにこしたことはないとい...
CPUからRead or Write するようなタイプのものは全部1つの V...
もちろんその場合、もちろんヒープ管理をこちらでする必要が...
** 17-02-02 コードの解説 [#t31c9dd7]
http://qiita.com/Pctg-x8/items/6fd3ef76b58d98f26634
丁寧に書かれていて入門編としてとてもありがたかった。
レンダーパスとパイプライン、ぼんやりとしかまだ分かってな...
** 17-02-01 オーバービューを読む [#g1448939]
https://vulkan-tutorial.com/Overview
わかりやすーい!だいたいイメージできた。
Render pass と Graphics pipeline は初めて見る概念な気がす...
そしてまだよく理解できてないので後で改めて読み直してみよ...
** 17-02-01 実行環境どうしようかな [#rc3e1c28]
Macで確認するならMetalをラップした MoltenVK を使用する必...
MacBook 環境ではサンプルが動いた。
タワー型 MacPro は基本Metalをノンサポートのため動かない。
近日グラボを変えるのでそれで動くことを期待。(動いて欲し...
試用は Windows 上のほうが安定してそうなので対応グラボをさ...
ページ名: