swrast: add lod bias when texture sampling
Mostly fixes progs/demos/lodbias when MESA_TEX_PROG=1. But the LOD still seems off by -1 or so. May be an issue with the params passed to _swrast_compute_lambda()
This commit is contained in:
@@ -89,6 +89,8 @@ fetch_texel_lod( GLcontext *ctx, const GLfloat texcoord[4], GLfloat lambda,
|
|||||||
* Fetch a texel with the given partial derivatives to compute a level
|
* Fetch a texel with the given partial derivatives to compute a level
|
||||||
* of detail in the mipmap.
|
* of detail in the mipmap.
|
||||||
* Called via machine->FetchTexelDeriv()
|
* Called via machine->FetchTexelDeriv()
|
||||||
|
* \param lodBias the lod bias which may be specified by a TXB instruction,
|
||||||
|
* otherwise zero.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
fetch_texel_deriv( GLcontext *ctx, const GLfloat texcoord[4],
|
fetch_texel_deriv( GLcontext *ctx, const GLfloat texcoord[4],
|
||||||
@@ -96,7 +98,8 @@ fetch_texel_deriv( GLcontext *ctx, const GLfloat texcoord[4],
|
|||||||
GLfloat lodBias, GLuint unit, GLfloat color[4] )
|
GLfloat lodBias, GLuint unit, GLfloat color[4] )
|
||||||
{
|
{
|
||||||
SWcontext *swrast = SWRAST_CONTEXT(ctx);
|
SWcontext *swrast = SWRAST_CONTEXT(ctx);
|
||||||
const struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current;
|
const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
|
||||||
|
const struct gl_texture_object *texObj = texUnit->_Current;
|
||||||
|
|
||||||
if (texObj) {
|
if (texObj) {
|
||||||
const struct gl_texture_image *texImg =
|
const struct gl_texture_image *texImg =
|
||||||
@@ -111,7 +114,9 @@ fetch_texel_deriv( GLcontext *ctx, const GLfloat texcoord[4],
|
|||||||
texdx[3], texdy[3], /* dq/dx, dq/dy */
|
texdx[3], texdy[3], /* dq/dx, dq/dy */
|
||||||
texW, texH,
|
texW, texH,
|
||||||
texcoord[0], texcoord[1], texcoord[3],
|
texcoord[0], texcoord[1], texcoord[3],
|
||||||
1.0F / texcoord[3]) + lodBias;
|
1.0F / texcoord[3]);
|
||||||
|
|
||||||
|
lambda += lodBias + texUnit->LodBias + texObj->LodBias;
|
||||||
|
|
||||||
lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod);
|
lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user