Software engineer at Mozilla. Working with glTF / WebGL / WebGPU / WebXR and on Hubs. Aggressive open-source contributor and interested in Web technologies, Realtime 3D CG, Optimization, and Low-level.

Listed only the open source projects. Refer to Resume for others.


Three.js is the most widely-used JavaScript + WebGL graphics library made by Ricardo Cabello, aka Mr.doob. You can easily develop realtime Web 3D, and even XR (VR/AR), contents with it. I have been contributing to this project as a core team member for WebGL, WebGL 2.0, WebGPU, WebXR, glTF, MMD, Optimization, Animation, Shaders, and bug-fix stuffs.

Core team, 2015 to present.

Hubs (Mozilla)

Hubs is a Mozilla's open and global virtual platform. You can remotelly communicate with others in your web browsers just by sharing a room URL. You can control your avatar in 3D scene and talk/chat/gesture with the people/3D objects/medias in the room. I am in the Hubs team and have been working on Audio improvement, Automatic WebGL performance test, and the contribution to Three.js on which Hubs is built.

Team member, 2020 to present.

WebXR Emulator Extension (Mozilla)

I have been leading WebXR Emulator Extension project. It is a browser extension which emulates WebXR devices. It improves the WebXR content creators productivity because they can test WebXR application in their desktop web browsers without the need of physical WebXR devices. It supports both Firefox and Chrome.

Author, 2019 to present.

Immersive custom elements (Mozilla)

I lead Immersive Custom Elements project which is a set of Custom Elements for WebXR. Users can easily embed WebXR contents into their web pages just by placing the custom elements tag like <img-360 src="..."></img-360> without the knowledge of 3D graphics, WebXR API, or even JavaScript. It helps web developers and designers who are interested in WebXR but not familiar with the WebXR technology.

Author, 2019.

iOS WebXR Viewer (Mozilla)

iOS WebXR Viewer project is the first browser to implement WebXR on iOS. It allows users to early WebXR experiment by connecting WebXR API with the underlying iOS VR/AR capabilities. I worked on JavaScript WebXR API to support the latest API specification and allowed users to access the API.

Team member, 2019 to 2020


I started three-gltf-extensions project. Three.js glTF loader/exporter doesn't support some glTF extensions due to some reasons. This project provides the plugins handling such extensions at top of Three.js glTF loader/exporter extensibility mechanism I and other Three.js contributors built.

Author, 2021 to present.


glTF-Blender-IO-materials-variants is a Blender 3D add-on for glTF KHR_matetrials_variants extension. The extension allows for a compact glTF representation of multiple material variants of an asset, structured to allow low-latency switching at runtime and is good for digital commerce use case. The official glTF Blender IO doesn't support this extension because it doesn't greatly match core Blender 3D concepts. So I wrote an external glTF-Blender-IO-materials-variants addon which adds UI for the extension in addition to the importing/exporting the extension capabilities.

Author, 2021 to present.


A-Frame is a web framework for creating WebXR content on top of HTML. It is originally made by Mozilla and is now maintained by Supermedium. I released many components for A-Frame and had demo presentations at A-Frame meetup.

Core team, 2016 to present.

RISC-V emulator in Rust + WebAssembly

I wrote a "RISC-V processor and peripheral devices" emulator in Rust and compiled it to WebAssembly. You can run Linux or xv6 (UNIX based tiny OS for education) on it in your web browsers with good performance even without installing anythng. It supports debugger so is good for RISC-V learners by setting breakpoints, doing step execution, examining memory content, and so on.

Author, 2020 to present.

NES(Famicom) emulator in Rust + WebAssembly

I wrote a "NES(Famicom) processors and peripheral devices" emulator in Rust and compiled it to WebAssembly. You can play NES on it in your web browsers with good performance even without installing anythng. It supports remote play with WebSocket and WebRTC so you can play the games with remote friends together.

Author, 2019 to present.

PDP-11 emulator in JavaScript

I wrote a "PDP-11 and peripheral devices" emulator in JavaScript. PDP-11 processor is a very old processor. You can run UNIX V6, written for PDP-11 and released in 1975, on it in your web browsers even without installing anything.

Author, 2014 to 2015.

Touhou style 2D shooter

A fan game of Touhou Project(Shooter game project of Team Shanghai Alice). I wrote it in JavaScript with WebGL. I optimized it very well so it can draw over 1k elements in a scene with at 60fps in your browsers. It supports remote play with WebSocket and WebRTC. You can play with remote friends together.

Author, 2014 to 2017.

Three.js MMD Loader applications

This is a set of Three.js MMDLoader applications. MMD, Miku Miku Dance, is a freeware for creating 3D animated movies. I wrote MMDLoader which imports the 3D model formats used in MMD to Three.js. The applications showcase the advanced use cases of MMD + Three.js with Audio, Custom shaders, Web Speech API, Facial recognition, Physics, VR, and so on.

Author, 2015 to 2017.

Three.js Network library

This Three.js network library is built on WebSocket and WebRTC. You can remotely sync Three.js objects.

Author, 2017

MMD parser

MMD parser parses the binary model, gesture, and animation formats (PMD, PMX, VPD, VMD) used in MMD and creates JSON data.

Author, 2016 to present.