[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 by now, most ``VRML 2.0'' or ``VRML97'' (the ISO standard) browsers on the market would have perfect PNG support. Not so! Most of major browsers (that is, Cortona, Contact, Cosmo Player, WorldView, and LibVRML97/Lookat) do a fair job, but only three of them correctly render all of the basic texture/material combinations: Cosmo Player 2.1 for Irix, LibVRML97/Lookat 0.7.9 (or later--renamed to OpenVRML as of version 0.9.0), and Cortona 4.0.

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. (An 80k 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 seven viewpoints are defined for easy navigation. According to Greg's eyeballs and Trapezium's Vorlon 1.2 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 Cortona 4.0]
[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] [full-scale, 1024 x 768, 352k overview image]
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 Parallel Graphics' Cortona 4.0 under Windows, which is tied with SGI's Cosmo Player 2.1 for Irix (1223x1002, 253k screenshot) and with Chris Morley's LibVRML97 / Lookat for full texture conformance (in this test world, anyway) but, like Cosmo, has better font support than LibVRML97. Click near the edges of the screenshot above to see the full-scale, completely lossless version (352k).

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 used to maintain a very nice comparison table of VRML browser features; Sandy Ressler is now responsible for it.)


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 5.0
OpenGL
(IE 5.0)
yes, partly same bugs as 4.4, plus some
Win32 Contact 4.4
OpenGL
(IE 5.0)
yes, partly doesn't do texture transparency for RGBA-palette PNGs or single-shade-transparent grayscale PNGs, regardless of material transparency; doesn't compose gray+alpha palette PNGs or grayscale+alpha PNGs with material colors; doesn't compose grayscale textures with material colors if material has transparency; composes all transparent textures with underlying material transparency; renders gray+alpha palette PNGs with binary transparency at close range; 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) (tested on Dell OptiPlex GX1 PIII-550, NT 4.0 SP5, ATI Rage Pro OpenGL 1.1.0)
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 4.0
(IE 5.00.3103)
yes (tested on Dell OptiPlex PIII-1GHz, Win2k, software renderer)
Win32 Cortona 3.1
(NC 4.75)
yes, mostly same bugs as 3.0
Win32 Cortona 3.0
(NC 4.75)
yes, mostly composes transparent GIF (palette) textures and single-shade-transparent gray and RGB PNG textures (8-bps and 16-bps) with underlying material transparency (tested on Dell OptiPlex GX1 PIII-550, NT 4.0 SP5, ``Render98'' and software OpenGL renderers)
Win32 Cortona 2.2
(NC 4.75)
yes, mostly same bugs as 2.1
Win32 Cortona 2.1
(NN 4.08)
yes, mostly doesn't do single-color 16-bps RGB transparency; composes transparent GIF (palette) textures and single-shade-transparent gray and RGB PNG textures (8-bps and 16-bps) with underlying material transparency (tested on Dell OptiPlex GX1 PIII-550, NT 4.0 SP5, ``Render98'' and software OpenGL renderers)
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 2.1
(NN 4.61S)
yes  
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
Mac Cosmo Player 2.1b56
(NN 4.x)
yes, mostly doesn't do 16-bps textures correctly; crashes while attempting to render Shape { } object; users should allocate 40 MB to Netscape to compensate for a memory leak. (Thanks to Steve Guynup for testing this version.)
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 1.22.7-pre1
(stand-alone)
yes, mostly incorrectly composes grayscale textures with underlying materials (too light); composes transparent textures with underlying material transparency; crashes on large textures (seen on other worlds); viewpoint-dependent rendering ("popping") of intersecting/overlapping transparent textures and materials (seen on other worlds)
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"). (Later versions are called OpenVRML; see below.)
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-bps 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.)
Linux OpenVRML / sdl-viewer 0.18.5
(stand-alone)
yes crashes on pngboxes test world (memory corruption?); Background node doesn't transform with Viewpoint, either built-in or user-controlled. (This is the new name for LibVRML97, now developed by Braden McDaniel.)
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 some related PNG pages at this site:


[primary site hosted by SourceForge] Last modified 28 March 2010.

Copyright © 1997-2010 Greg Roelofs.