From: ihawkes2++at++csc.com
Date: 05/01/2000 22:32:47
Hi,
Our Performer application currently has some problems with cliptexture wobble.
The Performer documentation suggests that jello strikes the high texel quadrant
of the cliptexture relative to the clipcenter, but in this case the "wobble"
seems to be aligned with polygons and is independent of the quadrant. Only a few
polygons seem to be affected. When clipflying the problem area, the cliptexture
wobble can be fixed by either increasing the LOD Offset or decreasing the number
of effective levels.
Does this sound like jello, or is this some other problem that we are seeing?
I am using IRIX 6.5.6f and Performer 2.2.7 on an Onyx2 system. I am currently
using a 19 level (ie 262144 texels per side) virtual cliptexture, although we
plan to eventually increase the number of levels. In our application, I am
setting the virtual cliptexture parameters per tile, and the texture wobble is
visible on various polygons on the closest tiles. The side length of the tile
in texture coordinates is approximately 0.02798 (ie 7335 finest level texels). I
have implemented an algorithm to calculate the virtual cliptexture parameters
based on what I found in the virtcliptex.c and pfspherepatch.C samples, using
pfuCalcSizeFinestMipLOD and pfuCalcVirtualClipTexParams (see attached
pseudo-code):
(See attached file: ctAlgorithm.pseudo)
The results from the algorithm are as follows:
for the closest tiles (when tile closest distance = 160.877472):
nLevels = 19 clipSize = 1024 invalidBorder = 16 min_dst_dxyz = 0.000004
minLODTexPix = 0.000000
minLODLoaded= 0.000001 maxLODLoaded =18.000000 bboxMinDist = 0.000000
bboxMaxDist = 0.025390 tradeoff = 1.000000
LODOffset 0 numEffectiveLevels 16 minLOD 0.000001 maxLOD 6.000000
for intermediate distance tiles (when tile closest distance = 1056.229858) I
get:
nLevels = 19 clipSize = 1024 invalidBorder = 16 min_dst_dxyz = 0.000004
minLODTexPix = 0.000000
minLODLoaded= 0.000001 maxLODLoaded =18.000000 bboxMinDist = 0.002594
bboxMaxDist = 0.030579 tradeoff = 1.000000
LODOffset 1 numEffectiveLevels 15 minLOD 0.000001 maxLOD 7.000000
and for more distant tiles (when tile centre distance = 26882.296875) I get:
nLevels = 19 clipSize = 1024 invalidBorder = 16 min_dst_dxyz = 0.000004
minLODTexPix = 4.078858
minLODLoaded= 0.000001 maxLODLoaded =18.000000 bboxMinDist = 0.081358
bboxMaxDist = 0.109342 tradeoff = 1.000000
LODOffset 6 numEffectiveLevels 12 minLOD 0.000001 maxLOD 12.000000
I was surprised to see that the algorithm is giving me numEffectiveLevels = 16
for the closest tiles, rather than a smaller value that will reduce the
likelihood of jello. Looking at the pfuCalcVirtualClipTexParams code, it appears
that if I reduce my bboxMaxDist in the case of the closest tile (ie reduce the
tile size), then the calculated numEffectiveLevels will decrease and perhaps the
"cliptexture wobble" will improve. However, the tile is already pretty small in
terms of finest-level texels and is well under the recommended 16K limit. Is
tile size likely to be the problem here, or are there some other factors
involved? Perhaps some of my other inputs to pfuCalcVirtualClipTexParams are
incorrect?
Also, what is the meaning of the minLOD & maxLOD values calculated by
pfuCalcVirtualClipTexParams? Aren't the LODOffset & numEffectiveLevels enough to
specify the levels in use?
Any suggestions would be most appreciated!
Thanks,
Ian Hawkes
CSC Australia
This archive was generated by hypermail 2b29 : Mon May 01 2000 - 23:20:10 PDT