<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yakiimo3D &#187; DirectX11</title>
	<atom:link href="http://www.yakiimo3d.com/category/directx11/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yakiimo3d.com</link>
	<description>Mostly DirectX 11 Programming</description>
	<lastBuildDate>Sun, 15 May 2011 07:58:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DirectX11 Interop CUDA Mandelbrot Fractal</title>
		<link>http://www.yakiimo3d.com/2011/03/06/directx11-interop-cuda-mandelbrot-fractal/</link>
		<comments>http://www.yakiimo3d.com/2011/03/06/directx11-interop-cuda-mandelbrot-fractal/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 14:36:30 +0000</pubDate>
		<dc:creator>yakiimo02</dc:creator>
				<category><![CDATA[Cuda]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[DirectCompute]]></category>
		<category><![CDATA[DirectX11]]></category>

		<guid isPermaLink="false">http://www.yakiimo3d.com/?p=1516</guid>
		<description><![CDATA[Introduction I updated my DirectCompute Mandelbrot fractal demo to be able to render using both CUDA and DirectCompute. The program is a simple Mandelbrot renderer, but you can dynamically switch between a CUDA and DirectCompute render. Relevant Links http://developer.download.nvidia.com/compute/cuda/sdk/website/Graphics_Interop.html#simpleD3D11Texture The NVIDIA CUDA 3.2 SDK includes a DirectX11 interop sample &#8220;Simple D3D11 Texture&#8221; which I used [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>
<p>I updated my DirectCompute Mandelbrot fractal demo to be able to render using both CUDA and DirectCompute. The program is a simple Mandelbrot renderer, but you can dynamically switch between a CUDA and DirectCompute render.</p>
<h2>Relevant Links</h2>
<p><a href="http://developer.download.nvidia.com/compute/cuda/sdk/website/Graphics_Interop.html#simpleD3D11Texture" onclick="pageTracker._trackPageview('/outgoing/developer.download.nvidia.com/compute/cuda/sdk/website/Graphics_Interop.html_simpleD3D11Texture?referer=');">http://developer.download.nvidia.com/compute/cuda/sdk/website/Graphics_Interop.html#simpleD3D11Texture</a><br />
The NVIDIA CUDA 3.2 SDK includes a DirectX11 interop sample &#8220;Simple D3D11 Texture&#8221; which I used as reference. For the 3.2 SDK, I think this is the only CUDA sample using D3D11. The SDK sample uses a ID3D11Texture3D as a CUDA resource while my Mandelbrot fractal program uses a ID3D11Buffer as a CUDA resource.<br />
<br />
<a href="http://developer.nvidia.com/object/cuda-by-example.html" onclick="pageTracker._trackPageview('/outgoing/developer.nvidia.com/object/cuda-by-example.html?referer=');">http://developer.nvidia.com/object/cuda-by-example.html</a><br />
I mainly used the CUDA 3.2 SDK programming manual to learn CUDA, but I also read the NVIDIA &#8220;Cuda by Example&#8221; book on <a href="http://my.safaribooksonline.com/?portal=informit" onclick="pageTracker._trackPageview('/outgoing/my.safaribooksonline.com/?portal=informit&amp;referer=');">Safari Informit</a>. The book is very easy to follow and I read it in one sitting. This book teaches the basics of CUDA in a simple language and I thought it was a good first book.<br />
<br />
<a href="http://www.yakiimo3d.com/2010/02/02/directcompute-mandelbrot-fractal-viewer/">http://www.yakiimo3d.com/2010/02/02/directcompute-mandelbrot-fractal-viewer/</a><br />
My old DirectCompute Mandelbrot fractal viewer. The program has a bug (oh no!) when the screen size dimensions are not divisible by the thread group size dimensions, which I fixed in my new CUDA interop demo.</p>
<h2>Demo Notes</h2>
<p>Took some timings to compare the CUDA DirectX11 interop and DirectCompute performances. Timings were taken on my Geforce GTX 460, Driver 266.58, Vista 64-bit SP2, CUDA SDK 3.2. Neither the CUDA nor DirectCompute implementations have been optimized. With better documentation, better tools and finer control over the program, I think the CUDA program has a better chance of good optimization.</p>
<table>
<tr>
<td>Num Iterations</td>
<td>DirectCompute</td>
<td>CUDA</td>
</tr>
<tr>
<td>8</td>
<td>0.588ms/frame (1700fps)</td>
<td>0.749ms/frame (1335fps)</td>
</tr>
<tr>
<td>256</td>
<td>1.439ms/frame (695fps)</td>
<td>1.639ms/frame (610fps)</td>
</tr>
<tr>
<td>624</td>
<td>3.185ms/frame (314fps)</td>
<td>2.907ms/frame (344fps)</td>
</tr>
<tr>
<td>1024</td>
<td>4.878ms/frame (205fps)</td>
<td>4.274ms/frame (234fps)</td>
</tr>
</table>
<p>
The higher the iteration count, the more work that the compute shader has to do. When the iteration count is low, DirectCompute is faster. When the iteration count becomes higher, CUDA becomes faster than DirectCompute. I&#8217;m assuming this means that with my current code, the CUDA kernel execution is faster, but that there is a fixed cost for DirectX11 interop that makes CUDA initially slower.<br />
<br />
<a href="http://nvidia.fullviewmedia.com/gdc2011/agenda.html" onclick="pageTracker._trackPageview('/outgoing/nvidia.fullviewmedia.com/gdc2011/agenda.html?referer=');">http://nvidia.fullviewmedia.com/gdc2011/agenda.html</a><br />
On Friday, I watched the NVIDIA GDC2011 &#8220;GPU Radiosity: Porting the Enlighten runtime to CUDA&#8221; presentation, and around 28:23, the speaker mentions that &#8220;Switching between D3D and CUDA is expensive (it&#8217;s a power cycle!)&#8221;. I&#8217;m guessing this power mode switch cost is what makes CUDA initially slower in my Mandelbrot fractal program. I watched the entire Enlighten presentation and it was very interesting. The stream had some technical info, but if you are curious about Enlighten tech, there is a DICE&#038;Geomerics Siggraph 2010 presentation that contains even more detailed technical information about Enlighten <a href="http://advances.realtimerendering.com/s2010/index.html" onclick="pageTracker._trackPageview('/outgoing/advances.realtimerendering.com/s2010/index.html?referer=');">http://advances.realtimerendering.com/s2010/index.html</a>.</p>
<h2>Demo</h2>
<p>Source Code &#038; Binary<br />
<a href="http://yakiimo3d.codeplex.com/releases/view/62087" onclick="pageTracker._trackPageview('/outgoing/yakiimo3d.codeplex.com/releases/view/62087?referer=');">http://yakiimo3d.codeplex.com/releases/view/62087</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yakiimo3d.com/2011/03/06/directx11-interop-cuda-mandelbrot-fractal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CEDEC Digital Library</title>
		<link>http://www.yakiimo3d.com/2011/02/19/cedec-digital-library/</link>
		<comments>http://www.yakiimo3d.com/2011/02/19/cedec-digital-library/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 14:45:11 +0000</pubDate>
		<dc:creator>yakiimo02</dc:creator>
				<category><![CDATA[DirectX11]]></category>

		<guid isPermaLink="false">http://www.yakiimo3d.com/?p=1482</guid>
		<description><![CDATA[http://cedil.cesa.or.jp/ Looks like the CEDEC Digital Library is now online. CEDEC is Japan&#8217;s biggest game developer conference and the CEDEC Digital Library houses presentation slide material from CEDEC 2006 through last year&#8217;s CEDEC 2010. Not sure if it&#8217;s all the presentations, but there&#8217;s a whole lot of material available for download. In order to download [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://cedil.cesa.or.jp/" onclick="pageTracker._trackPageview('/outgoing/cedil.cesa.or.jp/?referer=');">http://cedil.cesa.or.jp/</a><br />
Looks like the CEDEC Digital Library is now online. <a href="http://cedec.cesa.or.jp/" onclick="pageTracker._trackPageview('/outgoing/cedec.cesa.or.jp/?referer=');">CEDEC</a> is Japan&#8217;s biggest game developer conference and the CEDEC Digital Library houses presentation slide material from CEDEC 2006 through last year&#8217;s CEDEC 2010. Not sure if it&#8217;s all the presentations, but there&#8217;s a whole lot of material available for download. In order to download stuff, a free quick user registration is necessary. Most presentations at CEDEC are given in Japanese, so most of the material is in Japanese.<br />
<br />
<a href="https://members.cesa.or.jp/cedil/session/detail/316" onclick="pageTracker._trackPageview('/outgoing/members.cesa.or.jp/cedil/session/detail/316?referer=');">https://members.cesa.or.jp/cedil/session/detail/316</a><br />
The CEDEC Digital Library &#8220;CEDEC 2010: LostPlanet2 DirectX11 Features&#8221; page. I wrote about this session before (<a href="http://www.yakiimo3d.com/2010/07/11/cedec-2010-lostplanet2-directx11-features/">http://www.yakiimo3d.com/2010/07/11/cedec-2010-lostplanet2-directx11-features/</a>), and happily, I ended up being able to go see it at last year&#8217;s CEDEC. Capcom discussed some of their DX11 tessellation and compute shader usage in Lost Planet 2 and now the Japanese slides are available to download for everyone. The tessellation portion of the presentation included a comparison of tessellation schemes as well as a discussion of dealing with tessellation and displacement mapping artifacts such as cracking. The compute shader part of the presentation included discussions of a <a href="http://www.cemyuksel.com/research/waveparticles/" onclick="pageTracker._trackPageview('/outgoing/www.cemyuksel.com/research/waveparticles/?referer=');">wave particles</a> compute shader implementation as well as discussions of a soft body computer shader implementation.<br /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yakiimo3d.com/2011/02/19/cedec-digital-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3DMark 11</title>
		<link>http://www.yakiimo3d.com/2010/12/12/3dmark-11/</link>
		<comments>http://www.yakiimo3d.com/2010/12/12/3dmark-11/#comments</comments>
		<pubDate>Sun, 12 Dec 2010 12:23:15 +0000</pubDate>
		<dc:creator>yakiimo02</dc:creator>
				<category><![CDATA[DirectX11]]></category>

		<guid isPermaLink="false">http://www.yakiimo3d.com/?p=1312</guid>
		<description><![CDATA[http://www.3dmark.com/ 3DMark&#8217;s official webpage. http://www.3dmark.com/wp-content/uploads/2010/12/3DMark11_Whitepaper.pdf 3DMark 11&#8242;s white paper, which I learned about from Twitter (http://twitter.com/#!/repi/status/12653354148700161). The whitepaper contains details about multithreading, tessellation (phong tessellation is used), lighting and posteffect techniques used in 3DMark 11. It has interesting information such as how they do bloom and lens reflection computations in the frequency domain using the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.3dmark.com/" onclick="pageTracker._trackPageview('/outgoing/www.3dmark.com/?referer=');">http://www.3dmark.com/</a><br />
3DMark&#8217;s official webpage.<br />
<br />
<a href="http://www.3dmark.com/wp-content/uploads/2010/12/3DMark11_Whitepaper.pdf" onclick="pageTracker._trackPageview('/outgoing/www.3dmark.com/wp-content/uploads/2010/12/3DMark11_Whitepaper.pdf?referer=');">http://www.3dmark.com/wp-content/uploads/2010/12/3DMark11_Whitepaper.pdf</a><br />
3DMark 11&#8242;s white paper, which I learned about from Twitter (<a href="http://twitter.com/#!/repi/status/12653354148700161" onclick="pageTracker._trackPageview('/outgoing/twitter.com/_/repi/status/12653354148700161?referer=');">http://twitter.com/#!/repi/status/12653354148700161</a>). The whitepaper contains details about multithreading, tessellation (phong tessellation is used), lighting and posteffect techniques used in 3DMark 11. It has interesting information such as how they do bloom and lens reflection computations in the frequency domain using the computer shader to calculate the FFT and iFFT. The pdf  is linked from 3DMark 11&#8242;s support page <a href="http://www.3dmark.com/3dmark11/support/" onclick="pageTracker._trackPageview('/outgoing/www.3dmark.com/3dmark11/support/?referer=');">http://www.3dmark.com/3dmark11/support/</a>.<br />
<br />
<a href="http://www.geeks3d.com/20101207/review-3dmark11-gaming-benchmark-directx11-d3d11-dx11-tessellation/" onclick="pageTracker._trackPageview('/outgoing/www.geeks3d.com/20101207/review-3dmark11-gaming-benchmark-directx11-d3d11-dx11-tessellation/?referer=');">http://www.geeks3d.com/20101207/review-3dmark11-gaming-benchmark-directx11-d3d11-dx11-tessellation/</a><br />
<a href="http://www.geeks3d.com/20101207/tested-3dmark11-dx11-battle-gtx-580-vs-gtx-480-vs-hd-6870-vs-hd-5870-vs-gtx-460-vs-hd-5770/" onclick="pageTracker._trackPageview('/outgoing/www.geeks3d.com/20101207/tested-3dmark11-dx11-battle-gtx-580-vs-gtx-480-vs-hd-6870-vs-hd-5870-vs-gtx-460-vs-hd-5770/?referer=');">http://www.geeks3d.com/20101207/tested-3dmark11-dx11-battle-gtx-580-vs-gtx-480-vs-hd-6870-vs-hd-5870-vs-gtx-460-vs-hd-5770/</a><br />
Geeks3D&#8217;s 3DMark 11 article and benchmarks.<br />
<br />
<a href="http://www.4gamer.net/games/110/G011050/20101207055/" onclick="pageTracker._trackPageview('/outgoing/www.4gamer.net/games/110/G011050/20101207055/?referer=');">http://www.4gamer.net/games/110/G011050/20101207055/</a><br />
4gamer is Japan&#8217;s official mirror. Good announcement article on 3DMark 11 (in Japanese).<br />
<br />
Over the weekend, I finally got around to running the free, basic edition of 3DMark 11 on my HD5750 w/ Core 2 Quad Q6600. My non-top-of-the-line machine struggled and the framerate was choppy, but 3DMark 11 looked great. The following is my 3DMark 11 score: <a href="http://3dmark.com/3dm11/130419" onclick="pageTracker._trackPageview('/outgoing/3dmark.com/3dm11/130419?referer=');">http://3dmark.com/3dm11/130419</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yakiimo3d.com/2010/12/12/3dmark-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DX11 Temporal AA Without Manual Blending</title>
		<link>http://www.yakiimo3d.com/2010/12/05/dx11-temporal-aa-without-manual-blending/</link>
		<comments>http://www.yakiimo3d.com/2010/12/05/dx11-temporal-aa-without-manual-blending/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 10:24:45 +0000</pubDate>
		<dc:creator>yakiimo02</dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[DirectX11]]></category>

		<guid isPermaLink="false">http://www.yakiimo3d.com/?p=1280</guid>
		<description><![CDATA[Introduction I updated my simple Temporal AA demo to include an implementation of Temporal AA without blending. A lot of times, in technical 3D forums, you read about Temporal AA not showing up in screenshots. If you blend jittered frames like in my previous demo then Temporal AA is going to show up in screenshots. [...]]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>
<p>I updated my simple Temporal AA demo to include an implementation of Temporal AA without blending. A lot of times, in technical 3D forums, you read about Temporal AA not showing up in screenshots. If you blend jittered frames like in my previous demo then Temporal AA is going to show up in screenshots. However, it&#8217;s also possible to implement Temporal AA without manual blending, and in that case, the AA is not going to appear in screenshots. Over the weekend, I implemented this other version of simple Temporal AA.<br />
<br />
CodePlex link for my program&#8217;s source code and binary are provided at the end of the article.</p>
<h2>Relevant Links</h2>
<p>1) <a href="http://en.wikipedia.org/wiki/Radeon_R420" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Radeon_R420?referer=');">http://en.wikipedia.org/wiki/Radeon_R420</a><br />
The Radeon X700-X850 series apparently featured Temporal AA without blending. Don&#8217;t think it&#8217;s supported on newer graphics cards as my HD5750 with Catalyst 10.10 doesn&#8217;t show an option.<br />
<br />
2) <a href="http://techreport.com/articles.x/6672/22" onclick="pageTracker._trackPageview('/outgoing/techreport.com/articles.x/6672/22?referer=');">http://techreport.com/articles.x/6672/22</a><br />
This Tech Report article has a nice explanation of the Radeon Temporal AA implementation. Mulitisampling patterns are alternated each frame. If vsync is enabled and the app can maintain 60fps, even without manual blending, the eyes will interpolate the jittered frames giving an illusion of higher-sampled anti-aliasing. In the Radeon implementation, 2x MSAA using temporal AA will give an illusion of 4x AA.<br />
<br />
3) <a href="http://forum.beyond3d.com/showthread.php?t=46241" onclick="pageTracker._trackPageview('/outgoing/forum.beyond3d.com/showthread.php?t=46241&amp;referer=');">http://forum.beyond3d.com/showthread.php?t=46241</a><br />
Beyond3D&#8217;s &#8220;List of Rendering Resolutions + basics on hardware scaling, MSAA, framebuffers&#8221; thread mentions both Temporal AA with and without blending.<br />
<br />
4) <a href="http://www.yakiimo3d.com/2010/09/28/dx11-perspective-matrix-jittering-temporal-aa/">http://www.yakiimo3d.com/2010/09/28/dx11-perspective-matrix-jittering-temporal-aa/</a><br />
My implementation of Temporal AA with blending. A simple implementation without reprojection, so you get ghosting/blurring.<br />
</p>
<h2>Implementation Details</h2>
<p>The implementation is the same as my last Temporal AA implementation except that I don&#8217;t manually blend the previous and current frame, but let the eye do the interpolation. I added a combobox for selecting the vsync interval. Only vsynced 60fps gives good results; non vsynced 60+fps, vsynced 30fps, vsynced 20fps all give pretty terrible edge flickering. With blending, the artifact is blurring/ghosting, without blending, the artifact seems to be edge flickering.<br />
<br />
Unlike the Radeon implementation, I&#8217;m not alternating MSAA patterns, but just alternating jittered scene renders, so the quality should be equivalent to 2x SSAA (like my previous blended Temporal AA implementation). In the demo, the Temporal AA without blending looks a little bit worse than Temporal AA with blending because I decreased the sub-pixel offset to 0.15 from 0.25. Even at a vsynced 60 fps setting, I can sometimes still see an occasional edge flicker. </p>
<h2>Demo</h2>
<p>Source Code &#038; Binary<br />
<a href="http://yakiimo3d.codeplex.com/releases/view/56973" onclick="pageTracker._trackPageview('/outgoing/yakiimo3d.codeplex.com/releases/view/56973?referer=');">http://yakiimo3d.codeplex.com/releases/view/56973</a><br />
<br />
I would recommend viewing the demo in full-screen mode as this seems to give a more stable frame rate, and less edge flickering. I also fixed my texture mipmap settings and set the anisotropic filter to 16x. Even at this setting, you can still see a tiny bit of reduction in texture aliasing (without noticeable texture blurring from the SSAA, I think) in some parts of the scene, but it&#8217;s not significant and I guess that&#8217;s not the main point of Temporal AA.<br />
<br />
Sorry for the download size. My mesh model data, borrowed from the DirectX SDK samples, is pretty big. Like my previous Temporal AA implementation, DX11 isn&#8217;t necessary for this technique, but my hobby coding is now done using DX11, so that&#8217;s what the demo uses.<br />
</p>
<h2>Final Words</h2>
<p>While I was working on my last Temporal AA demo, another Japanese programmer told me that he saw very little texture aliasing reduction in his Temporal AA test, but I foolishly didn&#8217;t check my code for bugs. Hopefully, I didn&#8217;t make any stupid mistakes this time!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yakiimo3d.com/2010/12/05/dx11-temporal-aa-without-manual-blending/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectX11 Tessellation Tutorial Presentation</title>
		<link>http://www.yakiimo3d.com/2010/11/21/directx11-tessellation-tutorial-presentation/</link>
		<comments>http://www.yakiimo3d.com/2010/11/21/directx11-tessellation-tutorial-presentation/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 12:43:40 +0000</pubDate>
		<dc:creator>yakiimo02</dc:creator>
				<category><![CDATA[DirectX11]]></category>
		<category><![CDATA[Tessellation]]></category>

		<guid isPermaLink="false">http://www.yakiimo3d.com/?p=1256</guid>
		<description><![CDATA[http://xtunt.com/?p=11 A DirectX11 tessellation tutorial presentation given at the IX Brazilian Symposium on Computer Games and Digital Entertainment. http://www.xtunt.com/samples The presentation pdf said that source code will be available to download from the above url. (Not available yet as of 2010/11/21). http://xtunt.com/?p=29 Looks like the source code has been released at a slightly different url. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://xtunt.com/?p=11" onclick="pageTracker._trackPageview('/outgoing/xtunt.com/?p=11&amp;referer=');">http://xtunt.com/?p=11</a><br />
A DirectX11 tessellation tutorial presentation given at the IX Brazilian Symposium on Computer Games and Digital Entertainment.<br />
<br />
<strike><a href="http://www.xtunt.com/samples" onclick="pageTracker._trackPageview('/outgoing/www.xtunt.com/samples?referer=');">http://www.xtunt.com/samples</a><br />
The presentation pdf said that source code will be available to download from the above url. (Not available yet as of 2010/11/21).</strike><br />
<a href="http://xtunt.com/?p=29" onclick="pageTracker._trackPageview('/outgoing/xtunt.com/?p=29&amp;referer=');">http://xtunt.com/?p=29</a><br />
Looks like the source code has been released at a slightly different url. (2010/11/27 Update)<br />
<br />
<a href="http://www.youtube.com/user/xxnunes" onclick="pageTracker._trackPageview('/outgoing/www.youtube.com/user/xxnunes?referer=');">http://www.youtube.com/user/xxnunes</a><br />
Gustavo&#8217;s youtube page has sample videos of DX11 tessellation implementations.<br />
<br />
Learned about the above presentation from the author&#8217;s tweet on twitter. The presentation tutorial covers simple quad tessellation, simple triangle tessellation and parametric surface generation with the tessellator. Detailed and easy to understand explanations. Read through it quickly and seems like a great first tutorial for learning DirectX11 tessellation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yakiimo3d.com/2010/11/21/directx11-tessellation-tutorial-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

