せっかくなのでGLSL向けのSyntaxHighlighterも作ってみました。
こちらの記事も合わせて見てください
適用例は下記のようになります。
#version 450 #extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_420pack : enable //------------------------------------------------------------------------------------------------- // Input Definitions. //------------------------------------------------------------------------------------------------- layout(location = 0) in vec3 InputPosition; // 位置座標. layout(location = 1) in vec4 InputColor; // 頂点カラー. //------------------------------------------------------------------------------------------------- // Output Definitions. //------------------------------------------------------------------------------------------------- layout(location = 0) out vec4 OutputColor; // 頂点カラー. out gl_PerVertex { vec4 gl_Position; // 位置座標. }; //------------------------------------------------------------------------------------------------- // 頂点シェーダメインエントリーポイントです. //------------------------------------------------------------------------------------------------- void main() { vec4 localPos = vec4(InputPosition, 1.0f); gl_Position = localPos; OutputColor = InputColor; // Flip Y-Coordinate. gl_Position.y = -gl_Position.y; }
#version 450 #extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_shading_language_420pack : enable //------------------------------------------------------------------------------------------------- // Input Definitions. //------------------------------------------------------------------------------------------------- layout(location = 0) in vec4 InputColor; layout(location = 1) in vec2 InputTexCoord; //------------------------------------------------------------------------------------------------- // Output Definitions. //------------------------------------------------------------------------------------------------- layout(location = 0) out vec4 ColorTarget0; //------------------------------------------------------------------------------------------------- // Constant //------------------------------------------------------------------------------------------------- layout(binding = 1) uniform sampler ColorSmp; layout(binding = 2) uniform texture2D ColorMap; //------------------------------------------------------------------------------------------------- // フラグメントシェーダメインエントリーポイントです. //------------------------------------------------------------------------------------------------- void main() { ColorTarget0 = texture(sampler2D(ColorMap, ColorSmp), InputTexCoord) * InputColor; }