DoxyPressは, GUIライブライCopperSpiceの作者らが, Doxygenからフォークしたドキュメンテーションソフトウェア.
Doxygenの出力HTMLがイケてると思えず, かといって自作するモチベーションもない中,
cldocやsphinxを検討した結果, DoxyPressが一番マシじゃないかと思ったりしました.
構文解析はあってほしい, 楽したい.
出力はDoxygenと変わらないと思うが, それならばコードのリファクタリングを行ったDoxyPressを選択しない理由がない.
sphinxはコード以外の文書に使えそう, 覚えておこう.
2017年9月9日土曜日
2017年5月10日水曜日
2017年5月4日木曜日
2017年5月3日水曜日
2016年12月15日木曜日
2016年11月17日木曜日
2016年11月13日日曜日
2016年10月12日水曜日
Visual Studioの文字列リテラルの文字コードを設定する
#pragma execution_character_set("utf-8")
と書くと翻訳単位毎にリテラルの文字コードを設定できる.さらに, clのオプション/FIは, 全てのソースファイルに対して強制的にインクルードするファイルを指定する.
forceinclude.hに, execution_character_setを書いて,
cl.exe /FIforceinclude.hとすれば, やりたいことができるんじゃないかな.
2016年9月14日水曜日
Markdown をプレビューする
MarkdownPreview
MarkdownSharpと.NetのWebbrowserを使ってプレビューを試みる.
Markdownをプレビューするだけの機械.
カンファレンスのメモ取りに, Markdownを使おうとしたことがあった.
しかし, スタンドアロンのエディタに満足できそうなものがない.
VimのMarkdownプレビューも試したが満足できなかった.
時間ができたので作ったよ.
気に入らないところがあれば好きに弄るがいいです.
MarkdownSharpと.NetのWebbrowserを使ってプレビューを試みる.
Markdownをプレビューするだけの機械.
カンファレンスのメモ取りに, Markdownを使おうとしたことがあった.
しかし, スタンドアロンのエディタに満足できそうなものがない.
VimのMarkdownプレビューも試したが満足できなかった.
時間ができたので作ったよ.
気に入らないところがあれば好きに弄るがいいです.
2016年8月1日月曜日
2016年7月30日土曜日
2016年7月29日金曜日
population count
32bitのpopulation count
1のビットを数え上げる
コンパイラ組み込み関数を使わない場合,
1のビットを数え上げる
コンパイラ組み込み関数を使わない場合,
inline u32 population_count(u32 v)
{
v = (v & 0x55555555U) + ((v>>1) & 0x55555555U);
v = (v & 0x33333333U) + ((v>>2) & 0x33333333U);
v = (v & 0x0F0F0F0FU) + ((v>>4) & 0x0F0F0F0FU);
v = (v & 0x00FF00FFU) + ((v>>8) & 0x00FF00FFU);
return (v & 0x0000FFFFU) + ((v>>16) & 0x0000FFFFU);
}
gccの組み込み関数,int __builtin_popcount(unsigned int x)VCの組み込み関数,
unsigned int __popcnt(unsigned int value)
2016年7月8日金曜日
C#クロージャのUnity3Dにおけるコストについて
前回に引き続きクロージャです.
クロージャを実現するために, コンパイラは裏側でクラスを作成します.
もしスマートフォン向けのアプリケーションを開発しているのならば,
これだけでも高いコストを支払っています.
かなり強引な例ですが, 以下のようなコードの場合を考えます.
Destroyボタンを押してから, Unloadボタンを押してもテクスチャは解放されません.
Clearボタンを押してから, Unloadボタンを押すことで解放されます.
クラスはどこかから参照されているかぎり, ガーベージコレクタによって削除されません.
明らかにLoaderの実装に欠点がありますが,
texture変数は, コード上ではスコープから外れて参照が切れているように見えてしまっている、
ことも問題です.
クロージャを実現するために, コンパイラは裏側でクラスを作成します.
もしスマートフォン向けのアプリケーションを開発しているのならば,
これだけでも高いコストを支払っています.
かなり強引な例ですが, 以下のようなコードの場合を考えます.
Destroyボタンを押してから, Unloadボタンを押してもテクスチャは解放されません.
Clearボタンを押してから, Unloadボタンを押すことで解放されます.
クラスはどこかから参照されているかぎり, ガーベージコレクタによって削除されません.
明らかにLoaderの実装に欠点がありますが,
texture変数は, コード上ではスコープから外れて参照が切れているように見えてしまっている、
ことも問題です.
2016年6月18日土曜日
2016年5月7日土曜日
_mm_load1_ps(_mm_load_ps1), _mm_set1_ps(_mm_set_ps1)
_mm_load1_ps(_mm_load_ps1)と, _mm_set1_ps(_mm_set_ps1)
どちらも, movssとshufpsになる.
最初から参照のものは_mm_load1_ps,
定数や参照でないものは_mm_set1_ps,
という使い分けでいいと思われる.
_mm_load1_psの存在意味がわからないな.
他のロード系命令との対応と, _mm_set1_ps(*x)と書かなくてもよいぐらい?
ポインタのエイリアスを意識したプログラムを書いてないので,
ここだけ頑張っても, という気もする
どちらも, movssとshufpsになる.
最初から参照のものは_mm_load1_ps,
定数や参照でないものは_mm_set1_ps,
という使い分けでいいと思われる.
_mm_load1_psの存在意味がわからないな.
他のロード系命令との対応と, _mm_set1_ps(*x)と書かなくてもよいぐらい?
ポインタのエイリアスを意識したプログラムを書いてないので,
ここだけ頑張っても, という気もする
2016年4月10日日曜日
2016年3月11日金曜日
ACES Filmic Tone Mapping Curve の近似の近似
ACES Filmic Tone Mapping Curve(Krzysztof Narkowicz)
float3 ACESFilm(float3 x)
{
float a = 2.51f;
float b = 0.03f;
float c = 2.43f;
float d = 0.59f;
float e = 0.14f;
return saturate((x*(a*x+b))/(x*(c*x+d)+e));
}
の近似. 定義域を[0 2]に狭める.
//domain x: [0 2]
float3 ACESFilmApprox(float3 x)
{
return -0.053173 + x*(2.170622 + x*(-2.132296 + x*(0.996822 + x*-0.176583)));
}
登録:
投稿 (Atom)
