﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-vibilin-随笔分类-Graphic Techniques</title><link>http://www.cppblog.com/vibilin/category/12029.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 15 Dec 2009 23:13:41 GMT</lastBuildDate><pubDate>Tue, 15 Dec 2009 23:13:41 GMT</pubDate><ttl>60</ttl><item><title>实现Subsurface Scattering效果(Subsurface Scattering shader by InvalidPointer : Half-Lambert + Fresnel Term)</title><link>http://www.cppblog.com/vibilin/archive/2009/12/11/102977.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Fri, 11 Dec 2009 06:56:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/12/11/102977.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/102977.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/12/11/102977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/102977.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/102977.html</trackback:ping><description><![CDATA[&nbsp; <br>&nbsp; 经过几天的努力, 找了很多资料, 也看了很多论文, 终于实现了SSS效果. 本来想采用Translucent Shadow Maps, 最后还是使用了另外的方法实现.<br><br>&nbsp; 截图: (按F1 激活/禁用 diffuse color)<br><br>&nbsp; 1.) 没有使用diffuse color的效果:<br><br>&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/sss_ip1.png" width=653 height=516><br><br>&nbsp; 2.) 使用diffuse color后的效果:<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/sss_ip2.png" width=652 height=515><br>&nbsp;&nbsp;<br>&nbsp;&nbsp; 注: 如果应用在人物皮肤上, 效果会更好看些 ^_^!<br><br>&nbsp;&nbsp; 程序代码:<font color=#002c99> <a href="http://www.cppblog.com/Files/vibilin/SubsurfaceScattering.rar">/Files/vibilin/SubsurfaceScattering.rar</a></font> 
<img src ="http://www.cppblog.com/vibilin/aggbug/102977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-12-11 14:56 <a href="http://www.cppblog.com/vibilin/archive/2009/12/11/102977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现HDR效果 (HDR Rendering using with ToneMap)</title><link>http://www.cppblog.com/vibilin/archive/2009/12/02/102390.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Wed, 02 Dec 2009 07:30:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/12/02/102390.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/102390.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/12/02/102390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/102390.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/102390.html</trackback:ping><description><![CDATA[<p>根据如下公式, 实现了一个HDR(<span class=title>High Dynamic Range</span>)效果.<br><br>Tone Map = (HDR Scene) + (Blur Scene) ;&nbsp;<br><br>Blur Scene = ( (HDR Scene) =&gt; (1/4 Size Frame) =&gt; (Vertical&nbsp;Gaussian Filter) =&gt; (Horizontal Gaussian Filter) ); <br><br>截图:<br>Exposure Level(曝光度) = 0.1<br><br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/hdr01.png" width=654 height=516><br><br>Exposure Level(曝光度) = 5<br><br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/hdr5.png" width=653 height=516><br><br>程序代码: <a href="http://www.cppblog.com/Files/vibilin/HDRRendering.rar">/Files/vibilin/HDRRendering.rar</a></p>
<img src ="http://www.cppblog.com/vibilin/aggbug/102390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-12-02 15:30 <a href="http://www.cppblog.com/vibilin/archive/2009/12/02/102390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现阴影 Percentage Closer Filtering &amp; Gaussian Blur Base on Shadow Map</title><link>http://www.cppblog.com/vibilin/archive/2009/11/27/102122.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Fri, 27 Nov 2009 14:32:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/11/27/102122.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/102122.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/11/27/102122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/102122.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/102122.html</trackback:ping><description><![CDATA[<p>分别采用 (PCF)Percentage Closer Filtering 和 Gaussian Blur 方式实现了阴影效果. (开始由于坐标问题, 困惑了很久, 不过最后还是出效果了)<br><br>注: 按 S 键切换阴影类型, W键显示/关闭线框模式.<br><br>PCF效果:<br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/PCFShadow.png" width=659 height=521><br></p>
<br>Gaussian Blur效果:<br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/softedgeshadow.png" width=660 height=520><br><br><br>程序代码: <a href="http://www.cppblog.com/Files/vibilin/SoftShadowMap.rar">/Files/vibilin/SoftShadowMap.rar</a><br>
<img src ="http://www.cppblog.com/vibilin/aggbug/102122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-11-27 22:32 <a href="http://www.cppblog.com/vibilin/archive/2009/11/27/102122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Simple Viewing Frustum Culling(Frustum裁剪)</title><link>http://www.cppblog.com/vibilin/archive/2009/11/24/101846.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Tue, 24 Nov 2009 12:10:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/11/24/101846.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/101846.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/11/24/101846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/101846.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/101846.html</trackback:ping><description><![CDATA[<p>采用了World-View-Projection Matrix&nbsp;实现快速裁剪, 比较简单, 不过非常有效.<br><br>裁剪前, 一共有200个Sphere(包括可见的和不可见的):<br><br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/FrustumCull200.png" width=653 height=522><br><br>裁剪后:<br><br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/FrustumCull33.png" width=653 height=515><br><br>程序代码: <a href="http://www.cppblog.com/Files/vibilin/FrustumCuller.rar">/Files/vibilin/FrustumCuller.rar</a></p>
<img src ="http://www.cppblog.com/vibilin/aggbug/101846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-11-24 20:10 <a href="http://www.cppblog.com/vibilin/archive/2009/11/24/101846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Fix Pipeline Simulate (固定管道模拟)</title><link>http://www.cppblog.com/vibilin/archive/2009/11/17/101211.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Tue, 17 Nov 2009 09:23:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/11/17/101211.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/101211.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/11/17/101211.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/101211.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/101211.html</trackback:ping><description><![CDATA[经过近一个月的努力,&nbsp; 终于实现了一些基本的功能, 不过由于时间原因, 剩下的Z-Buffer和D3DFILLMODE渲染模式等功能, 将等以后有时间后再补上. 非常感谢&nbsp;<a href="http://www.cppblog.com/zzxhang/archive/2009/09/30/97607.html"><strong>流失的时光</strong></a>&nbsp; 的代码分享以及<a href="http://hi.baidu.com/chuckhao/blog"><strong>ChunkHao</strong></a> 的经验交流.&nbsp; 写这个模拟程序目的也是为了总结一些以前学过的很基础的知识,&nbsp; 欢迎大家互相学习交流.<br><br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/SoftRender.png" width=836 height=675><br><br>程序代码: <a href="http://www.cppblog.com/Files/vibilin/SoftRender.rar">/Files/vibilin/SoftRender.rar</a>
<img src ="http://www.cppblog.com/vibilin/aggbug/101211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-11-17 17:23 <a href="http://www.cppblog.com/vibilin/archive/2009/11/17/101211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现Skeletal Animation</title><link>http://www.cppblog.com/vibilin/archive/2009/11/15/101003.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Sun, 15 Nov 2009 11:16:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/11/15/101003.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/101003.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/11/15/101003.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/101003.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/101003.html</trackback:ping><description><![CDATA[<p><font color=#000000><span>根据Skinned Mesh的基本原理, 实现骨骼动画. 程序中并没有使用<strong>D3DXLoadSkinMeshFromXof, ID3DXSkinInfo::UpdateSkinnedMesh</strong>等辅助函数, &nbsp;完全是手动编码读取和处理<font face=宋体>蒙皮信息.并将蒙皮信息应用到骨骼和Mesh上.<br><br>程序截图:<br></font></span></font></p>
<img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/SkeletalAnim.png" width=520 height=405><br><br>程序代码: <a href="http://www.cppblog.com/Files/vibilin/SkeletalAnimation.rar">/Files/vibilin/SkeletalAnimation.rar</a> <br><br>相关文章参考:&nbsp;<font color=#000000><span><a href="http://blog.csdn.net/n5/archive/2008/10/20/3105872.aspx"><font color=#000000><span>Skinned Mesh原理解析和一个最简单的实现示例</span></font><br></a></span></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://download.csdn.net/source/885469">Advanced Animation With DirectX.pdf</a> 
<img src ="http://www.cppblog.com/vibilin/aggbug/101003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-11-15 19:16 <a href="http://www.cppblog.com/vibilin/archive/2009/11/15/101003.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现 Spherical Harmonic Lighting</title><link>http://www.cppblog.com/vibilin/archive/2009/10/26/99494.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Mon, 26 Oct 2009 07:53:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/10/26/99494.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/99494.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/10/26/99494.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/99494.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/99494.html</trackback:ping><description><![CDATA[&nbsp;参考 Spherical Harmonic Lighting, the Gritty Details, by Robin Green. <a href="http://www.research.scea.com/gdc2003/spherical-harmonic-lighting.html"><u><font color=#800080>http://www.research.scea.com/gdc2003/spherical-harmonic-lighting.html&nbsp;</font></u></a>&nbsp;文档,&nbsp; 实现了使用SH渲染由D3DXCreateBox和D3DXCreateTorus建造的模型的阴影效果.<br><br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/SH.jpg" width=646 height=507><br><br><br>(注) 在代码中文件 "sphere.mesh"和&nbsp;"torus.mesh"&nbsp; 存储的数据是分别由 D3DXCreateSphere(m_pd3dDevice, 1.0f, 32, 16, pObject-&gt;m_pMesh, NULL),D3DXCreateTorus(m_pd3dDevice,1.0f, 16, 32, pObject-&gt;m_pMesh, NULL)&nbsp;函数生成后导出的. <br><br>程序代码和采样数据: <a href="http://www.cppblog.com/Files/vibilin/SHProject.rar">/Files/vibilin/SHProject.rar</a> <br>
<img src ="http://www.cppblog.com/vibilin/aggbug/99494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-10-26 15:53 <a href="http://www.cppblog.com/vibilin/archive/2009/10/26/99494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ID3DXMesh的数据导出和导入</title><link>http://www.cppblog.com/vibilin/archive/2009/10/23/99314.html</link><dc:creator>vibilin</dc:creator><author>vibilin</author><pubDate>Fri, 23 Oct 2009 09:13:00 GMT</pubDate><guid>http://www.cppblog.com/vibilin/archive/2009/10/23/99314.html</guid><wfw:comment>http://www.cppblog.com/vibilin/comments/99314.html</wfw:comment><comments>http://www.cppblog.com/vibilin/archive/2009/10/23/99314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/vibilin/comments/commentRss/99314.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/vibilin/services/trackbacks/99314.html</trackback:ping><description><![CDATA[<br>&nbsp;&nbsp; 将由D3DXCREATE* 函数创建的模型数据导出到文件后, 再导入文件的数据重构模型.<br><br>&nbsp;&nbsp;&nbsp;以下分别是程序截图和代码片断:<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;<img height=477 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/d3dmeshsnap.jpg" width=636 border=0><a href="http://www.cppblog.com/Files/vibilin/MeshIO.rar"><br></a><br>&nbsp;&nbsp;&nbsp;<img height=275 alt="" src="http://www.cppblog.com/images/cppblog_com/vibilin/d3dmeshpitch.jpg" width=415 border=0><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最后附上可执行程序和CMeshIO的实现代码:&nbsp;<a href="http://www.cppblog.com/Files/vibilin/MeshIO.rar">/Files/vibilin/MeshIO.rar</a><br>&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.cppblog.com/vibilin/aggbug/99314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/vibilin/" target="_blank">vibilin</a> 2009-10-23 17:13 <a href="http://www.cppblog.com/vibilin/archive/2009/10/23/99314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>