From 72cfee5c0fac2e17f31bfba5367574019c7e5930 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 9 Feb 2015 18:14:20 +0000 Subject: [PATCH] Add GLSL syntax highlighting --- renderdocui/Code/FormatElement.cs | 2 +- .../Controls/BufferFormatSpecifier.resx | 2 +- renderdocui/Interop/FetchInfo.cs | 8 + renderdocui/Resources/glsl.xml | 104 +++++++++++ renderdocui/Resources/hlsl.xml | 168 +++++++++--------- .../GLPipelineStateViewer.Designer.cs | 12 +- .../PipelineState/GLPipelineStateViewer.cs | 4 +- renderdocui/Windows/ShaderViewer.cs | 19 +- renderdocui/Windows/TextureViewer.cs | 12 +- renderdocui/renderdocui.csproj | 1 + 10 files changed, 223 insertions(+), 109 deletions(-) create mode 100644 renderdocui/Resources/glsl.xml diff --git a/renderdocui/Code/FormatElement.cs b/renderdocui/Code/FormatElement.cs index c406ac0ce..44e93c40c 100644 --- a/renderdocui/Code/FormatElement.cs +++ b/renderdocui/Code/FormatElement.cs @@ -322,7 +322,7 @@ namespace renderdocui.Code @"uintten|unormten" + @"|unormh|unormb" + @"|snormh|snormb" + - @"|bool" + // bool is stored as 4-byte int in hlsl + @"|bool" + // bool is stored as 4-byte int @"|byte|short|int" + // signed ints @"|ubyte|ushort|uint" + // unsigned ints @"|xbyte|xshort|xint" + // hex ints diff --git a/renderdocui/Controls/BufferFormatSpecifier.resx b/renderdocui/Controls/BufferFormatSpecifier.resx index 117d330ab..7782b0750 100644 --- a/renderdocui/Controls/BufferFormatSpecifier.resx +++ b/renderdocui/Controls/BufferFormatSpecifier.resx @@ -119,7 +119,7 @@ Type in a buffer format declaration. Comments and {} braces are skipped, : semantics are ignored. -Declare each element as an hlsl variable, e.g: "float4 first; float2 second; uint2 third;" +Declare each element as an hlsl/glsl variable, e.g: "float4 first; float2 second; uint2 third;" or vec4/vec2. Basic types accepted: bool, byte, short, int, half, float, double. Unsigned integer types: ubyte, ushort, uint diff --git a/renderdocui/Interop/FetchInfo.cs b/renderdocui/Interop/FetchInfo.cs index 44708f08c..1ce121afe 100644 --- a/renderdocui/Interop/FetchInfo.cs +++ b/renderdocui/Interop/FetchInfo.cs @@ -488,6 +488,14 @@ namespace renderdoc { public APIPipelineStateType pipelineType; public bool degraded; + + public string ShaderExtension + { + get + { + return pipelineType == APIPipelineStateType.D3D11 ? ".hlsl" : ".glsl"; + } + } }; [StructLayout(LayoutKind.Sequential)] diff --git a/renderdocui/Resources/glsl.xml b/renderdocui/Resources/glsl.xml new file mode 100644 index 000000000..553c91f8b --- /dev/null +++ b/renderdocui/Resources/glsl.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + in out inout static const + + break continue do for while switch case default if else true false discard return + + radians degrees sin cos tan asin acos atan sinh cosh tanh asinh acosh atanh pow + exp log exp2 log2 sqrt inversesqrt abs sign floor trunc round + roundEven ceil fract mod modf min max clamp mix step + smoothstep isnan isinf floatBitsToInt floatBitsToUint intBitsToFloat uintBitsToFloat fma frexp ldexp + + packUnorm2x16 packSnorm2x16 packUnorm4x8 packSnorm4x8 unpackUnorm2x16 unpackSnorm2x16 unpackUnorm4x8 unpackSnorm4x8 packDouble2x32 unpackDouble2x32 packHalf2x16 unpackHalf2x16 + length distance dot cross normalize faceforward reflect refract matrixCompMult outerProduct transpose determinant inverse lessThan + lessThanEqual greaterThan greaterThanEqual equal notEqual any all not uaddCarry + usubBorrow umulExtended imulExtended bitfieldExtract bitfieldInsert bitfieldReverse bitCount findLSB findMSB + + textureSize textureQueryLod textureQueryLevels textureSamples texture textureProj textureLod textureOffset texelFetch texelFetchOffset textureProjOffset textureLodOffset + textureProjLod textureProjLodOffset textureGrad textureGradOffset textureProjGrad textureProjGradOffset textureGather textureGatherOffset textureGatherOffsets + + atomicCounterIncrement atomicCounterDecrement atomicCounter atomicAdd atomicMin atomicMax atomicAnd atomicOr atomicXor atomicExchange atomicCompSwap + + imageSize imageSamples imageLoad imageStore imageAtomicAdd imageAtomicMin imageAtomicMax imageAtomicAnd imageAtomicOr imageAtomicXor imageAtomicExchange imageAtomicCompSwap + + dFdx dFdy dFdxFine dFdyFine dFdxCoarse dFdyCoarse fwidth fwidthFine fwidthCoarse interpolateAtCentroid + interpolateAtSample interpolateAtOffset EmitStreamVertex EndStreamPrimitive EmitVertex EndPrimitive + barrier memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierShared memoryBarrierImage groupMemoryBarrier + + gl_CullDistance gl_FragCoord gl_FragDepth gl_FrontFacing gl_GlobalInvocationID gl_HelperInvocation gl_in gl_InstanceID gl_InvocationID gl_Layer gl_LocalInvocationID + gl_LocalInvocationIndex gl_MaxPatchVertices gl_NumWorkGroups gl_out gl_PatchVerticesIn gl_PerVertex gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID + gl_PrimitiveIDIn gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_TessCoord gl_TessLevelInner + gl_TessLevelOuter gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize + + gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxComputeUniformComponents gl_MaxComputeTextureImageUnits gl_MaxComputeImageUniforms gl_MaxComputeAtomicCounters gl_MaxComputeAtomicCounterBuffers gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingComponents gl_MaxVertexOutputComponents gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxFragmentInputComponents gl_MaxVertexTextureImageUnits gl_MaxCombinedTextureImageUnits + gl_MaxTextureImageUnits gl_MaxImageUnits gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedShaderOutputResources gl_MaxImageSamples gl_MaxVertexImageUniforms gl_MaxTessControlImageUniforms gl_MaxTessEvaluationImageUniforms gl_MaxGeometryImageUniforms gl_MaxFragmentImageUniforms gl_MaxCombinedImageUniforms gl_MaxFragmentUniformComponents gl_MaxDrawBuffers gl_MaxClipDistances gl_MaxGeometryTextureImageUnits gl_MaxGeometryOutputVertices + gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlUniformComponents gl_MaxTessControlTotalOutputComponents gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessPatchComponents gl_MaxPatchVertices gl_MaxTessGenLevel gl_MaxViewports gl_MaxVertexUniformVectors gl_MaxFragmentUniformVectors + gl_MaxVaryingVectors gl_MaxVertexAtomicCounters gl_MaxTessControlAtomicCounters gl_MaxTessEvaluationAtomicCounters gl_MaxGeometryAtomicCounters gl_MaxFragmentAtomicCounters gl_MaxCombinedAtomicCounters gl_MaxAtomicCounterBindings gl_MaxVertexAtomicCounterBuffers gl_MaxTessControlAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxGeometryAtomicCounterBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxCombinedAtomicCounterBuffers gl_MaxAtomicCounterBufferSize gl_MinProgramTexelOffset + gl_MaxProgramTexelOffset gl_MaxTransformFeedbackBuffers gl_MaxTransformFeedbackInterleavedComponents gl_MaxCullDistances gl_MaxCombinedClipAndCullDistances gl_MaxSamples gl_MaxVertexImageUniforms gl_MaxFragmentImageUniforms gl_MaxComputeImageUniforms gl_MaxCombinedImageUniforms gl_MaxCombinedShaderOutputResources gl_DepthRangeParameters gl_DepthRange gl_NumSamples + + + float double int void bool + + mat2 mat3 mat4 dmat2 dmat3 dmat4 + mat2x2 mat2x3 mat2x4 dmat2x2 dmat2x3 dmat2x4 + mat3x2 mat3x3 mat3x4 dmat3x2 dmat3x3 dmat3x4 + mat4x2 mat4x3 mat4x4 dmat4x2 dmat4x3 dmat4x4 + vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 dvec2 dvec3 dvec4 + uint uvec2 uvec3 uvec4 + + atomic_uint patch sample buffer subroutine struct + + invariant precise layout + + lowp mediump highp precision + attribute uniform varying shared + coherent volatile restrict readonly writeonly + centroid flat smooth noperspective + + sampler1D sampler2D sampler3D samplerCube + sampler1DShadow sampler2DShadow samplerCubeShadow + sampler1DArray sampler2DArray + sampler1DArrayShadow sampler2DArrayShadow + isampler1D isampler2D isampler3D isamplerCube + isampler1DArray isampler2DArray + usampler1D usampler2D usampler3D usamplerCube + usampler1DArray usampler2DArray + sampler2DRect sampler2DRectShadow isampler2DRect usampler2DRect + samplerBuffer isamplerBuffer usamplerBuffer + sampler2DMS isampler2DMS usampler2DMS + sampler2DMSArray isampler2DMSArray usampler2DMSArray + samplerCubeArray samplerCubeArrayShadow isamplerCubeArray usamplerCubeArray + + image1D iimage1D uimage1D + image2D iimage2D uimage2D + image3D iimage3D uimage3D + image2DRect iimage2DRect uimage2DRect + imageCube iimageCube uimageCube + imageBuffer iimageBuffer uimageBuffer + image1DArray iimage1DArray uimage1DArray + image2DArray iimage2DArray uimage2DArray + imageCubeArray iimageCubeArray uimageCubeArray + image2DMS iimage2DMS uimage2DMS + image2DMSArray iimage2DMSArray uimage2DMSArray + + + + +