Changeset 771


Ignore:
Timestamp:
Jun 9, 2011, 1:55:52 AM (8 years ago)
Author:
sam
Message:

debug: more debug quad tests, 1.20 shaders.

Location:
trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/debugquad.cpp

    r770 r771  
    2929 */
    3030
     31#define NUM_SHADERS 3
     32
    3133class DebugQuadData
    3234{
     
    3941    float time;
    4042    GLuint buflist[3];
    41     Shader *shader;
     43    Shader *shader[NUM_SHADERS];
    4244    GLuint texlist[1];
    4345    uint8_t image[1][32 * 32 * 4];
     
    9698            "    gl_FragColor = vec4(1.0, 1.0, 1.0, 0.0);\n"
    9799            "}\n";
    98         data->shader = Shader::Create(vertexshader, fragmentshader);
     100        data->shader[0] = Shader::Create(vertexshader, fragmentshader);
    99101        glGenTextures(1, data->texlist);
    100102
     
    116118        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    117119
     120        /* Quad #4: create texture in fragment shader */
     121        data->shader[0] = Shader::Create(
     122            "#version 120\n"
     123            "void main()"
     124            "{"
     125            "    gl_Position = gl_Vertex;"
     126            "}",
     127
     128            "#version 120\n"
     129            "void main()"
     130            "{"
     131            "    float dx = mod(gl_FragCoord.x * gl_FragCoord.y, 2.0);"
     132            "    float dy = mod(gl_FragCoord.x * 0.125, 1.0);"
     133            "    float dz = mod(gl_FragCoord.y * 0.125, 1.0);"
     134            "    gl_FragColor = vec4(dx, dy, dz, 1.0);"
     135            "}");
     136
     137        /* Quad #5: pass color from vertex shader to fragment shader */
     138        data->shader[1] = Shader::Create(
     139            "#version 120\n"
     140            "varying vec4 color;"
     141            "void main()"
     142            "{"
     143            "    float r = gl_MultiTexCoord0.x;"
     144            "    float g = gl_MultiTexCoord0.y;"
     145            "    color = vec4(1.0 - r, 1.0 - g, r, 1.0);"
     146            "    gl_Position = gl_Vertex;"
     147            "}",
     148
     149            "#version 120\n"
     150            "varying vec4 color;"
     151            "void main()"
     152            "{"
     153            "    gl_FragColor = color;"
     154            "}");
     155
     156        /* Quad #6: apply texture in fragment shader */
     157        data->shader[2] = Shader::Create(
     158            "void main()"
     159            "{"
     160            "    gl_TexCoord[0] = gl_MultiTexCoord0;"
     161            "    gl_Position = gl_Vertex;"
     162            "}",
     163
     164            "uniform sampler2D tex;"
     165            "void main()"
     166            "{"
     167            "    gl_FragColor = texture2D(tex, gl_TexCoord[0].xy * 0.25);"
     168            "}");
     169
    118170        data->initialised = 1;
    119171    }
     
    121173    {
    122174        glDeleteBuffers(3, data->buflist);
    123         Shader::Destroy(data->shader);
     175        Shader::Destroy(data->shader[0]);
     176        Shader::Destroy(data->shader[1]);
     177        Shader::Destroy(data->shader[2]);
    124178        glDeleteTextures(1, data->texlist);
    125179
     
    185239    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    186240#else
    187     data->shader->Bind();
     241    data->shader[0]->Bind();
    188242    GLuint attr_pos, attr_col, attr_tex;
    189     attr_pos = data->shader->GetAttribLocation("in_Position");
    190     attr_col = data->shader->GetAttribLocation("in_Color");
    191     attr_tex = data->shader->GetAttribLocation("in_TexCoord");
     243    attr_pos = data->shader[0]->GetAttribLocation("in_Position");
     244    attr_col = data->shader[0]->GetAttribLocation("in_Color");
     245    attr_tex = data->shader[0]->GetAttribLocation("in_TexCoord");
    192246
    193247    glEnableVertexAttribArray(attr_pos);
     
    240294
    241295    /* Quad #1: simple glBegin program */
    242     glColor3f(1.0f, 1.0f, 1.0f);
     296    glColor3f(0.8f, 0.5f, 0.2f);
    243297    glBegin(GL_TRIANGLES);
    244298        glVertex3f(data->aa.x, data->bb.y, 0.0f);
     
    293347    Advance();
    294348
    295     /* Quad #4: vertex buffer */
     349    /* Quad #4: set color in fragment shader */
     350    data->shader[0]->Bind();
     351    glColor3f(0.0f, 1.0f, 1.0f);
     352    glBegin(GL_TRIANGLES);
     353        glVertex3f(data->aa.x, data->bb.y, 0.0f);
     354        glVertex3f(data->bb.x, data->bb.y, 0.0f);
     355        glVertex3f(data->bb.x, data->aa.y, 0.0f);
     356
     357        glVertex3f(data->bb.x, data->aa.y, 0.0f);
     358        glVertex3f(data->aa.x, data->aa.y, 0.0f);
     359        glVertex3f(data->aa.x, data->bb.y, 0.0f);
     360    glEnd();
     361    glUseProgram(0);
     362
     363    Advance();
     364
     365    /* Quad #5: pass color from vertex shader to fragment shader */
     366    data->shader[1]->Bind();
     367    glColor3f(0.0f, 1.0f, 1.0f);
     368    glBegin(GL_TRIANGLES);
     369        glTexCoord2f(f1, f3);
     370        glVertex3f(data->aa.x, data->bb.y, 0.0f);
     371        glTexCoord2f(f3, f2);
     372        glVertex3f(data->bb.x, data->bb.y, 0.0f);
     373        glTexCoord2f(f2, f4);
     374        glVertex3f(data->bb.x, data->aa.y, 0.0f);
     375
     376        glTexCoord2f(f2, f4);
     377        glVertex3f(data->bb.x, data->aa.y, 0.0f);
     378        glTexCoord2f(f4, f1);
     379        glVertex3f(data->aa.x, data->aa.y, 0.0f);
     380        glTexCoord2f(f1, f3);
     381        glVertex3f(data->aa.x, data->bb.y, 0.0f);
     382    glEnd();
     383    glUseProgram(0);
     384
     385    Advance();
     386
     387    /* Quad #6: apply texture in fragment shader */
     388    data->shader[2]->Bind();
     389    glColor3f(0.0f, 1.0f, 1.0f);
     390    glEnable(GL_TEXTURE_2D);
     391    glBindTexture(GL_TEXTURE_2D, data->texlist[0]);
     392    glBegin(GL_TRIANGLES);
     393        glTexCoord2f(f1, f3);
     394        glVertex3f(data->aa.x, data->bb.y, 0.0f);
     395        glTexCoord2f(f3, f2);
     396        glVertex3f(data->bb.x, data->bb.y, 0.0f);
     397        glTexCoord2f(f2, f4);
     398        glVertex3f(data->bb.x, data->aa.y, 0.0f);
     399
     400        glTexCoord2f(f2, f4);
     401        glVertex3f(data->bb.x, data->aa.y, 0.0f);
     402        glTexCoord2f(f4, f1);
     403        glVertex3f(data->aa.x, data->aa.y, 0.0f);
     404        glTexCoord2f(f1, f3);
     405        glVertex3f(data->aa.x, data->bb.y, 0.0f);
     406    glEnd();
     407    glUseProgram(0);
     408
     409    Advance();
     410
    296411}
    297412
  • trunk/src/video.cpp

    r760 r771  
    3535mat4 proj_matrix, view_matrix, model_matrix;
    3636
     37#define OLD
     38
    3739static char const *vertexshader =
     40#if !defined OLD
    3841    "#version 130\n"
     42#endif
    3943    "\n"
    4044#if defined HAVE_GLES_2X
     
    4246    "attribute vec2 in_TexCoord;\n"
    4347    "varying vec2 pass_TexCoord;\n"
    44 #else
     48#elif !defined OLD
    4549    "in vec3 in_Position;\n"
    4650    "in vec2 in_TexCoord;\n"
     
    5458    "void main()\n"
    5559    "{\n"
     60#if defined OLD
     61    "    vec3 in_Position = gl_Vertex.xyz;\n"
     62    "    vec2 in_TexCoord = gl_MultiTexCoord0.xy;\n"
     63#endif
    5664    "    gl_Position = proj_matrix * view_matrix * model_matrix"
    5765    "                * vec4(in_Position, 1.0);\n"
     
    6573
    6674static char const *fragmentshader =
     75#if !defined OLD
    6776    "#version 130\n"
     77#endif
    6878    "\n"
    6979    "uniform sampler2D in_Texture;\n"
Note: See TracChangeset for help on using the changeset viewer.