To work on the research and development of tools and technology in a highly focused creative environment.
- Strong math skills and solid programming foundation.
- Extensive experience with mesh and image processing algorithms.
- Intimate understanding of GPU architectures and programming models.
- Comprehensive knowledge of game engine architectures and production pipelines.
Principal Engineer, Roblox Corp
November 2019 – Current
- Contact me for details.
Senior Programmer, Thekla, Inc.
December 2009 – October 2019
- As the first programmer on a very small team I contributed to most aspects of the development of The Witness from pre-production to shipping on multiple platforms, but my focus was on the tools, production pipeline, and rendering architecture.
- After The Witness I contributed to an unannounced puzzle game and to the jai programming language.
Developer Technology Engineer, NVIDIA, Corp.
September 2006 – November 2009
- Worked with architects in the design of parallel programming models for the Kepler GPU architecture.
- Implemented an emulator for the hardware tessellation pipeline that was introduced in the Fermi GPU architecture.
- Prototyped new algorithms including subdivision surface approximations, triangle interpolation, and geometry images. Wrote performance tests and interacted with architects to improve hardware design and performance.
- Wrote various mesh processing, analysis, and conditioning tools to generate watertight vector displacement maps, and normal maps to use in combination with the tessellation prototypes.
- Developed parallel programing examples in CUDA, provided assistance to third party developers, and organized seminars and trainings.
- Developed a new implementation of the NVIDIA Texture Tools, using new DXT compression algorithms, and CUDA accelerated implementations.
- Implemented OpenGL and Direct3D demos to showcase latest hardware features.
- Supervised the work of interns and new employees.
- Edited the rendering section of the GPU Gems 3 book.
3D Tool Engineer, NVIDIA, Corp.
April 2005 – August 2006
- Maintained the NVIDIA image and mesh processing tools and provided developer support.
- Participated in the design and development of FX Composer 2 using C#, Managed C++ and C++/CLI.
- Wrote various FX Composer 2 plugins, including the OpenGL/Cg and PS3 rendering backends, custom graph nodes, manipulators, undoable commands, and many UI components, as well as some custom draw controls.
- Worked with Sony in the design of Collada, and implemented serialization of scenes and assets using this format.
Game Programmer, Oddworld Inhabitants, Inc.
November 2004 – March 2005
- Maintained our Maya plugins and improved the robustness of our mesh processing tools.
- Computed ambient occlusion and bent normal maps using a SAH KD-Tree for spatial acceleration and precomputed ray traversals for efficient Montecarlo integration.
- Wrote X-Box shaders for rendering using those maps, optimized the existing shaders and added additional special effects.
- Explored different normal map compression techniques.
- Wrote miscellaneous game code related to the inventory, user interface and weapons.
Graphics Programmer, Relic Entertainment, Inc.
June 2004 – November 2004
- Developed a special effects engine for PC and Xenon and its supporting tools and integrated it on their engine and content pipeline.
- Supervised the work of a specialized user interface programmer.
- Assisted the artists in the migration of the existing assets to the new effect system and wrote tools to facilitate this task.
- Wrote HLSL shaders to accelerate effects animations.
- Supported the artists with problems that arose on our content production pipeline and added new features like compressed textures and support for normal maps.
- Prototyped a b-spline fitting method to reduce the size of the animations.
Graphics Programmer, Nebula Technologies, SA.
- Developed an interactive fire, water and smoke simulator for a firefighters game.
- Wrote miscellaneous code for culling, rendering, shading, game logic, UI and scripting.
Lead/Graphics Programmer, Crytek, GmbH.
- Led a group of three programmers when Crytek was still a small startup. All the work was done at home, working with colleagues through mail, IRC and ICQ.
- Wrote a full game framework, OpenGL rendering engine and tools for an action/adventure first person shooter code named Engalus.
- Implemented BSP collision detection and response, skeletal animation, subdivision of Bezier surfaces, procedural shaders, flares, environment mapping, and volumetric fog effects.
Event Leader, Mountain Ascent, 2017 – 2018
As an EL my responsibilities included planning and executing all aspects of climbing events and expeditions. This included scheduling the event, acquiring permits, selecting the team, monitoring the weather and avalanche risk, communicating with the team members prior to and during the event, and leading the team through the event constantly assessing risks and morale.
Although these experiences do not have direct application to my day job as a programmer, they have given me great insights about human nature and interpersonal relationships, especially in the face of adversity, stress, fear and danger.
- I have special interest in digital mesh processing algorithms, that include: mesh cleanup, parameterization, segmentation, optimization, simplification, attribute extraction, and baking algorithms. I’ve developed all those algorithms as part of my mesh processing library.
- More recently I’ve also developed image filtering and compression algorithms.
- I also have experience writing complex shaders, rendering engines, and lighting systems.
- You can find additional information about me, including source code examples, articles, and publications on my website: http://castano.ludicon.com
- I have a 5 year degree in Computer Science and Engineering by the University of Sevilla, Spain. (1999-2004)
- I obtained Honor Degrees in Graph Theory, Computational Geometry, and my final thesis.
- Efficient Substitutes for Subdivision Surfaces, Course Organizer, SIGGRAPH 2009
- Next-Generation Hardware Rendering of Displaced Subdivision Surfaces, SIGGRAPH 2008
- Tessellation of Displaced Subdivision Surfaces in Direct3D 11, Gamefest 2008 (audio track)
- Approximating Subdivision Surfaces with Gregory Patches for Hardware Tessellation, Proc. of SIGGRAPH Asia 2009
- Efficient Substitutes for Subdivision Surfaces, Course Notes, Proc. of SIGGRAPH 2009
- GPU Gems 3: Rendering Section. Section Editor, July 2007
- Spanish, English, German and Portuguese.
- I have the second language diploma of the German ‘Kultus-Minister-Konferenz’ (KMK-2), although today my German is very rusty.