<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7392531245685108862</id><updated>2011-10-27T17:45:35.352+08:00</updated><category term='C++'/><category term='Open Light Mapper'/><category term='琵琶 音樂'/><title type='text'>MiNg's Anything</title><subtitle type='html'>I put anything here</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-5797021252261239578</id><published>2011-10-18T12:10:00.001+08:00</published><updated>2011-10-27T17:45:01.294+08:00</updated><title type='text'>A little WebGL test</title><content type='html'>&lt;script type="text/javascript" src="https://raw.github.com/ming4883/Crender-webgl/master/examples/libs/webgl-utils.js"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="https://raw.github.com/ming4883/Crender-webgl/master/examples/libs/glMatrix-0.9.5.min.js"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="https://raw.github.com/ming4883/Crender-webgl/master/examples/libs/crender.js"&gt;&lt;/script&gt;&lt;script id="test-1-shader-fs" type="x-shader/x-fragment"&gt; precision highp float;void main(void) { gl_FragColor = vec4(163.0 / 255.0, 41.0 / 255.0, 92.0 / 255.0, 1.0);}&lt;/script&gt;  &lt;script id="test-1-shader-vs" type="x-shader/x-vertex"&gt; attribute vec3 i_vertex;uniform mat4 u_mvpMatrix;void main(void) { gl_Position = u_mvpMatrix * vec4(i_vertex, 1.0);}&lt;/script&gt;&lt;script type="text/javascript"&gt;var test_1_running = false;function test1() {  if(test_1_running) return;var prog;var vb;var vertices = [   0.0,  1.0,  0.0,  -1.0, -1.0,  0.0,   1.0, -1.0,  0.0];var rot = 0;function init() {  prog = crCreateProgramDOM(["test-1-shader-vs", "test-1-shader-fs"]);  vb = crCreateVertexBuffer(new Float32Array(vertices), gl.STATIC_DRAW);}function render() {  rot += 1.0;  crClearColorBuffer(118 / 255.0, 175 / 255.0, 44 / 255.0, 1.0);  crClearDepthBuffer(1.0);  // render states  gl.disable(gl.CULL_FACE);  gl.disable(gl.DEPTH_TEST);  var pMatrix = mat4.create();  var vMatrix = mat4.create();  var vpMatrix = mat4.create();    mat4.identity(vMatrix);  mat4.translate(vMatrix, [0.0, 0.0, -10.0]);  mat4.identity(pMatrix);  mat4.perspective(45.0, gl.canvasWidth / gl.canvasHeight, 0.1, 100.0, pMatrix);  mat4.multiply(pMatrix, vMatrix, vpMatrix);  // program  gl.useProgram(prog);  // input  i_vertex = gl.getAttribLocation(prog, "i_vertex");  gl.enableVertexAttribArray(i_vertex);  gl.bindBuffer(gl.ARRAY_BUFFER, vb);  gl.vertexAttribPointer(i_vertex, 3, gl.FLOAT, false, 0, 0);  // draw calls  var dist = [-2.0, 0.0, 2.0];  var ang = rot * Math.PI / 180.0;  for(i=0; i&lt;dist.length; ++i) {    var mMatrix = mat4.create();    var mvpMatrix = mat4.create();    mat4.identity(mMatrix);    mat4.rotateY(mMatrix, ang, mMatrix);    mMatrix[12] = dist[i];    mMatrix[13] = 0.0;    mMatrix[14] = 0.0;    mat4.multiply(vpMatrix, mMatrix, mvpMatrix);    {  var loc = gl.getUniformLocation(prog, "u_mvpMatrix");    gl.uniformMatrix4fv(loc, false, mvpMatrix);    }    gl.drawArrays(gl.TRIANGLES, 0, 3);  }}function tick() {  requestAnimFrame(tick);  render();}  var canvas = document.getElementById("test-1-canvas");  crInit(canvas);  init();  tick();  test_1_running = true;}&lt;/script&gt;This blog has not been updated for a long time, so &lt;a onclick="test1();" &gt;here&lt;/a&gt; comes a little WebGL test :-)&lt;br/&gt;&lt;canvas id="test-1-canvas" style="border: none;" width="640" height="360"&gt;&lt;/canvas&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-5797021252261239578?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/5797021252261239578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=5797021252261239578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/5797021252261239578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/5797021252261239578'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2011/10/little-webgl-test.html' title='A little WebGL test'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-8858586072949534853</id><published>2009-09-08T17:40:00.002+08:00</published><updated>2009-09-08T17:45:05.463+08:00</updated><title type='text'>Ogre::BoneHandleMap (笑)</title><content type='html'>看了半天依然想不透這為什麼是一個 map...&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;typedef std::vector&lt;ushort&gt; BoneHandleMap;&lt;br /&gt;void Skeleton::_buildMapBoneByHandle&lt;br /&gt;    (const Skeleton* src,&lt;br /&gt;    BoneHandleMap&amp; boneHandleMap) const&lt;br /&gt;{&lt;br /&gt;    ushort numSrcBones = src-&gt;getNumBones();&lt;br /&gt;    boneHandleMap.resize(numSrcBones);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    for (ushort handle = 0; handle &lt; numSrcBones; ++handle)&lt;br /&gt;    {&lt;br /&gt;        // 這裡是重點... -_- handle = [0..numSrcBones-1]&lt;br /&gt;        boneHandleMap[handle] = handle;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-8858586072949534853?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/8858586072949534853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=8858586072949534853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/8858586072949534853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/8858586072949534853'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2009/09/ogrebonehandlemap.html' title='Ogre::BoneHandleMap (笑)'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-7332536589772942020</id><published>2009-08-24T23:25:00.005+08:00</published><updated>2009-08-24T23:58:40.427+08:00</updated><title type='text'>Photon Mapping 閱讀小記</title><content type='html'>以下是閱讀 Realistic Image Synthesis Using Photon Mapping (Ch5) 記下的一些重點:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Power of photons:&lt;br /&gt;The power ("wattage") of the light source is divided among all the emitted photons, and each photon therefore transports a fraction of the light source power. It is important to note that the power of the photon is proportional only to the number of emitted photons and NOT to the number of photons stored in the model.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Emitted photons from a diffuse point light source:&lt;pre&gt;&lt;br /&gt;emit_photon_from_diffuse_point_light() {&lt;br /&gt;  n = 0;&lt;br /&gt;  while(not enough photons) {&lt;br /&gt;    do {&lt;br /&gt;      x = rand_0_1() * 2.0 - 1.0;&lt;br /&gt;      y = rand_0_1() * 2.0 - 1.0;&lt;br /&gt;      z = rand_0_1() * 2.0 - 1.0;&lt;br /&gt;    } while(x*x + y*y + z*z &gt;1);&lt;br /&gt;    d = vector3(x, y, z);&lt;br /&gt;    p = light source position;&lt;br /&gt;    trace photon from p in direction d&lt;br /&gt;    n = n + 1;&lt;br /&gt;  }&lt;br /&gt;  scale power of stored photons with 1 / n&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Specular Reflection&lt;br /&gt;If a photon hits a mirror surface:&lt;br /&gt;1. A new photon is reflected in w = 2 * dot(n,w') * n - w'. Where n is the surface normal, and w' is the incoming direction.&lt;br /&gt;2. The power of the reflected photon = The power of incoming photon * surface reflectivity.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Diffuse Reflection&lt;br /&gt;If a photon hits a diffuse surface:&lt;br /&gt;1. It is stored in the photon map.&lt;br /&gt;2. A new photon is reflected in a random direction in the hemisphere above the intersection point.&lt;br /&gt;3. The power of the reflected photon = The power of incoming photon * diffuse reflectance.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-7332536589772942020?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/7332536589772942020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=7332536589772942020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/7332536589772942020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/7332536589772942020'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2009/08/photon-mapping.html' title='Photon Mapping 閱讀小記'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-2166998599507861491</id><published>2009-08-14T23:31:00.002+08:00</published><updated>2009-08-17T11:03:56.085+08:00</updated><title type='text'>Test Facebook Share</title><content type='html'>這是 Facebook 分享的測試，請按以下連結在 Facebook 分享此 URL:&lt;br /&gt;&lt;br /&gt;&lt;script&gt;function fbs_click() {u=location.href;t=document.title;window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&amp;t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');return false;}&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;style&gt; html .fb_share_link { padding:2px 0 0 20px; height:16px; background:url(http://static.ak.fbcdn.net/rsrc.php/z39E0/hash/ya8q506x.gif) no-repeat top left; }&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/share.php?u=&lt;url&gt;" onclick="return fbs_click()" target="_blank" class="fb_share_link"&gt;Share on Facebook&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;:-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-2166998599507861491?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/2166998599507861491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=2166998599507861491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/2166998599507861491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/2166998599507861491'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2009/08/test-facebook-share.html' title='Test Facebook Share'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-2814812821768245839</id><published>2009-08-05T14:05:00.007+08:00</published><updated>2009-08-05T14:33:48.569+08:00</updated><title type='text'>SSAO with Importance Sampling</title><content type='html'>看完了 ShaderX7 中的 Efficient Post-Processing with Importance Sampling，終於有時間把它加入到 SSAO中了。&lt;br /&gt;&lt;br /&gt;以下是使用了16個樣本的 SSAO 效果:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5ttOZC05zLM/SnklZWErKwI/AAAAAAAAAls/zHTxerDvHrk/s1600-h/ssao_uniform.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://4.bp.blogspot.com/_5ttOZC05zLM/SnklZWErKwI/AAAAAAAAAls/zHTxerDvHrk/s400/ssao_uniform.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5366361548340800258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5ttOZC05zLM/SnkliJgYxlI/AAAAAAAAAl0/QWcmphtLBZA/s1600-h/ssao_importance.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://4.bp.blogspot.com/_5ttOZC05zLM/SnkliJgYxlI/AAAAAAAAAl0/QWcmphtLBZA/s400/ssao_importance.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5366361699586197074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;效能上兩者沒有分別 (因為樣本是offline產成的)，但結果則大家有目共堵。&lt;br /&gt;&lt;br /&gt;其中的樣本是使用了&lt;a href="http://code.google.com/p/m-any/source/browse/trunk/IllumStudio/SSAOSampler/ssao_sampler.py"&gt;這個&lt;/a&gt; python 源碼產成的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-2814812821768245839?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/2814812821768245839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=2814812821768245839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/2814812821768245839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/2814812821768245839'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2009/08/ssao-with-importance-sampling.html' title='SSAO with Importance Sampling'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5ttOZC05zLM/SnklZWErKwI/AAAAAAAAAls/zHTxerDvHrk/s72-c/ssao_uniform.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-544340303689820698</id><published>2009-08-02T09:37:00.003+08:00</published><updated>2009-08-02T10:01:20.196+08:00</updated><title type='text'>Simple Real Time Global Illumination: Ambient Cube</title><content type='html'>最近重看了一遍&lt;a href="http://www.google.com.hk/url?q=http://www.valvesoftware.com/publications/2006/SIGGRAPH06_Course_ShadingInValvesSourceEngine.pdf&amp;ei=P-50SvT2DMySkQXaveGXDA&amp;sa=X&amp;oi=spellmeleon_result&amp;resnum=1&amp;ct=result&amp;usg=AFQjCNE_6d40rIKAbEahiWmYB1iNJvGYLQ"&gt;Shading In Valves Source Engine&lt;/a&gt;，對其中的 Ambient Cube很有興趣，因此在構思了一段時間後，花了幾天終於把基本的原理實作了。&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-fb1cc625c22ba0b9" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v22.nonxt3.googlevideo.com/videoplayback?id%3Dfb1cc625c22ba0b9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330412178%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1BD86E9AF34FB9D8E627CA703E2B18B34FF5F4FC.11617FDE997DE3664884164FAC2302F6F812D7DB%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dfb1cc625c22ba0b9%26offsetms%3D5000%26itag%3Dw160%26sigh%3D8GCctburYx8U9EbDTkMDNEVxr04&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v22.nonxt3.googlevideo.com/videoplayback?id%3Dfb1cc625c22ba0b9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330412178%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D1BD86E9AF34FB9D8E627CA703E2B18B34FF5F4FC.11617FDE997DE3664884164FAC2302F6F812D7DB%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dfb1cc625c22ba0b9%26offsetms%3D5000%26itag%3Dw160%26sigh%3D8GCctburYx8U9EbDTkMDNEVxr04&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;片段中有一個場景，以及兩個移動的Chamfer Box:&lt;br /&gt;場景是以Light Map照光的，而兩個Chamfer Box則是以Ambient Cube照光。我們可以清楚看見當兩個Chamfer Box移動時，它們會受到場景的 indirect-lighting所影響。&lt;br /&gt;&lt;br /&gt;由於我沒有時間像Valve一樣去編寫自己的Radiosity Processor,因此Ambient Cube的資料是在3dsMax中以Vertex Color烘焙再以Maxscript導去，因此受到限制而未能支援HDR Light T_T。&lt;br /&gt;&lt;br /&gt;希望遲些會有時間把Demo改善到支援較大的場景，以及再寫更多有關Ambient Cube的講解吧。&lt;br /&gt;&lt;br /&gt;註:Ambient Cube只需要支援Shader Model 1.0的顯示卡便可以使用 (Valve真的很強!!)。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-544340303689820698?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=fb1cc625c22ba0b9&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/544340303689820698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=544340303689820698' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/544340303689820698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/544340303689820698'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2009/08/simple-real-time-global-illumination.html' title='Simple Real Time Global Illumination: Ambient Cube'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-197011174145135467</id><published>2009-07-04T18:25:00.005+08:00</published><updated>2009-07-06T09:56:27.776+08:00</updated><title type='text'>.NET中 Contorl.Invoke() 及 BeginInvoke() 小記</title><content type='html'>由於最近開始研究 responsive UI 的問題，在網路上終於找到了一篇與 Control.Invoke() / BeginInvoke() 以及 Thread 的&lt;a href="http://www.cnblogs.com/whssunboy/archive/2007/06/07/775319.html"&gt;文章&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;文章中舉了四個例子，第一及第二個例子解釋了一般人對 Control.Invoke() / BeginInvoke() 的誤解 (我也是其中一人。 :-P )&lt;br /&gt;而第三及第四個例子側是 Control.Invoke() / BeginInvoke() 與 Thread 結合後的範例。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-197011174145135467?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/197011174145135467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=197011174145135467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/197011174145135467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/197011174145135467'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2009/07/net-contorlinvoke-begininvoke.html' title='.NET中 Contorl.Invoke() 及 BeginInvoke() 小記'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-8626820281351318817</id><published>2009-05-23T00:47:00.009+08:00</published><updated>2009-05-23T13:06:21.487+08:00</updated><title type='text'>Tangent Space Normal Mapping 小記</title><content type='html'>以下是一些網路上有關Tangent Space Normal Mapping 的文章:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.3dkingdoms.com/weekly/weekly.php?a=37"&gt;一篇不錯的介紹(適合Copy &amp; Paste的用途)，另外作者提及了Gram-Schmidt orthogonalization&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blog.xuite.net/laishiekai/studio/22889610?ref=rel"&gt;一個解決 mirrored UV 的有趣方法&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.blacksmith-studios.dk/projects/downloads/tangent_matrix_derivation.php"&gt;一篇 derive Tangent Space 算法的文章&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Gram-Schmidt"&gt;Wikipedia 上有關Gram-Schmidt orthogonalization 的資料&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=521915"&gt;Normal Mapping WITHOUT Precomputed Tangents&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-8626820281351318817?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/8626820281351318817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=8626820281351318817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/8626820281351318817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/8626820281351318817'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2009/05/tangent-space-normal-mapping.html' title='Tangent Space Normal Mapping 小記'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-5783122941723656490</id><published>2009-05-21T18:44:00.002+08:00</published><updated>2009-05-21T18:57:59.430+08:00</updated><title type='text'>在VC中找Memory Leak 的小技巧</title><content type='html'>首先在程式的載入點加入:&lt;br /&gt;&lt;br /&gt;void main()&lt;br /&gt;{&lt;br /&gt;  int dbgFlags;&lt;br /&gt;&lt;br /&gt;  dbgFlags = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );&lt;br /&gt;  dbgFlags |= _CRTDBG_DELAY_FREE_MEM_DF;&lt;br /&gt;  dbgFlags |= _CRTDBG_LEAK_CHECK_DF;&lt;br /&gt;  _CrtSetDbgFlag( dbgFlags);&lt;br /&gt;&lt;br /&gt;  /* your program code */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;之後在 memory leak 時會出現類似訊息:&lt;br /&gt;&lt;br /&gt;C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18} &lt;br /&gt;normal block at 0x00780E80, 64 bytes long.&lt;br /&gt; Data: &lt;                &gt; CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD&lt;br /&gt;Object dump complete.&lt;br /&gt;&lt;br /&gt;訊息中的{18}是 Allocation Number，只要使用&lt;br /&gt;_CrtSetBreakAlloc(18);&lt;br /&gt;&lt;br /&gt;便能夠在 memory leak 的地方停止。&lt;br /&gt;&lt;br /&gt;例:&lt;br /&gt;&lt;br /&gt;void main()&lt;br /&gt;{&lt;br /&gt;  int dbgFlags;&lt;br /&gt;&lt;br /&gt;  dbgFlags = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);&lt;br /&gt;  dbgFlags |= _CRTDBG_DELAY_FREE_MEM_DF;&lt;br /&gt;  dbgFlags |= _CRTDBG_LEAK_CHECK_DF;&lt;br /&gt;  _CrtSetDbgFlag(dbgFlags);&lt;br /&gt;&lt;br /&gt;  _CrtSetBreakAlloc(18); // break at allocation # 18&lt;br /&gt;&lt;br /&gt;  /* your program code */&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-5783122941723656490?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/5783122941723656490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=5783122941723656490' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/5783122941723656490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/5783122941723656490'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2009/05/vcmemory-leak.html' title='在VC中找Memory Leak 的小技巧'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-8919289147209922743</id><published>2009-02-16T12:19:00.004+08:00</published><updated>2009-02-20T00:15:54.343+08:00</updated><title type='text'>38.7 度</title><content type='html'>由於太耐沒有大病的關係，昨天發燒亦懵然不知。在家勉強的撐了大半天，最後到診所探熱時才發覺自己已經燒到了38.7度... =.=&lt;br /&gt;&lt;br /&gt;前天還是好好的，但昨天病到連站起來也有困難，看來絕對不能小看病菌的威力...&lt;br /&gt;&lt;br /&gt;&lt;div style="margin:0 auto;padding:0 6px;width:400px;background:#fff;"&gt;&lt;table style="margin:0 auto;border:1px #CCCCCC solid;font-size:9pt;width:100%;"&gt;&lt;caption&gt;九型人格分析&lt;/caption&gt;&lt;tr&gt;&lt;td style="padding:6px;color:white;background:#00CC00;"&gt;第一型&lt;/td&gt;&lt;td style="text-align:left;vertical-align:top;padding:0;width:300px;"&gt;&lt;span title="Reformers, Critics, Perfectionists"&gt;完美主義者、完美型、改革者、改進型、秩序大使&lt;/span&gt;&lt;div style="height:1.5em;width:300px;background:#CCCCCC;"&gt;&lt;span style="position:absolute;color:white;"&gt; 18%&lt;/span&gt;&lt;div style="color:white;height:1.5em;width:53px;background:#00CC00;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:6px;color:white;background:#50A3DA;"&gt;第二型&lt;/td&gt;&lt;td style="text-align:left;vertical-align:top;padding:0;width:300px;"&gt;&lt;span title="Helpers, Givers, Caretakers"&gt;助人者、全愛型、助人型、成就他人者、博愛型&lt;/span&gt;&lt;div style="height:1.5em;width:300px;background:#CCCCCC;"&gt;&lt;span style="position:absolute;color:white;"&gt; 15%&lt;/span&gt;&lt;div style="color:white;height:1.5em;width:45px;background:#50A3DA;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:6px;color:white;background:#4682B4;"&gt;第七型&lt;/td&gt;&lt;td style="text-align:left;vertical-align:top;padding:0;width:300px;"&gt;&lt;span title="Enthusiasts, Adventurers, Sensationalists"&gt;快樂主義型、豐富型、活躍型、創造可能者、享樂型&lt;/span&gt;&lt;div style="height:1.5em;width:300px;background:#CCCCCC;"&gt;&lt;span style="position:absolute;color:white;"&gt; 14%&lt;/span&gt;&lt;div style="color:white;height:1.5em;width:41px;background:#4682B4;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:6px;color:white;background:#148571;"&gt;第九型&lt;/td&gt;&lt;td style="text-align:left;vertical-align:top;padding:0;width:300px;"&gt;&lt;span title="Mediators, Peacemakers, Preservationists"&gt;和平型、和平者、和諧型、維持和諧者&lt;/span&gt;&lt;div style="height:1.5em;width:300px;background:#CCCCCC;"&gt;&lt;span style="position:absolute;color:white;"&gt; 13%&lt;/span&gt;&lt;div style="color:white;height:1.5em;width:38px;background:#148571;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:6px;color:white;background:#B177A9;"&gt;第三型&lt;/td&gt;&lt;td style="text-align:left;vertical-align:top;padding:0;width:300px;"&gt;&lt;span title="Achievers, Performers, Succeeders"&gt;成就者、事業型、成就型、實踐型&lt;/span&gt;&lt;div style="height:1.5em;width:300px;background:#CCCCCC;"&gt;&lt;span style="position:absolute;color:white;"&gt; 11%&lt;/span&gt;&lt;div style="color:white;height:1.5em;width:34px;background:#B177A9;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:6px;color:white;background:#FF6347;"&gt;第八型&lt;/td&gt;&lt;td style="text-align:left;vertical-align:top;padding:0;width:300px;"&gt;&lt;span title="Leaders, Protectors, Challengers"&gt;領袖型、能力型、挑戰者、保護者、權威型&lt;/span&gt;&lt;div style="height:1.5em;width:300px;background:#CCCCCC;"&gt;&lt;span style="position:absolute;color:white;"&gt; 10%&lt;/span&gt;&lt;div style="color:white;height:1.5em;width:30px;background:#FF6347;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:6px;color:white;background:#CD5C5C;"&gt;第六型&lt;/td&gt;&lt;td style="text-align:left;vertical-align:top;padding:0;width:300px;"&gt;&lt;span title="Loyalists, Devil's Advocates, Defenders"&gt;忠誠型、忠誠型、尋找安全者、謹慎型&lt;/span&gt;&lt;div style="height:1.5em;width:300px;background:#CCCCCC;"&gt;&lt;span style="position:absolute;color:white;"&gt; 8%&lt;/span&gt;&lt;div style="color:white;height:1.5em;width:23px;background:#CD5C5C;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:6px;color:white;background:#F08080;"&gt;第四型&lt;/td&gt;&lt;td style="text-align:left;vertical-align:top;padding:0;width:300px;"&gt;&lt;span title="Romantics, Individualists, Artists"&gt;藝術型、浪漫者、自我型、憑感覺者&lt;/span&gt;&lt;div style="height:1.5em;width:300px;background:#CCCCCC;"&gt;&lt;span style="position:absolute;color:white;"&gt; 6%&lt;/span&gt;&lt;div style="color:white;height:1.5em;width:19px;background:#F08080;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="padding:6px;color:white;background:#B9B204;"&gt;第五型&lt;/td&gt;&lt;td style="text-align:left;vertical-align:top;padding:0;width:300px;"&gt;&lt;span title="Observers, Thinkers, Investigators"&gt;智慧型、觀察者、思想型、理性分析者、思考型&lt;/span&gt;&lt;div style="height:1.5em;width:300px;background:#CCCCCC;"&gt;&lt;span style="position:absolute;color:white;"&gt; 6%&lt;/span&gt;&lt;div style="color:white;height:1.5em;width:19px;background:#B9B204;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="text-align:right;"&gt;&lt;a href="http://TiQuiz.blogspot.com/2007/08/180.html" style="font-size:9pt;text-decoration:none;"&gt;&lt;span style="color:#ff8000;"&gt;我&lt;/span&gt;&lt;span style="color:#e69919;"&gt;的&lt;/span&gt;&lt;span style="color:#cdb232;"&gt;九&lt;/span&gt;&lt;span style="color:#b4c04b;"&gt;型&lt;/span&gt;&lt;span style="color:#9bc064;"&gt;人&lt;/span&gt;&lt;span style="color:#82c07d;"&gt;格&lt;/span&gt;&lt;span style="color:#69c096;"&gt;分&lt;/span&gt;&lt;span style="color:#50c0af;"&gt;析&lt;/span&gt;&lt;span style="color:#37c0c8;"&gt;？&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-8919289147209922743?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/8919289147209922743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=8919289147209922743' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/8919289147209922743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/8919289147209922743'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2009/02/387.html' title='38.7 度'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-3455066406651494101</id><published>2008-10-27T19:11:00.001+08:00</published><updated>2008-10-27T23:51:52.413+08:00</updated><title type='text'>Ming on SSAO</title><content type='html'>最近在工作上終於再次有機會作圖像編程了 (之前一直都被 Flex/Flash 折磨呢 T_T ...)。&lt;br /&gt;而這次的目標便是要完成一個以 Deferred Shading 為主的渲染系統。&lt;br /&gt;&lt;br /&gt;經過了三個工作天，已經完成了基本的功能 (包括 基本的 deferred Omni-Light shading 及 SSAO ):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_5ttOZC05zLM/SQWjmEocymI/AAAAAAAAAZ0/YznJwDShJnw/s1600-h/SSAO_gfx_demo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 314px;" src="http://4.bp.blogspot.com/_5ttOZC05zLM/SQWjmEocymI/AAAAAAAAAZ0/YznJwDShJnw/s400/SSAO_gfx_demo.jpg" alt="" id="BLOGGER_PHOTO_ID_5261791614126049890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;而我 SSAO 的實作只使用了 16 個 samples (現時並沒有加上 Smart-Gaussian-Blur 等 filter )。&lt;br /&gt;&lt;br /&gt;以下是我計算的 occlusion 的 Cg 源碼 :&lt;br /&gt;&lt;pre style="font-size:85%;font-family: courier new;"&gt;&lt;br /&gt;float occlusion = 0;&lt;br /&gt;&lt;br /&gt;for ( int i=0; i&amp;lt;sampleCnt; ++i )&lt;br /&gt;{&lt;br /&gt;  float3 off = PoissonDisk(i).xyz;&lt;br /&gt;  float4 tapClipPos = mul( g_CamProj, float4( centerPos + off * ssaoRadius, 1 ) );&lt;br /&gt;  float2 tapUV = ( tapClipPos.xy / tapClipPos.ww ) * float2( 0.5, -0.5 ) + float2( 0.5, 0.5 );&lt;br /&gt;&lt;br /&gt;  // compute occlusion&lt;br /&gt;  float4 tapND  = tex2D( g_TexSamp1, tapUV, dx, dy );&lt;br /&gt;  float  tapZ   = ViewZ( tapND );&lt;br /&gt;  float3 tapNrm = ViewNormal( tapND );&lt;br /&gt;&lt;br /&gt;  float deltaZ = max( centerZ - tapZ, 0 );&lt;br /&gt;&lt;br /&gt;  // I use smoothstep for the falloff function&lt;br /&gt;  occlusion += smoothstep( ssaoDecay, 1.0, 1 / ( 1 + deltaZ ) );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;occlusion /= float( sampleCnt );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;註:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;大部份運算在 View-Space 進行&lt;/li&gt;&lt;br /&gt;&lt;li&gt;g_CamProj 是場景中 camera 的 projection matrix&lt;/li&gt;&lt;br /&gt;&lt;li&gt;centerZ 是現時被處理 pixel 的 view-space depth&lt;/li&gt;&lt;br /&gt;&lt;li&gt;tapZ 是 samples 的 view-space depth&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ssaoDecay 是控制 SSAO 深淺度的參數&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ssaoRadius 的值大約等於 20 cm / 0.2 m; 而 screenshot 中的場景大約為 10m x 10m x 10m&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-3455066406651494101?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/3455066406651494101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=3455066406651494101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/3455066406651494101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/3455066406651494101'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2008/10/ming-on-ssao.html' title='Ming on SSAO'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_5ttOZC05zLM/SQWjmEocymI/AAAAAAAAAZ0/YznJwDShJnw/s72-c/SSAO_gfx_demo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-4481871540146606991</id><published>2008-08-27T17:23:00.000+08:00</published><updated>2008-08-27T19:31:12.328+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Light Mapper'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Open Light Mapper</title><content type='html'>經過了兩過多月的辛勞 (差不多每晚都編程到 2:00am 呢... )，終於為自己的第一個 open-source project: Open Light Mapper 完成了 version 0.1.1。&lt;br /&gt;&lt;br /&gt;連結為: &lt;a href="http://sharesource.org/project/olm/"&gt;http://sharesource.org/project/olm/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sharesource.org/project/olm/image/133/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://sharesource.org/project/olm/image/133/" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;由於這次想集中編寫 lightmapper 的功能，因此數學及 ray-casting 的部份使用了 bullet physics 的 LinearMath 及 Collision 。&lt;br /&gt;&lt;br /&gt;以下是 Open Light Mapper 的一些功能 / 特色:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Direct illumination&lt;/li&gt;&lt;li&gt;Ambient Occlusion&lt;/li&gt;&lt;li&gt;Smart-Blur Shadow Filter&lt;/li&gt;&lt;li&gt;3dsmax 8/9/2008/2009 插件&lt;ul&gt;&lt;li&gt;OLM Helper  ( 可以在 3dsmax 中直接作 lightmap 的 焙&lt;span class="definition"&gt;烘&lt;/span&gt; )&lt;/li&gt;&lt;li&gt;支援 3dsmax 的 ambient color, 及基本的燈光類型 ( Omni, Free-Directional, Free Spot, Target-Directional 及 Target-Spot )&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;輸出圖像格式包括&lt;ul&gt;&lt;li&gt;OpenExr&lt;/li&gt;&lt;li&gt;Png&lt;/li&gt;&lt;li&gt;Png 2x modulation&lt;/li&gt;&lt;li&gt;Png 4x modulation&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;特別值得一提的是 Smart-Blur Shadow Filter。這個功能主要針對 lighting map 的 resolution 不夠，鋸齒便會出現在陰影邊緣的問題。一般的解決方法是為 lightmap 進行一個 Box-Filter / Gaussian-Filter，但這不但會使 lightmap 失去光源的細緻紋理，更會衍生出&lt;span class="definition"&gt;"漏光"&lt;/span&gt; (light bleeding)&lt;br /&gt;的問題。Smart-Blur Shadow Filter 便使用了 frequency domain 的方法把陰影的鋸齒消去。(當然 Fourier Transform 的部分是使用了 FFTW :-P)&lt;br /&gt;&lt;br /&gt;以下是應用了 Smart-Blur Shadow Filter 的比較:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sharesource.org/project/olm/image/138/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://sharesource.org/project/olm/image/138/" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;希望在 version 0.1.2 之前能夠完成使用者手冊 :-P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-4481871540146606991?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/4481871540146606991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=4481871540146606991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/4481871540146606991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/4481871540146606991'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2008/08/open-light-mapper.html' title='Open Light Mapper'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-9008342305034561143</id><published>2008-04-19T17:31:00.000+08:00</published><updated>2008-04-21T12:53:51.631+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>GCC &amp; __stdcall</title><content type='html'>今天嘗試以 Mingw 編譯一個 dll 供 C# 使用時，遇到C#在 dll 中 找不到 exported symbol 的問題，於是我便以 &lt;a href="http://www.nirsoft.net/utils/dll_export_viewer.html"&gt;DLL Export Viewer&lt;/a&gt; 檢視一下 dll 中的內容。&lt;br /&gt;&lt;br /&gt;一看之下才發現 dll 中所匯出的涵數名稱全都多了 @nn 的 postfix。由網上閱讀了一篇&lt;a href="http://www.geocities.com/yongweiwu/stdcall.htm"&gt;文章&lt;/a&gt; 後才知道這是 gcc 的特性。&lt;br /&gt;&lt;br /&gt;例:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;// test.cpp&lt;br /&gt;extern "C" __stdcall Foo()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// test.dll&lt;br /&gt;Foo@0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;在 test.dll 中涵數&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt; Foo &lt;/span&gt;&lt;/span&gt;的匯出名稱是&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt; Foo@0&lt;/span&gt;&lt;/span&gt;，而 &lt;span style=";font-family:courier new;font-size:85%;"  &gt;@0 &lt;/span&gt;是代表了 涵數&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt; Foo&lt;/span&gt;&lt;/span&gt; 所需的 stack-size。因此，我們如要以 Mingw 編譯一個跨語言的 dll ，我們便要加入以下的 linker option:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;gcc: --add-stdcall-alias&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;g++: -Wl,--add-stdcall-alias&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;那麼 test.dll 的內容便會變成:&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;// test.dll&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:lucida grande;font-size:85%;"  &gt;&lt;span style="font-family:courier new;"&gt;Foo@0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Foo=Foo@0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;又或者使用以下的 linker option:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;gcc: --kill-at&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;g++: -Wl,--kill-at&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; 把&lt;span style=";font-family:courier new;font-size:85%;"  &gt; Foo@0 &lt;/span&gt;直接轉為&lt;span style=";font-family:courier new;font-size:85%;"  &gt; Foo&lt;/span&gt;。&lt;br /&gt;&lt;br /&gt;更多有關 ld 與 dll 的參考:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceware.org/binutils/docs-2.17/ld/WIN32.html"&gt;ld and Win32 (cygwin/mingw)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceware.org/binutils/docs-2.17/ld/Options.html#Options"&gt;ld Command Line Options&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-9008342305034561143?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/9008342305034561143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=9008342305034561143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/9008342305034561143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/9008342305034561143'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2008/04/gcc-stdcall.html' title='GCC &amp; __stdcall'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-7608501806759369698</id><published>2008-04-15T00:04:00.000+08:00</published><updated>2008-04-20T14:15:31.130+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Embedding manifest... error PRJ0003!?</title><content type='html'>今天在編譯程序時預到了以下的問題:&lt;br /&gt;&lt;br /&gt;Embedding manifest...&lt;br /&gt;Project : error PRJ0003 : Error spawning 'cmd.exe'.&lt;br /&gt;&lt;br /&gt;在網上找了半晚都沒有找到解決辦法，到最後才無意中發現到是因為 %PATH% 這個環境參數過長的關係，引致 Visual Studio 2005 無法執行 Embedding manifest 的程式...&lt;br /&gt;&lt;br /&gt;因此在我手動減去了 PATH 中一些沒用的內容後，問題便迎刃而解。&lt;br /&gt;&lt;br /&gt;唉.... Microsoft...&lt;br /&gt;&lt;br /&gt;( 註: 假如現實生活中的問題可以這麼容易解決便好了... )&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;English Version:&lt;br /&gt;&lt;br /&gt;When I was compiling my C++ program tonight, I encountered the following error:&lt;br /&gt;&lt;br /&gt;Embedding manifest...&lt;br /&gt;Project : error PRJ0003 : Error spawning 'cmd.exe'.&lt;br /&gt;&lt;br /&gt;After some search on Google I still cannot locate the cause of this problem. Suddenly I notice that the Environment Variable %PATH% is so long that exceeds the max. length of an env-variable (it should be 512 characters); and hence it causes Visual Studio failed to locate the cmd.exe.&lt;br /&gt;&lt;br /&gt;So after I remove some un-used contents in %PATH%, everything works fine again.&lt;br /&gt;&lt;br /&gt;Damn Microsoft's solutions ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-7608501806759369698?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/7608501806759369698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=7608501806759369698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/7608501806759369698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/7608501806759369698'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2008/04/embedding-manifest-error-prj0003.html' title='Embedding manifest... error PRJ0003!?'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-664298411705134426</id><published>2008-03-12T15:13:00.000+08:00</published><updated>2008-03-12T15:19:29.519+08:00</updated><title type='text'>We are not assembly line workers!!</title><content type='html'>最近看了一遍外國的 blog，再加上最近工作上的遭遇心裡很有同感。&lt;br /&gt;&lt;br /&gt;引自 &lt;a href="http://www.irrlicht3d.org/pivot/entry.php?id=685"&gt;How to treat your employees in software development&lt;/a&gt; :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Programmers are intelligent people. If you treat them like stupid assembly line workers, they will behave like this after some time, and the quality of your software will decline.&lt;/li&gt;&lt;li&gt;If you tell your developers 2 hours before a deadline that this deadline actually exists, you did something wrong. Really. You cannot expect a programmer to implement a totally new huge feature instantly without proper planning. Well, you can. But then you should expect some.. well.. side effects at least.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-664298411705134426?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/664298411705134426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=664298411705134426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/664298411705134426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/664298411705134426'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2008/03/we-are-not-assembly-line-workers.html' title='We are not assembly line workers!!'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-4720248556308762505</id><published>2007-12-21T11:59:00.000+08:00</published><updated>2008-04-21T11:52:07.702+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>About C++ Exception</title><content type='html'>一些有關 C++ exception 的文章&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="http://le-hacker.org/papers/cpp/cpp.html"&gt;C++ exceptions, template and life&lt;/a&gt;&lt;br /&gt;不錯的 C++ exception 說明&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="http://www.freetype.org/david/reliable-c.html"&gt;Robust Design Techniques for C Programs&lt;/a&gt;&lt;br /&gt;看完這文章後我愛上了 C++ 的 exception 機制&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/TR18015.pdf"&gt;Technical Report on C++ performance P32-42&lt;/a&gt;&lt;br /&gt;...&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-4720248556308762505?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/4720248556308762505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=4720248556308762505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/4720248556308762505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/4720248556308762505'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2007/12/about-c-exception.html' title='About C++ Exception'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-8206054246896183891</id><published>2007-12-17T18:30:00.000+08:00</published><updated>2007-12-17T18:32:02.728+08:00</updated><title type='text'>Walking in a Winter Wonder Land</title><content type='html'>&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-3l-dm9K8Ms&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/-3l-dm9K8Ms&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Sleigh bells ring, are you listening, &lt;br /&gt;In the lane, snow is glistening&lt;br /&gt;A beautiful sight,&lt;br /&gt;We're happy tonight.&lt;br /&gt;Walking in a winter wonderland.&lt;br /&gt;&lt;br /&gt;Gone away is the bluebird,&lt;br /&gt;Here to stay is a new bird&lt;br /&gt;He sings a love song,&lt;br /&gt;As we go along,&lt;br /&gt;Walking in a winter wonderland.&lt;br /&gt;&lt;br /&gt;In the meadow we can build a snowman,&lt;br /&gt;Then pretend that he is Parson Brown&lt;br /&gt;&lt;br /&gt;He'll say: Are you married?&lt;br /&gt;We'll say: No man, &lt;br /&gt;But you can do the job&lt;br /&gt;When you're in town.&lt;br /&gt;&lt;br /&gt;Later on, we'll conspire,&lt;br /&gt;As we dream by the fire&lt;br /&gt;To face unafraid, &lt;br /&gt;The plans that we've made,&lt;br /&gt;Walking in a winter wonderland.&lt;br /&gt;&lt;br /&gt;In the meadow we can build a snowman,&lt;br /&gt;And pretend that he's a circus clown&lt;br /&gt;We'll have lots of fun with mister snowman,&lt;br /&gt;Until the other kids knock him down.&lt;br /&gt;&lt;br /&gt;When it snows, ain't it thrilling,&lt;br /&gt;Though your nose gets a chilling&lt;br /&gt;We'll frolic and play, the Eskimo way,&lt;br /&gt;Walking in a winter wonderland.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-8206054246896183891?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/8206054246896183891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=8206054246896183891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/8206054246896183891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/8206054246896183891'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2007/12/walking-in-winter-wonder-land.html' title='Walking in a Winter Wonder Land'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7392531245685108862.post-4476704248925634840</id><published>2007-12-02T13:14:00.000+08:00</published><updated>2007-12-16T13:32:45.124+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='琵琶 音樂'/><title type='text'>在網上找到的一些琵琶音樂</title><content type='html'>&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;b&gt;草原英雄小姐妹 The Heroic Little Sisters on the Grassland&lt;/b&gt;&lt;br /&gt;    &lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qdtWKvEhXFY&amp;amp;rel=0&amp;amp;color1=0xd6d6d6&amp;amp;color2=0xf0f0f0&amp;amp;border=0"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/qdtWKvEhXFY&amp;amp;rel=0&amp;amp;color1=0xd6d6d6&amp;amp;color2=0xf0f0f0&amp;amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;b&gt;新翻羽調綠腰&lt;/b&gt;&lt;br /&gt;    &lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/F6SXl_YXj0U&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/F6SXl_YXj0U&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;b&gt;老童 Aged Child&lt;/b&gt;&lt;br /&gt;    &lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2A93hx2-N90&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/2A93hx2-N90&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;b&gt;春蠶&lt;/b&gt;&lt;br /&gt;    &lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HVMywoWw4sU&amp;rel=1&amp;border=0"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/HVMywoWw4sU&amp;rel=1&amp;border=0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;b&gt;飛花點趣&lt;/b&gt;&lt;br /&gt;    &lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/n6DPxN9t87A&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/n6DPxN9t87A&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;    &lt;b&gt;霸王卸甲The Conqueror Unarms&lt;/b&gt;&lt;br /&gt;    &lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8pSu2CK7ics&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/8pSu2CK7ics&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7392531245685108862-4476704248925634840?l=ming4883.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ming4883.blogspot.com/feeds/4476704248925634840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7392531245685108862&amp;postID=4476704248925634840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/4476704248925634840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7392531245685108862/posts/default/4476704248925634840'/><link rel='alternate' type='text/html' href='http://ming4883.blogspot.com/2007/12/blog-post.html' title='在網上找到的一些琵琶音樂'/><author><name>Ming</name><uri>http://www.blogger.com/profile/09184865000351878857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
