James A. McCombe,
Oakland, California
e-mail: james 'at' jamesmccombe 'dot' com

Objective: Develop state of art computer graphics technology



CAPABILITIES

  • Passionate about computer graphics algorithms and optimisation from the high level, all the way down to the hardware level.

  • Very comfortable with low level machine languages. Have quickly learned several processor architectures. Most recent experience is with PowerPC w/ Altivec and Broadcom VideoCore II DSP. Have done some work with m68k, PIC, ARM and x86.

  • Highly familiar with several high level languages: C, Objective C, C++, Delphi, Pascal, OpenGL Shading Language, ARB_fragment_program, ARB_vertex_program, ATI_text_fragment_shader.

  • Familiar with embedded environments, using JTAG on chip debug and measuring power consumption.

  • Experienced with the communication of ideas and working with a large number of different people, often spanning multiple organisations and companies to work towards a final product. This required care by always being aware of what is confidential information and working around those constraints.

  • Capable of working on any hardware or software platform.

  • Experience in compiler design and implementation. First hand experience of writing language parsers, tokenisers, optimisers and runtime compilation for execution on a specific processor.

  • Experience in highly efficient processor emulation through implementing Apple's emulators for the very latest 3D graphics processors.

  • Comprehensive knowledge of OpenGL, specifically programmable graphics hardware such as vertex and fragment programming.

  • Experienced presenting complex subjects to large audiences via talking at Apple's WWDC yearly conferences.


ACCOMPLISHMENTS

  • Designer and lead implementor of a fully programmable, high performance, real time OpenGL software renderer for the Broadcom VideoCore II DSP. This processor consists of a 32bit integer scalar unit and a 16bit integer vector unit with 16 cell processors - the whole thing runs at only 150Mhz, a fraction of what typical modern processors run at. Designing an OpenGL renderer for this unusual and challenging hardware required exclusively fixed point arithmetic and an innovative tile based triangle rasterisation scheme to take full advanage of its parallel processing capability. The result was an ultra low power consuming part capable of running sophisticated OpenGL software with fill rates exceeding 80Mpixels/second while being ideal for use in a battery powered embedded device.

  • Implemented a fully programmable, high precision, real time floating point software renderer for the Macintosh. It includes complete support for the OpenGL Shading Language and works by using a sophisticated runtime compiler that stitches block of hand written PowerPC Altivec code for all the shader functions and then does register allocation between the blocks to minimise memory access thus delivering high performance. This renderer is used primarily within Apple's professional graphics software when the precision or capability of the graphics hardware is inadequate.

  • Designed and implemented a highly realistic real time kaleidoscope simulation for the Macintosh. It leverages the 3D graphics hardware to acheive high performance. This can be seen and download free from my website.

  • Spoke in a 1 hour long presentation at World Wide Developers Conference (WWDC) in 2004 (San Francisco Moscone West). The session was on the "OpenGL Shading Language" - a high level, 'C'-like language used to describe operations that are to be performed on a per-vertex or per-fragment basis. This was followed by one on one Q&A with the audience.

  • Spoke in a 1 hour long presentation at World Wide Developers Conference (WWDC) in 2003 (San Francisco Moscone West). I held the session on "Fragment Programming" giving a talk fully explaining this complex technology and trying to inspire developers by showing them stunning graphics examples and then fully explaining their operation. This was followed by one on one Q&A with the audience.

  • Assisted the iChat project group at Apple by providing a compositing library (built on OpenGL) to help them get the video conferencing video displayed on screen quickly, and with low CPU overhead. This is now in use today in Apple's iChat AV video conferencing program.

  • Implemented ARB_fragment_program OpenGL extension on Apple's Mac OS X. This is the now industry standard method for writing fragment programs.

  • Helped in the design of the ARB_vertex_program specification for OpenGL. This is now the industry standard method for writing vertex programs. I implemented the parser/tokeniser/emulation in Apple's Mac OS X to support this.

  • Implemented ATI_text_fragment_shader OpenGL extension on Apple's Mac OS X. This the first "real" language for doing fragment programming. Since at the time, hardware was very limited, the language had some limitations but regardless, it allowed impressive realtime per pixel effects to be done using the ATI Radeon 8500 series of graphics cards. Again, this involved writing a parser for the language, and working with ATI's driver developers to translate the token stream into the code that would run on their graphics card.

  • Spoke at the World Wide Developers Conference (WWDC) in May 2002 (San Jose). I hosted a workshop to introduce a group of 3D graphics professionals to ShaderBuilder, explaining how it could aid their graphics software development. After the workshop, I gave a presentation to a large, more varied audience about ShaderBuilder.

  • Designed and implemented Apple's "ShaderBuilder" vertex/fragment program development tool for Mac OS X. This ships with all Apple computers now and on the Mac OS X box set on the Developer CD. It allows interactive creation of vertex and fragment programs. You can type in your program, get realtime syntax information and see your effect evolve as you type. This replaces the traditional way of writing these programs which involved writing it, compiling, running, finding its not right, changingthe program, re-compiling, etc.. It also allows interactive step-by-step debugging.

  • Implemented ARB_vertex_program OpenGL extension on Apple's Mac OS X. This involved helping design a now industry standard specification document, implementing a parser for the language, designing a compact, hardware independent token stream representation of the vertex program and also writing an optimised software emulator which could run the vertex program, even if the latest 3D graphics hardware was not installed. This is now shipping with all new Apple computers with Mac OS X and used in many high-end video games and 3D graphics software.

  • Sole designer/implementor of portable vector graphics rendering engine and encoding scheme optimised for handheld devices. It has input loading filters for common industry standard vector image formats such as CGM and AutoDesk DWG. Used commercially inside FireViewer, a PalmOS graphics viewer by Firepad, Inc.

  • Designer/implementor of a Palm conduit application which allows entire websites to be recursively trawled and downloaded then packaged for delivery to the FireViewer application on the handheld device. Used multithreading extensively, with core service being wrapped neatly into a cleanly designed class.

  • Portable 3D raycasting engine, written in C.Utilised in Dreadling for the PalmPilot. Featured in New York Times.

  • Vexed - A highly popular puzzle game for the PalmPilot written in C.

  • Landscape generator written in C for UNIX / Xwindow system.

  • Subtitle script decoder and timer written in C for UNIX / Xwindow system.

  • EDling - A Windows based level creator / editor for Dreadling written in object oriented form using Delphi.

  • Kingswood Sheep - A Windows based pedigree sheep farm management program, written in object oriented form using Delphi, with SQL database links.

  • CPU temperature monitor and LCD Graphics Display, utilising an Analogue to Digital convertor and PIC microcontroller (programmed in assembly language).

  • 3 Channel Stereo audio effects mixer.

  • Weather station which connects to a server computer system. Implements TCP/IP client / server architecture, written for UNIX in C.

  • Grade 8 (Maximum Honour) in Piano performance.


PREVIOUS EMPLOYMENT:

2001 - 2006:
Sr. 3D Graphics Engineer,
Apple Computer, Inc.
Cupertino, California

2000 - 2001:
Software Engineer,
Firepad, Inc.
Mountain View, California

1997 - 1999:
Lead Programmer and UNIX Server administrator,
TGM Computer Systems,
Hillsborough,
Northern Ireland

Summer 1999:
Web author, SQL management and Server admin,
BizNet Solutions,
Belfast,
Northern Ireland


EDUCATION:
1993 - 2000
Methodist College Belfast,
Northern Ireland,
A-Levels in Maths (Pure / Applied), Technology (Electronics) and Computing