void glsl_R_InitAlias (void) { int vert; int frag; vert = GLSL_CompileShader ("quakemdl.vert", quakemdl_vert, GL_VERTEX_SHADER); frag = GLSL_CompileShader ("quakemdl.frag", quakemdl_frag, GL_FRAGMENT_SHADER); quake_mdl.program = GLSL_LinkProgram ("quakemdl", vert, frag); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.mvp_matrix); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.norm_matrix); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.skin_size); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.blend); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.colora); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.colorb); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.sta); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.stb); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.normala); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.normalb); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.vertexa); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.vertexb); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.colormap); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.skin); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.ambient); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.shadelight); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.lightvec); GLSL_ResolveShaderParam (quake_mdl.program, &quake_mdl.fog); }
void glsl_R_InitSprites (void) { int frag, vert; vert = GLSL_CompileShader ("quakespr.vert", quakesprite_vert, GL_VERTEX_SHADER); frag = GLSL_CompileShader ("quakespr.frag", quakesprite_frag, GL_FRAGMENT_SHADER); quake_sprite.program = GLSL_LinkProgram ("quakespr", vert, frag); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.spritea); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.spriteb); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.palette); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.matrix); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.vertexa); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.vertexb); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.colora); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.colorb); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.uvab); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.blend); GLSL_ResolveShaderParam (quake_sprite.program, &quake_sprite.fog); }
static int GLSL_InitGPUShader2(shaderProgram_t * program, const char *name, int attribs, const char *vpCode, const char *fpCode) { ri.Printf(PRINT_DEVELOPER, "------- GPU shader -------\n"); if(strlen(name) >= MAX_QPATH) { ri.Error(ERR_DROP, "GLSL_InitGPUShader2: \"%s\" is too long", name); } Q_strncpyz(program->name, name, sizeof(program->name)); program->program = qglCreateProgramObjectARB(); program->attribs = attribs; if (!(GLSL_CompileGPUShader(program->program, &program->vertexShader, vpCode, strlen(vpCode), GL_VERTEX_SHADER_ARB))) { ri.Printf(PRINT_ALL, "GLSL_InitGPUShader2: Unable to load \"%s\" as GL_VERTEX_SHADER_ARB\n", name); qglDeleteObjectARB(program->program); return 0; } if(fpCode) { if(!(GLSL_CompileGPUShader(program->program, &program->fragmentShader, fpCode, strlen(fpCode), GL_FRAGMENT_SHADER_ARB))) { ri.Printf(PRINT_ALL, "GLSL_InitGPUShader2: Unable to load \"%s\" as GL_FRAGMENT_SHADER_ARB\n", name); qglDeleteObjectARB(program->program); return 0; } } if(attribs & ATTR_POSITION) qglBindAttribLocationARB(program->program, ATTR_INDEX_POSITION, "attr_Position"); if(attribs & ATTR_TEXCOORD) qglBindAttribLocationARB(program->program, ATTR_INDEX_TEXCOORD, "attr_TexCoord0"); if(attribs & ATTR_LIGHTCOORD) qglBindAttribLocationARB(program->program, ATTR_INDEX_LIGHTCOORD, "attr_TexCoord1"); // if(attribs & ATTR_TEXCOORD2) // qglBindAttribLocationARB(program->program, ATTR_INDEX_TEXCOORD2, "attr_TexCoord2"); // if(attribs & ATTR_TEXCOORD3) // qglBindAttribLocationARB(program->program, ATTR_INDEX_TEXCOORD3, "attr_TexCoord3"); if(attribs & ATTR_TANGENT) qglBindAttribLocationARB(program->program, ATTR_INDEX_TANGENT, "attr_Tangent"); if(attribs & ATTR_NORMAL) qglBindAttribLocationARB(program->program, ATTR_INDEX_NORMAL, "attr_Normal"); if(attribs & ATTR_COLOR) qglBindAttribLocationARB(program->program, ATTR_INDEX_COLOR, "attr_Color"); if(attribs & ATTR_PAINTCOLOR) qglBindAttribLocationARB(program->program, ATTR_INDEX_PAINTCOLOR, "attr_PaintColor"); if(attribs & ATTR_LIGHTDIRECTION) qglBindAttribLocationARB(program->program, ATTR_INDEX_LIGHTDIRECTION, "attr_LightDirection"); if(attribs & ATTR_POSITION2) qglBindAttribLocationARB(program->program, ATTR_INDEX_POSITION2, "attr_Position2"); if(attribs & ATTR_NORMAL2) qglBindAttribLocationARB(program->program, ATTR_INDEX_NORMAL2, "attr_Normal2"); if(attribs & ATTR_TANGENT2) qglBindAttribLocationARB(program->program, ATTR_INDEX_TANGENT2, "attr_Tangent2"); GLSL_LinkProgram(program->program); return 1; }