- 追加された行はこの色です。
- 削除された行はこの色です。
* チラ裏 [#o5b8ddb3]
** CILをC#から読み込む [#g510ea55]
** 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 さんでも戻る方法ってあるんですかね?