Changeset 1848


Ignore:
Timestamp:
Aug 31, 2012, 1:54:28 PM (7 years ago)
Author:
sam
Message:

gpu: convert the gradient shader to a LolFx effect file.

Location:
trunk/src
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/Makefile.am

    r1847 r1848  
    1212    world.cpp world.h sample.cpp sample.h sampler.cpp sampler.h \
    1313    text.cpp text.h emitter.cpp emitter.h numeric.h hash.cpp hash.h \
    14     worldentity.cpp worldentity.h gradient.cpp gradient.h \
     14    worldentity.cpp worldentity.h gradient.cpp gradient.h gradient.lolfx \
    1515    platform.cpp platform.h sprite.cpp sprite.h camera.cpp camera.h \
    1616    \
  • trunk/src/gradient.cpp

    r1513 r1848  
    1717
    1818using namespace std;
     19
     20extern char const *lolfx_gradient;
    1921
    2022namespace lol
     
    7577    if (!data->shader)
    7678    {
    77 #if !defined __CELLOS_LV2__ && !defined USE_D3D9 && !defined _XBOX
    78         data->shader = Shader::Create(
    79             "#version 130\n"
    80             "\n"
    81             "in vec3 in_Vertex;\n"
    82             "in vec4 in_Color;\n"
    83             "out vec4 pass_Color;\n"
    84             "\n"
    85             "uniform mat4 proj_matrix;\n"
    86             "uniform mat4 view_matrix;\n"
    87             "uniform mat4 model_matrix;\n"
    88             "\n"
    89             "void main()\n"
    90             "{\n"
    91             "    gl_Position = proj_matrix * view_matrix * model_matrix"
    92             "                * vec4(in_Vertex, 1.0);\n"
    93             "    pass_Color = in_Color;\n"
    94             "}\n",
     79        data->shader = Shader::Create(lolfx_gradient);
    9580
    96             "#version 130\n"
    97             "\n"
    98             "in vec4 pass_Color;\n"
    99             "\n"
    100             "mat4 bayer = mat4( 0.0, 12.0,  3.0, 15.0,"
    101             "                   8.0,  4.0, 11.0,  7.0,"
    102             "                   2.0, 14.0,  1.0, 13.0,"
    103             "                  10.0,  6.0,  9.0,  5.0);\n"
    104             ""
    105             "mat4 cluster = mat4(12.0,  5.0,  6.0, 13.0,"
    106             "                     4.0,  0.0,  1.0,  7.0,"
    107             "                    11.0,  3.0,  2.0,  8.0,"
    108             "                    15.0, 10.0,  9.0, 14.0);\n"
    109             "\n"
    110             "void main()\n"
    111             "{\n"
    112             "    vec4 col = pass_Color;\n"
    113             "    float t = cluster[int(mod(gl_FragCoord.x, 4.0))]"
    114             "                     [int(mod(gl_FragCoord.y, 4.0))];\n"
    115             "    t = (t + 0.5) / 17.0;\n"
    116             "    col.x += fract(t - col.x) - t;\n"
    117             "    col.y += fract(t - col.y) - t;\n"
    118             "    col.z += fract(t - col.z) - t;\n"
    119             "    gl_FragColor = col;\n"
    120             "}\n");
    121 #else
    122         data->shader = Shader::Create(
    123             "void main(float4 in_Vertex : POSITION,"
    124             "          float4 in_Color : COLOR,"
    125             "          uniform float4x4 proj_matrix,"
    126             "          uniform float4x4 view_matrix,"
    127             "          uniform float4x4 model_matrix,"
    128             "          out float4 out_Color : COLOR,"
    129             "          out float4 out_Position : POSITION)"
    130             "{"
    131             "    out_Position = mul(proj_matrix, mul(view_matrix, mul(model_matrix, in_Vertex)));"
    132             "    out_Color = in_Color;"
    133             "}",
    134 
    135             "float4x4 bayer = float4x4( 0.0, 12.0,  3.0, 15.0,"
    136             "                           8.0,  4.0, 11.0,  7.0,"
    137             "                           2.0, 14.0,  1.0, 13.0,"
    138             "                          10.0,  6.0,  9.0,  5.0);\n"
    139             ""
    140 #if 1
    141             "float4x4 cluster = float4x4(12.0,  5.0,  6.0, 13.0,"
    142             "                             4.0,  0.0,  1.0,  7.0,"
    143             "                            11.0,  3.0,  2.0,  8.0,"
    144             "                            15.0, 10.0,  9.0, 14.0);\n"
    145 #endif
    146             "\n"
    147             "void main(float4 in_Color : COLOR,"
    148             "          float4 in_FragCoord : WPOS,"
    149             "          out float4 out_FragColor : COLOR)"
    150             "{"
    151             "    float4 col = in_Color;"
    152 #if 1
    153             "    int x = (int)in_FragCoord.x;"
    154             "    int y = (int)in_FragCoord.y;"
    155 #if defined USE_D3D9 || defined _XBOX
    156             "    float t = bayer[int(frac(x * 0.25) * 4.0)]"
    157             "                   [int(frac(y * 0.25) * 4.0)];\n"
    158 #else
    159             // FIXME: we cannot address this matrix directly on the PS3
    160             "    float t = bayer[0][0];\n"
    161 #endif
    162             "    t = (t + 0.5) / 17.0;\n"
    163             "    col.x += frac(t - col.x) - t;\n"
    164             "    col.y += frac(t - col.y) - t;\n"
    165             "    col.z += frac(t - col.z) - t;\n"
    166 #endif
    167             "    out_FragColor = col;"
    168             "}");
    169 #endif
    17081        data->m_vbo = new VertexBuffer(sizeof(vertex));
    17182        data->m_cbo = new VertexBuffer(sizeof(color));
  • trunk/src/lolcore.vcxproj

    r1847 r1848  
    620620    <LolFxCompile Include="gpu\testmaterial.lolfx" />
    621621    <LolFxCompile Include="gpu\tile.lolfx" />
     622    <LolFxCompile Include="gradient.lolfx" />
    622623  </ItemGroup>
    623624  <ItemGroup>
Note: See TracChangeset for help on using the changeset viewer.