Browse Source

lolfx: use square brackets to indicate shader sections.

legacy
Sam Hocevar sam 12 years ago
parent
commit
549566cbf1
10 changed files with 61 additions and 15 deletions
  1. +4
    -0
      src/easymesh/shiny.lolfx
  2. +14
    -8
      src/gpu/shader.cpp
  3. +3
    -4
      src/gpu/testmaterial.lolfx
  4. +4
    -0
      src/gpu/tile.lolfx
  5. +4
    -0
      src/gradient.lolfx
  6. +16
    -3
      tutorial/01_triangle.lolfx
  7. +4
    -0
      tutorial/02_cube.lolfx
  8. +4
    -0
      tutorial/03_noise.lolfx
  9. +4
    -0
      tutorial/08_fbo.lolfx
  10. +4
    -0
      tutorial/11_fractal.lolfx

+ 4
- 0
src/easymesh/shiny.lolfx View File

@@ -1,5 +1,5 @@


[vert.glsl]
#version 120 #version 120


attribute vec3 in_Vertex; attribute vec3 in_Vertex;
@@ -26,7 +26,7 @@ void main(void)
gl_Position = in_Proj * eye; gl_Position = in_Proj * eye;
} }


[frag.glsl]
#version 120 #version 120


#if defined GL_ES #if defined GL_ES
@@ -72,7 +72,7 @@ void main(void)
gl_FragColor = real_color * vec4(light, 1.0); gl_FragColor = real_color * vec4(light, 1.0);
} }


[vert.hlsl]


