fresh said:There's no point to have specific quad support. As Simon F said, you cant guarantee that a quad is planar and then all your interpolators are f'd. You can emulate a quad with a trifan, which is what I suspect most (all?)hardware does. It's still a bit of a problem though cause you can draw a quad 2 different ways as a trifan, and they would look slightly different with interpolated shading.
Humus,Humus said:Well, if you're using quad lists then you can save many indices.
Something I'd like to see would be automatic quadification (just invented that word ), that is, the last vertex for each quad is not stored but instead evaluated as v1 + v2 - v0. Would save 25% bandwidth and storage space for quads.
You beat me to it I see.psurge said:I think that's why Simon F said it would be better to split into a quad into 4 triangles (presumably using the quad center as an extra vertex?)
That's potentially an interesting idea.... but I'm wondering if the mesh would crack and / or texture seams would appear...Humus said:Something I'd like to see would be automatic quadification (just invented that word ), that is, the last vertex for each quad is not stored but instead evaluated as v1 + v2 - v0. Would save 25% bandwidth and storage space for quads.
Simon F said:Humus,
I'm assuming that these would then be converted to strips and, if so, there's a couple of things in that scheme that I'm not keen on. Each implied vertex would depend on all the previously defined vertices and so (a)You'd run the risk of accumulated errors and (b) you wouldn't have random access (should you need it).
v0 -- v2 ------- v3 -- v5 --- ...
| | | |
v1 -- implied -- v4 -- implied - ...
Dio said:That's potentially an interesting idea.... but I'm wondering if the mesh would crack and / or texture seams would appear...Humus said:Something I'd like to see would be automatic quadification (just invented that word ), that is, the last vertex for each quad is not stored but instead evaluated as v1 + v2 - v0. Would save 25% bandwidth and storage space for quads.
I've got my doubts with this too. If the system is 'symmetrical' then the first 'implied' vertex would have to satisfyHumus said:I was mostly thinking of plain quad lists, not strips. For strips you'd have to use another scheme:
Code:v0 -- v2 ------- v3 -- v5 --- ... | | | | v1 -- implied -- v4 -- implied - ...
No, that's 1 quad every 1.5 vertices (alternating two and one required vertex per added quad).Simon F said:That's also only achieving 1 quad every two vertices which is the same as triangle strips.
Oops!Chalnoth said:No, that's 1 quad every 1.5 vertices (alternating two and one required vertex per added quad).Simon F said:That's also only achieving 1 quad every two vertices which is the same as triangle strips.
Simon F said:I've got my doubts with this too. If the system is 'symmetrical' then the first 'implied' vertex would have to satisfyHumus said:I was mostly thinking of plain quad lists, not strips. For strips you'd have to use another scheme:
Code:v0 -- v2 ------- v3 -- v5 --- ... | | | | v1 -- implied -- v4 -- implied - ...
V1+V2-V0 = V4+V2-V3 => V1-V0 = V4-V3
and so all the 'vertical' edges of the strip would have to be parallel and the same length. I suppose you could relax the conditions so that only the first of every pair was a parallelogram but you'd still have the condition that vertical edges would have to be parallel... but that'd be a general restriction for quad strips anyway.
Not sure again.Humus said:Dio said:That's potentially an interesting idea.... but I'm wondering if the mesh would crack and / or texture seams would appear...Humus said:Something I'd like to see would be automatic quadification (just invented that word ), that is, the last vertex for each quad is not stored but instead evaluated as v1 + v2 - v0. Would save 25% bandwidth and storage space for quads.
It should be fine for quad strips as shown above. It should also be fine for anything that's indexed unless I'm overlooking something. For unindexed quad lists it may cause some pixel leakage though I suppose since an implied and actual vertex may not match.
Try putting them within aDio said:(I had to lose the | markers because I couldn't get them to work)
block.
Anyway, as for the times when quad strips are used, I'm not entirely sure, Humus. It looks to me that this technique would only be useful for drawing cylinders. Terrain wouldn't work, I don't think, as even if the x/y coordinates could be interpolated in this fashion, the z coordinate could not.