OpenGL

【GLSL】複数のシェーダソースから構成されるシェーダプログラム

試した環境 glsl 4.3 本題 汎用的な処理を使い回し易くするためにその処理だけ別のファイルにしたい等、1つのシェーダプログラムに対して複数のシェーダソースを利用したいときがあります。 複数のシェーダソースの利用について、OpenGL Wiki には以下のよう…

GLM や GLSL の正方行列はデフォルトコンストラクタで単位行列に初期化されない

試した環境 glm 0.9.9.7 glsl 4.3 本題 glm::mat4 などのGLMの正方行列はデフォルトコンストラクタで単位行列に初期化されません。 単位行列にしたい場合は、glm::mat4(1.f) と引数付きのコンストラクタを呼び出す必要があります。 以下は試したコードです。…

OpenGL Compute Shader を実行するだけのコード

試した環境 GLEW 2.1.0 GLFW 3.3.1 Microsoft Visual Studio Community 2019 Version 16.4.5 Windows 10 バージョン 1903 はじめに OpenGL の Compute Shader を実行するために必要な処理をまとめたコードを載せます。 最初にソースコード全体を載せ、そのあ…

GLSL の atan 関数は x=0 のとき未定義

試した環境 glsl4.30 本題 前回の記事で、球面座標系のφの変換を y の符号と acos を使って求めました。 それは日本語版 Wikipedia の球面座標系のページの記述を参考にしました。 ところで英語版 Wikipedia の Spherical coordinate system のページではφへ…

直交直線座標系から球面座標系への変換に、0を返す sign 関数は使用できない

試した環境 glsl4.30 本題 Wikipedia の球面座標系のページには直交直線座標 (x,y,z) から球面座標 (r,θ,φ) への変換式が載っています。 その中でφの変換式は以下のようになります。 φ = sgn(y) * acos(x / sqrt(x2 + z2)) ここで sgn は符号関数で、0以上で…