Merge pull request #40523 from clayjohn/3.2-mipmap-nearest
Allow nearest neighbor lookup when using mipmaps
This commit is contained in:
commit
d8aaf0a620
2 changed files with 20 additions and 4 deletions
|
@ -711,7 +711,11 @@ void RasterizerStorageGLES2::texture_set_data(RID p_texture, const Ref<Image> &p
|
|||
texture->ignore_mipmaps = compressed && !img->has_mipmaps();
|
||||
|
||||
if ((texture->flags & VS::TEXTURE_FLAG_MIPMAPS) && !texture->ignore_mipmaps)
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
|
||||
if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
|
||||
} else {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST_MIPMAP_LINEAR);
|
||||
}
|
||||
else {
|
||||
if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
@ -957,7 +961,11 @@ void RasterizerStorageGLES2::texture_set_flags(RID p_texture, uint32_t p_flags)
|
|||
if (!had_mipmaps && texture->mipmaps == 1) {
|
||||
glGenerateMipmap(texture->target);
|
||||
}
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
|
||||
if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
|
||||
} else {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST_MIPMAP_LINEAR);
|
||||
}
|
||||
|
||||
} else {
|
||||
if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
|
||||
|
|
|
@ -841,7 +841,11 @@ void RasterizerStorageGLES3::texture_set_data(RID p_texture, const Ref<Image> &p
|
|||
texture->ignore_mipmaps = compressed && !img->has_mipmaps();
|
||||
|
||||
if ((texture->flags & VS::TEXTURE_FLAG_MIPMAPS) && !texture->ignore_mipmaps)
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
|
||||
if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
|
||||
} else {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST_MIPMAP_LINEAR);
|
||||
}
|
||||
else {
|
||||
if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
@ -1420,7 +1424,11 @@ void RasterizerStorageGLES3::texture_set_flags(RID p_texture, uint32_t p_flags)
|
|||
if (!had_mipmaps && texture->mipmaps == 1) {
|
||||
glGenerateMipmap(texture->target);
|
||||
}
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
|
||||
if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_LINEAR_MIPMAP_NEAREST : GL_LINEAR_MIPMAP_LINEAR);
|
||||
} else {
|
||||
glTexParameteri(texture->target, GL_TEXTURE_MIN_FILTER, config.use_fast_texture_filter ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST_MIPMAP_LINEAR);
|
||||
}
|
||||
|
||||
} else {
|
||||
if (texture->flags & VS::TEXTURE_FLAG_FILTER) {
|
||||
|
|
Loading…
Reference in a new issue