xeolabs bio photo


Lindsay Kay

3D Web Software Engineer

Twitter LinkedIn Github

My chapter on SceneJS for OpenGL Insights is now free to download!


GPU-Assisted Picking in xeogl

A multi-layer color-indexing rendering algorithm which ray-picks 3D scene objects in linear time

Adding Physically Based Rendering to xeogl

Physically based rendering or PBR is a shading model in computer graphics that seeks to render graphics in a way that more accurately models the flow of light in the real world. In this article, I describe how I extended the WebGL-based xeogl engine to support both metallic-roughness and specular-glossiness PBR workflows.

SceneJS v4.0 Released

More rendering capabilities!

Reflective Surfaces in SceneJS

Using cube maps to make objects reflective

Transparency in SceneJS

All about making objects transparent in SceneJS

Alpha Mapping in SceneJS

Using textures to make transparent areas on the surfaces of objects

Automatic WebGLContestLost Recovery in SceneJS

How SceneJS gets back on its feet when WebGL blows a fuse

Fast Ray Picking in SceneJS

How to do a stupidly fast ray-pick on anything in the rendered view

Pssst...How Fast Ray Picking Works in SceneJS

A quick writeup on how I'm using the colour buffer to help find ray-intersects and avoid expensive intersection calculations

SceneJS Quick Start

Get cracking with SceneJS in two minutes

Picking in SceneJS

How to click on things in the 3D view

SceneJS Pick-Fly-Orbit Camera

Camera node which flies to whatever you pick and orbits it

Rigid-Body Physics in SceneJS

Creating rigid-body physical simulations

Importing .OBJ, .MD2 and .3DS into SceneJS

Importing meshes from three popular formats

Creating your own Scene Node Types

Extending the SceneJS API

SceneJS Visibility and Detail Culling

Optimising your scenes with frustum culling

Adding and Removing Scene Nodes

How to create a scene then update, add and remove nodes

Migrating from SceneJS 2.0 to 3.1

Updating your apps to the V3.1 API

SceneJS Tutorials

3D web programming using SceneJS