前回に引き続きクロージャです.
クロージャを実現するために, コンパイラは裏側でクラスを作成します.
もしスマートフォン向けのアプリケーションを開発しているのならば,
これだけでも高いコストを支払っています.
かなり強引な例ですが, 以下のようなコードの場合を考えます.
Destroyボタンを押してから, Unloadボタンを押してもテクスチャは解放されません.
Clearボタンを押してから, Unloadボタンを押すことで解放されます.
クラスはどこかから参照されているかぎり, ガーベージコレクタによって削除されません.
明らかにLoaderの実装に欠点がありますが,
texture変数は, コード上ではスコープから外れて参照が切れているように見えてしまっている、
ことも問題です.
2016年7月8日金曜日
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)));
}
2016年3月10日木曜日
Ray Tracing in One Weekend
Ray Tracing in One Weekend,
Ray Tracing: the Next Week,
がKindle向けに出ている.
Realistic Ray Tracing の共著者の一人,
Peter Shirley さんの本であってるかな?
Ray Tracing: the Next Week,
がKindle向けに出ている.
Realistic Ray Tracing の共著者の一人,
Peter Shirley さんの本であってるかな?
登録:
投稿 (Atom)