<?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>Sharky&#039;s Blog &#187; HLSL</title>
	<atom:link href="http://sharky.bluecog.co.nz/?cat=10&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://sharky.bluecog.co.nz</link>
	<description>Home of the Air Legends game for Xbox 360 and Windows, Bionic Shark Studios, XNA game development &#38; other madness</description>
	<lastBuildDate>Fri, 11 Jan 2013 09:49:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=109</link>
		<comments>http://sharky.bluecog.co.nz/?p=109#comments</comments>
		<pubDate>Sun, 21 Jan 2007 00:46:54 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=109</guid>
		<description><![CDATA[ Howdy all.
 Kukyona at CodeAnxiety&#160;has posted another update on the Terrain Component for XNA.  It&#8217;s looking very cool indeed.&#160; Check it out here&#8230;




 p.s.  I&#8217;m still working on Part 2 of my XNA Collision Detection tutorial.

Average Rating: 4.4 out of 5 based on 256 user reviews.

{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July [...]]]></description>
			<content:encoded><![CDATA[<p> Howdy all.</p>
<p> Kukyona at <a href="http://codeanxiety.com/" target="_blank">CodeAnxiety</a>&nbsp;has posted another update on the Terrain Component for XNA.  It&#8217;s looking very cool indeed.&nbsp; Check it out <a href="http://codeanxiety.com/archive/2007/01/20/enter-the-shadow.aspx" target="_blank">here</a>&#8230;</p>
<div style="border-right: silver thin dashed; padding-right: 4px; border-top: silver thin dashed; padding-left: 4px; float: left; padding-bottom: 4px; border-left: silver thin dashed; padding-top: 4px; border-bottom: silver thin dashed; position: static">
<div style="float: left; margin: 1px"><a href="http://codeanxiety.com/archive/2007/01/20/enter-the-shadow.aspx" target="_blank"><img id="image1" alt="XNA Terrain component,  now with Shadow maps" src="http://codeanxiety.com/blogs/kukyona/images/EntertheShadow_122D4/TerrainProgress09_thumb.jpg"></a></div>
</div>
<div style="clear: both">
<p> p.s.  I&#8217;m still working on Part 2 of my XNA Collision Detection tutorial.</p>
</div>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">4.8</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">278</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4.8"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=109</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=103</link>
		<comments>http://sharky.bluecog.co.nz/?p=103#comments</comments>
		<pubDate>Fri, 08 Dec 2006 02:37:04 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=103</guid>
		<description><![CDATA[ Shawn Hargreaves seems to be blogging with a vengeance&#160;today.&#160; Possibly going for some kind of record.&#160;  
 Anyway,  among other things,  he alerts us to another XNA Team member&#8217;s blog:&#160;&#160;Eli&#8217;s Cornflower Blue blog&#160;opens with&#160;part 1 of an article explaining&#160;Alpha Blending,  how it works,  and it&#8217;s relationship to the Depth [...]]]></description>
			<content:encoded><![CDATA[<p> <a href="http://blogs.msdn.com/shawnhar/" target="_blank">Shawn Hargreaves</a> seems to be blogging with a vengeance&nbsp;today.&nbsp; Possibly going for some kind of record.&nbsp; <img src='http://sharky.bluecog.co.nz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p> Anyway,  among other things,  he alerts us to another XNA Team member&#8217;s blog:&nbsp;&nbsp;<strong>Eli&#8217;s </strong><a href="http://blogs.msdn.com/etayrien/" target="_blank"><strong>Cornflower Blue</strong></a><strong> blog</strong>&nbsp;opens with&nbsp;part 1 of an article explaining&nbsp;<a href="http://blogs.msdn.com/etayrien/archive/2006/12/07/alpha-blending-part-1.aspx" target="_blank">Alpha Blending</a>,  how it works,  and it&#8217;s relationship to the Depth Buffer.</p>
<p> I&#8217;ve only skim read it so far,  but it looks like some very good info.&nbsp; Exactly what the doctor ordered actually,  because when I was converting from XNA Beta 1 to 2 I had all sorts of&nbsp;problems with&nbsp;weird Alpha Blending symptoms.&nbsp; All fixed now,  but I never really understood the problem.</p>
<p> I&#8217;m looking forward to&nbsp;studying this one&nbsp;ASAP.</p>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">4.4</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">270</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4.4"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=103</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=90</link>
		<comments>http://sharky.bluecog.co.nz/?p=90#comments</comments>
		<pubDate>Tue, 31 Oct 2006 07:32:32 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=90</guid>
		<description><![CDATA[ Once again,  I&#8217;ve stumbled on some cool HLSL (High Level Shader Language),  but haven&#8217;t had time&#160;to&#160;seriously read it!!!
 Rather than bookmarking it selfishly,  I&#8217;ll continue&#160;my trend of blogging about it.&#160; Fire and forget blogging &#8211; ROCK ON!!!
 So here we go&#8230;
 &#8220;XNA &#8211; Parallax Mapping&#8221; tutorial
 Over at Ziggyware I found [...]]]></description>
			<content:encoded><![CDATA[<p> Once again,  I&#8217;ve stumbled on some cool HLSL (High Level Shader Language),  but haven&#8217;t had time&nbsp;to&nbsp;seriously read it!!!</p>
<p> Rather than bookmarking it selfishly,  I&#8217;ll continue&nbsp;my trend of blogging about it.&nbsp; Fire and forget blogging &#8211; ROCK ON!!!</p>
<p> So here we go&#8230;</p>
<p> <strong><u>&#8220;XNA &#8211; Parallax Mapping&#8221; tutorial</u></strong></p>
<p> Over at <a href="http://www.ziggyware.com" target="_blank">Ziggyware</a> I found an XNA based tutorial for a Parallax Mapping Shader.&nbsp; Advanced stuff by my reckoning!</p>
<p> Check out&nbsp;the &#8220;XNA &#8211; Parallax Mapping&#8221;&nbsp;tutorial <a href="http://www.ziggyware.com/readarticle.php?article_id=47" target="_blank">here</a>&#8230;</p>
<p> <strong><u>&#8220;Human Skin shader&#8221; sample</u></strong></p>
<p> I can&#8217;t remember how,  but I also stumbled on what looks like some seriously hard-core shader action at <a href="http://www.jistyles.com/" target="_blank">&#8220;J.I.  Styles | Online portfolio&#8221;</a>.&nbsp;&nbsp;It&#8217;s not XNA specific,  but the HLSL (*.fx) file is there to download.&nbsp; The sample is an awesome Human Skin shader!&nbsp; Impressive!&nbsp; Out of my league,  but impressive!</p>
<p> Check out&nbsp;&#8221;Adventures in HLSL pixel shaders&#8221; <a href="http://www.jistyles.com/main.php?id=doc&amp;page=hlsl" target="_blank">here</a>&#8230;</p>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">4.7</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">176</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4.7"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=90</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=87</link>
		<comments>http://sharky.bluecog.co.nz/?p=87#comments</comments>
		<pubDate>Tue, 24 Oct 2006 10:58:42 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=87</guid>
		<description><![CDATA[ &#160;
 I promised I&#8217;d start sharing some snippets of source,  so here&#8217;s the HLSL Shader code (an *.fx file) I use for rendering my Aircraft.&#160; (as requested by Omegaman)
 Those familiar with the XNA &#8220;Spacewars&#8221; sample will see an uncanny the resemblance to&#160;the sample&#8217;s&#160;Ship.fx file.&#160; In fact it&#8217;s probably barely changed.  Perhaps [...]]]></description>
			<content:encoded><![CDATA[<p> &nbsp;</p>
<p> I promised I&#8217;d start sharing some snippets of source,  so here&#8217;s the HLSL Shader code (an *.fx file) I use for rendering my Aircraft.&nbsp; (as requested by <a href="http://sharky.bluecog.co.nz/?p=82#comments">Omegaman</a>)</p>
<p> Those familiar with the XNA &#8220;Spacewars&#8221; sample will see an uncanny the resemblance to&nbsp;the sample&#8217;s&nbsp;Ship.fx file.&nbsp; In fact it&#8217;s probably barely changed.  Perhaps some trimming here and there,  but I really can&#8217;t remember.</p>
<p> It&#8217;s pretty&nbsp;scary HLSL for a beginner like me.&nbsp; I&#8217;d love to be able to explain it to folk,  but frankly I barely understand it myself!&nbsp; <img src='http://sharky.bluecog.co.nz/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p> (next time hopefully I&#8217;ll be posting some HLSL I can at least reasonably explain)</p>
<p> I will try and describe its characteristics though:</p>
<ul>
<li>It lights &amp; shades&nbsp;the model with a provided&nbsp;Ambient color,  a Directional light&nbsp;and a Point light.&nbsp; Directional light is a color of light cast in&nbsp;a particular direction,  from <strong>no</strong> particular point in space.&nbsp; In other words,  its brightness is the same no matter where the model is in space.&nbsp; Point light however is a&nbsp;color radiating out from a point in space,  so the closer the model is to it,  the stronger the effect.</li>
<li>SkinTexture is the painted skin of the model&#8230;duh!</li>
<li>ReflectionTexture is&nbsp;special kind of texture &#8211; a TextureCube.&nbsp; I haven&#8217;t really experimented with it&nbsp;but I&nbsp;believe the texture passed would&nbsp;be a mock up of&nbsp;the typical world around the model,  and it would be rendered as &#8216;good enough&#8217; reflections on the model.&nbsp; I say &#8216;good enough&#8217; because you&#8217;d probably have a static TextureCube of a typical&nbsp;sky,  clouds and ground,  rather than dynamically create one with the exact rendered background and moving clouds.&nbsp;&nbsp;To do so,  might be possible,  but I imagine a performance killer if you had to do it on every frame.</li>
<li>I think the NormalMap stuff might be redundant actually.</li>
</ul>
<div class="wlWriterSmartContent" id="C411E4BC-FA5A-4068-9F25-1AA2B5A98D76:c873c3ed-f4ad-4f08-bca2-6dc709d5a595" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">
<div style="display:block;background-color:#F7F7FF;">
<pre>
<table>
<tr>
<td><span style="color:#008000">//Input variables</span></td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4x4 world;</td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4x4 inverseWorld;</td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4x4 worldViewProjection;</td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 viewPosition;</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 Ambient;</td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 DirectionalDirection;</td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 DirectionalColor;</td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 PointPosition;</td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 PointColor;</td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span> PointFactor;</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 Material;</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>texture SkinTexture;</td>
</tr>
<tr>
<td>sampler Skin = sampler_state</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>   Texture = (SkinTexture);</td>
</tr>
<tr>
<td>   ADDRESSU = CLAMP;</td>
</tr>
<tr>
<td>   ADDRESSV = CLAMP;</td>
</tr>
<tr>
<td>   MAGFILTER = LINEAR;</td>
</tr>
<tr>
<td>   MINFILTER = LINEAR;</td>
</tr>
<tr>
<td>   MIPFILTER = LINEAR;</td>
</tr>
<tr>
<td>};</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>texture NormalMapTexture;</td>
</tr>
<tr>
<td>sampler NormalMap = sampler_state</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>   Texture = (NormalMapTexture);</td>
</tr>
<tr>
<td>   ADDRESSU = CLAMP;</td>
</tr>
<tr>
<td>   ADDRESSV = CLAMP;</td>
</tr>
<tr>
<td>   MAGFILTER = LINEAR;</td>
</tr>
<tr>
<td>   MINFILTER = LINEAR;</td>
</tr>
<tr>
<td>   MIPFILTER = LINEAR;</td>
</tr>
<tr>
<td>};</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>texture ReflectionTexture;</td>
</tr>
<tr>
<td>sampler Reflection = sampler_state</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>   Texture = (ReflectionTexture);</td>
</tr>
<tr>
<td>   ADDRESSU = CLAMP;</td>
</tr>
<tr>
<td>   ADDRESSV = CLAMP;</td>
</tr>
<tr>
<td>   MAGFILTER = LINEAR;</td>
</tr>
<tr>
<td>   MINFILTER = LINEAR;</td>
</tr>
<tr>
<td>   MIPFILTER = LINEAR;</td>
</tr>
<tr>
<td>};</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><span style="color:#0000FF">struct</span> VS_INPUT</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span>4 ObjectPos: POSITION;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span>2 Tex : TEXCOORD0;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span>3 ObjectNormal : NORMAL;</td>
</tr>
<tr>
<td>};</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><span style="color:#0000FF">struct</span> VS_OUTPUT </td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>   <span style="color:#0000FF">float</span>4 ScreenPos:   POSITION;</td>
</tr>
<tr>
<td>   <span style="color:#0000FF">float</span>2 Tex:   TEXCOORD0;</td>
</tr>
<tr>
<td>   <span style="color:#0000FF">float</span>3 WorldNormal: TEXCOORD1;</td>
</tr>
<tr>
<td>   <span style="color:#0000FF">float</span>4 PointDirection: TEXCOORD2;</td>
</tr>
<tr>
<td>};</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>VS_OUTPUT AircraftVS(VS_INPUT In)</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>   VS_OUTPUT Out;</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000">//Move to screen space</span></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;Out.ScreenPos = mul(In.ObjectPos,  worldViewProjection);</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span>4 WorldPos = mul(In.ObjectPos,  world);</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span>4 WorldNormal = mul(In.ObjectNormal,  world);</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000">//Pass on texture coordinates and normal</span></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;Out.Tex = In.Tex;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;Out.WorldNormal = WorldNormal;</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000">//Direction of point light to this vertex</span></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span>4 lightDir;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;lightDir= PointPosition - WorldPos;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span> dist = length(lightDir);</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;lightDir = lightDir/dist;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000">//Store attenuation in w</span></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;lightDir.w = saturate(1/(PointFactor * dist));</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;Out.PointDirection = lightDir;</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>   <span style="color:#0000FF">return</span> Out;</td>
</tr>
<tr>
<td>}</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 DirectionalLight(<span style="color:#0000FF">float</span>3 WorldNormal)</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">return</span> DirectionalColor * saturate(dot(WorldNormal,  normalize(DirectionalDirection)));</td>
</tr>
<tr>
<td>}</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 PointLight(<span style="color:#0000FF">float</span>3 Normal,  <span style="color:#0000FF">float</span>4 PointDirection)</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">return</span> PointColor * saturate(PointDirection.w * dot(Normal,  normalize(PointDirection.xyz)));</td>
</tr>
<tr>
<td>}</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><span style="color:#0000FF">float</span>4 AircraftPS( <span style="color:#0000FF">float</span>2 tex: TEXCOORD0,  <span style="color:#0000FF">float</span>3 WorldNormal : TEXCOORD1,  <span style="color:#0000FF">float</span>4 PointDirection : TEXCOORD2)   : COLOR </td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;WorldNormal = normalize(WorldNormal);</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span>4 Directional = DirectionalLight(WorldNormal);</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span>4 Point = PointLight(WorldNormal,  PointDirection);</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000">//Specular map is in alpha of diffusemap and material</span></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span> MattFactor = Material.a * tex2D(Skin,  tex).a;</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000">//Add it all up</span></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">float</span>4 retval;</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;retval= saturate(</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Material *</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008000">//Remove alpha channel from texture</span></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((Ambient + Directional + Point) *  <span style="color:#0000FF">float</span>4(tex2D(Skin,  tex).rgb,  1)) +</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1-MattFactor) * texCUBE(Reflection,  WorldNormal)</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF">return</span> retval;</td>
</tr>
<tr>
<td>}</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td><span style="color:#008000">//--------------------------------------------------------------//</span></td>
</tr>
<tr>
<td><span style="color:#008000">// Technique Section for Aircraft Effects</span></td>
</tr>
<tr>
<td><span style="color:#008000">//--------------------------------------------------------------//</span></td>
</tr>
<tr>
<td>technique Aircraft</td>
</tr>
<tr>
<td>{</td>
</tr>
<tr>
<td>   pass Single_Pass</td>
</tr>
<tr>
<td>   {</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZENABLE = TRUE;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZWRITEENABLE = TRUE;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CULLMODE = CW;</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VertexShader = compile vs_1_1 AircraftVS();</td>
</tr>
<tr>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PixelShader = compile ps_2_0 AircraftPS();</td>
</tr>
<tr>
<td>   }</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>}</td>
</tr>
<tr>
<td></td>
</tr>
</table>
</pre>
</div>
</div>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">4.8</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">165</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4.8"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=87</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=82</link>
		<comments>http://sharky.bluecog.co.nz/?p=82#comments</comments>
		<pubDate>Tue, 10 Oct 2006 23:49:21 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=82</guid>
		<description><![CDATA[
 I&#8217;ve been asked in a blog comment whether I&#8217;m&#160;giving out the source.
 I&#8217;m afraid, &#160; no,  sorry.&#160;&#160; 
 Y&#8217;see,  this is kind of a personal project and learning exercise for me.  I first coded this exact game idea when I was 13 (that&#8217;s 23 years ago)&#160;in BASIC,  but performance got [...]]]></description>
			<content:encoded><![CDATA[</p>
<p> I&#8217;ve been asked in a blog <a href="http://sharky.bluecog.co.nz/?p=81">comment</a> whether I&#8217;m&nbsp;giving out the source.
<p> I&#8217;m afraid, &nbsp; no,  sorry.&nbsp;&nbsp; <img src='http://sharky.bluecog.co.nz/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />
<p> Y&#8217;see,  this is kind of a personal project and learning exercise for me.  I first coded this exact game idea when I was 13 (that&#8217;s 23 years ago)&nbsp;in BASIC,  but performance got rotten on those ancient &#8220;Home Computers&#8221;.  And it certainly wasn&#8217;t 3D.
<p> Now I&#8217;m&nbsp;much more capable&nbsp;and having another go&#8230;for fun.&nbsp;&nbsp; &nbsp;;)
<p> <strong>I&#8217;m am certainly happy to share snippets and attempt to answer questions though!!! </strong>
<p> Any special requests?</p>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">5</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">257</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "5"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=82</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=75</link>
		<comments>http://sharky.bluecog.co.nz/?p=75#comments</comments>
		<pubDate>Fri, 06 Oct 2006 10:13:06 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=75</guid>
		<description><![CDATA[ Many people discover my blog while searching for XNA &#38; HLSL Tutorials.
 To be honest,  I&#8217;m probably as much a beginner as most of you.&#160;&#160;I do know your pain though &#8211; it&#8217;s damn hard to find an HLSL tutorial pitched at a beginner&#8217;s level.&#160; That is why I blogged when&#160;I finally discovered some [...]]]></description>
			<content:encoded><![CDATA[<p> Many people discover my blog while searching for XNA &amp; HLSL Tutorials.</p>
<p> To be honest,  I&#8217;m probably as much a beginner as most of you.&nbsp;&nbsp;I do know your pain though &#8211; it&#8217;s damn hard to find an HLSL tutorial pitched at a beginner&#8217;s level.&nbsp; That is why I blogged when&nbsp;I finally discovered some promising resources.</p>
<p> I&#8217;m planning to update this blog occasionally with whatever HLSL&nbsp;learning&#8217;s&nbsp;I uncover.&nbsp; They will likely fall short of what you&#8217;d call a&nbsp;tutorial.&nbsp; More likely they&#8217;ll be&nbsp;sporadic little journals&nbsp;sharing my HLSL&nbsp;findings as my own understanding grows.</p>
<p> I&#8217;ve also been in contact with the operator of the <a href="http://www.riemers.net/" target="_blank">Riemers</a> site.  I&#8217;ve linked to&nbsp;his <a href="http://www.riemers.net/Tutorials/DirectX/Csharp3/HLSL_Introduction.php" target="_blank">HLSL tutorial</a> before and no doubt a few of you are finding it an excellent resource.</p>
<p> He plans to update or include more beginner&#8217;s level HLSL tutorials and has welcomed any feedback or ideas from me.&nbsp;&nbsp;</p>
<p> I&#8217;ll be giving him my own wish list at some stage.</p>
<p> If you have any particular ideas or wishes,  please leave a comment here,  and I&#8217;ll be sure to pass them his way.</p>
<p> <strong>So what would you like to see in a beginner&#8217;s level HLSL tutorial?&nbsp; </strong>Go ahead and comment!</p>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">4.6</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">160</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4.6"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=75</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=70</link>
		<comments>http://sharky.bluecog.co.nz/?p=70#comments</comments>
		<pubDate>Fri, 29 Sep 2006 08:41:59 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=70</guid>
		<description><![CDATA[ Just a quick update tonight.
 Things are progressing very well.   I&#8217;m nearly back to the point I was at before rewriting for XNA.
 Just the shooting to add and some minor glitches to fix.
 However,  along the way,  I couldn&#8217;t help but throw in something new.  So here&#8217;s a [...]]]></description>
			<content:encoded><![CDATA[<p> Just a quick update tonight.</p>
<p> Things are progressing very well.   I&#8217;m nearly back to the point I was at before rewriting for XNA.</p>
<p> Just the shooting to add and some minor glitches to fix.</p>
<p> However,  along the way,  I couldn&#8217;t help but throw in something new.  So here&#8217;s a quick peak.</p>
<p> Thanks to the joys of Refactoring,  XNA,  HLSL (shaders) I now have I nice wee system for changing the look of the game for different environments.   Click for a comparison screenshot showing the Spitty in bright daylight vs moody dusk.   In particular,  check out the way the lighting of the model itself is different.</p>
<div style="border: thin dashed silver; padding: 4px; float: left; position: static">
<div style="margin: 1px; float: left"><a title="Day lighting" style="color: white" href="http://sharky.bluecog.co.nz/uploads/progress/20060929/envionments.jpg"><img id="image1" alt="Day" src="http://sharky.bluecog.co.nz/uploads/progress/20060929/day.thumb.jpg" /></a></div>
<div style="margin: 1px; float: left"><a title="Dusk lighting" style="color: white" href="http://sharky.bluecog.co.nz/uploads/progress/20060929/envionments.jpg"><img id="image2" alt="Dusk" src="http://sharky.bluecog.co.nz/uploads/progress/20060929/dusk.thumb.jpg" /></a></div>
</div>
<p style="clear: both">Also note the glossy Cockpit.   Difficult to appreciate with a still image,  but in game you can clearly see it&#8217;s of a different material to the rest of the plane.   Not transparent,  but I don&#8217;t think it really needs to be for this game.</p>
<p style="clear: both">I&#8217;ve designed things such that I can switch between the two environments with one line of code!!!</p>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">4.5</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">274</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4.5"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=70</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=69</link>
		<comments>http://sharky.bluecog.co.nz/?p=69#comments</comments>
		<pubDate>Sun, 24 Sep 2006 22:11:58 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=69</guid>
		<description><![CDATA[ Just a quick update on the Game dev progress.
 Rewriting for XNA has been keeping me busy.   Up till a couple of nights ago,  it had felt very much like back to square one.
 I&#8217;ve finally got past the initial slowness,  and am starting to make forward progress again.
 Milestones

The [...]]]></description>
			<content:encoded><![CDATA[<p> Just a quick update on the Game dev progress.</p>
<p> Rewriting for XNA has been keeping me busy.   Up till a couple of nights ago,  it had felt very much like back to square one.</p>
<p> I&#8217;ve finally got past the initial slowness,  and am starting to make forward progress again.</p>
<p> <u><strong>Milestones</strong></u></p>
<ul>
<li>The seriously stripped down XNA sample code is starting to feel like my own at last.   I actually know where to look for stuff now without needing to search unfamiliar code.</li>
<li>I&#8217;ve integrated my Spitfire model.</li>
<li>So far,  I&#8217;ve got by with the sample HLSL shader.   By looking at the sample code,  I&#8217;ve also worked out how to make the Cockpit look glassy.  Not exactly transparent,  but more reflective and probably good enough.</li>
<li>I&#8217;ve converted over my code for the movement,  so the Spitty now flys and turns as it did before.</li>
</ul>
<p> <strong><u>What&#8217;s next?</u></strong></p>
<ul>
<li>Incorporate or rewrite my Skybox code for the background.</li>
<li>Ditto for the CloudManager.</li>
<li>Then it&#8217;ll be time to incorporate some SHOOTING to keep the punters happy.</li>
</ul>
<p> That&#8217;s about all I can think of for now.</p>
<p> Oh,  and I have this week off work,  so between holiday activities I&#8217;m hoping to get some good progress done!</p>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">4.7</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">188</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4.7"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=69</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=67</link>
		<comments>http://sharky.bluecog.co.nz/?p=67#comments</comments>
		<pubDate>Mon, 18 Sep 2006 09:43:44 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=67</guid>
		<description><![CDATA[ I haven&#8217;t even studied the last ones yet,  but this one looks like a good starter for Pixel Shaders specifically.

Facewound HLSL PostProcessing Pixel Shader tutorial

Average Rating: 4.9 out of 5 based on 295 user reviews.

{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
   [...]]]></description>
			<content:encoded><![CDATA[<p> I haven&#8217;t even studied <a href="http://sharky.bluecog.co.nz/?p=64">the last ones</a> yet,  but this one looks like a good starter for Pixel Shaders specifically.</p>
<ul>
<li><a target="_blank" href="http://www.facewound.com/tutorials/shader1/">Facewound HLSL PostProcessing Pixel Shader tutorial</a></li>
</ul>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">4.6</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">246</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4.6"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=67</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>http://sharky.bluecog.co.nz/?p=64</link>
		<comments>http://sharky.bluecog.co.nz/?p=64#comments</comments>
		<pubDate>Fri, 15 Sep 2006 01:06:53 +0000</pubDate>
		<dc:creator>Sharky</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[HLSL]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://sharky.bluecog.co.nz/?p=64</guid>
		<description><![CDATA[ I mentioned earlier that the new XNA framework requires you to do things with Shaders,  where before you didn&#8217;t have to.
 This is all good,  but yet another new thing to learn.
 So I&#8217;ve been googling quite a lot lately.   I can&#8217;t believe what a struggle it has been to [...]]]></description>
			<content:encoded><![CDATA[<p> I mentioned <a href="http://sharky.bluecog.co.nz/?p=50">earlier</a> that the new XNA framework requires you to do things with Shaders,  where before you didn&#8217;t have to.</p>
<p> This is all good,  but yet another new thing to learn.</p>
<p> So I&#8217;ve been <a target="_blank" href="http://www.google.com">googling</a> quite a lot lately.   I can&#8217;t believe what a struggle it has been to find a decent beginner level tutorial out there!!!</p>
<p> Last night,  I think I may have finally stumbled on a couple.   I&#8217;ll look into them in the weekend,  but they did at least start like a tutorial for beginners like me.</p>
<p> They are not XNA specific,  but I don&#8217;t think that should matter.   HLSL is not new,  and it is a DirectX language &#8211; not C#.</p>
<p> One of them appears to be an excerpt from a book,  and I don&#8217;t know how old or how relevant it is to DirectX 9&#8217;s HLSL.</p>
<p> Here are the links,  on the off chance they prove useful&#8230;</p>
<ul>
<li><a target="_blank" href="http://www.riemers.net/Tutorials/DirectX/Csharp3/HLSL_Introduction.php">Riemer&#8217;s &#8211; High Level Shader Language (HLSL) Introduction</a></li>
<li><a target="_blank" href="http://docendo.bai.nu/img/kapitel/0735616531.htm">excerpt from some mystery book&#8230;I think?!?!?</a></li>
</ul>
<p> There is also this one,  but I find it goes too deep too quickly&#8230;</p>
<ul>
<li><a target="_blank" href="http://www.neatware.com/lbstudio/web/hlsl.html">Neatware &#8211; HLSL Introduction</a></li>
</ul>
<p><div itemprop="aggregateRating" itemscope="itemscope" itemtype="http://schema.org/AggregateRating">Average Rating: <span itemprop="ratingValue">4.5</span> out of <span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">168</span> user reviews.</span></div></p><p>
<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Review",
"datePublished":"July 26, 2026",
  "itemReviewed": {
    "@type": "Product",
    "name": "Male Enhancement Pills"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "4.5"
  },

  "author": {
    "@type": "Organization",
    "name": "LegitScript"
  },
  "reviewBody": "Excellent quality at low price. Very good customer service.",
  "publisher": {
    "@type": "Organization",
    "name": "LegitScript"
  }
}
</script><div id="mlnks" class="entry-meta"><p>[ <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/" title=""></a> | <a href="/-" title=" "> </a> | <a href="/" title=""></a> ]</p></div>]]></content:encoded>
			<wfw:commentRss>http://sharky.bluecog.co.nz/?feed=rss2&amp;p=64</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
