PNG texture-map support is required for minimal conformance with the Virtual Reality Modeling Language (VRML) 2.0 specification, so one might naïvely assume that most ``VRML 2.0'' or ``VRML97'' (the ISO standard) browsers on the market would actually attempt to render PNGs. Not so! The ``Big Two'' now do (that is, Cosmo Player and WorldView), but generally speaking, the VRML 2.0 market is still fairly immature, with no single browser implementing every part of the specification. Unfortunately (from the PNG perspective), most browser-writers appear to have placed PNG support rather low on the priority list.
To test such things, Greg created pngboxes.wrl (a.k.a. PNG-in-the-Arse World, as one of Greg's evil co-workers dubbed it), a simple world with various PNG, GIF and JPEG textures applied to boxes. (A 79k zipfile containing the world and all of its textures is available for download and local testing.) There's also some text to label the various texture types, and four viewpoints are defined for easy navigation. According to Greg's eyeballs and Trapezium's Vorlon 1.1 tester, the world itself fully conforms to the VRML97 spec. This is approximately what it should look like from the overview viewpoint:
| closeups: | |||
|---|---|---|---|
| opaque materials: | [ palette ] | [ 8-bps truecolor ] | [ 16-bps truecolor ] |
| translucent materials: | [ palette ] | [ 8-bps truecolor ] | [ 16-bps truecolor ] |
This screen shot was taken from SGI's Irix Cosmo Player 1.0.2, which was the browser closest to full conformance with regard to texture support, especially PNG textures. (LibVRML97/lookat 0.7.9 is fully conformant with all of the texture tests embodied in this world, but Greg hasn't yet had time to make a new set of screenshots. Cosmo Player 2.1 for Irix has finally been released and may also be fully correct, but Greg doesn't have access to a working Irix 6.5 machine.) The top set of boxes is completely correct; the errors lie in the bottom set, where the six gray textures with transparency are also composed (incorrectly) with the underlying material transparency.
Clicking on one of the six texture-groupings in the image will take you to a page with the corresponding closeup view, as will the links below the image. (Thanks to Jas Sandhu, David Story, Gregory Seidman and Veronica Roelofs for providing earlier sets. Greg S also happens to maintain a very nice comparison table of VRML browser features.)
The tables below summarize Greg's (that is, local-Greg's) findings with regard to the current status of PNG support in various VRML browsers, whether stand-alone or plug-in versions. He'll do his best to keep this up to date as new browsers or new versions of old browsers appear, but there are limits to the amount of testing he can manage on his own... For Win32 browsers, note that the level of texture support is often strongly dependent on the quality of the underlying display drivers and/or the DirectX implementation.
| OS | VRML browser (web browser) |
PNG support? | comments |
|---|---|---|---|
| Win32 |
Community Place 2.0 (semi-stand-alone) |
no | doesn't compose transparent gray textures with material colors; treats black as fully transparent in opaque GIF textures on translucent materials; doesn't scope DirectionalLights properly; doesn't appear to support ambient lighting (DirectionalLight ambientIntensity field); requires external browser for downloading |
| Win32 |
Contact
4.002 Direct3D (NN 4.04) |
yes, mostly | renders RGBA-palette PNGs completely opaque, regardless of material transparency; doesn't compose gray+alpha palette PNGs with material colors; composes binary-transparency palette textures and single-shade-transparency grayscale textures with underlying material transparency; MMX speed mode appears to have serious interlacing bug with all textures; appears to resample large textures to smaller sizes in D3D Hardware mode (no ``pixel perfect'' capability at 1024x1024 on 8 MB Rage Pro), but in High Quality software mode, does ``pixel perfect'' textures even with odd sizes; in Hardware mode, can render opaque parts of overlapping transparent textures as transparent and/or fail to compose transparent gray textures with underlying material color (probably related to Cosmo/Irix's problem with `Nice Transparency' object-sorting); in High Quality software mode, uses binary transparency (stippled or ``screen door'' alpha). (This is blaxxun's new name for their CCpro / CC3D client. It supports blaxxun's multi-user extensions in addition to standard VRML97.) |
| Win32 |
Cortona 1.0.1.3 beta (NN 4.04) |
yes, partly | doesn't compose gray textures with material colors; composes transparent palette textures and single-shade, 8-bit-per-sample transparent textures with underlying material transparency; doesn't do 16-bit texture transparency at all; doesn't do gray+alpha transparency at all; appears to do single-pixel transparency for palette-alpha textures; garbles textures in Render98 mode; hangs browser for 25 seconds (``Not responding'') while loading test world on PII-266 |
| Win32 |
Cosmo HomeSpace Designer 2.5 (stand-alone) |
no | uses GIFs with same names in place of opaque palette PNGs; uses JPEGs with same names in place of opaque 8-bps PNGs; doesn't support textures with transparency; doesn't support Text. (This is Cosmo Software's new name for Paragraph's Internet3D Space Builder. It may have reverted to Paragraph with Cosmo's sale to Platinum.) |
| Irix |
Cosmo Player 1.0.2 (NN 3.01S) |
yes, mostly | transparent gray textures inherit underlying material transparency; can render opaque parts of overlapping transparent textures as transparent if `Nice Transparency' turned on (limitation of object-sorting algorithm) |
| Win32 |
Cosmo Player 2.1 (NC 4.04) |
yes, mostly | with `Nice Transparency,' opaque textures fail to inherit underlying material transparency at some viewing angles (i.e., erratic `popping' behavior), and transparent gray textures sometimes do inherit underlying material transparency; without `Nice Transparency,' binary transparency |
| Win32 |
Cosmo Player 2.0 (NC 4.04) |
yes, mostly | doesn't compose transparent gray palette-PNGs with material colors; with `Nice Transparency,' opaque textures fail to inherit underlying material transparency at some viewing angles (i.e., erratic `popping' behavior), and transparent gray and RGB textures sometimes do inherit underlying material transparency; without `Nice Transparency,' binary transparency |
| Win32 |
Cosmo Player 1.0 (NC 4.0) |
yes, mostly | interprets RGB as BGR (8-bit palette, 24- and 48-bit truecolor); binary transparency. (This is basically Live3D 2.0 but faster and with an improved color model. No word on possible differences between versions 1.0, 1.0.1 and 1.0.2.) |
| OS | VRML browser (web browser) |
PNG support? | comments |
|---|---|---|---|
| Linux |
FreeWRL
0.13 (stand-alone) |
not really | doesn't support textures on IndexedFaceSets, ElevationGrids or Extrusions; replicates JPEG textures (apparently) and uses in place of PNG textures; dies on GIF textures; doesn't support material transparency; doesn't honor center- and right-justification of Text; can't handle ``convex FALSE'' regardless of whether any non-convex polygons are included; doesn't scope DirectionalLights properly |
| Win32 |
GLView 3.02b (semi-stand-alone) |
no | doesn't mix gray textures with material colors; doesn't render Text correctly; uses external web browser to retrieve textures. (This browser no longer exists; see Blaxxun's CC3D above.) |
| Win32 |
Internet3D Space Builder 2.1 (stand-alone) |
no | uses GIFs with same names in place of opaque palette PNGs. (Later versions are called Cosmo HomeSpace Designer; see above.) |
| Linux |
LibVRML97/xmLookat 0.7.9 (stand-alone) |
yes | spurious pixel in corner of one GIF color texture; doesn't center-justify or right-justify Text correctly; doesn't do font families (e.g, "SERIF") |
| Win32 |
Liquid Reality
1.0b17 (IE 3.02) |
no | tries, but crashes browser on all PNGs except RGB and RGBA; doesn't do RGB and RGBA PNG textures correctly (appears to use pointer to JPEG buffer sometimes?); doesn't support material transparency; doesn't compose grayscale textures with material colors; doesn't scale Text; doesn't appear to support ambient lighting (DirectionalLight ambientIntensity field). (This was the final release.) |
| Solaris |
Liquid Reality
1.0b17 (JDK 1.0.2 appletviewer) |
not really | crashes/core-dumps on all PNGs except RGB and RGBA; doesn't do 16-bit-per-sample textures correctly; doesn't compose grayscale textures with material colors; doesn't scale Text; doesn't support viewpoints; doesn't appear to support ambient lighting (DirectionalLight ambientIntensity field); weird transparency bug with green/red materials. (This was the final release.) |
| Win32 | Live3D 2.0b5 | (Live3D and Cosmo Player merged; see Cosmo Player 1.0 above.) | |
| Win32 |
Live3D 1.0 (NN 3.01) |
no | |
| Win32 |
MSVRML b2 (IE 4.0b2) |
yes, mostly | crashes on transparent palette PNGs; binary transparency; doesn't compose gray GIFs with material colors; appears to quantize palette textures unnecessarily on truecolor displays; uses 8-bit mode by default (select Graphics -> Full color to use truecolor on a truecolor display). (This is a modified version of WorldView 2.0.) |
| Win32 |
OZ Virtual 2.0b2 (stand-alone) |
no | may try, but crashes on the VRML itself, apparently |
| Win32 |
OZ Virtual 1.0b3 (stand-alone) |
no | |
| Win32 |
RealVR Traveler 1.1.2 (stand-alone) |
no | ignores viewpoints; no transparency; minimal control (no translation) and poor lighting, so difficult to see anything |
| Win32 |
Torch 1.0b1 (NN 3.01) |
yes, mostly | doesn't compose grayscale textures with material colors; treats black as transparent in (opaque) grayscale GIFs; dithered, binary alpha-transparency (i.e., better than plain binary transparency); 8-bit underlying color model regardless of display depth; doesn't support Text. (Torch died with Newfire, alas.) |
| OS | VRML browser (web browser) |
PNG support? | comments |
|---|---|---|---|
| Java |
VermelGen beta 2 (stand-alone) |
no | |
| Win32 |
Viscape Universal 5.60.0.4104 (NN 4.04) |
yes, partly | doesn't compose grayscale textures with underlying material colors; doesn't compose opaque textures with underlying material transparency (Direct3D mode) or composes all textures with underlying transparency (OpenGL mode); doesn't do single-shade transparency in grayscale and RGB PNGs; renders palette-alpha PNGs opaque (mostly); doesn't support GIF textures (spec-compliant except that it doesn't render underlying material correctly, either--black or garbled) |
| Linux |
VRMLView 2.0b1 (1998.08.03) (stand-alone) |
yes, mostly | doesn't compose gray-palette textures with material colors; composes transparent gray PNGs with underlying material transparency; doesn't do 8-bps or 16-bps grayscale PNG transparency; doesn't do GIF transparency; renders opaque RGB textures, opaque palette textures and gray/transparent GIFs on translucent materials as completely transparent; textures turned off by default; extrudes Text into third dimension (many more polygons); ignores Background and Anchor nodes; broken viewpoint support (only Z coordinate honored?); polygon rendering-order bugs; requires Mesa 3.0 beta libraries |
| Win32 |
V-Realm Builder
2.1.18 (stand-alone) |
no | |
| Linux |
VRwave 0.9 (stand-alone) |
no | |
| Linux |
VRwave 0.7 (stand-alone) |
no | doesn't support textures |
| Win32 |
WorldView
2.1 (IE 3.02) |
yes, mostly | binary transparency; doesn't compose gray GIFs with material colors; composes transparent gray PNGs with underlying material transparency, and does not compose opaque textures with underlying material transparency (incorrect behavior); uses 8-bit mode by default (select Graphics -> Full color to use truecolor on a truecolor display); with hardware acceleration (Voodoo Rush, DirectX 5), no material transparency; with some hardware (ATI 3D Rage Pro AGP, DirectX 5, ``Feb 98'' video drivers), doesn't do transparency and doesn't display color JPEG box or any non-palette PNG boxes at all |
| Win32 |
WorldView 2.0 (NN 3.01) |
yes, mostly | binary transparency; doesn't handle alpha-palette PNGs correctly; doesn't do GIF transparency unless `transparent color' is first palette entry; doesn't compose gray GIFs with material colors; appears to quantize palette textures unnecessarily on truecolor displays; uses 8-bit mode by default (select Graphics -> Full color to use truecolor on a truecolor display); with hardware acceleration (Rendition Vérité), doesn't display RGBA PNG boxes at all |
The following browsers support only VRML 1.0:
| OS | VRML browser (web browser) |
PNG support? | comments |
|---|---|---|---|
| Win32 |
VR Scout 1.4 (NC 4.0b4) |
no | VRML 1.0 only |
| Linux |
VRweb 1.3 (stand-alone) |
no | VRML 1.0 only |
| Win32 | WebFX | (WebFX was purchased by Netscape and renamed Live3D, after which it merged with Cosmo Player; see above.) | |
| Win32 |
Wirl 1.2 (stand-alone?) |
no | VRML 1.0 only |
Here are the other PNG-related pages at this site:
Copyright © 1997-1999 Greg Roelofs.