Top | puarts.com
映像・CG・画像処理関連の技術情報、個人作品の創作記録、メモなど
Category

0   1  2  3  4  5  6  

glsl プリコンパイル済みシェーダーバイナリーの読み書き

公開日: 2018/01/27 | カテゴリ: Note | タグ: OpenGL

プリコンパイル済みの glsl シェーダーバイナリーを読み書きする方法を一度覚えて、忘れてしまったので備忘用にメモしておきます。参照サイトの丸コピですが。

コンパイル済み glsl シェーダーバイナリーの保存

GLuint progId = glCreateProgram();

...
...
glProgramParameteri(progId, PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE);
glLinkProgram(progId);

...
...

#define GL_NUM_PROGRAM_BINARY_FORMATS 0x87FE
#define GL_PROGRAM_BINARY_FORMATS 0x87FF
GLint formats = 0;
glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &formats);
GLint *binaryFormats = new GLint[formats];
glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, binaryFormats);
#define GL_PROGRAM_BINARY_LENGTH 0x8741
GLint len=0;
glGetProgramiv(progId, GL_PROGRAM_BINARY_LENGTH, &len);
u8* binary = new u8[len];
GLenum *binaryFormats = 0;
glGetProgramBinary(progId, len, NULL, (GLenum*)binaryFormats, binary);
FILE* fp = fopen(shader.bin, "wb");
fwrite(binary, len, 1, fp);
fclose(fp);
delete [] binary;

プリコンパイル済み glsl シェーダーバイナリーの読み込み

FILE* fp = fopen(shader.bin, "rb");
fseek(fp, 0, SEEK_END);
GLint len = (GLint)ftell(fp);
u8* binary = new u8[len];
fseek(fp, 0, SEEK_SET);
fread(binary, len, 1, fp);
fclose(fp);

GLint formats = 0;
glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &formats)
GLenum *binaryFormats = new [formats];
glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, binaryFormats);

GLuint progId = glCreateProgram();
glProgramBinary(progId, binaryFormats, binary, len);

delete [] binary;

GLint success;
glGetProgramiv(progId, GL_LINK_STATUS, &success);
if (!success)
{
 // Loading failed...
}

参考リンク
http://www.geeks3d.com/20100727/opengl-4-1-allows-the-use-of-binary-shaders/

  このエントリーをはてなブックマークに追加  

キューブマップと正距円筒画像を相互変換可能な 360 TOOL KIT

公開日: 2018/01/09 | カテゴリ: PC/Software | タグ: キューブマップ, 3DCG

キューブマップの分解と結合を行えるフリーソフトないかなぁと探してたところ、正距円筒(Equirectangular)画像からキューブマップへの変換、キューブマップからの正距円筒画像への変換ができる 360 TOOL KIT という便利なオンラインサービスがありましたので、メモしておきます。

https://www.360toolkit.co/

変換できるフォーマットは限られていますが、私の用途ではこのサービスで要求は概ね満たせました。キューブマップのプレビューもできるのもありがたいです。欲を言えば一括変換したいのでコマンドラインツールであると嬉しいんですが、どこかにないかな..

自分で作ってもいいんですが、自分で作ってまでしてほしいとも思わないのが何とも。

  このエントリーをはてなブックマークに追加  

OpenGL アプリで nvoglv64.dll 内のアクセス違反が起こる

公開日: 2018/01/08 | カテゴリ: Note | タグ: OpenGL

趣味で開発していた GL アプリが Release 版のときだけたまに nvoglv64.dll でアクセス違反が起こっていました。

ちゃんと調べてみたらバインドするテクスチャの実データと指定フォーマットが異なっていたのが原因のようでした。実データでは 3 チャンネルの画像に対して GL_RGBA を glTexImage に指定していたので、範囲外アクセス起こってました。

範囲外アクセスは条件によっては起きなかったりするので、気づきにくいです。実際、何年か前から起こっていましたがずっと気づかなかったです。

