glsl: add ir_variable::determine_interpolation_mode() function.
This function determines how a variable should be interpolated based both on interpolation qualifiers and the current shade model. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
@@ -1354,6 +1354,21 @@ ir_variable::interpolation_string() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
glsl_interp_qualifier
|
||||||
|
ir_variable::determine_interpolation_mode(bool flat_shade)
|
||||||
|
{
|
||||||
|
if (this->interpolation != INTERP_QUALIFIER_NONE)
|
||||||
|
return (glsl_interp_qualifier) this->interpolation;
|
||||||
|
int location = this->location;
|
||||||
|
bool is_gl_Color =
|
||||||
|
location == FRAG_ATTRIB_COL0 || location == FRAG_ATTRIB_COL1;
|
||||||
|
if (flat_shade && is_gl_Color)
|
||||||
|
return INTERP_QUALIFIER_FLAT;
|
||||||
|
else
|
||||||
|
return INTERP_QUALIFIER_SMOOTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ir_function_signature::ir_function_signature(const glsl_type *return_type)
|
ir_function_signature::ir_function_signature(const glsl_type *return_type)
|
||||||
: return_type(return_type), is_defined(false), _function(NULL)
|
: return_type(return_type), is_defined(false), _function(NULL)
|
||||||
{
|
{
|
||||||
|
@@ -291,6 +291,17 @@ public:
|
|||||||
*/
|
*/
|
||||||
const char *interpolation_string() const;
|
const char *interpolation_string() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine how this variable should be interpolated based on its
|
||||||
|
* interpolation qualifier (if present), whether it is gl_Color or
|
||||||
|
* gl_SecondaryColor, and whether flatshading is enabled in the current GL
|
||||||
|
* state.
|
||||||
|
*
|
||||||
|
* The return value will always be either INTERP_QUALIFIER_SMOOTH,
|
||||||
|
* INTERP_QUALIFIER_NOPERSPECTIVE, or INTERP_QUALIFIER_FLAT.
|
||||||
|
*/
|
||||||
|
glsl_interp_qualifier determine_interpolation_mode(bool flat_shade);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delcared name of the variable
|
* Delcared name of the variable
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user