mtvare6 | 616219f | 2025-01-07 20:31:27 +0100 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: Slang |
| 3 | " Maintainer: Austin Shijo <epestr@proton.me> |
| 4 | " Last Change: 2024 Jan 05 |
| 5 | |
| 6 | if exists("b:current_syntax") |
| 7 | finish |
| 8 | endif |
| 9 | |
| 10 | " Read the C syntax to start with |
| 11 | runtime! syntax/c.vim |
| 12 | unlet b:current_syntax |
| 13 | |
| 14 | " Annotations |
| 15 | syn match shaderslangAnnotation /<.*;>/ |
| 16 | |
| 17 | " Attributes |
| 18 | syn match shaderslangAttribute /^\s*\[maxvertexcount(\s*\w\+\s*)\]/ |
| 19 | syn match shaderslangAttribute /^\s*\[domain(\s*"\(tri\|quad\|isoline\)"\s*)\]/ |
| 20 | syn match shaderslangAttribute /^\s*\[earlydepthstencil\]/ |
| 21 | syn match shaderslangAttribute /^\s*\[instance(\s*\w\+\s*)\]/ |
| 22 | syn match shaderslangAttribute /^\s*\[maxtessfactor(\s*\w\+\s*)\]/ |
| 23 | syn match shaderslangAttribute /^\s*\[numthreads(\s*\w\+\s*,\s*\w\+\s*,\s*\w\+\s*)\]/ |
| 24 | syn match shaderslangAttribute /^\s*\[outputcontrolpoints(\s*\w\+\s*)\]/ |
| 25 | syn match shaderslangAttribute /^\s*\[outputtopology(\s*"\(point\|line\|triangle_cw\|triangle_ccw\|triangle\)"\s*)\]/ |
| 26 | syn match shaderslangAttribute /^\s*\[partitioning(\s*"\(integer\|fractional_even\|fractional_odd\|pow2\)"\s*)\]/ |
| 27 | syn match shaderslangAttribute /^\s*\[patchconstantfunc(\s*"\(\d\|\w\|_\)\+"\s*)\]/ |
| 28 | syn match shaderslangAttribute /^\s*\[WaveSize(\s*\w\+\(\s*,\s*\w\+\(\s*,\s*\w\+\)\?\)\?\s*)\]/ |
| 29 | syn match shaderslangAttribute /^\s*\[shader(\s*"\(anyhit\|callable\|closesthit\|intersection\|miss\|raygeneration\)"\s*)\]/ |
| 30 | |
| 31 | syn match shaderslangAttribute /^\s*\[fastopt\]/ |
| 32 | syn match shaderslangAttribute /^\s*\[loop\]/ |
| 33 | syn match shaderslangAttribute /^\s*\[unroll\]/ |
| 34 | syn match shaderslangAttribute /^\s*\[allow_uav_condition\]/ |
| 35 | syn match shaderslangAttribute /^\s*\[branch\]/ |
| 36 | syn match shaderslangAttribute /^\s*\[flatten\]/ |
| 37 | syn match shaderslangAttribute /^\s*\[forcecase\]/ |
| 38 | syn match shaderslangAttribute /^\s*\[call\]/ |
| 39 | syn match shaderslangAttribute /^\s*\[WaveOpsIncludeHelperLanes\]/ |
| 40 | |
| 41 | syn match shaderslangAttribute /\[raypayload\]/ |
| 42 | |
| 43 | " Work graph shader target attributes |
| 44 | syn match shaderslangAttribute /^\s*\[Shader(\s*"\(\d\|\w\|_\)\+"\s*)\]/ |
| 45 | |
| 46 | " Work graph shader function attributes |
| 47 | syn match shaderslangAttribute /^\s*\[NodeLaunch(\s*"\(broadcasting\|coalescing\|thread\)"\s*)\]/ |
| 48 | syn match shaderslangAttribute /^\s*\[NodeIsProgramEntry\]/ |
| 49 | syn match shaderslangAttribute /^\s*\[NodeLocalRootArgumentsTableIndex(\s*\w\+\s*)\]/ |
| 50 | syn match shaderslangAttribute /^\s*\[NumThreads(\s*\w\+\s*,\s*\w\+\s*,\s*\w\+\s*)\]/ |
| 51 | syn match shaderslangAttribute /^\s*\[NodeShareInputOf(\s*"\w\+"\(\s*,\s*\w\+\)\?\s*)\]/ |
| 52 | syn match shaderslangAttribute /^\s*\[NodeDispatchGrid(\s*\w\+\s*,\s*\w\+\s*,\s*\w\+\s*)\]/ |
| 53 | syn match shaderslangAttribute /^\s*\[NodeMaxDispatchGrid(\s*\w\+\s*,\s*\w\+\s*,\s*\w\+\s*)\]/ |
| 54 | syn match shaderslangAttribute /^\s*\[NodeMaxRecursionDepth(\s*\w\+\s*)\]/ |
| 55 | syn match shaderslangAttribute /^\s*\[NodeMaxInputRecordsPerGraphEntryRecord(\s*\w\+\s*,\s*\(true\|false\)\s*)\]/ |
| 56 | |
| 57 | " Work graph record attributes |
| 58 | syn match shaderslangAttribute /\[NodeTrackRWInputSharing\]/ |
| 59 | syn match shaderslangAttribute /\[MaxRecords(\s*\w\+\s*)\]/ |
| 60 | syn match shaderslangAttribute /\[NodeID(\s*"\w\+"\(\s*,\s*\w\+\)\?\s*)\]/ |
| 61 | syn match shaderslangAttribute /\[MaxRecordsSharedWith(\s*\w\+\s*)\]/ |
| 62 | syn match shaderslangAttribute /\[AllowSparseNodes\]/ |
| 63 | syn match shaderslangAttribute /\[NodeArraySize(\s*\w\+\s*)\]/ |
| 64 | syn match shaderslangAttribute /\[UnboundedSparseNodes\]/ |
| 65 | |
| 66 | " Intrinsic functions |
| 67 | syn keyword shaderslangFunc abs acos acosh asin asinh atan atanh cos cosh exp exp2 floor log log10 log2 round rsqrt sin sincos sinh sqrt tan tanh trunc |
| 68 | syn keyword shaderslangFunc AllMemoryBarrier AllMemoryBarrierWithGroupSync DeviceMemoryBarrier DeviceMemoryBarrierWithGroupSync GroupMemoryBarrier GroupMemoryBarrierWithGroupSync |
| 69 | syn keyword shaderslangFunc abort clip errorf printf |
| 70 | syn keyword shaderslangFunc all any countbits faceforward firstbithigh firstbitlow isfinite isinf isnan max min noise pow reversebits sign |
| 71 | syn keyword shaderslangFunc asdouble asfloat asint asuint D3DCOLORtoUBYTE4 f16tof32 f32tof16 |
| 72 | syn keyword shaderslangFunc ceil clamp degrees fma fmod frac frexp ldexp lerp mad modf radiants saturate smoothstep step |
| 73 | syn keyword shaderslangFunc cross determinant distance dot dst length lit msad4 mul normalize rcp reflect refract transpose |
| 74 | syn keyword shaderslangFunc ddx ddx_coarse ddx_fine ddy ddy_coarse ddy_fine fwidth |
| 75 | syn keyword shaderslangFunc EvaluateAttributeAtCentroid EvaluateAttributeAtSample EvaluateAttributeSnapped |
| 76 | syn keyword shaderslangFunc GetRenderTargetSampleCount GetRenderTargetSamplePosition |
| 77 | syn keyword shaderslangFunc InterlockedAdd InterlockedAnd InterlockedCompareExchange InterlockedCompareStore InterlockedExchange InterlockedMax InterlockedMin InterlockedOr InterlockedXor |
| 78 | syn keyword shaderslangFunc InterlockedCompareStoreFloatBitwise InterlockedCompareExchangeFloatBitwise |
| 79 | syn keyword shaderslangFunc Process2DQuadTessFactorsAvg Process2DQuadTessFactorsMax Process2DQuadTessFactorsMin ProcessIsolineTessFactors |
| 80 | syn keyword shaderslangFunc ProcessQuadTessFactorsAvg ProcessQuadTessFactorsMax ProcessQuadTessFactorsMin ProcessTriTessFactorsAvg ProcessTriTessFactorsMax ProcessTriTessFactorsMin |
| 81 | syn keyword shaderslangFunc tex1D tex1Dbias tex1Dgrad tex1Dlod tex1Dproj |
| 82 | syn keyword shaderslangFunc tex2D tex2Dbias tex2Dgrad tex2Dlod tex2Dproj |
| 83 | syn keyword shaderslangFunc tex3D tex3Dbias tex3Dgrad tex3Dlod tex3Dproj |
| 84 | syn keyword shaderslangFunc texCUBE texCUBEbias texCUBEgrad texCUBElod texCUBEproj |
| 85 | syn keyword shaderslangFunc WaveIsFirstLane WaveGetLaneCount WaveGetLaneIndex |
| 86 | syn keyword shaderslangFunc IsHelperLane |
| 87 | syn keyword shaderslangFunc WaveActiveAnyTrue WaveActiveAllTrue WaveActiveBallot |
| 88 | syn keyword shaderslangFunc WaveReadLaneFirst WaveReadLaneAt |
| 89 | syn keyword shaderslangFunc WaveActiveAllEqual WaveActiveAllEqualBool WaveActiveCountBits |
| 90 | syn keyword shaderslangFunc WaveActiveSum WaveActiveProduct WaveActiveBitAnd WaveActiveBitOr WaveActiveBitXor WaveActiveMin WaveActiveMax |
| 91 | syn keyword shaderslangFunc WavePrefixCountBits WavePrefixProduct WavePrefixSum |
| 92 | syn keyword shaderslangFunc QuadReadAcrossX QuadReadAcrossY QuadReadAcrossDiagonal QuadReadLaneAt |
| 93 | syn keyword shaderslangFunc QuadAny QuadAll |
| 94 | syn keyword shaderslangFunc WaveMatch WaveMultiPrefixSum WaveMultiPrefixProduct WaveMultiPrefixCountBits WaveMultiPrefixAnd WaveMultiPrefixOr WaveMultiPrefixXor |
| 95 | syn keyword shaderslangFunc NonUniformResourceIndex |
| 96 | syn keyword shaderslangFunc DispatchMesh SetMeshOutputCounts |
| 97 | syn keyword shaderslangFunc dot4add_u8packed dot4add_i8packed dot2add |
| 98 | |
| 99 | syn keyword shaderslangFunc RestartStrip |
| 100 | syn keyword shaderslangFunc CalculateLevelOfDetail CalculateLevelOfDetailUnclamped Gather GetDimensions GetSamplePosition Load Sample SampleBias SampleCmp SampleCmpLevelZero SampleGrad SampleLevel GatherRaw SampleCmpLevel |
| 101 | syn keyword shaderslangFunc SampleCmpBias SampleCmpGrad |
| 102 | syn keyword shaderslangFunc WriteSamplerFeedback WriteSamplerFeedbackBias WriteSamplerFeedbackGrad WriteSamplerFeedbackLevel |
| 103 | syn keyword shaderslangFunc Append Consume DecrementCounter IncrementCounter |
| 104 | syn keyword shaderslangFunc Load2 Load3 Load4 Store Store2 Store3 Store4 |
| 105 | syn keyword shaderslangFunc GatherRed GatherGreen GatherBlue GatherAlpha GatherCmp GatherCmpRed GatherCmpGreen GatherCmpBlue GatherCmpAlpha |
| 106 | syn match shaderslangFunc /\.mips\[\d\+\]\[\d\+\]/ |
| 107 | syn match shaderslangFunc /\.sample\[\d\+\]\[\d\+\]/ |
| 108 | |
| 109 | " Ray intrinsics |
| 110 | syn keyword shaderslangFunc AcceptHitAndEndSearch CallShader IgnoreHit ReportHit TraceRay |
| 111 | syn keyword shaderslangFunc DispatchRaysIndex DispatchRaysDimensions |
| 112 | syn keyword shaderslangFunc WorldRayOrigin WorldRayDirection RayTMin RayTCurrent RayFlags |
| 113 | syn keyword shaderslangFunc InstanceIndex InstanceID GeometryIndex PrimitiveIndex ObjectRayOrigin ObjectRayDirection ObjectToWorld3x4 ObjectToWorld4x3 WorldToObject3x4 WorldToObject4x3 |
| 114 | syn keyword shaderslangFunc HitKind |
| 115 | |
| 116 | " RayQuery intrinsics |
| 117 | syn keyword shaderslangFunc TraceRayInline Proceed Abort CommittedStatus |
| 118 | syn keyword shaderslangFunc CandidateType CandidateProceduralPrimitiveNonOpaque CandidateTriangleRayT CandidateInstanceIndex CandidateInstanceID CandidateInstanceContributionToHitGroupIndex CandidateGeometryIndex |
| 119 | syn keyword shaderslangFunc CandidatePrimitiveIndex CandidateObjectRayOrigin CandidateObjectRayDirection CandidateObjectToWorld3x4 CandidateObjectToWorld4x3 CandidateWorldToObject3x4 CandidateWorldToObject4x3 |
| 120 | syn keyword shaderslangFunc CommitNonOpaqueTriangleHit CommitProceduralPrimitiveHit CommittedStatus CommittedRayT CommittedInstanceIndex CommittedInstanceID CommittedInstanceContributionToHitGroupIndex |
| 121 | syn keyword shaderslangFunc CommittedGeometryIndex CommittedPrimitiveIndex CommittedObjectRayOrigin CommittedObjectRayDirection CommittedObjectToWorld3x4 CommittedObjectToWorld4x3 CommittedWorldToObject3x4 |
| 122 | syn keyword shaderslangFunc CommittedWorldToObject4x3 CandidateTriangleBarycentrics CandidateTriangleFrontFace CommittedTriangleBarycentrics CommittedTriangleFrontFace |
| 123 | |
| 124 | " Pack/unpack math intrinsics |
| 125 | syn keyword shaderslangFunc unpack_s8s16 unpack_u8u16 unpack_s8s32 unpack_u8u32 |
| 126 | syn keyword shaderslangFunc pack_u8 pack_s8 pack_clamp_u8 pack_clamp_s8 |
| 127 | |
| 128 | " Work graph object methods |
| 129 | syn keyword shaderslangFunc Get FinishedCrossGroupSharing Count GetThreadNodeOutputRecords GetGroupNodeOutputRecords IsValid GroupIncrementOutputCount ThreadIncrementOutputCount OutputComplete |
| 130 | |
| 131 | " Work graph free intrinsics |
| 132 | syn keyword shaderslangFunc GetRemainingRecursionLevels Barrier |
| 133 | |
| 134 | " Layout Qualifiers |
| 135 | syn keyword shaderslangLayoutQual const row_major column_major |
| 136 | syn keyword shaderslangLayoutQual point line triangle lineadj triangleadj |
| 137 | syn keyword shaderslangLayoutQual InputPatch OutputPatch |
| 138 | syn match shaderslangLayoutQual /PointStream<\s*\w\+\s*>/ |
| 139 | syn match shaderslangLayoutQual /LineStream<\s*\w\+\s*>/ |
| 140 | syn match shaderslangLayoutQual /TriangleStream<\s*\w\+\s*>/ |
| 141 | |
| 142 | " User defined Semantics |
| 143 | syn match shaderslangSemantic /:\s*[A-Z]\w*/ |
| 144 | syn match shaderslangSemantic /:\s*packoffset(\s*c\d\+\(\.[xyzw]\)\?\s*)/ " packoffset |
| 145 | syn match shaderslangSemantic /:\s*register(\s*\(r\|x\|v\|t\|s\|cb\|icb\|b\|c\|u\)\d\+\s*)/ " register |
| 146 | syn match shaderslangSemantic /:\s*read(\s*\(\(anyhit\|closesthit\|miss\|caller\)\s*,\s*\)*\(anyhit\|closesthit\|miss\|caller\)\?\s*)/ " read |
| 147 | syn match shaderslangSemantic /:\s*write(\s*\(\(anyhit\|closesthit\|miss\|caller\)\s*,\s*\)*\(anyhit\|closesthit\|miss\|caller\)\?\s*)/ " write |
| 148 | |
| 149 | " System-Value Semantics |
| 150 | " Vertex Shader |
| 151 | syn match shaderslangSemantic /SV_ClipDistance\d\+/ |
| 152 | syn match shaderslangSemantic /SV_CullDistance\d\+/ |
| 153 | syn keyword shaderslangSemantic SV_Position SV_InstanceID SV_PrimitiveID SV_VertexID |
| 154 | syn keyword shaderslangSemantic SV_StartVertexLocation SV_StartInstanceLocation |
| 155 | " Tessellation pipeline |
| 156 | syn keyword shaderslangSemantic SV_DomainLocation SV_InsideTessFactor SV_OutputControlPointID SV_TessFactor |
| 157 | " Geometry Shader |
| 158 | syn keyword shaderslangSemantic SV_GSInstanceID SV_RenderTargetArrayIndex |
| 159 | " Pixel Shader - MSAA |
| 160 | syn keyword shaderslangSemantic SV_Coverage SV_Depth SV_IsFrontFace SV_SampleIndex |
| 161 | syn match shaderslangSemantic /SV_Target[0-7]/ |
| 162 | syn keyword shaderslangSemantic SV_ShadingRate SV_ViewID |
| 163 | syn match shaderslangSemantic /SV_Barycentrics[0-1]/ |
| 164 | " Compute Shader |
| 165 | syn keyword shaderslangSemantic SV_DispatchThreadID SV_GroupID SV_GroupIndex SV_GroupThreadID |
| 166 | " Mesh shading pipeline |
| 167 | syn keyword shaderslangSemantic SV_CullPrimitive |
| 168 | " Work graph record system values |
| 169 | syn keyword shaderslangSemantic SV_DispatchGrid |
| 170 | |
| 171 | " slang structures |
| 172 | syn keyword shaderslangStructure cbuffer |
| 173 | |
| 174 | " Shader profiles |
| 175 | " Cg profiles |
| 176 | syn keyword shaderslangProfile arbfp1 arbvp1 fp20 vp20 fp30 vp30 ps_1_1 ps_1_2 ps_1_3 |
| 177 | " Shader Model 1 |
| 178 | syn keyword shaderslangProfile vs_1_1 |
| 179 | " Shader Model 2 |
| 180 | syn keyword shaderslangProfile ps_2_0 ps_2_x vs_2_0 vs_2_x |
| 181 | " Shader Model 3 |
| 182 | syn keyword shaderslangProfile ps_3_0 vs_3_0 |
| 183 | " Shader Model 4 |
| 184 | syn keyword shaderslangProfile gs_4_0 ps_4_0 vs_4_0 gs_4_1 ps_4_1 vs_4_1 |
| 185 | " Shader Model 5 |
| 186 | syn keyword shaderslangProfile cs_4_0 cs_4_1 cs_5_0 ds_5_0 gs_5_0 hs_5_0 ps_5_0 vs_5_0 |
| 187 | " Shader Model 6 |
| 188 | syn keyword shaderslangProfile cs_6_0 ds_6_0 gs_6_0 hs_6_0 ps_6_0 vs_6_0 lib_6_0 |
| 189 | |
| 190 | " Swizzling |
| 191 | syn match shaderslangSwizzle /\.[xyzw]\{1,4\}\>/ |
| 192 | syn match shaderslangSwizzle /\.[rgba]\{1,4\}\>/ |
| 193 | syn match shaderslangSwizzle /\.\(_m[0-3]\{2}\)\{1,4\}/ |
| 194 | syn match shaderslangSwizzle /\.\(_[1-4]\{2}\)\{1,4\}/ |
| 195 | |
| 196 | " Other Statements |
| 197 | syn keyword shaderslangStatement discard |
| 198 | |
| 199 | " Storage class |
| 200 | syn match shaderslangStorageClass /\<in\(\s+pipeline\)\?\>/ |
| 201 | syn match shaderslangStorageClass /\<out\(\s\+indices\|\s\+vertices\|\s\+primitives\)\?\>/ |
| 202 | syn keyword shaderslangStorageClass inout |
| 203 | syn keyword shaderslangStorageClass extern nointerpolation precise shared groupshared static uniform volatile |
| 204 | syn keyword shaderslangStorageClass snorm unorm |
| 205 | syn keyword shaderslangStorageClass linear centroid nointerpolation noperspective sample |
| 206 | syn keyword shaderslangStorageClass globallycoherent |
| 207 | |
| 208 | " Types |
| 209 | " Buffer types |
| 210 | syn keyword shaderslangType ConstantBuffer Buffer ByteAddressBuffer ConsumeStructuredBuffer StructuredBuffer |
| 211 | syn keyword shaderslangType AppendStructuredBuffer RWBuffer RWByteAddressBuffer RWStructuredBuffer |
| 212 | syn keyword shaderslangType RasterizerOrderedBuffer RasterizerOrderedByteAddressBuffer RasterizerOrderedStructuredBuffer |
| 213 | |
| 214 | " Scalar types |
| 215 | syn keyword shaderslangType bool int uint dword half float double |
| 216 | syn keyword shaderslangType min16float min10float min16int min12int min16uint |
| 217 | syn keyword shaderslangType float16_t float32_t float64_t |
| 218 | |
| 219 | " Vector types |
| 220 | syn match shaderslangType /vector<\s*\w\+,\s*[1-4]\s*>/ |
| 221 | syn keyword shaderslangType bool1 bool2 bool3 bool4 |
| 222 | syn keyword shaderslangType int1 int2 int3 int4 |
| 223 | syn keyword shaderslangType uint1 uint2 uint3 uint4 |
| 224 | syn keyword shaderslangType dword1 dword2 dword3 dword4 |
| 225 | syn keyword shaderslangType half1 half2 half3 half4 |
| 226 | syn keyword shaderslangType float1 float2 float3 float4 |
| 227 | syn keyword shaderslangType double1 double2 double3 double4 |
| 228 | syn keyword shaderslangType min16float1 min16float2 min16float3 min16float4 |
| 229 | syn keyword shaderslangType min10float1 min10float2 min10float3 min10float4 |
| 230 | syn keyword shaderslangType min16int1 min16int2 min16int3 min16int4 |
| 231 | syn keyword shaderslangType min12int1 min12int2 min12int3 min12int4 |
| 232 | syn keyword shaderslangType min16uint1 min16uint2 min16uint3 min16uint4 |
| 233 | syn keyword shaderslangType float16_t1 float16_t2 float16_t3 float16_t4 |
| 234 | syn keyword shaderslangType float32_t1 float32_t2 float32_t3 float32_t4 |
| 235 | syn keyword shaderslangType float64_t1 float64_t2 float64_t3 float64_t4 |
| 236 | syn keyword shaderslangType int16_t1 int16_t2 int16_t3 int16_t4 |
| 237 | syn keyword shaderslangType int32_t1 int32_t2 int32_t3 int32_t4 |
| 238 | syn keyword shaderslangType int64_t1 int64_t2 int64_t3 int64_t4 |
| 239 | syn keyword shaderslangType uint16_t1 uint16_t2 uint16_t3 uint16_t4 |
| 240 | syn keyword shaderslangType uint32_t1 uint32_t2 uint32_t3 uint32_t4 |
| 241 | syn keyword shaderslangType uint64_t1 uint64_t2 uint64_t3 uint64_t4 |
| 242 | |
| 243 | " Packed types |
| 244 | syn keyword shaderslangType uint8_t4_packed int8_t4_packed |
| 245 | |
| 246 | " Matrix types |
| 247 | syn match shaderslangType /matrix<\s*\w\+\s*,\s*[1-4]\s*,\s*[1-4]\s*>/ |
| 248 | syn keyword shaderslangType bool1x1 bool2x1 bool3x1 bool4x1 bool1x2 bool2x2 bool3x2 bool4x2 bool1x3 bool2x3 bool3x3 bool4x3 bool1x4 bool2x4 bool3x4 bool4x4 |
| 249 | syn keyword shaderslangType int1x1 int2x1 int3x1 int4x1 int1x2 int2x2 int3x2 int4x2 int1x3 int2x3 int3x3 int4x3 int1x4 int2x4 int3x4 int4x4 |
| 250 | syn keyword shaderslangType uint1x1 uint2x1 uint3x1 uint4x1 uint1x2 uint2x2 uint3x2 uint4x2 uint1x3 uint2x3 uint3x3 uint4x3 uint1x4 uint2x4 uint3x4 uint4x4 |
| 251 | syn keyword shaderslangType dword1x1 dword2x1 dword3x1 dword4x1 dword1x2 dword2x2 dword3x2 dword4x2 dword1x3 dword2x3 dword3x3 dword4x3 dword1x4 dword2x4 dword3x4 dword4x4 |
| 252 | syn keyword shaderslangType half1x1 half2x1 half3x1 half4x1 half1x2 half2x2 half3x2 half4x2 half1x3 half2x3 half3x3 half4x3 half1x4 half2x4 half3x4 half4x4 |
| 253 | syn keyword shaderslangType float1x1 float2x1 float3x1 float4x1 float1x2 float2x2 float3x2 float4x2 float1x3 float2x3 float3x3 float4x3 float1x4 float2x4 float3x4 float4x4 |
| 254 | syn keyword shaderslangType double1x1 double2x1 double3x1 double4x1 double1x2 double2x2 double3x2 double4x2 double1x3 double2x3 double3x3 double4x3 double1x4 double2x4 double3x4 double4x4 |
| 255 | syn keyword shaderslangType min16float1x1 min16float2x1 min16float3x1 min16float4x1 min16float1x2 min16float2x2 min16float3x2 min16float4x2 min16float1x3 min16float2x3 min16float3x3 min16float4x3 min16float1x4 min16float2x4 min16float3x4 min16float4x4 |
| 256 | syn keyword shaderslangType min10float1x1 min10float2x1 min10float3x1 min10float4x1 min10float1x2 min10float2x2 min10float3x2 min10float4x2 min10float1x3 min10float2x3 min10float3x3 min10float4x3 min10float1x4 min10float2x4 min10float3x4 min10float4x4 |
| 257 | syn keyword shaderslangType min16int1x1 min16int2x1 min16int3x1 min16int4x1 min16int1x2 min16int2x2 min16int3x2 min16int4x2 min16int1x3 min16int2x3 min16int3x3 min16int4x3 min16int1x4 min16int2x4 min16int3x4 min16int4x4 |
| 258 | syn keyword shaderslangType min12int1x1 min12int2x1 min12int3x1 min12int4x1 min12int1x2 min12int2x2 min12int3x2 min12int4x2 min12int1x3 min12int2x3 min12int3x3 min12int4x3 min12int1x4 min12int2x4 min12int3x4 min12int4x4 |
| 259 | syn keyword shaderslangType min16uint1x1 min16uint2x1 min16uint3x1 min16uint4x1 min16uint1x2 min16uint2x2 min16uint3x2 min16uint4x2 min16uint1x3 min16uint2x3 min16uint3x3 min16uint4x3 min16uint1x4 min16uint2x4 min16uint3x4 min16uint4x4 |
| 260 | syn keyword shaderslangType float16_t1x1 float16_t2x1 float16_t3x1 float16_t4x1 float16_t1x2 float16_t2x2 float16_t3x2 float16_t4x2 float16_t1x3 float16_t2x3 float16_t3x3 float16_t4x3 float16_t1x4 float16_t2x4 float16_t3x4 float16_t4x4 |
| 261 | syn keyword shaderslangType float32_t1x1 float32_t2x1 float32_t3x1 float32_t4x1 float32_t1x2 float32_t2x2 float32_t3x2 float32_t4x2 float32_t1x3 float32_t2x3 float32_t3x3 float32_t4x3 float32_t1x4 float32_t2x4 float32_t3x4 float32_t4x4 |
| 262 | syn keyword shaderslangType float64_t1x1 float64_t2x1 float64_t3x1 float64_t4x1 float64_t1x2 float64_t2x2 float64_t3x2 float64_t4x2 float64_t1x3 float64_t2x3 float64_t3x3 float64_t4x3 float64_t1x4 float64_t2x4 float64_t3x4 float64_t4x4 |
| 263 | syn keyword shaderslangType int16_t1x1 int16_t2x1 int16_t3x1 int16_t4x1 int16_t1x2 int16_t2x2 int16_t3x2 int16_t4x2 int16_t1x3 int16_t2x3 int16_t3x3 int16_t4x3 int16_t1x4 int16_t2x4 int16_t3x4 int16_t4x4 |
| 264 | syn keyword shaderslangType int32_t1x1 int32_t2x1 int32_t3x1 int32_t4x1 int32_t1x2 int32_t2x2 int32_t3x2 int32_t4x2 int32_t1x3 int32_t2x3 int32_t3x3 int32_t4x3 int32_t1x4 int32_t2x4 int32_t3x4 int32_t4x4 |
| 265 | syn keyword shaderslangType int64_t1x1 int64_t2x1 int64_t3x1 int64_t4x1 int64_t1x2 int64_t2x2 int64_t3x2 int64_t4x2 int64_t1x3 int64_t2x3 int64_t3x3 int64_t4x3 int64_t1x4 int64_t2x4 int64_t3x4 int64_t4x4 |
| 266 | syn keyword shaderslangType uint16_t1x1 uint16_t2x1 uint16_t3x1 uint16_t4x1 uint16_t1x2 uint16_t2x2 uint16_t3x2 uint16_t4x2 uint16_t1x3 uint16_t2x3 uint16_t3x3 uint16_t4x3 uint16_t1x4 uint16_t2x4 uint16_t3x4 uint16_t4x4 |
| 267 | syn keyword shaderslangType uint32_t1x1 uint32_t2x1 uint32_t3x1 uint32_t4x1 uint32_t1x2 uint32_t2x2 uint32_t3x2 uint32_t4x2 uint32_t1x3 uint32_t2x3 uint32_t3x3 uint32_t4x3 uint32_t1x4 uint32_t2x4 uint32_t3x4 uint32_t4x4 |
| 268 | syn keyword shaderslangType uint64_t1x1 uint64_t2x1 uint64_t3x1 uint64_t4x1 uint64_t1x2 uint64_t2x2 uint64_t3x2 uint64_t4x2 uint64_t1x3 uint64_t2x3 uint64_t3x3 uint64_t4x3 uint64_t1x4 uint64_t2x4 uint64_t3x4 uint64_t4x4 |
| 269 | |
| 270 | " Sampler types |
| 271 | syn keyword shaderslangType SamplerState SamplerComparisonState |
| 272 | syn keyword shaderslangType sampler sampler1D sampler2D sampler3D samplerCUBE sampler_state |
| 273 | |
| 274 | " Texture types |
| 275 | syn keyword shaderslangType Texture1D Texture1DArray Texture2D Texture2DArray Texture2DMS Texture2DMSArray Texture3D TextureCube TextureCubeArray |
| 276 | syn keyword shaderslangType RWTexture1D RWTexture2D RWTexture2DArray RWTexture3D RWTextureCubeArray RWTexture2DMS RWTexture2DMSArray |
| 277 | syn keyword shaderslangType FeedbackTexture2D FeedbackTexture2DArray |
| 278 | syn keyword shaderslangType RasterizerOrderedTexture1D RasterizerOrderedTexture1DArray RasterizerOrderedTexture2D RasterizerOrderedTexture2DArray RasterizerOrderedTexture3D |
| 279 | syn keyword shaderslangTypeDeprec texture texture1D texture2D texture3D |
| 280 | |
| 281 | " Raytracing types |
| 282 | syn keyword shaderslangType RaytracingAccelerationStructure RayDesc RayQuery BuiltInTriangleIntersectionAttributes |
| 283 | |
| 284 | " Work graph input record objects |
| 285 | syn keyword shaderslangType DispatchNodeInputRecord RWDispatchNodeInputRecord GroupNodeInputRecords RWGroupNodeInputRecords ThreadNodeInputRecord RWThreadNodeInputRecord EmptyNodeInput |
| 286 | |
| 287 | " Work graph output node objects |
| 288 | syn keyword shaderslangType NodeOutput NodeOutputArray EmptyNodeOutput EmptyNodeOutputArray |
| 289 | |
| 290 | " Work graph output record objects |
| 291 | syn keyword shaderslangType ThreadNodeOutputRecords GroupNodeOutputRecords |
| 292 | |
| 293 | " State Groups args |
| 294 | syn case ignore " This section case insensitive |
| 295 | |
| 296 | " Blend state group |
| 297 | syn keyword shaderslangStateGroupArg AlphaToCoverageEnable BlendEnable SrcBlend DestBlend BlendOp SrcBlendAlpha DestBlendAlpha BlendOpAlpha RenderTargetWriteMask |
| 298 | syn keyword shaderslangStateGroupVal ZERO ONE SRC_COLOR INV_SRC_COLOR SRC_ALPHA INV_SRC_ALPHA DEST_ALPHA INV_DEST_ALPHA DEST_COLOR INV_DEST_COLOR SRC_ALPHA_SAT BLEND_FACTOR INV_BLEND_FACTOR SRC1_COLOR INV_SRC1_COLOR SRC1_ALPHA INV_SRC1_ALPHA |
| 299 | syn keyword shaderslangStateGroupVal ADD SUBSTRACT REV_SUBSTRACT MIN MAX |
| 300 | |
| 301 | " Rasterizer state group |
| 302 | syn keyword shaderslangStateGroupArg FillMode CullMode FrontCounterClockwise DepthBias DepthBiasClamp SlopeScaledDepthBias ZClipEnable DepthClipEnable ScissorEnable MultisampleEnable AntialiasedLineEnable |
| 303 | syn keyword shaderslangStateGroupVal SOLID WIREFRAME |
| 304 | syn keyword shaderslangStateGroupVal NONE FRONT BACK |
| 305 | |
| 306 | " Sampler state group |
| 307 | syn keyword shaderslangStateGroupArg Filter AddressU AddressV AddressW MipLODBias MaxAnisotropy ComparisonFunc BorderColor MinLOD MaxLOD ComparisonFilter |
| 308 | syn keyword shaderslangStateGroupVal MIN_MAG_MIP_POINT MIN_MAG_POINT_MIP_LINEAR MIN_POINT_MAG_LINEAR_MIP_POINT MIN_POINT_MAG_MIP_LINEAR MIN_LINEAR_MAG_MIP_POINT MIN_LINEAR_MAG_POINT_MIP_LINEAR MIN_MAG_LINEAR_MIP_POINT MIN_MAG_MIP_LINEAR ANISOTROPIC |
| 309 | syn keyword shaderslangStateGroupVal COMPARISON_MIN_MAG_MIP_POINT COMPARISON_MIN_MAG_POINT_MIP_LINEAR COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT COMPARISON_MIN_POINT_MAG_MIP_LINEAR COMPARISON_MIN_LINEAR_MAG_MIP_POINT |
| 310 | syn keyword shaderslangStateGroupVal COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR COMPARISON_MIN_MAG_LINEAR_MIP_POINT COMPARISON_MIN_MAG_MIP_LINEAR COMPARISON_ANISOTROPIC |
| 311 | syn keyword shaderslangStateGroupVal COMPARISON_NEVER COMPARISON_LESS COMPARISON_EQUAL COMPARISON_LESS_EQUAL COMPARISON_GREATER COMPARISON_NOT_EQUAL COMPARISON_GREATER_EQUAL COMPARISON_ALWAYS |
| 312 | syn keyword shaderslangStateGroupVal WRAP MIRROR CLAMP BORDER MIRROR_ONCE |
| 313 | syn keyword shaderslangStateGroupVal SAMPLER_FEEDBACK_MIN_MIP SAMPLER_FEEDBACK_MIP_REGION_USED |
| 314 | |
| 315 | " Ray flags |
| 316 | syn keyword shaderslangStateGroupVal RAY_FLAG_NONE RAY_FLAG_FORCE_OPAQUE RAY_FLAG_FORCE_NON_OPAQUE RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH RAY_FLAG_SKIP_CLOSEST_HIT_SHADER |
| 317 | syn keyword shaderslangStateGroupVal RAY_FLAG_CULL_BACK_FACING_TRIANGLES RAY_FLAG_CULL_FRONT_FACING_TRIANGLES RAY_FLAG_CULL_OPAQUE RAY_FLAG_CULL_NON_OPAQUE |
| 318 | syn keyword shaderslangStateGroupVal RAY_FLAG_SKIP_TRIANGLES RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES |
| 319 | |
| 320 | " HitKind enum |
| 321 | syn keyword shaderslangStateGroupVal HIT_KIND_TRIANGLE_FRONT_FACE HIT_KIND_TRIANGLE_BACK_FACE |
| 322 | |
| 323 | " RayQuery enums |
| 324 | syn keyword shaderslangStateGroupVal COMMITTED_NOTHING COMMITTED_TRIANGLE_HIT COMMITTED_PROCEDURAL_PRIMITIVE_HIT |
| 325 | syn keyword shaderslangStateGroupVal CANDIDATE_NON_OPAQUE_TRIANGLE CANDIDATE_PROCEDURAL_PRIMITIVE |
| 326 | |
| 327 | " Heap objects |
| 328 | syn keyword shaderslangStateGroupVal ResourceDescriptorHeap SamplerDescriptorHeap |
| 329 | |
| 330 | " Work graph constants |
| 331 | syn keyword shaderslangStateGroupVal UAV_MEMORY GROUP_SHARED_MEMORY NODE_INPUT_MEMORY NODE_OUTPUT_MEMORY ALL_MEMORY GROUP_SYNC GROUP_SCOPE DEVICE_SCOPE |
| 332 | |
| 333 | syn case match " Case sensitive from now on |
| 334 | |
| 335 | " Effect files declarations and functions |
| 336 | " Effect groups, techniques passes |
| 337 | syn keyword shaderslangEffectGroup fxgroup technique11 pass |
| 338 | " Effect functions |
| 339 | syn keyword shaderslangEffectFunc SetBlendState SetDepthStencilState SetRasterizerState SetVertexShader SetHullShader SetDomainShader SetGeometryShader SetPixelShader SetComputeShader CompileShader ConstructGSWithSO SetRenderTargets |
| 340 | |
| 341 | " Default highlighting |
| 342 | hi def link shaderslangProfile shaderslangStatement |
| 343 | hi def link shaderslangStateGroupArg shaderslangStatement |
| 344 | hi def link shaderslangStateGroupVal Number |
| 345 | hi def link shaderslangStatement Statement |
| 346 | hi def link shaderslangType Type |
| 347 | hi def link shaderslangTypeDeprec WarningMsg |
| 348 | hi def link shaderslangStorageClass StorageClass |
| 349 | hi def link shaderslangSemantic PreProc |
| 350 | hi def link shaderslangFunc shaderslangStatement |
| 351 | hi def link shaderslangLayoutQual shaderslangFunc |
| 352 | hi def link shaderslangAnnotation PreProc |
| 353 | hi def link shaderslangStructure Structure |
| 354 | hi def link shaderslangSwizzle SpecialChar |
| 355 | hi def link shaderslangAttribute Statement |
| 356 | |
| 357 | hi def link shaderslangEffectGroup Type |
| 358 | hi def link shaderslangEffectFunc Statement |
| 359 | |
| 360 | let b:current_syntax = "shaderslang" |