2020年5月2日土曜日

パーティクルのテスト1

デイトレしながら、いろいろと何かを作成
プログラミング等をながらデイトレをしてるのが
正しいかもしれない

(1)The OpenGL Samples Pack
(2)A guide to using modern OpenGL functions
等を参考にして

OpenGL 4.5でパーティクルの何かを作成中

mp4の動画にして、gifに変換して張り付けてみた
(AVIUtil, AviToGifを使用)



Vulkanはめんどくさいので使用してない
UE4は重いので使用してない

OpenGL ESでアプリを作ってた時より
大量のパーティクルが出せてる

DSA (Direct State Access)は便利だな
Vulkan でも似たような事をやってみる



(2)のFaster Reads and Writes with Persistent Mappingにある
glMapNamedBufferRange で取得したポインタをメンバ変数に格納
ドローコール前に 生存中のパーティクルデータをセット
glDrawArraysInstanced(GL_TRIANGLE_STRIP, 0, 4, CurrentParticleNum);
で描画

パーティクルの4頂点のローカル座標は頂点シェーダー内にあるのを使用

void main()
{
const vec2 positions[4] = {
{ -0.5, -0.5 }, // LeftBottom
{ 0.5, -0.5 }, // RightBottom
{ -0.5, 0.5 }, // LeftTop
{ 0.5, 0.5 } // RightTop
};

vec2 posL;

posL.x = positions[gl_VertexID].x;
posL.y = positions[gl_VertexID].y;

...
}


GPUが少し古いので、買い替える?