@@ -117,31 +117,19 @@ vec4 nbl_glsl_vTextureGrad_impl(in uint formatID, in vec3 virtualUV, in mat2 dOr
117
117
int LoD_high = int (LoD);
118
118
119
119
bool haveToDoTrilinear = false; // have to do trilinear only if doing minification AND larger than 1x1 footprint
120
- int levelInTail = 0 ;
120
+ int levelInTail = originalMaxFullMip != 0u ? 0 : 1 ;
121
121
int clippedLoD = 0 ;
122
122
if (LoD> 0 .f) // are we performing minification
123
123
{
124
- const bool bbbb = LoD_high>= originalMaxFullMip;
124
+ const bool inMipTail = LoD_high>= originalMaxFullMip;
125
125
// clip to max representable in VT, originalMaxFullMip is always -1 in case of no miplevel taking at least 1 full page
126
- clippedLoD = bbbb ? (int (max (originalMaxFullMip,1u))- 1 ): LoD_high;
127
-
128
- if (bbbb)
129
- {
130
- // if minification is being performaed then get tail position
131
- levelInTail = LoD_high- clippedLoD;
132
- // have to do trilinear only if doing minification AND larger than 1x1 footprint
133
- haveToDoTrilinear = LoD_high- clippedLoD< int (_NBL_VT_IMPL_PAGE_SZ_LOG2);
134
- levelInTail = haveToDoTrilinear ? levelInTail: int (_NBL_VT_IMPL_PAGE_SZ_LOG2);
135
- levelInTail += originalMaxFullMip!= 0u ? 0 : 1 ;
136
- }
137
- else
138
- {
139
- levelInTail += originalMaxFullMip!= 0u ? 0 : 1 ;
140
- haveToDoTrilinear = true;
141
- }
126
+ const int actualMaxFullMip = int (originalMaxFullMip)- 1 ;
127
+ clippedLoD = inMipTail ? max (actualMaxFullMip,0 ): LoD_high;
128
+
129
+ haveToDoTrilinear = LoD_high< originalMaxFullMip+ _NBL_VT_IMPL_PAGE_SZ_LOG2;
130
+ if (inMipTail)
131
+ levelInTail = min (LoD_high- actualMaxFullMip,int (_NBL_VT_IMPL_PAGE_SZ_LOG2));
142
132
}
143
- else
144
- levelInTail = originalMaxFullMip!= 0u ? 0 : 1 ;
145
133
146
134
// get the higher resolution mip-map level
147
135
vec3 hiPhysCoord = nbl_glsl_vTexture_helper(formatID,virtualUV,clippedLoD,levelInTail);
0 commit comments