Beatfox Xevious
is THOUSANDS OF PEOPLE
Join date: 1 Jun 2004
Posts: 879
|
06-16-2004 01:54
If you create a hollow cylinder and give it a texture that has an alpha channel, the surface orders will often reverse. i.e. when you look at the outer surface you see the inner surface rendered on top of it, and vice versa. Same bug can be achieved by using a non-alpha texture and setting transparency to a non-zero value. Can get to be quite an annoyance.
Edit: Apparently, the same is true for all objects possessing inward-facing sides.
|
Julian Fate
80's Pop Star
Join date: 19 Oct 2003
Posts: 1,020
|
06-16-2004 08:09
This is an ancient bug. Try setting the transparency of those faces to 1, the lowest possible setting. It won't be noticeable and it sometimes fixes the problem.
|
Tiger Crossing
The Prim Maker
Join date: 18 Aug 2003
Posts: 1,560
|
06-16-2004 10:56
Second life has been suffering from an alpha sort order bug since day one. Maybe they aren't even making a separate sort of the alpha objects, which would mean that the order they are added to the scene is the order they are processed. You see, solid objects use their z-depth (how far they are from the camera, not the z-position we edit) to determine whats blocks what. But when an object face has a texture with alpha channel holes in it, it needs to be sorted by more than just its distance from the camera.
Regarding the 1% transparancy work-around, it may be that only object faces with some amount of transparancy get added to the alpha list, and not faces with 32-bit textures (that is, a 24-bit texture with an extra alpha channel). A simple fix on LL's end would be to stick such faces in the alpha sort table too.
If the 1% workaround doesn't ALWAYS work, then SL must have bugs in it's alpha sort table routines that need to be tracked down and squashed.
_____________________
~ Tiger Crossing ~ (Nonsanity)
|
Beatfox Xevious
is THOUSANDS OF PEOPLE
Join date: 1 Jun 2004
Posts: 879
|
06-16-2004 14:26
From: someone Originally posted by Julian Fate This is an ancient bug. Try setting the transparency of those faces to 1, the lowest possible setting. It won't be noticeable and it sometimes fixes the problem. Perhaps there's a misunderstanding here. It's the turning on of the transparency that causes the problem, for non-alpha-textured objects. For alpha-textured objects, the problem is there regardless of whether or not transparency is on.
|
eltee Statosky
Luskie
Join date: 23 Sep 2003
Posts: 1,258
|
well unless ya wanna ray trace...
06-17-2004 12:23
yer stuck with it for the time being.
Its been there for 20 years more or less.. that bug... essentially endemic with how transparency works within a real-time polygon engine.
Essentially the gist of it is that in order to get real time transparency there is abit of a 'hack' where you render transparent objects in reverse order (compared to everything else) so that things behind them aren't occluded away.
There are a few progressively more expensive and less problematic sort of 'hacks' to get around it but none have really stuck to date.
Its not limited to SL at all.. or even technically openGL. if you know what to look for you can see it in almost every 3d game. The current 'workaround' for static games is jus don let large transparent objects 'stack'
(aka the problem comes about if the 'center' of the object further from you is closer than the 'center' of another object that has some overlap with it otherwise though.. i have a pretty good example/piece of art in game if you want to play with it)
I spotted it in far-cry on some of the rope bridges, it was quite aparant in half-life in some multiplayer maps
heck if you look hard enough you can even see it in the movie 'tron' for an idea of how long this has been out there.
If you want tips on avoiding it... don't build transparent surfaces close enough together that there is *ANY* way one part of one could 'touch' the other by twisting. If they're far enough away like that, you won't see the problem
_____________________
wash, rinse, repeat
|
Tiger Crossing
The Prim Maker
Join date: 18 Aug 2003
Posts: 1,560
|
06-17-2004 13:10
A properly written 3D engine doesn't need to have this problem. It IS solveable, as I said before. There just needs to be a separate list for all objects with an alpha property. Rendering them in reverse order is a speed hack which works for most cases but not as well for interpenetrating surfaces. If the designers know there will never be such cases in their world, then it's fine to code it that way and save a little speed. But there ARE other ways that are fast that don't suffer from such limitations. (Which is good because the designers of SL have NO idea what we are going to be making.)
_____________________
~ Tiger Crossing ~ (Nonsanity)
|
eltee Statosky
Luskie
Join date: 23 Sep 2003
Posts: 1,258
|
06-17-2004 13:46
From: someone Originally posted by Tiger Crossing A properly written 3D engine doesn't need to have this problem. It IS solveable, as I said before. There just needs to be a separate list for all objects with an alpha property. Rendering them in reverse order is a speed hack which works for most cases but not as well for interpenetrating surfaces. If the designers know there will never be such cases in their world, then it's fine to code it that way and save a little speed. But there ARE other ways that are fast that don't suffer from such limitations. (Which is good because the designers of SL have NO idea what we are going to be making.) heh you have no idea how *UN* fast that would be in SL tiger most games.. alpha surfaces... few hundred in a scene.. mebbe a few thousand... in yer average sl vista (say lookin out from lusk's platform) the stats say 37,000 transparent poly's for me... and there are many places that're worse, trust me... they're already fps killers, they can't afford to make it any worse... and with HUGE piles of alpha shrubbery and curved surfaces, it would be much *much* worse
_____________________
wash, rinse, repeat
|