とりあえず決め打ちでハードコードしてそのまま忘れてしまったパターンですね。とりあえず決め打ちでもアサート入れておくのは大事ですね。

  このエントリーをはてなブックマークに追加  

FE ヒーローズ 「白夜のお正月」ガチャ各色レアリティ排出率の計算

公開日: 2018/01/02 | カテゴリ: Note | タグ: feh, ガチャ, 確率

ファイアーエムブレムヒーローズで 2017/12/31(日) から開催されている「白夜のお正月」ガチャで各色を引いたときの星5出現確率を計算し、必要な試行回数と必要オーブ数の期待値を出してみました。

星5出現試行回数 必要オーブ数(1回4オーブ計算) 必要オーブ数(1回5オーブ計算)
14.69133106 59 73
31.60956913 126 158
12.20238741 49 61
16.11193881 64 81
合計 16.66666667 67 83
星5ピックアップ出現試行回数 必要オーブ数(1回4オーブ計算) 必要オーブ数(1回5オーブ計算)
30.43204292 122 152
出現しない 出現しない 出現しない
18.9261519 76 95
25.48316853 102 127
合計 33.33333333 133 167

やはり、ピックアップの色が 3 色のみのときは 4 色のときに比べて、ピックアップ色を引いた時の星 5 出現率が高いので、引いてもいいかなという気になります。結局ちょっとの確率の差なんて微々たるものなので、爆死も神引きも運次第ではあるんですけど、期間が長いので、スキル素材回収ついでに回せるのはありがたいです。

個人的には飛行で踊りを持っている正月アクアを確保しておきたいですが、赤素材が足りていないのとエリウッドを 10 凸したいので、緑と赤を中心に引こうかと思います。また、結果は追記します。

追記: このガチャの私の成果ですが、結局、正月アクアが欲しかったので、緑限定で 230 オーブほど引きましたが、シーマ1体と、緑がないときに引いた赤で正月カミラ1体が出るという残念な結果に終わりました。やはり、理論的に計算した確率なんてあんま宛にならないですね。

  このエントリーをはてなブックマークに追加  

Visual Studio 2017 でデバッグ実行時にエラーが出てデバッグ実行できない

公開日: 2017/12/28 18:20 | カテゴリ: PC/Software | タグ: Visual Studio, エラー

Visual Studio 2017 でデバッグ実行時に毎回「プログラム 'C:\Projects\Hoge\x64\Release\Hoge.exe' を開始できません。起動されたオブジェクトはクライアントから切断されました。」というエラーダイアログが出るようになってしまいました。同じエラーに遭遇した人のために解決方法をメモしておきます。

Release 版をデバッグなしで実行したあときにアプリケーションがクラッシュしたのでデバッグするためにVisual Studioにプログラムをアタッチしようとしてから、このエラーが出て、それ以降、デバッグ実行をすると毎度このエラーが出てデバッグ実行ができなくなってしまいました。

この症状は、単に Visual Studio を再起動するだけで直るようです。私は普段 Visual Studio を起動したまま PC をスリープする運用をしていたので、気づくのに時間がかかりました。しばらくデバッグ実行をあきらめてプログラムを書いていたのが阿保らしい。問題が何かおこあったときはとりあえず何も考えず再起動は試せってことです。

とは言え、プログラムを Visual Studio 2017 にアタッチすると私の手元では必ず起こってしまうようなので、アタッチしないように気を付けようと思います。

  このエントリーをはてなブックマークに追加  
0   1  2  3  4  5  6  

にほんブログ村 デザインブログ グラフィックアートへ
Links

参考になりそうなブログやサイトを見つけたら勝手にリンクを貼らせてもらっています。
リンク削除を希望の場合はお手数ですがメールにてご一報下さい。
Ke-Sen Huang's Home Page        Disney Research        VIDEO COPILOT        AbandonedArt.org
ryoji ikeda        チームラボ        トルク with AR三兄弟        DAITO MANABE

Copyright(C)2006-2018 wsp All Rights Reserved