SyntaxHighlighter.brushes.Hlsl = function()
{
	// Copyright 2006 Shin, YoungJin
	
	var datatypes =	'bool class char class double enum '+
					'float float2 float2x2 float2x4 float3 float3x3 float4 float4x4 '+
					'int int2 int2x2 int2x4 int3 int3x3 int4 int4x4 long matrix '+
					'short string struct vector '+
					'sampler sampler1D sampler2D sampler3D samplerCUBE ';
					'texture texture1D texture2D texture3D textureCUBE';

	var keywords =	'asm auto break case catch compile const const_cast continue '+
					'decl default delete do dynamic_cast else explicit extern '+
					'false for friend goto '+
					'half if in inline inout mutable '+
					'namespace new operator out pass private protected public register reinterpret_cast return '+
					'shared signed sizeof static static_cast switch '+
					'technique template texture this throw true try typedef typename '+
					'uniform union unsigned using virtual volatile while '+
					'.a .b .g .r .w .x .y .z';
					
	var functions =	'abs ceil clamp cos cross degrees determinant distance dot floor'+
					'length lerp log log10 log2 max min mul normalize pow radians reflect'+
					'saturate sin sincos sqrt tan transpose';
					
	var constants = 'TEXCOORD0 POSITION0 COLOR0';

	this.regexList = [
		{ regex: SyntaxHighlighter.regexLib.singleLineCComments,	css: 'comments' },			// one line comments
		{ regex: SyntaxHighlighter.regexLib.multiLineCComments,		css: 'comments' },			// multiline comments
		{ regex: SyntaxHighlighter.regexLib.doubleQuotedString,		css: 'string' },			// strings
		{ regex: SyntaxHighlighter.regexLib.singleQuotedString,		css: 'string' },			// strings
		{ regex: /^ *#.*/gm,										css: 'preprocessor' },
		{ regex: new RegExp(this.getKeywords(datatypes), 'gm'),		css: 'color1' },
		{ regex: new RegExp(this.getKeywords(constants), 'gm'),		css: 'constants' },
		{ regex: new RegExp(this.getKeywords(functions), 'gm'),		css: 'functions' },
		{ regex: new RegExp(this.getKeywords(keywords), 'gm'),		css: 'keyword' }
		];
};

SyntaxHighlighter.brushes.Hlsl.prototype	= new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Hlsl.aliases	= ['hlsl', 'fx'];
