mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 11:28:05 +02:00
Consolidate point size computation, clamping in get_size().
Also, apply user-defined clamp limits to point size even when not using attentuation or program-computed size.
This commit is contained in:
parent
ccb1c9df00
commit
0fd679a190
1 changed files with 35 additions and 36 deletions
|
|
@ -46,6 +46,38 @@
|
|||
} while(0)
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get/compute the point size.
|
||||
* The size may come from a vertex shader, or computed with attentuation
|
||||
* or just the glPointSize value.
|
||||
* Must also clamp to user-defined range and implmentation limits.
|
||||
*/
|
||||
static INLINE GLfloat
|
||||
get_size(const GLcontext *ctx, const SWvertex *vert, GLboolean smoothed)
|
||||
{
|
||||
GLfloat size;
|
||||
|
||||
if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
|
||||
/* use vertex's point size */
|
||||
size = vert->pointSize;
|
||||
}
|
||||
else {
|
||||
/* use constant point size */
|
||||
size = ctx->Point.Size;
|
||||
}
|
||||
/* always clamp to user-specified limits */
|
||||
size = CLAMP(size, ctx->Point.MinSize, ctx->Point.MaxSize);
|
||||
/* clamp to implementation limits */
|
||||
if (smoothed)
|
||||
size = CLAMP(size, ctx->Const.MinPointSizeAA, ctx->Const.MaxPointSizeAA);
|
||||
else
|
||||
size = CLAMP(size, ctx->Const.MinPointSize, ctx->Const.MaxPointSize);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Draw a point sprite
|
||||
*/
|
||||
|
|
@ -68,18 +100,7 @@ sprite_point(GLcontext *ctx, const SWvertex *vert)
|
|||
span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
|
||||
span.zStep = 0;
|
||||
|
||||
/* compute size */
|
||||
if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
|
||||
/* use vertex's point size */
|
||||
/* first, clamp attenuated size to the user-specifed range */
|
||||
size = CLAMP(vert->pointSize, ctx->Point.MinSize, ctx->Point.MaxSize);
|
||||
}
|
||||
else {
|
||||
/* use constant point size */
|
||||
size = ctx->Point.Size;
|
||||
}
|
||||
/* clamp to non-AA implementation limits */
|
||||
size = CLAMP(size, ctx->Const.MinPointSize, ctx->Const.MaxPointSize);
|
||||
size = get_size(ctx, vert, GL_FALSE);
|
||||
|
||||
/* span init */
|
||||
INIT_SPAN(span, GL_POINT);
|
||||
|
|
@ -237,18 +258,7 @@ smooth_point(GLcontext *ctx, const SWvertex *vert)
|
|||
span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
|
||||
span.zStep = 0;
|
||||
|
||||
/* compute size */
|
||||
if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
|
||||
/* use vertex's point size */
|
||||
/* first, clamp attenuated size to the user-specifed range */
|
||||
size = CLAMP(vert->pointSize, ctx->Point.MinSize, ctx->Point.MaxSize);
|
||||
}
|
||||
else {
|
||||
/* use constant point size */
|
||||
size = ctx->Point.Size;
|
||||
}
|
||||
/* clamp to AA implementation limits */
|
||||
size = CLAMP(size, ctx->Const.MinPointSizeAA, ctx->Const.MaxPointSizeAA);
|
||||
size = get_size(ctx, vert, GL_TRUE);
|
||||
|
||||
/* alpha attenuation / fade factor */
|
||||
if (ctx->Multisample.Enabled) {
|
||||
|
|
@ -371,18 +381,7 @@ large_point(GLcontext *ctx, const SWvertex *vert)
|
|||
span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
|
||||
span.zStep = 0;
|
||||
|
||||
/* compute size */
|
||||
if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
|
||||
/* use vertex's point size */
|
||||
/* first, clamp attenuated size to the user-specifed range */
|
||||
size = CLAMP(vert->pointSize, ctx->Point.MinSize, ctx->Point.MaxSize);
|
||||
}
|
||||
else {
|
||||
/* use constant point size */
|
||||
size = ctx->Point.Size;
|
||||
}
|
||||
/* clamp to non-AA implementation limits */
|
||||
size = CLAMP(size, ctx->Const.MinPointSize, ctx->Const.MaxPointSize);
|
||||
size = get_size(ctx, vert, GL_FALSE);
|
||||
|
||||
/* span init */
|
||||
INIT_SPAN(span, GL_POINT);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue