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

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

[frag.glsl]
#version 120

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

[vert.hlsl]

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

[frag.hlsl]

void main(float4 pass_Eye : TEXCOORD0,
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; )
{
if (key == NULL && (parser[0] == '\n' || parser[0] == '\r')
&& parser[1] == '-' && parser[2] == '-' && parser[3] == ' ')
&& parser[1] == '[')
{
*parser = '\0';
parser += 4;
parser += 2;
key = parser;
}
else if (key && parser[0] == ' ')
else if (key && parser[0] == ']')
{
*parser++ = '\0';
}
@@ -119,18 +119,24 @@ Shader *Shader::Create(char const *lolfx)
for (int i = 0; i < sections.Count(); i++)
{
#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;
if (!strcmp(sections[i].m1, "GLSL.Frag"))
if (!strcmp(sections[i].m1, "frag.glsl"))
frag = sections[i].m2;
#else
if (!strcmp(sections[i].m1, "HLSL.Vert"))
if (!strcmp(sections[i].m1, "vert.hlsl"))
vert = sections[i].m2;
if (!strcmp(sections[i].m1, "HLSL.Frag"))
if (!strcmp(sections[i].m1, "frag.hlsl"))
frag = sections[i].m2;
#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_frag_crc = Hash::Crc32(frag);

@@ -495,7 +501,7 @@ void Shader::SetUniform(ShaderUniform const &uni, mat3 const &m)
{
#if defined USE_D3D9 || defined _XBOX
/* 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);
if (uni.flags & 1)
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" */

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

[prout.glsl]
#version 120

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

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

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

/* Defines HLSL vertex shader "Prout" */

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

void main(void)
{


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

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

#version 130

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

[frag.glsl]

#version 130

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

[vert.hlsl]

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

[frag.hlsl]

void main(float2 in_TexCoord : TEXCOORD0,
#if 0


+ 4
- 0
src/gradient.lolfx View File

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

#version 130

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

[frag.glsl]

#version 130

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

[vert.hlsl]

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

[frag.hlsl]

float4x4 bayer = float4x4( 0.0, 12.0, 3.0, 15.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

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

[frag.glsl]
#version 120

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

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

[frag.hlsl]
void main(out float4 out_FragColor : COLOR)
{
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

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

[frag.glsl]

#version 120

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

[vert.hlsl]

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

[frag.hlsl]

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


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

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

#version 120

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

[frag.glsl]

#version 120

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

[vert.hlsl]

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

[frag.hlsl]

float4 mod289(float4 x)
{


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

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

#version 120

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

[frag.glsl]

#version 120

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

[vert.hlsl]

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

[frag.hlsl]

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


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

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

#version 120

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

[frag.glsl]

#version 120

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

[vert.hlsl]

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

[frag.hlsl]

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


Loading…
Cancel
Save