Fan Zhang is a Principal SDE at Microsoft. Before that, he was a principal rendering programmer at Codemasters from 2010 to 2012, a graphics programmer of the Core CPU/GPU team at Sony Computer Entertainment Europe, Liverpool Studio from 2009 to 2010 and a rendering programmer of the Renderer team at Ubisoft Reflections Studio from 2007 to 2009. He received his Ph.D. degree in Computer Science and Engineering from The Chinese University of Hong Kong in 2007. His research interests include real-time rendering algorithms (especially image-based) in computer graphics, image processing, general-purpose computation using graphics hardware (GPGPU) and human-computer interaction (HCI) in augmented reality (AR) applications. He is a member of the reviewer committee for the course notes & technical papers in SIGGRAPH ASIA 2009 and SIGGRAPH 2010. He is also a contributor to a few academic journals/conferences and industry books including GPU Gems 3, ShaderX 7 and GPU Pro. He is the inventor of the very popular shadow algorithm Parallel-Split Shadow Maps.
[Invited Talks]
• “From Theory To Practice: Advanced Shadow Mapping Techniques”, Tutorial at the seventh Theory and Practice of Computer Graphics 2009 Conference (TP.CG.09), Cardiff University, UK, 17-19 June 2009.
• “Parallel-Split Shadow Maps on Programmable GPUs”, Invited talk at ACM SIGGRAPH Local Chapter Research Seminar, The University of Manchester, 4th December 2009.
Specialties:
1) Real-time rendering techniques and tools.
2) Modern rendering engine design, such as forward/deferred/pre-light pass rendering, multi-thread/core etc.
3) A deep understanding of modern graphics hardware architecture and low-level code optimizations, which has been intensively focused in his graphics R&D experiences covering XBox One, Xbox 360, PS3, WiiU, PC and PS Vita.
4) Broad knowledge on cutting-edge rendering techniques and strong abilities of integrating them into real products.
Principal Software Engineer @ Architect at Graphics Team, Operating System Group. From June 2015 to Present (7 months) Greater Seattle AreaPrincipal Software Engineer @ Tech lead at XBox Advanced Technology Group (ATG). From September 2014 to June 2015 (10 months) Greater Seattle AreaPrincipal Software Development Engineer @ Working in Microsoft Studios | Rare. From January 2013 to September 2014 (1 year 9 months) Principal Programmer @ Principal Rendering Programmer at Central Technology Group:
[Role Overview]: Develop core rendering technologies.
• Responsible for all aspects in rendering with another principal rendering programmer together, and particularly in charge of the following aspects myself:
In charge of the low-level graphics library implementation, maintenance and support on console platforms including X360, PS3 and other platforms. This low-level graphics library gives our renderer the ability of cross-platform. The API design aims to “next-gen” DX11-level hardware.
In charge of lighting technology in our renderer. All lighting runtime system, pipeline tools, prototype shaders are developed by me. Nearly all different lighting workflow are supported: fully deferred, light pre-pass, forward etc. Tiled-based forward rendering is to be supported on DX11 hardware.
In charge of all PS3 platform development (not only rendering) within the department, any blocking issue especially performance issue will be my work.
In charge of major rendering pipeline tools.
In charge of research interactive/non-interactive rendering techniques.
• Directly working with the game team to deploy our rendering technologies to the new racing title: F1 Race Stars. Responsible for the core rendering technologies in this game with another principal rendering programmer, and a few highlights are briefed below:
Individually implemented an EDGE-like system on PS3 to offload GPU workload to SPUs including fragment shader patching, vertex skinning and vertex culling. This work is one of the key contributions to help this 4-player split-screen game to achieve the performance target.
Key contributor of rendering quality, performance and memory optimisations on console platforms. E.g. global illumination, GPU performance diagnose and more efficient ring buffer memory management etc.
Regularly contribute ideas/solutions to the game team for new feature requests and technical issues. From November 2011 to December 2012 (1 year 2 months) Senior Rendering Programmer @ Senior Rendering Programmer at Central Technology Group:
[Role Overview]: Work on the in-house cross-platform game engine (PC, Xbox 360 and PS3) and pipeline tools with a view for ‘next next gen’ platforms.
• Implemented the lighting solution including both tools and runtime which supports a massive number of dynamic lights and popular global illumination techniques (e.g. prebaked light maps, AO maps and SH point clouds etc.)
• Implemented the render target management system to support memory sharing between render targets on console platforms
• Implemented gpu skinning which supports both constant based and texture based skinning
• Implemented the low-level math library on PS3 using intrinsics
• Implemented the debug system which automates the workflow of debug options, e.g. in game console command registration and parameter mapping between game side to shader side etc.
• Develop and maintain the content pipeline tools, e.g. geometry compiler and texture builder etc.
• Support internal game teams, e.g. performance analysis, architecture design and new features etc. From September 2010 to October 2011 (1 year 2 months) Senior Rendering Programmer @ Senior Rendering Programmer at Graphics Team:
[Role Overview]: Work on all rendering side stuffs and low-level optimizations in the FPS project "BodyCount" (PS3, Xbox 360).
• Review and improve the overall performance on both Xbox 360 and PS3. Tons of optimisations have been done such as optimizing vertex post-transform cache, optimizing critical shaders, optimizing memory usage by implementing render target memory sharing , optimizing LHS for vector4 on Xbox 360 using correct compiling options, double-speeded z rendering etc.
• Improve the rendering architecture, pipeline tools and the lighting system.
• Implement graphics effects shaders required from the game team.
• Help the Physics team and Particle team to offload jobs to SPUs by using the internal job system to improve the performance. Also help diagnose existing SPU crashes, e.g. solve the SPU Fragment Shader Patching crashing issue etc.
• Mentor junior programmers and teach team members how to use development/profile tools on consoles (e.g. SN Tuner, GPAD and PIX etc). From March 2010 to September 2010 (7 months) Graphics Programmer @ Graphics Programmer at Core CPU/GPU Team:
[Role Overview]: Develop and maintain all internal rendering SDKs and tools.
• Integrated the EdgePost library into the unified rendering framework (which is being used by most internal SCE studios) by using WWS Job Manager
• Implemented the tool and the library for font rendering, in which both bitmap font and vector font are supported
• Implement and maintain graphics tools needed by the game teams, such as tools for cubemap processing and image processing etc
• Research on cutting-edge rendering techniques in computer graphic, such as implementing Ambient Occlusion Fields to make the precomputed occlusion information reusable for dynamic objects at run time
• Implemented pre-filterable shadow map techniques (e.g. Variance Shadow Maps) for anti-aliased shadows on hardware without direct PCF support
• Improved the material system to facilitate the debugging on SPUs From January 2009 to March 2010 (1 year 3 months) Graphics Programmer @ Rendering Programmer at Core Renderer Team:
[Role Overview]: Develop the renderer and graphics effects for the racing title "Driver: San Francisco" (Xbox360, PC and PS3).
• Designed and implemented a complete direct lighting & shadow system, in which all currently existing shadow-map techniques are implemented
• Designed and implemented a full set of 3D geometry classes in the math library
• Implemented and maintained the core set of material shaders
• Implemented the sprite system for particle rendering
• Implemented the resource management system
• Help the game team to optimise code
• Responsible for the internal math training within the studio, including giving tutorials of real-time rendering, spherical harmonics lighting and etc. From December 2007 to December 2008 (1 year 1 month) Intern Researcher @ Intern at User Interface Group:
Advisor: Dr. Zhouchen Lin
• Developed the recognition algorithm of Asian characters in the Intelligence Ink project on Tablet PC. This project addresses new technologies of the presentation, display, syntactic and semantic analysis of handwriting ink marks, and the segmentation of handwriting texts and graphs. From March 2002 to June 2002 (4 months) Intern Researcher @ Intern at Visual Computing Group:
Advisors: Dr. Baining Guo and Dr. Yingqing Xu
• Developed the reconstruction of the human face model in the e-Partner project. This project addresses the technologies of constructing virtual environments in the next generation of internet. From June 2000 to September 2000 (4 months)
PhD, Computer Science and Engineering @ The Chinese University of Hong Kong From 2003 to 2007 Fan Zhang is skilled in: Computer Graphics, Texturing, Xbox 360, Game Engines, HLSL, DirectX, PS3, Shaders, Game Development, Console, Cross-platform Development, Perforce, Video Games, Computer Games, Xbox