<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Pete&apos;s GPU Notes</title>
<link>http://petewarden.com/notes/</link>
<description></description>
<language>en</language>
<copyright>Copyright 2006</copyright>
<lastBuildDate>Wed, 28 Jun 2006 12:31:25 -0800</lastBuildDate>
<generator>http://www.movabletype.org/?v=3.16</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 

<item>
<title>Running out of VRAM on OS X</title>
<description><![CDATA[<p>OpenGL on OS X virtualizes texture memory. This means you can allocate an almost unlimited amount of textures, and the OS will keep them in system memory, and only copy them up to the graphics card when they're needed. This is a lot better than the old model of keeping all textures only in VRAM, and texture creation failing once you run out of memory there. But there's still cases where you have to worry about how much VRAM is available.</p>]]></description>
<link>http://petewarden.com/notes/archives/2006/06/running_out_of.html</link>
<guid>http://petewarden.com/notes/archives/2006/06/running_out_of.html</guid>
<category></category>
<pubDate>Wed, 28 Jun 2006 12:31:25 -0800</pubDate>
</item>
<item>
<title>Debugging OpenGL on OS X</title>
<description><![CDATA[<p>It's tough to debug OpenGL problems, especially with pixel shaders. I'll cover some tips for any platform, and then some of the OS X built-in tools that can help.</p>]]></description>
<link>http://petewarden.com/notes/archives/2006/06/debugging_openg_1.html</link>
<guid>http://petewarden.com/notes/archives/2006/06/debugging_openg_1.html</guid>
<category></category>
<pubDate>Mon, 12 Jun 2006 12:32:37 -0800</pubDate>
</item>
<item>
<title>Fragment Program Utilities</title>
<description><![CDATA[Here's a couple of functions to check that a fragment program can be run, and to load it and return the ID. The code is inline below, or you can <a href="http://petewarden.com/notes/archives/FragmentUtils.cpp">download it</a>.<br>]]></description>
<link>http://petewarden.com/notes/archives/2005/06/fragment_progra_3.html</link>
<guid>http://petewarden.com/notes/archives/2005/06/fragment_progra_3.html</guid>
<category></category>
<pubDate>Mon, 27 Jun 2005 17:11:01 -0800</pubDate>
</item>
<item>
<title>Fragment Program Reference</title>
<description><![CDATA[<p>The <a href="http://www.charlesriver.com/Books/BookDetail.aspx?productID=65132">OpenGL Extensions Guide</a> has a great chapter on the ARB fragment program language, I recommend buying it, but there aren't many good references online. The most useful is the <a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/fragment_program.txt">official spec</a>, but it's designed as an exhaustive guide, not a quick reference for programmers. Here's a rundown of the instruction set, and some tips and tricks.</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/fragment_progra_2.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/fragment_progra_2.html</guid>
<category></category>
<pubDate>Wed, 18 May 2005 16:28:52 -0800</pubDate>
</item>
<item>
<title>Mac PBuffers</title>
<description><![CDATA[<p>If you ever need to do more image processing than you can with a single fragment program pass, you'll need to render to a texture. The best way to do that on OS X is using a pbuffer, here's some example code for creating and using them.</p>

<p>I've included the code inline below, or you can get a zip of the code from <a href="http://petewarden.com/notes/PBufferUtils.zip">PBufferUtils.zip here</a></p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/mac_pbuffers.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/mac_pbuffers.html</guid>
<category></category>
<pubDate>Tue, 17 May 2005 17:25:12 -0800</pubDate>
</item>
<item>
<title>Emulating Bilinear Filtering</title>
<description><![CDATA[<p>Most graphics cards that support float textures can't bilinear filter them. We can use a fragment program to do the filtering for us, but it's tricky to get right. Here's an example of how to do it:</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/emulating_bilin.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/emulating_bilin.html</guid>
<category></category>
<pubDate>Tue, 17 May 2005 16:32:56 -0800</pubDate>
</item>
<item>
<title>GPU Optical Flow</title>
<description><![CDATA[<p>Optical flow analysis is heavily used by video and film processing apps, to retime images smoothly, apply motion blur as a post-process, and guide the application of other processes. It's traditionally a slow operation, I wanted to see if a GPU version was possible.</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/gpu_optical_flo.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/gpu_optical_flo.html</guid>
<category></category>
<pubDate>Tue, 10 May 2005 18:02:50 -0800</pubDate>
</item>
<item>
<title>Random Numbers in Fragment Programs</title>
<description><![CDATA[<p>It&#039;s hard to write a fragment program that will calculate pseudo-random numbers. The usual random number algorithms need two things that we don&#039;t have on our GPU&#039;s:</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/random_numbers.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/random_numbers.html</guid>
<category></category>
<pubDate>Tue, 10 May 2005 17:06:37 -0800</pubDate>
</item>
<item>
<title>Quick and Dirty Vectorization</title>
<description><![CDATA[<p>There aren&#039;t many fast techniques for vectorizing an image into polygons that approximate the original, or that take advantage of 3d hardware, so here&#039;s one I&#039;ve used.<br />
</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/quick_and_dirty.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/quick_and_dirty.html</guid>
<category></category>
<pubDate>Tue, 10 May 2005 17:05:45 -0800</pubDate>
</item>
<item>
<title>Fragment Program Snippets</title>
<description><![CDATA[<p>Here's some instruction sequences for common operations:<br />
</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/fragment_progra_1.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/fragment_progra_1.html</guid>
<category></category>
<pubDate>Tue, 10 May 2005 17:04:57 -0800</pubDate>
</item>
<item>
<title>Fragment Programs-ATI R3xx vs NVidia NV34</title>
<description><![CDATA[<p>ATI and NVidia cards have some differences it's important to know about when you're writing fragment programs to run on both.</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/fragment_progra.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/fragment_progra.html</guid>
<category></category>
<pubDate>Tue, 10 May 2005 17:03:01 -0800</pubDate>
</item>
<item>
<title>Mac OpenGL contexts</title>
<description><![CDATA[<p>A <b>context</b> is a container for the GL state information, things like the current color, transformation matrix, texture ID and anything else that needs to be remembered by OpenGL.<br />
</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/mac_opengl_cont.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/mac_opengl_cont.html</guid>
<category></category>
<pubDate>Tue, 10 May 2005 17:02:30 -0800</pubDate>
</item>
<item>
<title>Straight Alpha and Bilinear Filtering</title>
<description><![CDATA[<p>There&#039;s a subtle problem using graphics hardware to do bilinear filtering on straight alpha images.<br />
</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/straight_alpha.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/straight_alpha.html</guid>
<category></category>
<pubDate>Tue, 10 May 2005 17:00:56 -0800</pubDate>
</item>
<item>
<title>Animating Worley Noise</title>
<description><![CDATA[<p><a href="http://www.texturingandmodeling.com" target="_blank">Texturing and Modelling</a> has a chapter by <a href="http://www.worley.com" target="_blank">Steve Worley</a> on using Voronoi diagrams to create a procedural noise pattern. I needed to find a way to animate and render this on a 2D plane using OpenGL.<br />
</p>]]></description>
<link>http://petewarden.com/notes/archives/2005/05/testing.html</link>
<guid>http://petewarden.com/notes/archives/2005/05/testing.html</guid>
<category></category>
<pubDate>Tue, 10 May 2005 16:38:33 -0800</pubDate>
</item>


</channel>
</rss>