mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 13:10:10 +01:00
glsl2: Add the remaining builtin uniforms.
This commit is contained in:
parent
73df636e04
commit
85b5dba593
1 changed files with 53 additions and 15 deletions
|
|
@ -76,6 +76,14 @@ add_variable(const char *name, enum ir_variable_mode mode, int slot,
|
|||
return var;
|
||||
}
|
||||
|
||||
static ir_variable *
|
||||
add_uniform(exec_list *instructions,
|
||||
struct _mesa_glsl_parse_state *state,
|
||||
const char *name, const glsl_type *type)
|
||||
{
|
||||
return add_variable(name, ir_var_uniform, -1, type, instructions,
|
||||
state->symbols);
|
||||
}
|
||||
|
||||
static void
|
||||
add_builtin_variable(const builtin_variable *proto, exec_list *instructions,
|
||||
|
|
@ -141,28 +149,58 @@ generate_110_uniforms(exec_list *instructions,
|
|||
glsl_type::get_array_instance(glsl_type::mat4_type,
|
||||
state->Const.MaxTextureCoords);
|
||||
|
||||
add_variable("gl_TextureMatrix", ir_var_uniform, -1, mat4_array_type,
|
||||
instructions, state->symbols);
|
||||
add_uniform(instructions, state, "gl_TextureMatrix", mat4_array_type);
|
||||
|
||||
/* FINISHME: Add support for gl_DepthRangeParameters */
|
||||
/* FINISHME: Add support for gl_ClipPlane[] */
|
||||
/* FINISHME: Add support for gl_PointParameters */
|
||||
add_uniform(instructions, state, "gl_DepthRangeParameters",
|
||||
state->symbols->get_type("gl_DepthRangeParameters"));
|
||||
|
||||
/* FINISHME: Add support for gl_MaterialParameters
|
||||
* FINISHME: (glFrontMaterial, glBackMaterial)
|
||||
*/
|
||||
add_uniform(instructions, state, "gl_ClipPlane",
|
||||
glsl_type::get_array_instance(glsl_type::vec4_type,
|
||||
state->Const.MaxClipPlanes));
|
||||
add_uniform(instructions, state, "gl_Point",
|
||||
state->symbols->get_type("gl_PointParameters"));
|
||||
|
||||
const glsl_type *const material_parameters_type =
|
||||
state->symbols->get_type("gl_MaterialParameters");
|
||||
add_uniform(instructions, state, "gl_FrontMaterial", material_parameters_type);
|
||||
add_uniform(instructions, state, "gl_BackMaterial", material_parameters_type);
|
||||
|
||||
const glsl_type *const light_source_array_type =
|
||||
glsl_type::get_array_instance(state->symbols->get_type("gl_LightSourceParameters"), state->Const.MaxLights);
|
||||
|
||||
add_variable("gl_LightSource", ir_var_uniform, -1, light_source_array_type,
|
||||
instructions, state->symbols);
|
||||
add_uniform(instructions, state, "gl_LightSource", light_source_array_type);
|
||||
|
||||
/* FINISHME: Add support for gl_LightModel */
|
||||
/* FINISHME: Add support for gl_FrontLightProduct[], gl_BackLightProduct[] */
|
||||
/* FINISHME: Add support for gl_TextureEnvColor[] */
|
||||
/* FINISHME: Add support for gl_ObjectPlane*[], gl_EyePlane*[] */
|
||||
/* FINISHME: Add support for gl_Fog */
|
||||
const glsl_type *const light_model_products_type =
|
||||
state->symbols->get_type("gl_LightModelProducts");
|
||||
add_uniform(instructions, state, "gl_FrontLightModelProduct",
|
||||
light_model_products_type);
|
||||
add_uniform(instructions, state, "gl_BackLightModelProduct",
|
||||
light_model_products_type);
|
||||
|
||||
const glsl_type *const light_products_type =
|
||||
glsl_type::get_array_instance(state->symbols->get_type("gl_LightProducts"),
|
||||
state->Const.MaxLights);
|
||||
add_uniform(instructions, state, "gl_FrontLightProduct", light_products_type);
|
||||
add_uniform(instructions, state, "gl_BackLightProduct", light_products_type);
|
||||
|
||||
add_uniform(instructions, state, "gl_TextureEnvColor",
|
||||
glsl_type::get_array_instance(glsl_type::vec4_type,
|
||||
state->Const.MaxTextureUnits));
|
||||
|
||||
const glsl_type *const texcoords_vec4 =
|
||||
glsl_type::get_array_instance(glsl_type::vec4_type,
|
||||
state->Const.MaxTextureCoords);
|
||||
add_uniform(instructions, state, "gl_EyePlaneS", texcoords_vec4);
|
||||
add_uniform(instructions, state, "gl_EyePlaneT", texcoords_vec4);
|
||||
add_uniform(instructions, state, "gl_EyePlaneR", texcoords_vec4);
|
||||
add_uniform(instructions, state, "gl_EyePlaneQ", texcoords_vec4);
|
||||
add_uniform(instructions, state, "gl_ObjectPlaneS", texcoords_vec4);
|
||||
add_uniform(instructions, state, "gl_ObjectPlaneT", texcoords_vec4);
|
||||
add_uniform(instructions, state, "gl_ObjectPlaneR", texcoords_vec4);
|
||||
add_uniform(instructions, state, "gl_ObjectPlaneQ", texcoords_vec4);
|
||||
|
||||
add_uniform(instructions, state, "gl_Fog",
|
||||
state->symbols->get_type("gl_FogParameters"));
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue