<?xml version="1.0"?>

<!DOCTYPE MODE SYSTEM "xmode.dtd">

<MODE>
<!--
DirectX Effect and HLSL - Syntax Highlighting (Edit Mode) for jEdit
Including: Preprocessor and HLSL language up to DirectX 11 (Shader Model 5.0)

Author: Adam Sawicki - sawickiap@poczta.onet.pl - http://regedit.gamedev.pl/

Version 2.0, Apr 2010
	Updated SM3 to SM5, removed assembler support.
-->

	<PROPS>
		<PROPERTY NAME="commentStart" VALUE="/*" />
		<PROPERTY NAME="commentEnd" VALUE="*/" />
		<PROPERTY NAME="lineComment" VALUE="//" />
		<PROPERTY NAME="wordBreakChars" VALUE=".,+-*/=&lt;&gt;?^&amp;[]{}" />

		<!-- Auto indent -->
        <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
        <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
        <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
        <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
        <PROPERTY NAME="indentNextLine"
            VALUE="(?!^\s*(#|//)).*(\b(if|while|for)\s*\(.*\)|\b(else|do)\b)[^{;]*$" />
        <PROPERTY NAME="unindentThisLine"
            VALUE="^\s*((.*case\b.*|[\p{Alpha}_][\p{Alnum}_]*)\s*(slots)?:(?!:)).*$" />
        <PROPERTY NAME="electricKeys" VALUE=":" />
	</PROPS>

	<RULES
		IGNORE_CASE="TRUE"
		HIGHLIGHT_DIGITS="TRUE"
		DIGIT_RE="((0[xX][0-9a-fA-F]+|\d+)[uUIL]?|\d+([eE]\d*)?[hHfF]?)">

		<!-- C style comment -->
		<SPAN TYPE="COMMENT1">
			<BEGIN>/*</BEGIN>
			<END>*/</END>
		</SPAN>

		<SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
			<BEGIN>"</BEGIN>
			<END>"</END>
		</SPAN>
		<SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
			<BEGIN>'</BEGIN>
			<END>'</END>
		</SPAN>

		<!-- preprocessor statements -->
		<SEQ TYPE="KEYWORD2">##</SEQ>
		<SEQ TYPE="KEYWORD2">#@</SEQ>
		<EOL_SPAN TYPE="KEYWORD2" DELEGATE="Preprocessor">#</EOL_SPAN>

		<!-- C style comment -->
		<EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>

		<!-- Operators - multi character -->
		<SEQ TYPE="OPERATOR">++</SEQ>
		<SEQ TYPE="OPERATOR">--</SEQ>
		<SEQ TYPE="OPERATOR">&amp;&amp;</SEQ>
		<SEQ TYPE="OPERATOR">||</SEQ>
		<SEQ TYPE="OPERATOR">==</SEQ>
		<SEQ TYPE="OPERATOR">::</SEQ>
		<SEQ TYPE="OPERATOR">&lt;&lt;</SEQ>
		<SEQ TYPE="OPERATOR">&lt;&lt;=</SEQ>
		<SEQ TYPE="OPERATOR">&gt;&gt;</SEQ>
		<SEQ TYPE="OPERATOR">&gt;&gt;=</SEQ>
		<SEQ TYPE="OPERATOR">...</SEQ>
		<SEQ TYPE="OPERATOR">&lt;=</SEQ>
		<SEQ TYPE="OPERATOR">&gt;=</SEQ>
		<SEQ TYPE="OPERATOR">!=</SEQ>
		<SEQ TYPE="OPERATOR">*=</SEQ>
		<SEQ TYPE="OPERATOR">/=</SEQ>
		<SEQ TYPE="OPERATOR">+=</SEQ>
		<SEQ TYPE="OPERATOR">-=</SEQ>
		<SEQ TYPE="OPERATOR">%=</SEQ>
		<SEQ TYPE="OPERATOR">&amp;=</SEQ>
		<SEQ TYPE="OPERATOR">|=</SEQ>
		<SEQ TYPE="OPERATOR">^=</SEQ>
		<SEQ TYPE="OPERATOR">-&gt;</SEQ>

		<!-- Operators - single characters -->
		<SEQ TYPE="OPERATOR">}</SEQ>
		<SEQ TYPE="OPERATOR">{</SEQ>
		<SEQ TYPE="OPERATOR">+</SEQ>
		<SEQ TYPE="OPERATOR">-</SEQ>
		<SEQ TYPE="OPERATOR">*</SEQ>
		<SEQ TYPE="OPERATOR">/</SEQ>
		<SEQ TYPE="OPERATOR">%</SEQ>
		<SEQ TYPE="OPERATOR">=</SEQ>
		<SEQ TYPE="OPERATOR">&lt;</SEQ>
		<SEQ TYPE="OPERATOR">&gt;</SEQ>
		<SEQ TYPE="OPERATOR">!</SEQ>
		<SEQ TYPE="OPERATOR">~</SEQ>
		<SEQ TYPE="OPERATOR">&amp;</SEQ>
		<SEQ TYPE="OPERATOR">|</SEQ>
		<SEQ TYPE="OPERATOR">^</SEQ>

		<!-- Function calls -->
		<MARK_PREVIOUS TYPE="FUNCTION" EXCLUDE_MATCH="TRUE">(</MARK_PREVIOUS>

		<!-- Swizzle operator for vectors/scalars (a.xyzw OR b.rgba), matrices (c._m00_m01 OR d._11_12) indexing -->
		<SEQ_REGEXP TYPE="OPERATOR" HASH_CHAR=".">.(([xyzw]{1,4})|([rgba]{1,4})|((_m[0123][0123])+)|((_[1234][1234])+))(?!\p{Alnum})</SEQ_REGEXP>

		<!-- Atomic, but complex types -->
		<SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="bool">bool[1234](x[1234])?\b</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="uint">uint[1234](x[1234])?\b</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="int">int[1234](x[1234])?\b</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="half">half[1234](x[1234])?\b</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="float">float[1234](x[1234])?\b</SEQ_REGEXP>
		<SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="double">double[1234](x[1234])?\b</SEQ_REGEXP>

		<!-- Semantics -->
		<SEQ_REGEXP TYPE="KEYWORD1" HASH_CHAR=":">:\s*(register\s*\(\w+(\s*\,\s*\w+\s*)?\)|\w+)</SEQ_REGEXP>

		<KEYWORDS>
			<!-- Control flow -->
			<KEYWORD1>Break</KEYWORD1>
			<KEYWORD1>Continue</KEYWORD1> 
			<KEYWORD1>Default</KEYWORD1>
			<KEYWORD1>Do</KEYWORD1>
			<KEYWORD1>Else</KEYWORD1>
			<KEYWORD1>For</KEYWORD1>
			<KEYWORD1>If</KEYWORD1>
			<KEYWORD1>Namespace</KEYWORD1>
			<KEYWORD1>Return</KEYWORD1>
			<KEYWORD1>Switch</KEYWORD1>
			<KEYWORD1>Case</KEYWORD1>
			<KEYWORD1>While</KEYWORD1>
			<KEYWORD1>Typedef</KEYWORD1>
			<KEYWORD1>Discard</KEYWORD1>

			<!-- Effect keywords -->
			<KEYWORD1>Compile</KEYWORD1>
			<KEYWORD1>compile_fragment</KEYWORD1>
			<KEYWORD1>CompileShader</KEYWORD1>
			<KEYWORD1>ConstructGSWithSO</KEYWORD1>
			<KEYWORD1>decl</KEYWORD1> <!-- ?? -->
			<KEYWORD1>fxgroup</KEYWORD1>
			<KEYWORD1>Pass</KEYWORD1>
			<KEYWORD1>Technique10</KEYWORD1>
			<KEYWORD1>Technique11</KEYWORD1>
			<KEYWORD1>Technique</KEYWORD1>
			
			<!-- Atomic types -->
			<KEYWORD2>Bool</KEYWORD2>
			<KEYWORD2>uint</KEYWORD2>
			<KEYWORD2>unsigned</KEYWORD2>
			<KEYWORD2>signed</KEYWORD2>
			<KEYWORD2>Int</KEYWORD2>
			<KEYWORD2>Half</KEYWORD2>
			<KEYWORD2>Float</KEYWORD2>
			<KEYWORD2>Double</KEYWORD2> 
			<KEYWORD2>String</KEYWORD2>
			<KEYWORD2>Interface</KEYWORD2>  
			<KEYWORD2>Class</KEYWORD2>
			<KEYWORD2>Struct</KEYWORD2>
			<KEYWORD2>Vector</KEYWORD2>
			<KEYWORD2>Matrix</KEYWORD2> 
			<KEYWORD2>Void</KEYWORD2>
			<KEYWORD2>snorm</KEYWORD2>
			<KEYWORD2>unorm</KEYWORD2>
			<KEYWORD2>DWORD</KEYWORD2>

			<!-- Object types -->
			<KEYWORD3>AppendStructuredBuffer</KEYWORD3>
			<KEYWORD3>BlendState</KEYWORD3>
			<KEYWORD3>Buffer</KEYWORD3>
			<KEYWORD3>ByteAddressBuffer</KEYWORD3>
			<KEYWORD3>CBuffer</KEYWORD3>
			<KEYWORD3>ComputeShader</KEYWORD3>
			<KEYWORD3>ConsumeStructuredBuffer</KEYWORD3>
			<KEYWORD3>DepthStencilState</KEYWORD3>
			<KEYWORD3>DepthStencilView</KEYWORD3>
			<KEYWORD3>DomainShader</KEYWORD3>
			<KEYWORD3>GeometryShader</KEYWORD3> 
			<KEYWORD3>HullShader</KEYWORD3>
			<KEYWORD3>InputPatch</KEYWORD3>
			<KEYWORD3>OutputPatch</KEYWORD3>
			<KEYWORD3>PixelShader</KEYWORD3>
			<KEYWORD3>RasterizerState</KEYWORD3>
			<KEYWORD3>RenderTargetView</KEYWORD3>
			<KEYWORD3>RWBuffer</KEYWORD3>
			<KEYWORD3>RWByteAddressBuffer</KEYWORD3>
			<KEYWORD3>RWStructuredBuffer</KEYWORD3>
			<KEYWORD3>RWTexture1D</KEYWORD3>
			<KEYWORD3>RWTexture1DArray</KEYWORD3>
			<KEYWORD3>RWTexture2D</KEYWORD3>
			<KEYWORD3>RWTexture2DArray</KEYWORD3>
			<KEYWORD3>RWTexture3D</KEYWORD3>
			<KEYWORD3>Sampler1D</KEYWORD3>
			<KEYWORD3>Sampler2D</KEYWORD3>
			<KEYWORD3>Sampler3D</KEYWORD3>
			<KEYWORD3>Sampler</KEYWORD3>
			<KEYWORD3>Sampler_State</KEYWORD3>
			<KEYWORD3>SamplerComparisonState</KEYWORD3>
			<KEYWORD3>SamplerCUBE</KEYWORD3>
			<KEYWORD3>SamplerState</KEYWORD3>
			<KEYWORD3>Stateblock</KEYWORD3>
			<KEYWORD3>Stateblock_state</KEYWORD3>
			<KEYWORD3>StructuredBuffer</KEYWORD3>
			<KEYWORD3>TBuffer</KEYWORD3>
			<KEYWORD3>Texture1D</KEYWORD3>
			<KEYWORD3>Texture1DArray</KEYWORD3>
			<KEYWORD3>Texture2D</KEYWORD3>
			<KEYWORD3>Texture2DArray</KEYWORD3>
			<KEYWORD3>Texture2DMS</KEYWORD3>
			<KEYWORD3>Texture2DMSArray</KEYWORD3>
			<KEYWORD3>Texture3D</KEYWORD3>
			<KEYWORD3>texture</KEYWORD3>
			<KEYWORD3>TextureCube</KEYWORD3>
			<KEYWORD3>TextureCubeArray</KEYWORD3>
			<KEYWORD3>VertexShader</KEYWORD3>

			<!-- Prefixes for variables -->
			<KEYWORD4>column_major</KEYWORD4>
			<KEYWORD4>Const</KEYWORD4>
			<KEYWORD4>extern</KEYWORD4>
			<KEYWORD4>groupshared</KEYWORD4>
			<KEYWORD4>In</KEYWORD4>
			<KEYWORD4>Inline</KEYWORD4> 
			<KEYWORD4>Inout</KEYWORD4>
			<KEYWORD4>nointerpolation</KEYWORD4>
			<KEYWORD4>Nointerpolation</KEYWORD4>
			<KEYWORD4>Out</KEYWORD4> 
			<KEYWORD4>precise</KEYWORD4>
			<KEYWORD4>Precise</KEYWORD4>
			<KEYWORD4>row_major</KEYWORD4>
			<KEYWORD4>Shared</KEYWORD4>
			<KEYWORD4>single</KEYWORD4>
			<KEYWORD4>Static</KEYWORD4>
			<KEYWORD4>Uniform</KEYWORD4> 
			<KEYWORD4>Volatile</KEYWORD4>
			<KEYWORD4>globallycoherent</KEYWORD4>

			<!-- Literal values -->
			<LITERAL1>False</LITERAL1>
			<LITERAL1>True</LITERAL1>
			<LITERAL1>null</LITERAL1>

			<!-- Suffixes for variables -->
			<LITERAL4>register</LITERAL4>
			<LITERAL4>packoffset</LITERAL4>
			
			<!-- Interpolation modifiers -->
			<LITERAL4>linear</LITERAL4>
			<LITERAL4>centroid</LITERAL4>
			<LITERAL4>nointerpolation</LITERAL4>
			<LITERAL4>noperspective</LITERAL4>
			<LITERAL4>sample</LITERAL4>

			<!-- Object types that are not keywords -->
			<LITERAL4>PointStream</LITERAL4>
			<LITERAL4>LineStream</LITERAL4>
			<LITERAL4>TriangleStream</LITERAL4>
			
			<!-- Reserved words -->
			<INVALID>auto</INVALID>
			<INVALID>catch</INVALID>
			<INVALID>char</INVALID>
			<INVALID>const_cast</INVALID>
			<INVALID>delete</INVALID>
			<INVALID>dynamic_cast</INVALID>
			<INVALID>enum</INVALID>
			<INVALID>explicit</INVALID>
			<INVALID>friend</INVALID>
			<INVALID>goto</INVALID>
			<INVALID>long</INVALID>
			<INVALID>mutable</INVALID>
			<INVALID>new</INVALID>
			<INVALID>operator</INVALID>
			<INVALID>private</INVALID>
			<INVALID>protected</INVALID>
			<INVALID>public</INVALID>
			<INVALID>reinterpret_cast</INVALID>
			<INVALID>short</INVALID>
			<INVALID>signed</INVALID>
			<INVALID>sizeof</INVALID>
			<INVALID>static_cast</INVALID>
			<INVALID>template</INVALID>
			<INVALID>this</INVALID>
			<INVALID>throw</INVALID>
			<INVALID>try</INVALID>
			<INVALID>typename</INVALID>
			<INVALID>union</INVALID>
			<INVALID>using</INVALID>
			<INVALID>virtual</INVALID>

			<!-- Intrinsic functions -->
			<LITERAL2>abs</LITERAL2>
			<LITERAL2>acos</LITERAL2>
			<LITERAL2>all</LITERAL2>
			<LITERAL2>any</LITERAL2>
			<LITERAL2>asdouble</LITERAL2>
			<LITERAL2>asfloat</LITERAL2>
			<LITERAL2>asin</LITERAL2>
			<LITERAL2>asint</LITERAL2>
			<LITERAL2>asuint</LITERAL2>
			<LITERAL2>atan2</LITERAL2>
			<LITERAL2>atan</LITERAL2>
			<LITERAL2>ceil</LITERAL2>
			<LITERAL2>clamp</LITERAL2>
			<LITERAL2>cos</LITERAL2>
			<LITERAL2>cosh</LITERAL2>
			<LITERAL2>countbits</LITERAL2>
			<LITERAL2>cross</LITERAL2>
			<LITERAL2>D3DCOLORtoUBYTE4</LITERAL2>
			<LITERAL2>degrees</LITERAL2>
			<LITERAL2>determinant</LITERAL2>
			<LITERAL2>distance</LITERAL2>
			<LITERAL2>dot</LITERAL2>
			<LITERAL2>dst</LITERAL2>
			<LITERAL2>exp2</LITERAL2>
			<LITERAL2>exp</LITERAL2>
			<LITERAL2>f16tof32</LITERAL2>
			<LITERAL2>f32tof16</LITERAL2>
			<LITERAL2>faceforward</LITERAL2>
			<LITERAL2>firstbithigh</LITERAL2>
			<LITERAL2>firstbitlow</LITERAL2>
			<LITERAL2>floor</LITERAL2>
			<LITERAL2>fmod</LITERAL2>
			<LITERAL2>frac</LITERAL2>
			<LITERAL2>frexp</LITERAL2>
			<LITERAL2>fwidth</LITERAL2>
			<LITERAL2>isfinite</LITERAL2>
			<LITERAL2>isinf</LITERAL2>
			<LITERAL2>isnan</LITERAL2>
			<LITERAL2>ldexp</LITERAL2>
			<LITERAL2>length</LITERAL2>
			<LITERAL2>lerp</LITERAL2>
			<LITERAL2>lit</LITERAL2>
			<LITERAL2>log10</LITERAL2>
			<LITERAL2>log2</LITERAL2>
			<LITERAL2>log</LITERAL2>
			<LITERAL2>mad</LITERAL2>
			<LITERAL2>max</LITERAL2>
			<LITERAL2>min</LITERAL2>
			<LITERAL2>modf</LITERAL2>
			<LITERAL2>mul</LITERAL2>
			<LITERAL2>normalize</LITERAL2>
			<LITERAL2>pow</LITERAL2>
			<LITERAL2>radians</LITERAL2>
			<LITERAL2>rcp</LITERAL2>
			<LITERAL2>reflect</LITERAL2>
			<LITERAL2>refract</LITERAL2>
			<LITERAL2>reversebits</LITERAL2>
			<LITERAL2>round</LITERAL2>
			<LITERAL2>rsqrt</LITERAL2>
			<LITERAL2>saturate</LITERAL2>
			<LITERAL2>sign</LITERAL2>
			<LITERAL2>sin</LITERAL2>
			<LITERAL2>sincos</LITERAL2>
			<LITERAL2>sinh</LITERAL2>
			<LITERAL2>smoothstep</LITERAL2>
			<LITERAL2>sqrt</LITERAL2>
			<LITERAL2>step</LITERAL2>
			<LITERAL2>tan</LITERAL2>
			<LITERAL2>tanh</LITERAL2>
			<LITERAL2>transpose</LITERAL2>
			<LITERAL2>trunc</LITERAL2>
			<!-- New in June 2010 -->
			<LITERAL2>printf</LITERAL2>
			<LITERAL2>errorf</LITERAL2>
			<LITERAL2>abort</LITERAL2>
			
			<!-- Complex intrinsic functions -->
			<LITERAL3>AllMemoryBarrier</LITERAL3>
			<LITERAL3>AllMemoryBarrierWithGroupSync</LITERAL3>
			<LITERAL3>clip</LITERAL3>
			<LITERAL3>ddx</LITERAL3>
			<LITERAL3>ddx_coarse</LITERAL3>
			<LITERAL3>ddx_fine</LITERAL3>
			<LITERAL3>ddy</LITERAL3>
			<LITERAL3>ddy_coarse</LITERAL3>
			<LITERAL3>ddy_fine</LITERAL3>
			<LITERAL3>DeviceMemoryBarrier</LITERAL3>
			<LITERAL3>DeviceMemoryBarrierWithGroupSync</LITERAL3>
			<LITERAL3>EvaluateAttributeAtCentroid</LITERAL3>
			<LITERAL3>EvaluateAttributeAtSample</LITERAL3>
			<LITERAL3>EvaluateAttributeSnapped</LITERAL3>
			<LITERAL3>GetRenderTargetSampleCount</LITERAL3>
			<LITERAL3>GetRenderTargetSamplePosition</LITERAL3>
			<LITERAL3>GroupMemoryBarrier</LITERAL3>
			<LITERAL3>GroupMemoryBarrierWithGroupSync</LITERAL3>
			<LITERAL3>InterlockedAdd</LITERAL3>
			<LITERAL3>InterlockedAnd</LITERAL3>
			<LITERAL3>InterlockedCompareExchange</LITERAL3>
			<LITERAL3>InterlockedCompareStore</LITERAL3>
			<LITERAL3>InterlockedExchange</LITERAL3>
			<LITERAL3>InterlockedMax</LITERAL3>
			<LITERAL3>InterlockedMin</LITERAL3>
			<LITERAL3>InterlockedOr</LITERAL3>
			<LITERAL3>InterlockedXor</LITERAL3>
			<LITERAL3>noise</LITERAL3>
			<LITERAL3>Process2DQuadTessFactorsAvg</LITERAL3>
			<LITERAL3>Process2DQuadTessFactorsMax</LITERAL3>
			<LITERAL3>Process2DQuadTessFactorsMin</LITERAL3>
			<LITERAL3>ProcessIsolineTessFactors</LITERAL3>
			<LITERAL3>ProcessQuadTessFactorsAvg</LITERAL3>
			<LITERAL3>ProcessQuadTessFactorsMax</LITERAL3>
			<LITERAL3>ProcessQuadTessFactorsMin</LITERAL3>
			<LITERAL3>ProcessTriTessFactorsAvg</LITERAL3>
			<LITERAL3>ProcessTriTessFactorsMax</LITERAL3>
			<LITERAL3>ProcessTriTessFactorsMin</LITERAL3>
			<LITERAL3>tex1D</LITERAL3>
			<LITERAL3>tex1Dbias</LITERAL3>
			<LITERAL3>tex1Dgrad</LITERAL3>
			<LITERAL3>tex1Dlod</LITERAL3>
			<LITERAL3>tex1Dproj</LITERAL3>
			<LITERAL3>tex2D</LITERAL3>
			<LITERAL3>tex2Dbias</LITERAL3>
			<LITERAL3>tex2Dgrad</LITERAL3>
			<LITERAL3>tex2Dlod</LITERAL3>
			<LITERAL3>tex2Dproj</LITERAL3>
			<LITERAL3>tex3D</LITERAL3>
			<LITERAL3>tex3Dbias</LITERAL3>
			<LITERAL3>tex3Dgrad</LITERAL3>
			<LITERAL3>tex3Dlod</LITERAL3>
			<LITERAL3>tex3Dproj</LITERAL3>
			<LITERAL3>texCUBE</LITERAL3>
			<LITERAL3>texCUBEbias</LITERAL3>
			<LITERAL3>texCUBEgrad</LITERAL3>
			<LITERAL3>texCUBElod</LITERAL3>
			<LITERAL3>texCUBEproj</LITERAL3>

		</KEYWORDS>
	</RULES>

	<RULES SET="Include" DEFAULT="KEYWORD2" />

	<RULES
		SET="Preprocessor"
		DEFAULT="KEYWORD2"
		IGNORE_CASE="FALSE"
		HIGHLIGHT_DIGITS="TRUE"
		DIGIT_RE="((0[xX][0-9a-fA-F]+|\d+)[uUIL]?|\d+([eE]\d*)?[hHfF]?)">

		<!-- C style comment -->
		<SPAN TYPE="COMMENT1">
			<BEGIN>/*</BEGIN>
			<END>*/</END>
		</SPAN>

		<!-- this is a hack so that #include <net/if.h> does not get the if highlighted -->
		<EOL_SPAN TYPE="MARKUP" DELEGATE="Include">include</EOL_SPAN>

		<KEYWORDS>
			<!-- Directives -->
			<MARKUP>define</MARKUP>
			<MARKUP>elif</MARKUP>
			<MARKUP>else</MARKUP>
			<MARKUP>endif</MARKUP>
			<MARKUP>error</MARKUP>
			<MARKUP>if</MARKUP>
			<MARKUP>ifdef</MARKUP>
			<MARKUP>ifndef</MARKUP>
			<MARKUP>line</MARKUP>
			<MARKUP>pragma</MARKUP>
			<MARKUP>undef</MARKUP>

			<!-- Other -->
			<LITERAL1>pack_matrix</LITERAL1>
			<LITERAL1>warning</LITERAL1>
			<LITERAL1>def</LITERAL1>
			<LITERAL1>defined</LITERAL1>
			<LITERAL1>D3DX</LITERAL1>
			<LITERAL1>D3DX_VERSION</LITERAL1>
			<LITERAL1>DIRECT3D</LITERAL1>
			<LITERAL1>DIRECT3D_VERSION</LITERAL1>
			<LITERAL1>__FILE__</LITERAL1>
			<LITERAL1>__LINE__</LITERAL1>
		</KEYWORDS>
	</RULES>
</MODE>
