ポイント スプライトを使用して OpenGL 3+ でいくつかのパーティクルをレンダリングしようとしています。ポイントに大きな問題があることに気づきました。カメラの距離に応じて自動的にサイズが大きくなります。その結果、次のようになります。
パーティクル エミッタの近く:
そして、遠くにあると、すべてがぼやけて肥大化して見えます。
古いバージョンでは、ポイント サイズ スケールを で調整できるようglPointParameter
です。この関数は、新しい 3 以降の OpenGL でも引き続き使用できますが、サポートされるパラメーターは 2 つだけです。GL_POINT_FADE_THRESHOLD_SIZE
必要なもののように思えましたが、試してみましたが結果はありませんでした。私も使っていますglEnable(GL_PROGRAM_POINT_SIZE);
カメラの距離に基づいたポイントの自動スケーリングを回避できる他の方法はありますか? 三角形で作られた標準のビルボードを使用するためにコードを変更する必要はありません。
現時点で関連性があるかどうかはわかりませんが、これは私が使用している頂点シェーダーです:
layout(location = 0) in vec4 a_position_size; // Point size in w coord
layout(location = 1) in vec4 a_color; // RGBA color modulated with texture
layout(location = 0) out vec4 v_color;
uniform mat4 u_MVPMatrix;
void main()
{
gl_Position = u_MVPMatrix * vec4(a_position_size.xyz, 1.0);
gl_PointSize = a_position_size.w;
v_color = a_color;
}