void main(float3 in_Vertex : POSITION, void main(float3 in_Vertex : POSITION,
float3 in_Normal : NORMAL, float3 in_Normal : NORMAL,
@@ -99,7 +99,7 @@ void main(float3 in_Vertex : POSITION,
out_Position = mul(in_Proj, eye); out_Position = mul(in_Proj, eye);
} }


[frag.hlsl]


void main(float4 pass_Eye : TEXCOORD0, void main(float4 pass_Eye : TEXCOORD0,
float3 pass_TNormal : TEXCOORD1, float3 pass_TNormal : TEXCOORD1,


+ 14
- 8
src/gpu/shader.cpp View File

@@ -93,13 +93,13 @@ Shader *Shader::Create(char const *lolfx)
for (char *parser = src; *parser; ) for (char *parser = src; *parser; )
{ {
if (key == NULL && (parser[0] == '\n' || parser[0] == '\r') if (key == NULL && (parser[0] == '\n' || parser[0] == '\r')
&& parser[1] == '-' && parser[2] == '-' && parser[3] == ' ')
&& parser[1] == '[')
{ {
*parser = '\0'; *parser = '\0';
parser += 4;
parser += 2;
key = parser; key = parser;
} }
else if (key && parser[0] == ' ')
else if (key && parser[0] == ']')
{ {
*parser++ = '\0'; *parser++ = '\0';
} }
@@ -119,18 +119,24 @@ Shader *Shader::Create(char const *lolfx)
for (int i = 0; i < sections.Count(); i++) for (int i = 0; i < sections.Count(); i++)
{ {
#if !defined __CELLOS_LV2__ && !defined _XBOX && !defined USE_D3D9 #if !defined __CELLOS_LV2__ && !defined _XBOX && !defined USE_D3D9
if (!strcmp(sections[i].m1, "GLSL.Vert"))
if (!strcmp(sections[i].m1, "vert.glsl"))
vert = sections[i].m2; vert = sections[i].m2;
if (!strcmp(sections[i].m1, "GLSL.Frag"))
if (!strcmp(sections[i].m1, "frag.glsl"))
frag = sections[i].m2; frag = sections[i].m2;
#else #else
if (!strcmp(sections[i].m1, "HLSL.Vert"))
if (!strcmp(sections[i].m1, "vert.hlsl"))
vert = sections[i].m2; vert = sections[i].m2;
if (!strcmp(sections[i].m1, "HLSL.Frag"))
if (!strcmp(sections[i].m1, "frag.hlsl"))
frag = sections[i].m2; frag = sections[i].m2;
#endif #endif
} }


/* FIXME: we don’t know how to handle these yet. */
if (!vert)
Log::Error("no vertex shader found… sorry, I’m gonna crash now.\n");
if (!frag)
Log::Error("no fragment shader found… sorry, I’m gonna crash now.\n");

uint32_t new_vert_crc = Hash::Crc32(vert); uint32_t new_vert_crc = Hash::Crc32(vert);
uint32_t new_frag_crc = Hash::Crc32(frag); uint32_t new_frag_crc = Hash::Crc32(frag);


@@ -495,7 +501,7 @@ void Shader::SetUniform(ShaderUniform const &uni, mat3 const &m)
{ {
#if defined USE_D3D9 || defined _XBOX #if defined USE_D3D9 || defined _XBOX
/* Padding matrix columns is necessary on DirectX. We need to create /* Padding matrix columns is necessary on DirectX. We need to create
* a new data structure; a 4×4 matrix will do. */
* a new data structure; a 4×4 matrix will do. */
mat4 tmp(m, 1.0f); mat4 tmp(m, 1.0f);
if (uni.flags & 1) if (uni.flags & 1)
g_d3ddevice->SetPixelShaderConstantF((UINT)uni.frag, &tmp[0][0], 3); g_d3ddevice->SetPixelShaderConstantF((UINT)uni.frag, &tmp[0][0], 3);


+ 3
- 4
src/gpu/testmaterial.lolfx View File

@@ -66,8 +66,7 @@ technique Foo


/* Defines GLSL shader "Prout" */ /* Defines GLSL shader "Prout" */


#pragma lolfx vertexshader(lang=GLSL 1.20, name=prout)

[prout.glsl]
#version 120 #version 120


/* Valid with my GLSL compiler */ /* Valid with my GLSL compiler */
@@ -84,7 +83,7 @@ void main(void)
} }


/* Defines GLSL shader "Zob" */ /* Defines GLSL shader "Zob" */
#pragma lolfx vertexshader(lang=GLSL 1.20, name=zob)
[zob.glsl]


void main(void) void main(void)
{ {
@@ -93,7 +92,7 @@ void main(void)


/* Defines HLSL vertex shader "Prout" */ /* Defines HLSL vertex shader "Prout" */


#pragma lolfx vertexshader(lang=HLSL, name=prout)
[prout.hlsl]


void main(void) void main(void)
{ {


+ 4
- 0
src/gpu/tile.lolfx View File

@@ -1,4 +1,4 @@
[vert.glsl]


#version 130 #version 130


@@ -17,7 +17,7 @@ void main()
pass_TexCoord = in_TexCoord; pass_TexCoord = in_TexCoord;
} }


[frag.glsl]


#version 130 #version 130


@@ -68,7 +68,7 @@ void main()
gl_FragColor = col; gl_FragColor = col;
} }


[vert.hlsl]


void main(float4 in_Position : POSITION, void main(float4 in_Position : POSITION,
float2 in_TexCoord : TEXCOORD0, float2 in_TexCoord : TEXCOORD0,
@@ -82,7 +82,7 @@ void main(float4 in_Position : POSITION,
out_TexCoord = in_TexCoord; out_TexCoord = in_TexCoord;
} }


[frag.hlsl]


void main(float2 in_TexCoord : TEXCOORD0, void main(float2 in_TexCoord : TEXCOORD0,
#if 0 #if 0


+ 4
- 0
src/gradient.lolfx View File

@@ -1,4 +1,4 @@
[vert.glsl]


#version 130 #version 130


@@ -17,7 +17,7 @@ void main()
pass_Color = in_Color; pass_Color = in_Color;
} }


[frag.glsl]


#version 130 #version 130


@@ -49,7 +49,7 @@ void main()
gl_FragColor = col; gl_FragColor = col;
} }


[vert.hlsl]


void main(float4 in_Vertex : POSITION, void main(float4 in_Vertex : POSITION,
float4 in_Color : COLOR, float4 in_Color : COLOR,
@@ -63,7 +63,7 @@ void main(float4 in_Vertex : POSITION,
out_Color = in_Color; out_Color = in_Color;
} }


[frag.hlsl]


float4x4 bayer = float4x4( 0.0, 12.0, 3.0, 15.0, float4x4 bayer = float4x4( 0.0, 12.0, 3.0, 15.0,
8.0, 4.0, 11.0, 7.0, 8.0, 4.0, 11.0, 7.0,


+ 16
- 3
tutorial/01_triangle.lolfx View File

@@ -1,5 +1,17 @@
/*
* Awesome triangle shader
*/


technique Triangle
{
pass FirstPass
{
vertexshader = vert;
pixelshader = frag;
}
}

[vert.glsl]
#version 120 #version 120


attribute vec2 in_Position; attribute vec2 in_Position;
@@ -9,8 +21,7 @@ void main(void)
gl_Position = vec4(in_Position, 0.0, 1.0); gl_Position = vec4(in_Position, 0.0, 1.0);
} }


[frag.glsl]
#version 120 #version 120


void main(void) void main(void)
@@ -18,16 +29,14 @@ void main(void)
gl_FragColor = vec4(0.7, 0.2, 0.5, 1.0); gl_FragColor = vec4(0.7, 0.2, 0.5, 1.0);
} }


[vert.hlsl]
void main(float2 in_Position : POSITION, void main(float2 in_Position : POSITION,
out float4 out_Position : POSITION) out float4 out_Position : POSITION)
{ {
out_Position = float4(in_Position, 0.0, 1.0); out_Position = float4(in_Position, 0.0, 1.0);
} }


[frag.hlsl]
void main(out float4 out_FragColor : COLOR) void main(out float4 out_FragColor : COLOR)
{ {
out_FragColor = float4(0.7, 0.2, 0.5, 1.0); out_FragColor = float4(0.7, 0.2, 0.5, 1.0);


+ 4
- 0
tutorial/02_cube.lolfx View File

@@ -1,4 +1,4 @@
[vert.glsl]


#version 120 #version 120


@@ -13,7 +13,7 @@ void main(void)
pass_Color = in_Color; pass_Color = in_Color;
} }


[frag.glsl]


#version 120 #version 120


@@ -24,7 +24,7 @@ void main(void)
gl_FragColor = vec4(pass_Color, 1.0); gl_FragColor = vec4(pass_Color, 1.0);
} }


[vert.hlsl]


void main(float3 in_Vertex : POSITION, void main(float3 in_Vertex : POSITION,
float3 in_Color : COLOR, float3 in_Color : COLOR,
@@ -36,7 +36,7 @@ void main(float3 in_Vertex : POSITION,
out_Position = mul(in_Matrix, float4(in_Vertex, 1.0)); out_Position = mul(in_Matrix, float4(in_Vertex, 1.0));
} }


[frag.hlsl]


void main(float3 pass_Color : COLOR, void main(float3 pass_Color : COLOR,
out float4 out_FragColor : COLOR) out float4 out_FragColor : COLOR)


+ 4
- 0
tutorial/03_noise.lolfx View File

@@ -1,4 +1,4 @@
[vert.glsl]


#version 120 #version 120


@@ -42,7 +42,7 @@ void main(void)
gl_Position = vec4(in_Position, 0.0, 1.0); gl_Position = vec4(in_Position, 0.0, 1.0);
} }


