The X3D files (with shader source code embedded) are available for download - see the comments beside each model for a link.
All examples are clickable in a browser, if your browser supports VRML/X3D. If not, download the code, and the image if required, and modify the code to point to the image on your local computer.
This is the old SGI Teapot, with a Shader that takes light intensity, and assigns colours based on ranges of intensity. The model is available here for your enjoyment.
To see what the model looks like without the shader, you can get the model here.
Fragment Lighting vs. Vertex Lighting
Two Cylinders, rotating around each other, one with per-fragment lighting, the other lit on a per-vertex basis.
Fragment lighting is more time consuming, but sometimes the results are worth it. (run the test to really see the differences in action)
The Android FreeX3D App allows you to set "best" or "fast" rendering; feel free to play around with the settings when viewing your own models so you see for yourself what the trade-offs are for each style of rendering. here is this model.
A flat IndexedFaceSet, 20x20 vertices per side, is deformed in the Vertex shader. A TimeSensor feeds in a floating point number, and the Shader moves the vertices according to an algorithm running on the GPU.
Sobel Edge Detector
An industry-standard image ("Lenna", or "Lena", depending on the reference) used as input to a Sobel Operator for edge finding. The image size (512x512) is hard-coded into the Shader, but it could be passed in as a field.
Here is the file for you to try.
Fragment vs. Vertex Lighting examples
These examples contain GLSL code to show the effects of calculating lighting on either fragments or on vertices.
In this series of tests, two identical black squares are made up of triangles; a SpotLight is programmed to sweep across both black squares.
In all sequences, Vertex lighting is performed on the left side, Fragment shading on the right. The higher the triangle count (thus, the number of vertices) the "better" the SpotLight when Vertex shading. 16 Vertices is horrible, but in the 4 vertex example, the SpotLight never hits a vertex, thus is never shown.
In all sequences, Fragment lighting is (or, should be) identical.
Better is the high vertex count model for you to try.
Poor is the 16 vertex count model for you to try.
Abysmal is the 4 vertex count model for you to try.
GLSL Vertex deforming - Fish Eye View
Take a normal generated 3D terrain, manipulate vertices to change from a normal view.
Original View is the normal terrain view.
Fish Eye view with movement programmed in is the one with the GLSL shader to show the fisheye view. There is a PositionInterpolator in there to animate the Viewpoint.
iPhone start screen. One can select the last 2 successful runs, or type in a new URL.
As of 2016, IOS and OSX builds are not supported. At one time, FreeWRL was distributed by Apple for their desktop systems, but maintenance support lapsed when The Communications Research Centre stopped support for research into Virtual Reality and 3D Visualization, as these topics did not directly support the then-current views on how to manage wide wireless spectrum, of which CRC and its parent organization were tasked.
Of course, as of the 2016 timeframe, the new crop of researchers and managers at CRC realize the importance of visualization in their tasks, and have adopted the technology whole-heartedly, much to their credit, and are well positioned for the coming decade. (John Stewart's opinion)
FreeWRL running on the old iPhone app. The screen is touchable for movement, scaling. There are 4 buttons and 1 status area; the buttons are "Quit", "Vp" for next Viewpoint, "Wk" for setting walk mode, and "Ex" for entering Examine mode.
The status bar shows, in this view, the current Viewpoint; it will show other text depending on FreeWRL run status.
This is test 16, available at http://freewrl.sf.net/tests/16.wrl, and in the distribution.
The iPhone app was demonstrated at SIGGRAPH 2011 in Vancouver, the successful port of FreeWRL for the iPhone required moving from fixed-function OpenGL to OpenGL-ES; Shaders required to be built at load-time. (reference and more pictures at this mail archive)
GLSL Vertex Shader.
A 200x200 IndexedFaceSet with z=0 on all vertices is manipulated by a Vertex Shader. The X3D program with integral shader code is here.
|Large series of IndexedFaceSets, expanded via protos. Thanks to Adrian Rossiter, http://antiprism.com/adrian . Click on image for a larger view, or go to Adrian's interesting web site for his models and programs.|
Geospatial model - "7 Layers Plus" from the X3D Earth website.
CRC Canada was contracted to the U.S. Department of Defense to provide High Resolution Geospatialized 3D model rendering additions to FreeWRL. Contract No. N00244-08-P-1769, awarded 27 May 2008, issued by FISC San Diego, Code 200, 1 University Circle, Monterey CA.
A Panoramic picture taken in Wolztyn, Poland in May 2008, original image 4096x823 pixels. Displayed on the inside surface of a Cylinder,
Viewer placement in centre of Cylinder, nav speed set to "0", and in WALK mode. User can rotate around, and see the picture mapped
to Cylinder wall.
You know what is neat about this model? In 2008 this 3D model was shown, which started (in 2009) a sub-project documenting areas around Ottawa, Canada, creating 360 degree images by stitching a large sequence of photographs taken by a robotic camera platform. The Canada Parliament buildings were photographed September 23, 2009. The camera platform also was used in the province of Alberta.
Fast forward to 2016, and the "in thing" are 360 degree models, VR viewing apparatus, 8 years after our teams' first efforts went on line. Of course, now we have much better hardware; 360 degree movies (instead of one still image) and viewing platforms that make it seem almost as if you are there.
It is interesting to see the fantastic progress happening.
Townsquare from an older (unfortunately, no longer with us) website - too bad! The model has tons of large images
in it; rendering on machines with poor graphics (eg, and computer with an Intel GPU) takes a bit of work; when
this movie was taken, images were loaded using a load on demand algorithm, so there can be some stuttering
seen when moving and images are loading.
This model was significant as it showed (circa 2007) that real-time navigation through a virtualized landscape was possible.
The FreeWRL team coded Avatar-Object collision in OpenCL, which increased rendering speed by approximately 10 fold on devices that can/could support OpenCL/OpenGL sharing of data.
This un-attributed VRML model has been kicking around the Internet for a few years;
it is a good example of Sphere mapping within the X3D TextureCoordinateGenerator Node.
The X3D file is here
From circa 1999 to April 2010, the FreeWRL project was managed by John A. Stewart.
There is absolutely no warranty, express or implied for this software. For details on the conditions of use, see the FreeWRL distribution.
FreeWRL is Copyright (C) 1998, 1999...2009 Tuomas J. Lukka, John Stewart and others.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA