Christian
Laforte
claforte@feelingsoftware.com
I am a software consultant
specialized in 3D graphics, with excellent analytical skills and a
solid track
record in designing and implementing complex software.
Fluent in English and French.
Ability to read, write and speak Japanese to an intermediate level (1000 kanji).
March 2005 – Now (President and owner)
Feeling Software provides 3D graphics consulting
and
software development services to a variety of clients. As the
President, my
responsibilities include:
- Recruitring and mentoring employees that are
smart and that can be trusted to get the right things done on time.
- Marketing and managing the relationship with all
of our demanding clients.
- Consulting with our clients, to share my 3D
graphics expertise.
- Researching
and developing some of the projects, e.g.
ColladaMaya physics export, integration of Ageia’s physics engine in
Maya, implementing an OpenGL wrapper and a Maya plug-in for DeepLight.
- Long term planification and strategy.
For more information, consult
our web site at http://www.feelingsoftware.com
Dakis,
Montreal, QC, Canada
November 2003 – March 2005 (Director of Research
and Development)
Dakis is a Montreal
start-up developing technologies for the retail market. Their flagship
product,
the Dakis Humanized Expert
(DHE),
is an automated sales assistant that helps consumers identify the
products that
best fit their specific needs.
My mandate was to lead the technology team in
developing a
market-ready DHE, and to enhance the DHE through additional technology
such as
3D actors, computer vision and voice recognition.
I lead the technology team (7 developers) and
reported
directly to the CEO. I also represented the Dakis technology with
external
parties: investors, customers, partners, media, and government. Other
non-technical tasks included hiring, documenting our activities for
government
subsidies, etc.
I had broad technical responsibilities:
- 3D Actor custom engine developed using
C# and Managed DirectX, including realtime lip sync and speech
streaming of server-side Text-to-speech. I also implemented the
necessary import/export code, to/from the engine, Maya, Poser, Collada
and custom tools.
- Performed research on computer vision
(face tracking) applied to the retail market.
- Implemented the first PocketPC
implementation of Dakis Humanized Expert, using C# and the Compact
Framework and supporting wireless roaming and barcode scanning. Gave public
presentations with Microsoft Canada.
- Lead various smaller projects and
assisted the team with designing and building core Dakis technology.
- Technologies involved included
Flash/ActionScript2.0, web services, CMS.
Alias, Toronto,
Ontario, Canada
February 2001 – October
2003 (Software Engineer, Maya rendering team)
I
designed and
implemented critical parts of the HWRender rendering component, which
was
introduced in Maya5.0. This new renderer takes advantage of consumer
graphics
hardware to produce images that can match software rendering quality,
yet
render up to two orders of magnitude faster.
- I took the lead for the overall project; designed the
graphics engine, API and internal
data structures.
- I designed and wrote
the majority of the code, and in particular took responsibility for the
shading quality aspect of the project and implemented shading support
for five different classes of hardware, ranging from single-textured
per-vertex lighting, to per-pixel shading (including bump, reflection
and refraction mapping), shadows, motion blur, particles, projective
textures and depth of field.
- I developed a
programmable shading architecture, including a language adapted to
Maya's shading networks, a translator/compiler that outputs multiple
passes of Cg and GLSL vertex and fragment programs.
I was the main
technical contact with HW vendors (nVidia, ATI, 3Dlabs), and
the
in-house OpenGL and hardware rendering expert. Prior assignments
included:
- Improved and wrote
samples for Maya APIs such as HW Shader plug-ins.
- Implemented the shading
and texturing portions of a Maya to Shockwave3D incremental translator.
ATI
Research, Marlborough, MA,
USA
January 2000 - January
2001 (OpenGL Driver Engineer,
MS Windows)
As a member of the driver team
supporting the Rage128, Rage Fury MAXX and Radeon graphics cards, I achieved a deep understanding of the OpenGL API, of the driver and its interaction with
games, applications and hardware.
- Analyzed, debugged, and corrected problems in
the driver (C, 80x86 assembly, SSE,
3DNOW).
- Analyzed and
profiled key applications (Quake 3 and Unreal
engines, Maya, 3DSMAX, XSI) and popular
benchmarks. Optimized the
driver for performance.
- Implemented and
maintained OpenGL extensions.
Other tasks included diagnosing
and finding workarounds for hardware failures, meeting with critical customers, and participating
in the specification
of future products.
Sanyo Electric, Osaka, Japan
June - December 1998 (7 months full time
internship)
December 1998 - April 1999 (external consultant from Canada)
May - September 1999 (4 months
full time internship)
This internship allowed me to discover and appreciate
the Japanese culture
and language. As the sole
foreigner of Sanyo’s Japanese artificial vision research lab, my contributions include:
- Designed and programmed a
large number of UI components in Panorama
Boutique, a picture post-processing software for Windows and Mac, used by digital photographers
and bundled with Epson printers and electronic
microscopes.
- Helped other
researchers to update their software engineering skills: source
control, object-oriented design, code portability, internationalization
issues.
Expertise
Graphics Hardware
- Expert in
all aspects of the OpenGL API,
including all shading extensions
- Direct3D,
especially through the Managed interface.
- Understanding
of PC hardware architectures.
- Complete
familiarity with all parts of a modern graphics engine.
3D graphics and mathematics
- Experienced
with Maya Plug-in API, MEL
and content creation.
- Advanced
mathematics and physics applied to computer graphics and games.
- Familiar
with the latest research from Siggraph.
- Illumination
models (both local and global), shadow techniques, transparency,
image-based
lighting.
- Procedural
shading techniques and languages (OpenGL Shading Language, Cg/HLSL,
Renderman).
- Visibility
determination: raytracing, rasterization, occlusion culling,
acceleration
structures.
- Geometry
representations: polygon meshes, subdivision schemes, NURBS.
- Particles
systems, image-based and volume rendering.
- Geometric
and shading LOD
(level-of-detail) techniques.
- Post-processes
and compositing.
- Games
content creation process. Algorithms and techniques commonly used in
game
programming.
Software engineering
- 10 years
of experience in C/C++ development.
- 2 years of
experience with C# and .NET.
- Extensive
experience with CPU and GPU
assembly: Intel 80x86, SSE, Motorola
68k, vertex/pixel shaders.
- Software
architecture and design best practices. OOD, OOP and patterns. Algorithms and complexity theory.
- Cross-platform
development (Windows, Linux, IRIX, MacOS X).
Intimate knowledge of Windows APIs.
- Accomplished
debugger (from printf to remote kernel-level debugging).
- Project
management and scheduling.
- Source
control. Automated build, documentation
and testing tools.
Others
- Experienced
with Matlab and image processing.
- Intel
Integrated Primitives and VTune.
- Knowledge
of computer vision, especially feature tracking and recent extensions
(e.g.
AAM)
Education
1995 - 1999
École Polytechnique, Université de Montréal, Canada
Computer Engineering Degree