• 追加された行はこの色です。
  • 削除された行はこの色です。
* チラ裏 [#o5b8ddb3]

** C# コマンドライン引数を解析するライブラリ 17-09-17 [#c07d93c4]

こんなものがあるらしいです。一度使ってみよう!

https://wiki.dobon.net/index.php?.NET%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%B8%A6%B5%E6%2F108

** C# MEF と AppDomain でDLLをシャドウコピーする 17-09-13 [#w303e91c]

分かりやすいサンプル。ありがたや!

https://coderwall.com/p/fusuww/remove-mef-plugin-at-runtime

** C# で DLL を Assembly やら AppDomain を使わず簡単に読み込む 17-09-13 [#l49546e3]

MEF というものがあるらしいです。やってみたらめちゃんこ簡単でした。
そしてホットリロードにも対応しているっぽい?DLL のファイルロックを回避できるかどうかが気になります。
https://tocsworld.wordpress.com/2014/02/16/mef%E3%81%AB%E3%82%88%E3%82%8Bc%E3%82%A2%E3%83%89%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E6%88%90/

ImportMany を使わない場合はこんな感じ。
#code(csharp){{
var plugins = container.GetExportedValues<IPlugin>().ToArray();
}}
** C# の DLL をファイルロックせずに読み込む 17-09-12 [#xce87f64]

シャドウコピーという機能を使えばいけるみたい。いちいちコピーしなくてもいいんですね!
http://d.hatena.ne.jp/akiramei/20071111/1194786373

** 高速なハッシュ関数 17-08-20 [#d1b3ed3c]

まとめページ。ありがたや!
http://www.yosbits.com/wordpress/?p=1442

** [スライド] スクールガールストライカーズの内製クライアントエンジン 17-08-20 [#q93a0ff3] 

キャッシュにのりやすくすると消費電力が減る、あまり考えてなかったなぁ。参考になりました!
http://www.jp.square-enix.com/info/images/image_technical_seminar2014_06/pdf/SQEX_DevCon_sugimoto.pdf
** シフト演算の"31" 17-07-12 [#zacfb9a0]
シフト演算を使うC#からはき出されたILコード。
突如出てくる31に最初はてなマークだったんですが、これは32以上シフトさせないようにしてるんですね。
std::max(val, 2の累乗-1) は and でできるってことなんですね。はー!知らなかった!
#code(csharp){{
// 元コード(C#)
        public static uint ShiftRight(uint aA0, int aA1)
        {
            return aA0 >> aA1;
        }
}}
#code(il){{
// IL
.method public hidebysig static uint32  ShiftRight(uint32 aA0,
                                                   int32 aA1) cil managed
{
  // コード サイズ       7 (0x7)
  .maxstack  8
  IL_0000:  ldarg.0
  IL_0001:  ldarg.1
  IL_0002:  ldc.i4.s   31
  IL_0004:  and
  IL_0005:  shr.un
  IL_0006:  ret
} // end of method BinaryOpExpression::ShiftRight

}}
** CILをC#から読み込む 17-07-06 [#g510ea55]
CILバイトコードを解析してC#で扱いやすい形にする方法。とても丁寧なサンプル!
http://badamczewski.blogspot.jp/2011/02/il-reading.html