[frag.glsl]


#version 120 #version 120


@@ -134,7 +134,7 @@ void main(void)
gl_FragColor = color; gl_FragColor = color;
} }


[vert.hlsl]


float mod289(float x) float mod289(float x)
{ {
@@ -173,7 +173,7 @@ void main(float2 in_Position : POSITION,
out_Position = float4(in_Position, 0.0, 1.0); out_Position = float4(in_Position, 0.0, 1.0);
} }


[frag.hlsl]


float4 mod289(float4 x) float4 mod289(float4 x)
{ {


+ 4
- 0
tutorial/08_fbo.lolfx View File

@@ -1,4 +1,4 @@
[vert.glsl]


#version 120 #version 120


@@ -12,7 +12,7 @@ void main()
gl_Position = vec4(in_Position, 0.0, 1.0); gl_Position = vec4(in_Position, 0.0, 1.0);
} }


[frag.glsl]


#version 120 #version 120


@@ -50,7 +50,7 @@ void main(void)
} }
} }


[vert.hlsl]


void main(float2 in_Position : POSITION, void main(float2 in_Position : POSITION,
out float2 pass_Position : TEXCOORD0, out float2 pass_Position : TEXCOORD0,
@@ -60,7 +60,7 @@ void main(float2 in_Position : POSITION,
out_Position = float4(in_Position, 0.0, 1.0); out_Position = float4(in_Position, 0.0, 1.0);
} }


[frag.hlsl]


void main(in float2 pass_Position : TEXCOORD0, void main(in float2 pass_Position : TEXCOORD0,
uniform sampler2D in_Texture, uniform sampler2D in_Texture,


+ 4
- 0
tutorial/11_fractal.lolfx View File

@@ -1,4 +1,4 @@
[vert.glsl]


#version 120 #version 120


@@ -49,7 +49,7 @@ void main(void)
v_IndexY = v_CenterY * u_ScreenSize.w - offsets.zwwz; v_IndexY = v_CenterY * u_ScreenSize.w - offsets.zwwz;
} }


[frag.glsl]


#version 120 #version 120


@@ -131,7 +131,7 @@ void main(void)
#endif #endif
} }


[vert.hlsl]


void main(float2 a_Vertex : POSITION, void main(float2 a_Vertex : POSITION,
float2 a_TexCoord : TEXCOORD0, float2 a_TexCoord : TEXCOORD0,
@@ -166,7 +166,7 @@ void main(float2 a_Vertex : POSITION,
v_IndexY = v_CenterY * u_ScreenSize.w - offsets.zwwz; v_IndexY = v_CenterY * u_ScreenSize.w - offsets.zwwz;
} }


[frag.hlsl]


void main(in float4 v_CenterX : TEXCOORD0, void main(in float4 v_CenterX : TEXCOORD0,
in float4 v_CenterY : TEXCOORD1, in float4 v_CenterY : TEXCOORD1,


Loading…
Cancel
Save