* チラ裏 [#o5b8ddb3] ** 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 さんでも戻る方法ってあるんですかね? |