** CILでGeneric 17-07-06 [#ad681afd]

びっくりマークの意味は分かった。ILのGeneric表現もっと知りたいー!
https://stackoverflow.com/questions/9811456/generics-with-il

** CIL命令一覧その2 17-07-06 [#yaab6030]

自動翻訳だけど日本語!ありがたい!
https://msdn.microsoft.com/ja-jp/library/system.reflection.emit.opcodes(v=vs.110).aspx

** CIL命令一覧 17-07-04 [#c2de9d0c]

wikipediaさん。pdfより軽いのでありがたい!
https://en.wikipedia.org/wiki/List_of_CIL_instructions

** ノイズ関数 17-07-04 [#sd982ada]

シェーダー上で時々使うノイズ関数。シンプル&便利ー!
https://www.shadertoy.com/view/4lf3DH

以下、コードの転載。
#code(c){{
//note: normalized rand, [0;1[
float nhash21( vec2 n )
{
  return fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453);
}

vec2 nhash22( vec2 n )
{
  return fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* vec2(43758.5453,35458.5734));
}
vec2 shash22( vec2 p )
{
    return nhash22(p)*2.0-1.0;
}

//note: [-1;1]
//note: honestly stolen from iq: https://www.shadertoy.com/view/Xsl3Dl
vec3 nhash33( vec3 p )
{
	p = vec3( dot(p,vec3(127.1,311.7, 74.7)),
			  dot(p,vec3(269.5,183.3,246.1)),
			  dot(p,vec3(113.5,271.9,124.6)));
	return fract(sin(p)*43758.5453123);
}
vec3 shash33( vec3 p )
{
    return -1.0+2.0*nhash33(p);
}

vec2 smootherstep( vec2 t )
{
    return t*t*t*(t*(t*6.0-15.0)+10.0);
}

//note: value noise
float nhash11( float n )
{
    return fract(sin(n)*43758.5453);
}
float nvnoise21( vec2 x )
{
    vec2 p = floor(x);
    vec2 f = fract(x);
    f = smoothstep(0.0,1.0,f);
    float n = p.x + p.y*57.0;
    float res = mix( mix( nhash11(n+  0.0), nhash11(n+  1.0),f.x),
                     mix( nhash11(n+ 57.0), nhash11(n+ 58.0),f.x), f.y);
    return res;
}
float nfbm21( vec2 p )
{
    mat2 m = mat2( 0.80,  0.60, -0.60,  0.80 );
    float f = 0.0;
    f += 0.50000*nvnoise21( p ); p = m*p*2.02;
    f += 0.25000*nvnoise21( p ); p = m*p*2.03;
    f += 0.12500*nvnoise21( p ); p = m*p*2.01;
    f += 0.06250*nvnoise21( p ); p = m*p*2.04;
    f += 0.03125*nvnoise21( p );
    return f / (0.5+0.25+0.125+0.06250+0.03125);
}


//note: gradient noise
float sgnoise21( vec2 p )
{
	vec2 i = floor( p );
    vec2 f = fract( p );
    vec2 u = smoothstep( 0.0, 1.0, f );
    //vec2 u = smootherstep( f );

    //return dot( f-vec2(1.0,0.0), vec2(0.5,0.5) );
    //return dot( shash22( i + vec2(1.0,0.0) ), f - vec2(1.0,0.0) );
    
   return mix( mix( dot( shash22( i + vec2(0.0,0.0) ), f - vec2(0.0,0.0) ),
                    dot( shash22( i + vec2(1.0,0.0) ), f - vec2(1.0,0.0) ), u.x),
               mix( dot( shash22( i + vec2(0.0,1.0) ), f - vec2(0.0,1.0) ), 
                    dot( shash22( i + vec2(1.0,1.0) ), f - vec2(1.0,1.0) ), u.x), u.y);
}
float ngnoise21( vec2 p )
{
    return 0.5 + 0.5 * sgnoise21( p );
}

//note: [-1;1]
float sgnoise31( in vec3 p )
{
   vec3 i = floor( p );
   vec3 f = fract( p );

	vec3 u = f*f*(3.0-2.0*f);

   return mix( mix( mix( dot( shash33( i + vec3(0.0,0.0,0.0) ), f - vec3(0.0,0.0,0.0) ), 
                         dot( shash33( i + vec3(1.0,0.0,0.0) ), f - vec3(1.0,0.0,0.0) ), u.x),
                    mix( dot( shash33( i + vec3(0.0,1.0,0.0) ), f - vec3(0.0,1.0,0.0) ), 
                         dot( shash33( i + vec3(1.0,1.0,0.0) ), f - vec3(1.0,1.0,0.0) ), u.x), u.y),
               mix( mix( dot( shash33( i + vec3(0.0,0.0,1.0) ), f - vec3(0.0,0.0,1.0) ), 
                         dot( shash33( i + vec3(1.0,0.0,1.0) ), f - vec3(1.0,0.0,1.0) ), u.x),
                    mix( dot( shash33( i + vec3(0.0,1.0,1.0) ), f - vec3(0.0,1.0,1.0) ), 
                         dot( shash33( i + vec3(1.0,1.0,1.0) ), f - vec3(1.0,1.0,1.0) ), u.x), u.y), u.z );
}
float ngnoise31( in vec3 p )
{
	return 0.5 + 0.5 * sgnoise31( p );
}

float nfbm31( vec3 q )
{
    const mat3 m = mat3( 0.00,  0.80,  0.60,
                    -0.80,  0.36, -0.48,
                    -0.60, -0.48,  0.64 );

	float f = 0.0;
	f  = 0.5000*ngnoise31( q ); q = m*q*2.01;
	f += 0.2500*ngnoise31( q ); q = m*q*2.02;
	f += 0.1250*ngnoise31( q ); q = m*q*2.03;
	f += 0.0625*ngnoise31( q ); q = m*q*2.01;
	
	return f;
}

}}
** xenko さんを触ってみた 17-07-03 [#g31b024f]

シリコンスタジオさん制作のオープンソースなゲームエンジン。たぶん Made in Japan!わくわく!
https://xenko.com/

UIの参考にと思って触ってみました。

プロパティグリッドの戻るボタンはシンプルな解決法で良いなぁと思いました。
Unity さんだとアセットをドラッグしようとして誤ってシングルクリックしてプロパティウィンドウの内容が変わる事故が頻発する私。
Unity さんでも戻る方法ってあるんですかね?


    ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS