[PNG icon] PNG Support in VRML Browsers

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:

[overview screen shot of pngboxes.wrl from Irix Cosmo Player]
[palette/opaque viewpoint] [8-bps truecolor/opaque viewpoint] [16-bps truecolor/opaque viewpoint] [palette/translucent viewpoint] [8-bps truecolor/translucent viewpoint] [16-bps truecolor/translucent 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:


Last modified 3 May 1999 by newt@pobox.com , you betcha.

Copyright © 1997-1999 Greg Roelofs.